基于ARM和eCos的嵌入式WEB服務(wù)器設(shè)計(jì)
4.1 IP處理
LwIP僅能實(shí)現(xiàn)IP層大部分基本功能。它雖然能夠發(fā)送、接收以及轉(zhuǎn)發(fā)信息包,但不能接收和發(fā)送IP分片包,也不能處理攜帶IP參數(shù)選項(xiàng)的信息包。不過對(duì)大多數(shù)的應(yīng)用來說,這不會(huì)成為問題。
?、俳邮招畔?。對(duì)于到達(dá)的IP信息包,可由網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)調(diào)用ip_input()函數(shù)開始處理,并在這里完成對(duì)IP版本字段及包頭長(zhǎng)度的初始完整性檢查,同時(shí)還要計(jì)算和驗(yàn)證包頭校驗(yàn)和。
?、诎l(fā)送信息包。外發(fā)的信息包由ip_output()函數(shù)處理,該函數(shù)使用ip_route()函數(shù)查找適當(dāng)?shù)木W(wǎng)絡(luò)接口來傳送信息包。當(dāng)外發(fā)的網(wǎng)絡(luò)接口確定后,信息包傳給以外發(fā)網(wǎng)絡(luò)接口為參數(shù)的ip_output_if()函數(shù)。
?、坜D(zhuǎn)發(fā)信息包。如果沒有網(wǎng)絡(luò)接口的地址與到達(dá)信息包的目標(biāo)地址相同,信息包應(yīng)被轉(zhuǎn)發(fā)。這項(xiàng)工作由ip_ forward()函數(shù)完成。
?、躀CMP處理。ICMP處理相當(dāng)簡(jiǎn)單。ip_input()函數(shù)收到的ICMP信息包被移交給icmp_input()函數(shù),后者對(duì)ICMP包頭解碼,然后進(jìn)行適當(dāng)?shù)膭?dòng)作。
4.2 UDP處理
UDP是被用來在不同進(jìn)程問分解信息包的簡(jiǎn)單協(xié)議。每個(gè)UDP會(huì)話的狀態(tài)保存在一個(gè)PCB結(jié)構(gòu)體中。UDP PCB保存在一個(gè)鏈表中,當(dāng)一個(gè)UDP數(shù)據(jù)包到達(dá)時(shí)對(duì)這個(gè)鏈表進(jìn)行匹配檢索。
4.3 TCP處理
TCP屬于傳輸層協(xié)議,它為應(yīng)用層提供了可靠的字節(jié)流服務(wù)。對(duì)它的描述要比對(duì)其他協(xié)議的描述復(fù)雜的多,其代碼占了LwIP代碼總量的50%?;镜腡CP處理過程被分割為6個(gè)功能函數(shù)來實(shí)現(xiàn),tcp_input()、tep_ process()及tcp_receive()函數(shù)與TCP輸入有關(guān),tcp_write()、tcp_enqueue()及tcp_output()則用于TCP輸出。TCP的處理過程如圖5所示。
4.4 應(yīng)用程序接口設(shè)計(jì)
LwIP API專為L(zhǎng)wIP設(shè)計(jì),所以它可以充分利用LwIP的內(nèi)部結(jié)構(gòu)實(shí)現(xiàn)其設(shè)計(jì)目標(biāo)。LwIP API與BSDAPI類似,但操作相對(duì)低級(jí)。API不需要在應(yīng)用程序和協(xié)議棧之間復(fù)制數(shù)據(jù),因?yàn)閼?yīng)用程序可以巧妙地直接處理內(nèi)部緩沖區(qū)。另外,BSD Socket API易于理解,并且很多應(yīng)用程序?yàn)樗鴮?,所以LwIP保留一個(gè)BSD Socket兼容層是很有用的。
鑒于TCP/IP協(xié)議棧的處理模式,APl分成兩部分實(shí)現(xiàn)。如圖6所示,一部分作為應(yīng)用程序的連接庫實(shí)現(xiàn),另一部分在TCP/IP進(jìn)程內(nèi)實(shí)現(xiàn)。這兩部分之間采用由操作系統(tǒng)模擬層提供的進(jìn)程間通信機(jī)制(IPC)進(jìn)行通信。當(dāng)前的實(shí)現(xiàn)采用以下3種IPC方式:共享內(nèi)存、消息傳遞和信號(hào)量。雖然這些IPC方式被操作系統(tǒng)支持,但它們并不需要操作系統(tǒng)底層支持,實(shí)際上是操作系統(tǒng)模擬層在模擬它們。
結(jié) 語
基于實(shí)時(shí)內(nèi)核eCos,在嵌入式系統(tǒng)中實(shí)現(xiàn)了LwIP協(xié)議棧的移植與優(yōu)化。移植優(yōu)化后的LwIP棧做為一個(gè)網(wǎng)絡(luò)模塊運(yùn)行,代碼占用40 KB的ROM,實(shí)現(xiàn)了Ethernet/IP/TCP網(wǎng)絡(luò)功能,并提供了模塊API,與系統(tǒng)實(shí)現(xiàn)無縫連接?;贚wIP的網(wǎng)絡(luò)應(yīng)用任務(wù)與其他非網(wǎng)絡(luò)應(yīng)用任務(wù)在eGos實(shí)時(shí)內(nèi)核管理下協(xié)調(diào)運(yùn)行。進(jìn)一步增強(qiáng)了協(xié)議棧的網(wǎng)絡(luò)安全性與穩(wěn)定性,并開發(fā)相應(yīng)的的網(wǎng)絡(luò)應(yīng)用程序?!?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/eCos">eCos/LwIP協(xié)議?!奔軜?gòu)有望應(yīng)用在信息家電和網(wǎng)絡(luò)化的儀器、儀表方面。
參考文獻(xiàn):
[1].LPC2210datasheethttp://www.dzsc.com/datasheet/LPC2210_454566.html.
[2].ARM7TDMIdatasheethttp://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[3].EMCdatasheethttp://www.dzsc.com/datasheet/EMC_2342312.html.
[4].RTL8019ASdatasheethttp://www.dzsc.com/datasheet/RTL8019AS_1096173.html.
[5].HR901170Adatasheethttp://www.dzsc.com/datasheet/HR901170A_1098413.html.
[6].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
[7].PCBdatasheethttp://www.dzsc.com/datasheet/PCB_1201640.html.
tcp/ip相關(guān)文章:tcp/ip是什么
評(píng)論