概括TCP IP協議棧在單片機當中的應用
單片機的TCP IP協議棧相關內容,我們在本文將為大家具體介紹一下。那么我們都知道單片機是范屬于嵌入式的。那么隨著嵌入式聯網設備越來越多,需要在嵌入式設備上實現TCP IP協議棧,但是嵌入式設備不同于PC機,它們一般采用MCU也就是單片機而不是CPU作為核心處理器。這就需要在單片機上實現TCP IP協議棧。對于高端的32位單片機,由于其性能已經接近于低端PC機CPU(例如奔騰II系列),所以和在PC上實現TCP IP協議棧沒有多大區別;這里主要講述低端8位(例如51單片機)、16位單片機TCP IP協議棧。
單片機TCP/IP的特點
在單片機上實現TCP/IP與在PC機上實現TCP/IP是有所不同的,它的特點是:
1. 速度慢:12M晶振的51單片機的最快網絡傳送速度為25KB/s。其中的關鍵在于TCP/IP需要對傳送的每個字節進行校驗和計算,以及必要的拷貝。這樣51單片機的處理速度就不夠了。為了提高單片機TCP/IP的速度一般的方法是要對協議棧進行精簡。
2. 程序存儲空間和外部RAM空間不大:一般的單片機的***程序和數據空間為64KB。TCP IP協議一般需要對發送的數據進行緩存,而一個***的數據包就有1500B左右,當網絡速度很大的時候內存消耗將很大。對于非嵌入式TCP IP協議棧,64KB的程序和數據空間是不夠的。
3. 單片機體系結構:51單片機是8位機,所以對于需要完成同一個數據操作,32位的PC機可能只需要10條指令,而51單片機可能需要幾百條指令。
已有的單片機TCP IP協議棧
由于TCP協議棧的程序流程較為復雜,因為程序中需要處理對方法送過來的數據、發起的連接,而我方并不知道對方會何時進行什么樣的操作,這就使得協議處理起來較為復雜。另外一個原因是單片機TCP IP協議棧的穩定性是以非常重要的問題,一個穩定的協議棧需要在實際應用中經過長時間的測試,所以編寫一個穩定的單片機TCP IP協議棧更加困難。為此另外一種選擇就是使用現有的TCP IP協議棧。
1. eCos單片機TCP IP協議棧(http://ecos.sourceware.org/getstart.html):
eCos TCP/IP棧是涉及與eCos操作系統/內核一起運行的。eCos(和TCP/IP棧)由大量處理其結構支持。eCos TCP/IP棧當前發布了一個測試版,作為一個單獨的模塊。
2. ZLIP 51單片機TCP IP協議棧(http://www.zlmcu.com/ZLIP/zlip_introduction.htm):
ZLIP是專門為51單片機設計的嵌入式TCP IP協議棧,可以在有操作系統和沒有操作系統情況下運行,具有代碼量適中、運行速度快、用戶接口簡單、兼容BSD socket接口的特點。實現了TCP、UDP、ICMP、ARP協議,ZLWeb實現了HTTP協議。支持多TCP連接、多UDP連接同時運行,支持在uc/os-II操作系統下多任務運行數據收發。可以用于51單片機TCP/IP上網解決方案。
3. uc/ip 單片機TCP IP協議棧(http://ucip.sourceforge.net/):
uC/IP(mew-kip)是為為控制其設計的一個TCP IP協議棧。代碼基于BSD(很像所有其它棧)但對非常小的覆蓋范圍功能有所減少。它當前為Linux和DOS目標而建。
4. BSD 單片機TCP IP協議棧(http://www.freebsd.org/internet.html):
BSD棧歷史上是其他商業棧的開始點,大多數專業TCP/IP棧(如帶Wind-River VxWorks內核的)是BSD棧派生的。這是因為BSD在BSD許可協議下提供了他們的棧,它們的許用證使你能以修改或未修改的形式結合它們的代碼而無須向創建者付版稅。與GPL許用證相比,如果你結合GPL源代碼,后者要求你的GPL中公開你的源代碼。
5. lwIP 單片機TCP IP協議棧(http://www.sics.se/~adam/lwip/):
lwIP(輕型)TCP/IP棧是TCP IP協議棧的一個小型實現。它包括帶IP和ICMP的TCP和UDP傳輸層。還提供一個可選的BSD套結籽API。為了性能,還包括一個零拷貝API。LwIP協議棧是為嵌入式系統設計的并能適合40KB的ROM和幾百字節的RAM。為了可移植性它用C編寫。
6. uIP 單片機TCP IP協議棧(http://www.sics.se/~adam/uip/index.php/Main_Page):
uIP是專門為8位和16單片機設計的一個非常小的TCP IP協議棧。uIP完全用C編寫,以此可以移植到各種不同的結構和操作系統上。一個編譯的棧可以有幾KB ROM或幾百字節RAM中運行。uIP還包括一個HTTP服務器作為服務內容。
7. TinyTCP 單片機TCP IP協議棧(http://www.unusualresearch.com/tinytcp/tinytcp.htm):
TinyTCP棧是TCP/IP的一個非常小的簡單的實現,它包括一個FTP客戶。TinyTCP是為燒入ROM設計的并且現在開始對大端結構似乎是有用的(初始目標是68000芯片)。TinyTCP也包括一個簡單的以太網驅動器用于3Com多總線卡。
8. WATTCP 單片機TCP IP協議棧(http://www.erickengelke.com/wattcp/):
WATTCP是為嵌入基于DOS的系統而設計的一個小型TCP/IP棧。它包括一個Real Mode DOS版本和另一個32位擴展環境版本。