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