www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式TCP/IP的優(yōu)化設(shè)計(jì)與硬件實(shí)現(xiàn)

摘要 提出一種嵌入式系統(tǒng)中實(shí)現(xiàn)TCPIP的解決方案。通過(guò)優(yōu)化設(shè)計(jì)清晰的TCP/IP和應(yīng)用層接口、防止多余的內(nèi)存拷貝和實(shí)現(xiàn)數(shù)據(jù)包整序重發(fā)及窗口控制,分析在嵌入式系統(tǒng)上實(shí)現(xiàn)TCP/IP的速度、程序大小、內(nèi)存大小以及編譯囂等特點(diǎn),并針對(duì)這些特,最提出實(shí)現(xiàn)TCP/IP的技巧和方法。
關(guān)鍵詞 TCP/IP 嵌入式 優(yōu)化設(shè)計(jì) 硬件實(shí)現(xiàn)

    隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和電子信息技術(shù)的迅猛發(fā)展,Internet的使用越來(lái)越普及,信息家電和智能儀表等能夠接入Iriternet的非PC設(shè)備越來(lái)越多,將各類電子設(shè)備接入Internet的需求也越來(lái)越大。

    電子設(shè)備接入Internet。有多種解決方案:在51系列單片機(jī)上運(yùn)行經(jīng)過(guò)裁剪的TCP/IP協(xié)議棧;使用一些ASIC實(shí)現(xiàn)TCP/IP的芯片,如Analog Devices推出的Internet Modem;也可使用嵌入式操作系統(tǒng)自帶的TCP/IP協(xié)議棧。在某些對(duì)網(wǎng)絡(luò)速度要求不高的領(lǐng)域,可用單片機(jī)實(shí)現(xiàn)TCP/IP;在對(duì)性能要求高的場(chǎng)合,可選擇后兩種方案。

1 嵌入式TCP/IP的硬件結(jié)構(gòu)
   
圖1是嵌入式TCP/IP系統(tǒng)的硬件結(jié)構(gòu)。其中CS8900A是Cirrus Logic的網(wǎng)絡(luò)控制器,芯片內(nèi)部已設(shè)置幀過(guò)濾器自動(dòng)拋棄無(wú)效幀,減輕CPU負(fù)荷,提高CPU對(duì)網(wǎng)絡(luò)的訪問(wèn)效率。CS8900A工作機(jī)制主要是通過(guò)設(shè)置好其內(nèi)部各寄存器的值,然后就可以自動(dòng)開始工作。在網(wǎng)絡(luò)接口部分,由于是RJ45接口,所以須使用E2023傳輸線變壓器對(duì)網(wǎng)絡(luò)中的信號(hào)進(jìn)行轉(zhuǎn)換。

    通常TCP/IP協(xié)議棧需要大量的RAM來(lái)存儲(chǔ)需要被應(yīng)答的TCP包。如果在規(guī)定時(shí)間內(nèi)未被應(yīng)答,則重發(fā)該TCP包;被應(yīng)答以后釋放。為了減小RAM的使用量,當(dāng)數(shù)據(jù)包需要重新發(fā)送時(shí),如果能夠重新產(chǎn)生數(shù)據(jù)包所需的數(shù)據(jù),則可不存儲(chǔ)需要被應(yīng)答的TCP包。

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

    在CPU中幀的存放方式,定義PacketRAM變量為存放幀的首地址。圖2給出了CPU中TCP/IP的內(nèi)存劃分,以及內(nèi)存中幀的各個(gè)字節(jié)的定義和相對(duì)位置。


2 嵌入式TCP/IP的優(yōu)化設(shè)計(jì)
    TCP/IP一般采用C語(yǔ)言或混合匯編。使用可重入函數(shù)和一般指針(gellerc pointer)使得程序代碼增大,運(yùn)行速度降低;使用函數(shù)指針時(shí),需要手動(dòng)重建調(diào)用樹(calltree),或?qū)⒑瘮?shù)指針調(diào)用的函數(shù)設(shè)置為可重入函數(shù)。

2.1 嵌入式TCP/IP輸入輸出流程

    與PC機(jī)TCP/IP協(xié)議一樣,嵌入式TCP/IP采用協(xié)議分層的結(jié)構(gòu):應(yīng)用層、TCP層、IP層和網(wǎng)絡(luò)設(shè)備接口層。圖3描述了輸入和輸出數(shù)據(jù)包的流程以及需要調(diào)用的函數(shù)。

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

    輸入時(shí),Timer()函數(shù)調(diào)用每個(gè)接口的Input函數(shù)。IP層判斷IP版本、IP校驗(yàn)和,以及是否應(yīng)轉(zhuǎn)發(fā)數(shù)據(jù)包,然后根據(jù)IP頭部的protocol字段將包傳給相應(yīng)的高層處理。TCP層,須判斷TCP校驗(yàn)和,并在現(xiàn)有的套接字中查找,判斷是否有套接字可接收這個(gè)數(shù)據(jù)包,判斷TCP序號(hào)是否為希望的,然后更新這個(gè)連接的狀態(tài)(包括釋放被應(yīng)答的數(shù)據(jù)包和TCP狀態(tài)機(jī)的轉(zhuǎn)化等),調(diào)用該套接字的回調(diào)函數(shù)recv。

2.2 嵌入式TCP/IP的程序結(jié)構(gòu)

    Tliner函數(shù)功能是調(diào)用TCPTimer處理TCP數(shù)據(jù)包的重發(fā)等功能,調(diào)用每個(gè)接口的Input函數(shù)接收到達(dá)的數(shù)據(jù)包。Timer函數(shù)必須在短時(shí)間(一般為20ms)內(nèi)被調(diào)用一次,否則接收數(shù)據(jù)包和TCP定時(shí)等功能將停止。

    如圖4所示,程序主流程是一個(gè)大循環(huán),在循環(huán)中處理發(fā)送數(shù)據(jù)包等應(yīng)用層協(xié)議的同時(shí),查詢變量bTimeOut,在定時(shí)中斷中將bTimerOut設(shè)置為真。應(yīng)用層在程序流程中反復(fù)查詢bTimerOut是否為真,若為真則調(diào)用Timer(),然后設(shè)置bTimerOut為假。

    在使用嵌入式操作系統(tǒng)時(shí),還要注意網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)函數(shù)被重入的問(wèn)題。以NE2K的以太網(wǎng)卡為例,拷貝數(shù)據(jù)包到網(wǎng)卡緩存前要先設(shè)置寄存器(如起始地址)。如果設(shè)置完寄存器以后中斷發(fā)生且放重入。則寄存器的設(shè)置被修改,中斷返回以后拷貝將出錯(cuò)。

2.3 嵌入式TCP/IP運(yùn)行速度優(yōu)化

    TCP/IP發(fā)送過(guò)程中主要的運(yùn)算量集中在3部分:應(yīng)用程序?qū)?shù)據(jù)拷貝到RAM;計(jì)算TCP校驗(yàn)和;將RAM中的數(shù)據(jù)包拷貝到網(wǎng)絡(luò)設(shè)備的發(fā)送緩沖區(qū)。對(duì)于每個(gè)字節(jié)數(shù)據(jù),兩次拷貝大致共使用12×2=24個(gè)指令周期;計(jì)算TCP校驗(yàn)和使用16個(gè)指令周期。采用12MHz晶振,最高網(wǎng)絡(luò)傳輸速度為25KB/s。

    為了提高速度可以采用快速CPU或提高晶振頻率。另外,盡量避免使用Reentrant函數(shù)。Reentrant類型的函數(shù)比一般函數(shù)速度要慢很多,但某些時(shí)候?yàn)榱顺绦蚪Y(jié)構(gòu)的需要必須使用Reentrant,這就需要在速度和結(jié)構(gòu)之間作一個(gè)選擇。選擇的方法有:使用“指定存儲(chǔ)類型”的指針(memoryr-specific pointer);精簡(jiǎn)協(xié)議棧去除運(yùn)算量大但是用處不大的功能,目前TCP定時(shí)重發(fā)時(shí)間是固定的,也沒(méi)有擁塞窗口控制和IP層路由;防止數(shù)據(jù)包不必要的拷貝;優(yōu)化計(jì)算校驗(yàn)和與內(nèi)存拷貝函數(shù)。

3 TCP/IP的嵌入式實(shí)現(xiàn)
    TCP/IP協(xié)議實(shí)現(xiàn)一般以軟件方式嵌人到ROM中,然后通過(guò)網(wǎng)絡(luò)通信技術(shù)與專用嵌入式網(wǎng)關(guān)連接,運(yùn)行TCP/IP協(xié)議,并提供TCP/IP到用戶的輕型網(wǎng)絡(luò)的連接和路由功能。

3.1 內(nèi)存管理方法和無(wú)多余數(shù)據(jù)包拷貝的實(shí)現(xiàn)

    嵌入式TCP/IP的內(nèi)存管理可用鏈表方法,即根據(jù)數(shù)據(jù)包大小分配相應(yīng)大小的內(nèi)存塊。如圖5所示,鏈表將內(nèi)存塊鏈接起來(lái),used字段表示該內(nèi)存塊是否正在使用,pStart和pEnd表示數(shù)據(jù)部分有效數(shù)據(jù)的開始地址和結(jié)束地址。

    分配時(shí),搜索內(nèi)存鏈表找到一個(gè)沒(méi)有分配的比所需空間大的內(nèi)存塊,截取所需的大小。該內(nèi)存塊被截取以后可能還有較多剩余,這時(shí)將剩余部分從原內(nèi)存塊中分離出來(lái),成為一個(gè)新的內(nèi)存塊,并插入鏈表。釋放時(shí),將used置為假。如果pNext或pPre指向的鏈表單元也是空閑的,則將其與自己合并。以防止內(nèi)存分片。在協(xié)議層之間傳送數(shù)據(jù)包只要傳送內(nèi)存塊的起始地址即可。這種內(nèi)存管理方法空間浪費(fèi)小,但運(yùn)算量相對(duì)較大。

3.2 整序、重發(fā)與窗口控制的實(shí)現(xiàn)

    使用隊(duì)列緩存的方式來(lái)實(shí)現(xiàn)整序、重發(fā)和窗口控制。隊(duì)列的一個(gè)元素指向一個(gè)數(shù)據(jù)包,隊(duì)列的最大長(zhǎng)度沒(méi)有限制。

    對(duì)于整序,使用ooSeq隊(duì)列,如果發(fā)現(xiàn)接收的TCP包序號(hào)并不是希望的,但序號(hào)在接收窗口內(nèi),此時(shí)不能立刻接收這個(gè)包也不應(yīng)丟棄,先將這個(gè)包放入ooSeq隊(duì)列。當(dāng)一個(gè)希望的TCP包被接收以后,再查看ooseq隊(duì)列現(xiàn)在是否有TCP包成為了希望的數(shù)據(jù)包,如果有則將其取出并處理。

    對(duì)于重發(fā),使用unacked隊(duì)列,每個(gè)需要被應(yīng)答的TCP數(shù)據(jù)包發(fā)送以后都要放入unacked隊(duì)列,直到被應(yīng)答后才從隊(duì)列中刪除。TCP重發(fā)定時(shí)只針對(duì)unacked隊(duì)列第一個(gè)TCP包。如果定時(shí)超出,則重新發(fā)送;如果重發(fā)次數(shù)超出規(guī)定值,則報(bào)錯(cuò)。

    對(duì)于窗口控制,使用unsend隊(duì)列,如果發(fā)現(xiàn)對(duì)方的窗口過(guò)小無(wú)法接收這個(gè)數(shù)據(jù)包,則只發(fā)送部分?jǐn)?shù)據(jù),將多余部分放入unsend隊(duì)列,等待對(duì)方發(fā)來(lái)TCP包通知新的窗口大小時(shí),再次判斷是否可以發(fā)送。在unsend隊(duì)列不為空的情況下,須發(fā)送的數(shù)據(jù)包都應(yīng)插入unsend隊(duì)列。

3.3 捎帶應(yīng)答的實(shí)現(xiàn)

    捎帶應(yīng)答是指,當(dāng)對(duì)方一個(gè)需要應(yīng)答的TCP包到達(dá)時(shí),不馬上給予應(yīng)答,而是等待一段較短的時(shí)間。如果在這段時(shí)間內(nèi)有數(shù)據(jù)發(fā)送,則會(huì)捎帶給予應(yīng)答,從而減少了包的發(fā)送數(shù)量。

    若暫時(shí)沒(méi)有數(shù)據(jù)須發(fā)給對(duì)方或數(shù)據(jù)還未準(zhǔn)備好,則等待一定的時(shí)間;如果在該時(shí)間內(nèi)準(zhǔn)備好了數(shù)據(jù),則可使用捎帶應(yīng)答。使用捎帶應(yīng)答就不可能對(duì)每個(gè)幀都作確認(rèn),可用對(duì)某個(gè)幀的確認(rèn)來(lái)代替對(duì)該幀之前所有幀的確認(rèn)。

    編者注:TCP/IP的嵌入式程序源碼見本刊網(wǎng)站www.mesnet.com.cn

4 總 結(jié)
   
嵌入式系統(tǒng)中大量存在的是8/16位低速處理器,在進(jìn)行Internet接入時(shí),由于本身資源的限制,很難實(shí)現(xiàn)完整的TCP/IP協(xié)議。本文從既實(shí)現(xiàn)相應(yīng)的功能又節(jié)省系統(tǒng)資源角度出發(fā),對(duì)協(xié)議進(jìn)行有針對(duì)性的模塊化裁剪和優(yōu)化設(shè)計(jì),可以在單片機(jī)/ARM上嵌入TCP/IP協(xié)議簇實(shí)現(xiàn)嵌入式Internet接入。

    經(jīng)過(guò)優(yōu)化設(shè)計(jì)的嵌入式TCP/IP,支持套接字形式的多個(gè)TCP連接;支持多個(gè)網(wǎng)絡(luò)設(shè)備;支持通過(guò)網(wǎng)關(guān)發(fā)送數(shù)據(jù)包和數(shù)據(jù)包轉(zhuǎn)發(fā)功能,響應(yīng)ping命令;支持TCP包的整序、重發(fā)和窗口控制流量控制。實(shí)踐證明,這種設(shè)計(jì)方式靈活,能按用戶需求實(shí)現(xiàn)很多復(fù)雜的功能。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉