<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è) > 設計應用 > 基于嵌入式TCP/IP軟件體系結構的優(yōu)化設計與實(shí)現*

基于嵌入式TCP/IP軟件體系結構的優(yōu)化設計與實(shí)現*

——
作者:北京郵電大學(xué) 電信工程學(xué)院 廖日坤 紀越峰 時(shí)間:2007-03-05 來(lái)源:電子產(chǎn)品世界 收藏

摘要:  本文提出一種基于嵌入式和解決方案,通過(guò)分析在上實(shí)現的速度、程序結構、內存需求等特點(diǎn),了清晰的和應用層接口、防止多余的內存拷貝和實(shí)現數據包整序重發(fā)/窗口控制。最后給出了嵌入式TCP/IP的性能評價(jià)。

關(guān)鍵詞;TCP/IP;;

隨著(zhù)計算機網(wǎng)絡(luò )技術(shù)和電子信息技術(shù)的迅猛發(fā)展,Internet的普及,接入Internet的非PC設備越來(lái)越多,各類(lèi)電子設備像Web個(gè)人數字助理、Web可視電話(huà)、TV機頂盒接入Internet的需求也越來(lái)越大,嵌入式TCP/ IP的Internet網(wǎng)絡(luò )化將成為網(wǎng)絡(luò )發(fā)展的趨勢。

中大量存在的是8/16位低速處理器,在進(jìn)行Internet接入時(shí),嵌入式TCP/IP對于計算機存儲器、運算速度要求比較高,占用大量系統資源,因而常嵌入TCP/IP協(xié)議簇的子集或用UDP代替TCP實(shí)現。

本文提出一種基于嵌入式TCP/IP的優(yōu)化設計和實(shí)現方案,從實(shí)現相應的功能又節省系統資源角度出發(fā),對嵌入TCP/IP優(yōu)化設計,實(shí)現嵌入式的Internet接入。

嵌入式TCP/IP接入方法

嵌入式電子設備接入Internet有多種解決方案:在低速微處理器運行剪裁的TCP/IP協(xié)議棧;使用一些ASIC實(shí)現TCP/IP的芯片如ADI的Internet Modem;也可以使用嵌入式操作系統自帶的完整的TCP/IP協(xié)議棧。在某些對網(wǎng)絡(luò )速度要求不高的領(lǐng)域,可以精簡(jiǎn)的TCP/IP實(shí)現;在對性能要求高的場(chǎng)合,則可以選擇后兩種方案。嵌入式設備接入Internet網(wǎng)絡(luò )常用的方案比較如表1所示。

但以上接入方法一般專(zhuān)門(mén)為某種微處理器設計,不具有通用性,而且效率較低或功能不夠全面[3]。本文提出的經(jīng)過(guò)優(yōu)化設計的嵌入式TCP/IP適合移植到各種嵌入式處理器中,如、ARM或ARM+FPGA多核嵌入式處理器中,具有較小的代碼量、RAM使用量和較高的效率,同時(shí)支持套接字形式的多個(gè)TCP連接和多個(gè)網(wǎng)絡(luò )設備連接,支持通過(guò)網(wǎng)關(guān)發(fā)送數據包和數據包轉發(fā),支持TCP包的整序、重發(fā)和窗口控制流量控制等等。

嵌入式TCP/IP的軟件體系結構

與優(yōu)化設計

嵌入式TCP/IP軟件體系結構

與PC TCP/IP協(xié)議相似,嵌入式TCP/IP采用協(xié)議分層的結構:應用層、TCP層、IP層和網(wǎng)絡(luò )設備接口層[4]。圖1描述了嵌入式TCP/IP輸入和輸出數據包流程以及調用的函數。

圖1 基于嵌入式TCP/IP接口結構

其中,Timer()函數調用TCPTimer()處理TCP數據包重發(fā),以及調用每個(gè)接口的Input()函數接收到達的數據包。Timer()函數必須在短時(shí)間(一般<20ms)內被調用一次,否則接收數據包和TCP定時(shí)等功能將停止。

輸出時(shí),TCP層先查看unsend隊列,發(fā)現非空,將數據包插入隊列;發(fā)現為空,則查看對方窗口是否夠大能夠接收這個(gè)數據包,然后填寫(xiě)TCP頭部信息。IP層選擇網(wǎng)絡(luò )設備接口,目的IP和該接口的子網(wǎng)掩碼相與是否等于子網(wǎng)掩碼。然后調用這個(gè)接口的Output函數來(lái)發(fā)送。

圖2 基于嵌入式TCP/IP主程序結構

輸入時(shí),Timer()函數調用每個(gè)接口的Input函數。IP層判斷IP版本、IP校驗和、判斷是否應該轉發(fā)數據包,然后根據IP頭部的protocol字段將包傳給相應的高層處理。TCP層,需要判斷TCP校驗和,然后在現有的套接字中查找,判斷是否有套接字可以接收這個(gè)數據包,判斷TCP序號是否為希望的,然后更新這個(gè)連接的狀態(tài)(包括釋放被應答的數據包和TCP狀態(tài)機的轉化等),調用該套接字的回調函數recv。
圖2程序主流程是一個(gè)大循環(huán),在循環(huán)中處理發(fā)送數據包等應用層協(xié)議同時(shí)查詢(xún)變量bTimeOut,在定時(shí)中斷中將bTimerOut設置為真,應用層在程序流程中反復查詢(xún)bTimerOut是否為真,真則調用Timer(),然后置bTimerOut為假。

嵌入式TCP/IP設計優(yōu)化

因為網(wǎng)絡(luò )中數據非常多,如果把所有的數據都讀到內存中再判斷是否應該丟棄幀顯然效率不高。所以邊讀取數據邊判斷而沒(méi)有一開(kāi)始就把整個(gè)幀全部讀到內存中,同時(shí)在程序里定義幀中各個(gè)部分的相對地址,可以方便的對幀的各個(gè)字節尋址。這樣的設計是基于提高訪(fǎng)問(wèn)速度考慮的。

為了減小RAM使用量,當數據包需要重新發(fā)送時(shí),如果能夠重新產(chǎn)生數據包所需的數據,可以不存儲需要被應答的TCP包。圖3給出了嵌入式CPU中TCP/IP的內存劃分,以及內存中幀的各個(gè)字節的定義和相對位置,其中PacketRAM為存放幀的首地址。

發(fā)送TCP/IP過(guò)程中主要的運算量集中在三個(gè)部分:應用程序將數據拷貝到RAM、計算TCP校驗和、將RAM中的數據包拷貝到網(wǎng)絡(luò )設備的發(fā)送緩沖區。對每一個(gè)字節數據,兩次拷貝大致共使用12

tcp/ip相關(guān)文章: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>