<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于OMAP平臺的TCP/IP開(kāi)發(fā)及實(shí)現

基于OMAP平臺的TCP/IP開(kāi)發(fā)及實(shí)現

作者: 時(shí)間:2014-05-20 來(lái)源:網(wǎng)絡(luò ) 收藏

處理TCP層函數,判斷接收包的類(lèi)型,如果是TCP包,則調用TCP接收函數,TCP接收函數用指定條件進(jìn)行過(guò)濾,找到該包所屬的連接或完成一個(gè)新連接的被動(dòng)打開(kāi),根據TCP的狀態(tài)轉換則完成11種狀態(tài)的轉移,并且實(shí)現了多路數據同時(shí)、雙向的傳輸。

本文引用地址:http://dyxdggzs.com/article/247106.htm

TCP的發(fā)送函數包括主動(dòng)打開(kāi)、主動(dòng)關(guān)閉(由上層調用完成新連接的主動(dòng)打開(kāi),或主動(dòng)關(guān)閉一個(gè)已建立的連接)和發(fā)送控制包(用于TCP連接的建立與終止,會(huì )在TCP接收函數中調用,從而實(shí)現TCP的轉換)三個(gè)函數。

TCP層還實(shí)現了兩個(gè)定時(shí)器,TCP重傳定時(shí)器函數可提供服務(wù)可靠性的有效保障;TCP?;疃〞r(shí)器能夠避免資源的浪費。

3.2 程序特點(diǎn)分析

(1)簡(jiǎn)單性:4.4BSD-Lite版的完整內核實(shí)現大約有15 000行,而本程序源代碼約有1 400行,更適合嵌入式系統的應用。

(2)可重用性:本程序分層清晰。對于不同的嵌入式系統,可能使用的CPU和以太網(wǎng)卡不同,這就需要針對其特點(diǎn)的以太網(wǎng)層設計,而ARP、IP、UDP、TCP則不需要改動(dòng)。

(3)可拓展性:協(xié)議是底層網(wǎng)絡(luò )協(xié)議,本程序留有很好的接口,可在其上構件更高層的網(wǎng)絡(luò )協(xié)議,包括H.323協(xié)議、ftp、telnet。

4 在平臺上的移植

4.1 單片以太網(wǎng)控制器LAN91C96

LAN91C96是SMSC公司生產(chǎn)的專(zhuān)門(mén)用于嵌入式產(chǎn)品的10Mbps以太網(wǎng)控制器,具有性能優(yōu)良,功耗低及尺寸小的特點(diǎn),如圖4所示。

 

 

6KB的RAM:用來(lái)存放數據包。

MMU:對RAM進(jìn)行有效管理,為接收和發(fā)送包在RAM中分配存儲空間。

ARBITE:使MMU和RAM與CPU、CSMA很好地連接。

CSMA/CD模塊:集成了IEEE 802.3 MAC層協(xié)議,負責監聽(tīng)網(wǎng)絡(luò )情況和地址過(guò)濾。若目的地址是LAN91C96的地址、廣播地址或多播地址,則接收此數據包,否則拋棄。

ENDEC:負責與10Mbps為以太網(wǎng)物理媒體的連接。

LAN91C96 采用地址映射方式,通過(guò)訪(fǎng)問(wèn)Innovator為的指定地址對其存儲器訪(fǎng)問(wèn)。LAN91C96的寄存器在Innovator內存中的地址分配為:0x08000300-0x0800030F。寄存器共有4組(BANK0-BANK3),使用相同的地址,通過(guò)BANK_SELECT寄存器選擇。

4.2 移植過(guò)程

先實(shí)現該網(wǎng)卡芯片的驅動(dòng)程序,再用它替換PC模擬器的以太網(wǎng)層,程序驅動(dòng)主要包括以下三個(gè)部分:

(1)初始化:主要為L(cháng)an91C96的各寄存器填入正確的初始值使其正常工作。

(2)接收:如圖5所示,由CSMA(載波偵聽(tīng)模塊)接收到符合地址要求的后,MMU(存儲器管理單元)為其請求在RAM中分配存儲空間并分配一個(gè)編號,DMA 將其存入RAM。接著(zhù)在接收數據的前面封裝STATUS的化COUNT字節信息,如果CRC檢測正確,則將其編號放入接收FIFO,如果接收FIFO不為空,則RCV_INT(接收中斷標識)被設置。檢查接收中斷寄存器狀態(tài),如果就接收中斷,對應其編號,上層協(xié)議便可以取出數據了,取出后,將該數據編號從 FIFO中清除。

 

 

狀態(tài)字可以從RCR寄存器中讀取,它反應了接收過(guò)程出現的各種措施,如CRC錯誤、接收幀過(guò)長(cháng)等,數據包的編號從FIFO_PORTS寄存器中獲得,而數據指針可從POINTER寄存器中獲得,數據信息從DATA寄存器中得到,根據這些信息將接收數據包復制到CPU內存,供上層使用,接收函數的主要流程如圖6。

 

 

(3)發(fā)送:圖7描述了發(fā)送數據包FIFO中的排隊過(guò)程,首先MMU在RAM中分配一定字節的存儲空間,然后,將分配結果寄存器中的編號放入PNR 寄存器,寫(xiě)數據指針寄存器POINTER并將上層數據封裝后拷入DATA寄存器,根據其編號放入發(fā)送FIFO,排隊的包將自動(dòng)發(fā)出,發(fā)出包的編號接著(zhù)進(jìn)入發(fā)送完成FIFO。如果發(fā)送成功,則存儲空間自動(dòng)釋放;否則釋放存儲空間并將其重新排隊。

 

 

5 實(shí)驗結果

5.1 內存資源占用量

運行該協(xié)議棧需要3MB內存,而Innovator體32MB SDRAM 和32MB Flash,內存占用率為:3M/64M=4.7%,完全適用于嵌入式系統。

5.2 數據傳輸可靠性

TCP 利用以下機制糾錯。數據的傳輸過(guò)程中的誤碼:檢驗和機制與重傳機制,數據的重復,在接收端會(huì )自動(dòng)舍棄已經(jīng)接收過(guò)的數據包,并且不發(fā)ACK,故不會(huì )發(fā)生一個(gè)數據包接收多次的情況,數據包的丟失,接收端在接收完一段數據后,會(huì )計算下一個(gè)預期數據的序號,如果不符合就不發(fā)ACK,從而導致發(fā)端重發(fā),避免了數據包的丟失,經(jīng)測試,在未發(fā)生擁塞情況下,傳輸的誤碼率幾乎為0。

5.3文件最大平均傳輸速率

下面就本程序所實(shí)現的利用TCP進(jìn)行文件傳輸功能,給出不同情況下的最大傳輸速率,實(shí)驗環(huán)境為10Mbps以太網(wǎng)。

理想狀態(tài)下的理論最大吞吐量:假定發(fā)送方傳輸兩個(gè)背對背、滿(mǎn)長(cháng)度的TCP數據,接收方為其發(fā)出兩個(gè)ACK,每包中用戶(hù)數據量為1460位,總數據量為1538位,故最大的用戶(hù)數據吞吐量為:

 

 

本實(shí)驗測得文件的平均傳輸速率隨著(zhù)TCP連接數的增多有如圖8所示的曲線(xiàn)變化,前半段隨著(zhù)連接數的增加成線(xiàn)性增長(cháng),后半段由于出現了網(wǎng)絡(luò )擁塞,整體的平均速率反而有所下降。

 

 

實(shí)驗結果與理論最大吞吐量有所差距,原因在于:

(1)理論上只是一種理想的狀態(tài),現實(shí)中難以達到。

(2)受CPU處理速度及文件傳輸過(guò)程的讀、寫(xiě)文件操作的限制。

(3)本程序采用的數據傳輸機制是當收到上一個(gè)包的ACK之后再發(fā)送下一個(gè)數據包,這樣避免了對接收數據的排序,提高了可靠性,但數據的傳輸速度會(huì )受到制約。

tcp/ip相關(guān)文章:tcp/ip是什么



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: OMAP TCP/IP

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>