环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產(chǎn)品分類

當(dāng)前位置: 首頁 > 工業(yè)電氣產(chǎn)品 > 工業(yè)安全產(chǎn)品 > 安全光柵

類型分類:
科普知識(shí)
數(shù)據(jù)分類:
安全光柵

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

發(fā)布日期:2022-04-27 點(diǎn)擊率:139 品牌:小金井_Koganei

    摘要:  本文提出一種基于嵌入式TCP/IP軟件體系結(jié)構(gòu)的優(yōu)化設(shè)計(jì)和解決方案,通過分析在嵌入式系統(tǒng)上實(shí)現(xiàn)TCP/IP的速度、程序結(jié)構(gòu)、內(nèi)存需求等特點(diǎn),優(yōu)化設(shè)計(jì)了清晰的TCP/IP和應(yīng)用層接口、防止多余的內(nèi)存拷貝和實(shí)現(xiàn)數(shù)據(jù)包整序重發(fā)/窗口控制。最后給出了嵌入式TCP/IP的性能評(píng)價(jià)。
關(guān)鍵詞: 嵌入式系統(tǒng);TCP/IP;軟件體系結(jié)構(gòu);優(yōu)化設(shè)計(jì)
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和電子信息技術(shù)的迅猛發(fā)展,Internet的普及,接入Internet的非PC設(shè)備越來越多,各類電子設(shè)備像Web個(gè)人數(shù)字助理、Web可視電話、TV機(jī)頂盒接入Internet的需求也越來越大,嵌入式TCP/ IP的Internet網(wǎng)絡(luò)化將成為網(wǎng)絡(luò)發(fā)展的趨勢。
嵌入式系統(tǒng)中大量存在的是8/16位低速處理器,在進(jìn)行Internet接入時(shí),嵌入式TCP/IP對(duì)于計(jì)算機(jī)存儲(chǔ)器、運(yùn)算速度要求比較高,占用大量系統(tǒng)資源,因而常嵌入TCP/IP協(xié)議簇的子集或用UDP代替TCP實(shí)現(xiàn)。
本文提出一種基于嵌入式TCP/IP軟件體系結(jié)構(gòu)的優(yōu)化設(shè)計(jì)和實(shí)現(xiàn)方案,從實(shí)現(xiàn)相應(yīng)的功能又節(jié)省系統(tǒng)資源角度出發(fā),對(duì)嵌入TCP/IP優(yōu)化設(shè)計(jì),實(shí)現(xiàn)嵌入式的Internet接入。
嵌入式TCP/IP接入方法
嵌入式電子設(shè)備接入Internet有多種解決方案:在低速微處理器運(yùn)行剪裁的TCP/IP協(xié)議棧;使用一些ASIC實(shí)現(xiàn)TCP/IP的芯片如ADI的Internet MODEM;也可以使用嵌入式操作系統(tǒng)自帶的完整的TCP/IP協(xié)議棧。在某些對(duì)網(wǎng)絡(luò)速度要求不高的領(lǐng)域,可以精簡的TCP/IP實(shí)現(xiàn);在對(duì)性能要求高的場合,則可以選擇后兩種方案。嵌入式設(shè)備接入Internet網(wǎng)絡(luò)常用的方案比較如表1所示。
但以上接入方法一般專門為某種微處理器設(shè)計(jì),不具有通用性,而且效率較低或功能不夠全面[3]。本文提出的經(jīng)過優(yōu)化設(shè)計(jì)的嵌入式TCP/IP適合移植到各種嵌入式處理器中,如單片機(jī)、ARM或ARM+FPGA多核嵌入式處理器中,具有較小的代碼量、RAM使用量和較高的效率,同時(shí)支持套接字形式的多個(gè)TCP連接和多個(gè)網(wǎng)絡(luò)設(shè)備連接,支持通過網(wǎng)關(guān)發(fā)送數(shù)據(jù)包和數(shù)據(jù)包轉(zhuǎn)發(fā),支持TCP包的整序、重發(fā)和窗口控制流量控制等等。
嵌入式TCP/IP的軟件體系結(jié)構(gòu)
與優(yōu)化設(shè)計(jì)
嵌入式TCP/IP軟件體系結(jié)構(gòu)
與PC TCP/IP協(xié)議相似,嵌入式TCP/IP采用協(xié)議分層的結(jié)構(gòu):應(yīng)用層、TCP層、IP層和網(wǎng)絡(luò)設(shè)備接口層[4]。圖1描述了嵌入式TCP/IP輸入和輸出數(shù)據(jù)包流程以及調(diào)用的函數(shù)。

圖1 基于嵌入式TCP/IP接口結(jié)構(gòu)

其中,Timer()函數(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í)等功能將停止。
輸出時(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ù)來發(fā)送。

圖2 基于嵌入式TCP/IP主程序結(jié)構(gòu)

輸入時(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程序主流程是一個(gè)大循環(huán),在循環(huán)中處理發(fā)送數(shù)據(jù)包等應(yīng)用層協(xié)議同時(shí)查詢變量bTimeOut,在定時(shí)中斷中將bTimerOut設(shè)置為真,應(yīng)用層在程序流程中反復(fù)查詢bTimerOut是否為真,真則調(diào)用Timer(),然后置bTimerOut為假。
嵌入式TCP/IP設(shè)計(jì)優(yōu)化
因?yàn)榫W(wǎng)絡(luò)中數(shù)據(jù)非常多,如果把所有的數(shù)據(jù)都讀到內(nèi)存中再判斷是否應(yīng)該丟棄幀顯然效率不高。所以邊讀取數(shù)據(jù)邊判斷而沒有一開始就把整個(gè)幀全部讀到內(nèi)存中,同時(shí)在程序里定義幀中各個(gè)部分的相對(duì)地址,可以方便的對(duì)幀的各個(gè)字節(jié)尋址。這樣的設(shè)計(jì)是基于提高訪問速度考慮的。
為了減小RAM使用量,當(dāng)數(shù)據(jù)包需要重新發(fā)送時(shí),如果能夠重新產(chǎn)生數(shù)據(jù)包所需的數(shù)據(jù),可以不存儲(chǔ)需要被應(yīng)答的TCP包。圖3給出了嵌入式CPU中TCP/IP的內(nèi)存劃分,以及內(nèi)存中幀的各個(gè)字節(jié)的定義和相對(duì)位置,其中PacketRAM為存放幀的首地址。
發(fā)送TCP/IP過程中主要的運(yùn)算量集中在三個(gè)部分:應(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è)指令周期。為提高速度可采用快速CPU或提高晶振頻率。例如采用12M晶振時(shí),網(wǎng)絡(luò)傳輸速度為25K字節(jié)/s;而在高頻PCB電路板使用233M晶振時(shí),網(wǎng)絡(luò)傳輸速度能達(dá)到為384K字節(jié)/s。
另外,TCP/IP一般采用C語言或者混合匯編,而使用可重入函數(shù)和一般指針(GENERIC pointer)使得程序代碼增大,運(yùn)行速度變慢.所以使用函數(shù)指針時(shí),應(yīng)手動(dòng)重建調(diào)用樹(Call tree),或?qū)⒑瘮?shù)指針調(diào)用的函數(shù)設(shè)置為可重入函數(shù),同時(shí)使用“指定存儲(chǔ)類型”的指針(memory-specific pointer),防止數(shù)據(jù)包的不必要的拷貝以及優(yōu)化計(jì)算校驗(yàn)和和內(nèi)存拷貝函數(shù)。另外,Reentrant類型的函數(shù)比一般函數(shù)速度要慢很多,但是某些時(shí)候?yàn)榱顺绦蚪Y(jié)構(gòu)的需要必須使用Reentrant,這就需要在速度和結(jié)構(gòu)之間作一個(gè)選擇。
嵌入式TCP/IP的實(shí)現(xiàn)
TCP/IP的嵌入式實(shí)現(xiàn)一般通過以軟件方式嵌入到ROM中,然后通過輕網(wǎng)絡(luò)通訊技術(shù)與專用嵌入式網(wǎng)關(guān)連接,在嵌入式處理器中運(yùn)行TCP/IP協(xié)議,提供TCP/IP到用戶的輕型網(wǎng)絡(luò)的連接和路由功能。
內(nèi)存管理方法和無多余數(shù)據(jù)包拷貝的實(shí)現(xiàn)
嵌入式TCP/IP的內(nèi)存管理可以用鏈表方法,即根據(jù)數(shù)據(jù)包大小分配相應(yīng)大小的內(nèi)存塊。如圖4所示,鏈表將內(nèi)存塊鏈接起來,used字段表示該內(nèi)存塊是否正在使用,pSstart和pEend則表示數(shù)據(jù)部分有效數(shù)據(jù)的開始地址和結(jié)束地址。搜索內(nèi)存鏈表找到一個(gè)沒有分配的比所需空間大的內(nèi)存塊,截取所需的大小。該內(nèi)存塊被截取以后可能還有較多剩余,這時(shí)將剩余部分從原內(nè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ì)列緩存的方式來實(shí)現(xiàn)整序、重發(fā)和窗口控制。隊(duì)列的一個(gè)元素指向一個(gè)數(shù)據(jù)包,隊(duì)列的最大長度沒有限制。
對(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ì)方的窗口過小無法接收這個(gè)數(shù)據(jù)包,則只發(fā)送部分?jǐn)?shù)據(jù),將多余部分放入unsend隊(duì)列,等待對(duì)方發(fā)來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í)間變長。但最小的建立連接時(shí)間基本保持不變,說明系統(tǒng)具有良好的性能。
圖6給出了隨建立時(shí)間變化的接通率。圖中存在一個(gè)臨界點(diǎn),成功的連接率隨著TCP連接嘗試數(shù)目增加而減少,直至為0,而響應(yīng)時(shí)間也急劇上升,這是由嵌入式處理器的處理能力有限造成的。

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


  
結(jié)語
本文從實(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)過優(yōu)化設(shè)計(jì)的嵌入式TCP/IP支持套接字形式的多個(gè)TCP連接、支持多個(gè)網(wǎng)絡(luò)設(shè)備、支持通過網(wǎng)關(guān)發(fā)送數(shù)據(jù)包和數(shù)據(jù)包轉(zhuǎn)發(fā)功能,以及支持TCP包的整序、重發(fā)和窗口控制流量控制。實(shí)踐證明,這種設(shè)計(jì)方式靈活,能按用戶需求實(shí)現(xiàn)復(fù)雜的功能。



下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

推薦產(chǎn)品

更多
主站蜘蛛池模板: 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 深圳富泰鑫五金_五金冲压件加工_五金配件加工_精密零件加工厂 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 深圳APP开发公司_软件APP定制开发/外包制作-红匣子科技 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 联系我们老街华纳娱乐公司官网19989979996(客服) | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 郑州墨香品牌设计公司|品牌全案VI设计公司 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 专业深孔加工_东莞深孔钻加工_东莞深孔钻_东莞深孔加工_模具深孔钻加工厂-东莞市超耀实业有限公司 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 精密模具加工制造 - 富东懿| 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 超声波分散机-均质机-萃取仪-超声波涂料分散设备-杭州精浩 | 精密五金加工厂-CNC数控车床加工_冲压件|蜗杆|螺杆加工「新锦泰」 | 多米诺-多米诺世界纪录团队-多米诺世界-多米诺团队培训-多米诺公关活动-多米诺创意广告-多米诺大型表演-多米诺专业赛事 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 考试试题_试卷及答案_诗词单词成语 - 优易学| 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 123悬赏网_发布悬赏任务_广告任务平台| 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 | 健康管理师报考条件,考试时间,报名入口—首页 |