閱讀 | 訂閱
閱讀 | 訂閱
控制系統(tǒng)

基于嵌入式TCP/IP軟件體系結(jié)構(gòu)的優(yōu)化設(shè)計(jì)與實(shí)現(xiàn)(二)

星之球激光 來(lái)源:中國(guó)自動(dòng)化網(wǎng)2012-02-15 我要評(píng)論(0 )   

嵌入式TCP/IP的實(shí)現(xiàn) TCP/IP的嵌入式實(shí)現(xiàn)一般通過(guò)以軟件方式嵌入到ROM中,然后通過(guò)輕網(wǎng)絡(luò)通訊技術(shù)與專(zhuān)用嵌入式網(wǎng)關(guān)連接,在嵌入式處理器中運(yùn)行TCP/IP協(xié)議,提供TCP/IP到用...

  
嵌入式TCP/IP的實(shí)現(xiàn)

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

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

    嵌入式TCP/IP的內(nèi)存管理可以用鏈表方法,即根據(jù)數(shù)據(jù)包大小分配相應(yīng)大小的內(nèi)存塊。如圖4所示,鏈表將內(nèi)存塊鏈接起來(lái),used字段表示該內(nèi)存塊是否正在使用,pSstart和pEend則表示數(shù)據(jù)部分有效數(shù)據(jù)的開(kāi)始地址和結(jié)束地址。搜索內(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ì)較大。


 


 

圖4 基于嵌入式TCP/IP內(nèi)存管理


 

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

    對(duì)于嵌入式TCP/IP系統(tǒng),可以使用隊(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)期望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ì)列。

嵌入式TCP/IP的性能分析

    圖5給出了將優(yōu)化設(shè)計(jì)后的TCP/IP移植到ARM9處理器、CS8900A網(wǎng)絡(luò)控制器中,時(shí)鐘頻率為133MHz下,與Internet連接的情況。


 


 

圖5 連接圖


 

    系統(tǒng)支持最大發(fā)起連接數(shù)約為380,最大并發(fā)連接率約為170cps。隨著呼叫數(shù)的增加,平均分組到達(dá)也隨之增加,導(dǎo)致網(wǎng)絡(luò)傳輸數(shù)據(jù)的增加,從而最大建立時(shí)間變長(zhǎng)。但最小的建立連接時(shí)間基本保持不變,說(shuō)明系統(tǒng)具有良好的性能。

    圖6給出了隨建立時(shí)間變化的接通率。圖中存在一個(gè)臨界點(diǎn),成功的連接率隨著TCP連接嘗試數(shù)目增加而減少,直至為0,而響應(yīng)時(shí)間也急劇上升,這是由嵌入式處理器的處理能力有限造成的。


 


 

圖6 隨建立時(shí)間變化的連接圖


  
結(jié)語(yǔ)


 

    本文從實(shí)現(xiàn)相應(yīng)的功能又節(jié)省系統(tǒng)資源角度出發(fā),對(duì)嵌入式TCP/IP協(xié)議簇進(jìn)行優(yōu)化設(shè)計(jì),可以在各種嵌入式處理器上實(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ā)功能,以及支持TCP包的整序、重發(fā)和窗口控制流量控制。實(shí)踐證明,這種設(shè)計(jì)方式靈活,能按用戶(hù)需求實(shí)現(xiàn)復(fù)雜的功能。

 

轉(zhuǎn)載請(qǐng)注明出處。

暫無(wú)關(guān)鍵詞
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來(lái)源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來(lái)源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系我們刪除。
③ 任何單位或個(gè)人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請(qǐng)及時(shí)向本網(wǎng)提出書(shū)面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會(huì)依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點(diǎn)評(píng)
0相關(guān)評(píng)論
精彩導(dǎo)讀