當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]一種新的嵌入式Simplified TCP/IP協(xié)議棧的研究與實現(xiàn)

1 引言

  嵌入式nternet是近幾年隨著嵌入式系統(tǒng)的廣泛應用和計算機網絡技術的發(fā)展而興起的一項新興概念和技術。單片機或微控制器(MCU,Micro ControllerUnit)被廣泛應用在家庭和工業(yè)的各個領域,通稱嵌入式系統(tǒng)。嵌入式系統(tǒng)具有以應用為中心、以計算機技術為基礎、軟件硬件可裁剪等特點,贏得了巨大的市場,在應用數(shù)量上遠遠超過了各種通用計算機。隨著Internet/Intranet的發(fā)展,各種家用電器,從空調到微波爐,都產生了連入互聯(lián)網的要求。

  如何通過Internet共享嵌入式設備的信息,實現(xiàn)設備的遠程訪問、控制和管理,對接入到網絡上各個節(jié)點的設備實時監(jiān)控,這就是設備接入互聯(lián)網需要解決的問題。TCP/IP協(xié)議是標準的網絡協(xié)議,如果能把TCP/IP協(xié)議嵌入到設備的MCU中,就可以通過它在設備和Internet之間建立通信鏈路,這樣就解決了設備與網絡互聯(lián)的關鍵技術。

  2 Simplified TCP/IP協(xié)議棧的特點

  和嵌入式系統(tǒng)面向特定的應用一樣,分析嵌入式TCP/IP協(xié)議棧的特點和對傳統(tǒng)的TCP/IP協(xié)議棧進行簡化也要針對特定的系統(tǒng)環(huán)境和應用背景。離開了特定的系統(tǒng)環(huán)境和應用背景來討論嵌入式TCP/IP協(xié)議棧的特點和對TCP/IP協(xié)議棧進行簡化是沒有意義的。這里所討論的嵌入式TCP/IP協(xié)議棧是針對那些低檔的8位/16位嵌入式系統(tǒng)能支持嵌入式Internet直連體系結構而提出的。

  嵌入式系統(tǒng)有限的處理能力以及存儲資源相對缺乏,因此在嵌入式Internet環(huán)境里使用標準TCP/IP協(xié)議棧是不合適的。把TCP/IP協(xié)議棧從普通的PC機移植到MCU,內存和內存管理成了瓶頸。為了既實現(xiàn)相應的網絡功能又節(jié)省系統(tǒng)資源,需要對協(xié)議棧進行有針對的模塊化裁減。針對家電系統(tǒng)中的8位/16位MCU結構設計了一個TCP/IP協(xié)議簇的子集,稱之為Simplified TCP/IP協(xié)議棧。其中包括IP、UDP、ARP和ICMP等協(xié)議的全部或部分功能,對協(xié)議進行了有選擇的實現(xiàn),盡最大可能保持協(xié)議功能和機制上的完整。

  Simplified TCP/IP協(xié)議棧按照網絡體系分層思想設計,如圖1所示。其中每一層都被設計成一個功能相對獨立的模塊,負責處理各自的數(shù)據(jù),通過函數(shù)調用把控制權交給上層或下層的模塊。

  低檔嵌入式系統(tǒng)中一般沒有實時多任務操作系統(tǒng)支持,所以Simplified TCP/IP協(xié)議棧直接面對硬件。MCU中的程序結構一般是順序執(zhí)行和硬件中斷相配合的方式。嵌入式處理器的時鐘頻率低,地址、數(shù)據(jù)總線窄,所以一個IP包的處理要花很多的時間。如果采用中斷處理方式,勢必影響其他中斷和任務的執(zhí)行。當系統(tǒng)中有實時數(shù)據(jù)采集、串口通信中斷、鍵盤中斷等實時任務時,則會造成沖突。設計時需要合理劃分中斷處理程序,將無實時要求和費時的SimplifiedTCP/IP協(xié)議棧處理放在主程序順序循環(huán)中。對網絡接口控制芯片采用查詢式,即在其他中斷任務的執(zhí)行間隙處理Simplified TCP/IP協(xié)議棧,以犧牲響應速度換取系統(tǒng)可靠性,如圖2所示。

  3 TCP/IP協(xié)議棧的裁減

  
       普通操作系統(tǒng)可支持完整的TCP/IP協(xié)議族,但嵌入式系統(tǒng)中大多很難做到,也不需做到。嵌入式系統(tǒng)中實現(xiàn)的協(xié)議要根據(jù)各個系統(tǒng)的特點及功能來進行設計。TCP/IP協(xié)議族中,只實現(xiàn)與實際需要有關的部分,而不使用的協(xié)議則一概不支持。Simplified TCP/IP協(xié)議棧中支持的協(xié)議。

  3. 1 地址轉換協(xié)議—ARP協(xié)議

  ARP協(xié)議是某些網絡接口(如以太網和令牌環(huán)網)使用的特殊協(xié)議,ARP的地址解析功能是為IP地址和數(shù)據(jù)鏈路層使用的硬件地址提供動態(tài)地址映射。通用計算機系統(tǒng)中,ARP高速緩存一般設計成雙向數(shù)據(jù)鏈的形式,這樣整個緩存可以方便地動態(tài)增減。但是這種非線性存儲的鏈表式緩存結構,在進行表項匹配查找時比較費時,不適用于嵌入式系統(tǒng)。因此ARP的地址緩存采用了線性數(shù)組形式的結構。它在內存中是連續(xù)線性存儲的,查找速度快。嵌入式應用中節(jié)點不是很多,即ARP緩存容量不需要很大,因此將ARP高速緩存設計成固定大小。被動的嵌入式服務器主要是接收來自客戶的服務請求,為客戶提供服務,即嵌入式服務器不會主動向某一主機發(fā)數(shù)據(jù)幀。既然如此始終處于被動狀態(tài)的服務器完全不需要向任何主機發(fā)送ARP請求,設備只要能處理ARP請求并返回ARP應答即可。鑒于這種情況,ARP協(xié)議中選擇對ARP應答部分進行實現(xiàn)。

 [!--empirenews.page--]

  3. 2 網際協(xié)議—IP協(xié)議

  IP協(xié)議是TCP/IP協(xié)議簇中最為核心的協(xié)議,提供不可靠的無連接的數(shù)據(jù)報傳送服務。所有的TCP、UDP和ICMP數(shù)據(jù)都以IP數(shù)據(jù)報的格式傳輸。IP協(xié)議非常重要,實現(xiàn)比較復雜。從實現(xiàn)Simplified TCP/IP協(xié)議棧的要求出發(fā),約簡IP協(xié)議需要把握兩個原則:①對接收到的IP數(shù)據(jù)報進行處理,向上層協(xié)議進行提交;②負責對UDP報文進行封裝,交給數(shù)據(jù)鏈路層進行裝幀。當設備收到發(fā)給自己的數(shù)據(jù)報時,首先判斷是否是自己的數(shù)據(jù)報,若不一致則丟棄該數(shù)據(jù)報;否則進行IP校驗和的驗證,當數(shù)據(jù)報無誤后,去掉IP頭部,將IP數(shù)據(jù)提交上層處理。

  
       一般情況下,數(shù)據(jù)包要經過不同的物理網絡,則IP層必須支持數(shù)據(jù)包的分片和重裝。但IP的分片和重組所需的開銷比較大,而現(xiàn)有的網絡一般都支持以太網,并且在此次應用的8/16位嵌入式系統(tǒng)中,傳輸?shù)臄?shù)據(jù)都是一些數(shù)據(jù)量比較小的狀態(tài)信息或者控制信息。因此數(shù)據(jù)報都不會超過協(xié)議所限制的1500字節(jié)。如果極少數(shù)數(shù)據(jù)實在比較大,可以在程序中進行處理,分批次進行傳輸。因此可以裁減掉IP的分片和重組功能。而IP數(shù)據(jù)包的路由功能則交給默認網關執(zhí)行。

  3. 3 網際控制報文協(xié)議———ICMP協(xié)議

  ICMP協(xié)議是IP網絡內為控制、測試、管理功能而設計

 

的協(xié)議。ICMP的報文類型很多,不同類型的報文由類型和代碼字段共同決定。為了了解設備是否可達, Simplified TCP/IP協(xié)議棧中主要實現(xiàn)了回顯請求和應答報文的功能。該程序發(fā)送ICMP回顯請求報文給目的主機,并等待ICMP回顯應答。對于處于被動狀態(tài)設備而言,不需要主動發(fā)送回顯請求,只要能夠識別來自其他客戶的回顯請求并發(fā)送回顯應答就可以了。為了能夠使用戶了解設備是否可達,應當能夠對Ping的回顯請求給予應答。

 

  3. 4 用戶數(shù)據(jù)報協(xié)議—UDP協(xié)議

  Simplified TCP/IP協(xié)議棧中的傳輸層中,選用UDP作為傳輸層協(xié)議。從理論上看,TCP的可靠性是以許多復雜措施及由此而增加的開銷為代價換來的。TCP提供面向鏈接的、可靠的服務,而UDP是無面向鏈接的。由于UDP沒有可靠性的保證機制,因此能全速地進行數(shù)據(jù)通信(即充分發(fā)揮物理通信設備的速度);又因為UDP沒有點對點接入的要求,可以實現(xiàn)“一對多點”,“多對多點”的廣播和多點播發(fā)信息。UDP的不可靠傳輸?shù)娜毕?可以在使用UDP時,在應用層增加提高UDP可靠性的代碼來彌補。譬如給數(shù)據(jù)添加順序標記,因而能在應用層發(fā)現(xiàn)數(shù)據(jù)的丟失和亂序,從而加以更正;采用應答確認機制,確保數(shù)據(jù)安全到達接收者等。

  由于嵌入式系統(tǒng)的CPU速度有限、代碼不能太長、傳輸率是關鍵等特殊要求,一般來講,在嵌入式設備接口時,快速、簡單地與嵌入式設備進行雙向數(shù)據(jù)傳輸是首為重要的。所以減少和嵌入式設備之間的往返信息,使網絡成為一種更為高效的通信媒介將是嵌入式網絡協(xié)議設計的必由之路。而UDP協(xié)議的開銷很小,傳輸率比TCP高出很多,實時性更強。所以嵌入式TCP/IP協(xié)議中采用UDP協(xié)議作為運輸層協(xié)議,不失為明智之舉。嵌入式系統(tǒng)中也可能存在對數(shù)據(jù)傳輸可靠性要求很高的情況。由于UDP協(xié)議沒有計時機制、流量控制或擁塞管理機制、應答、緊急數(shù)據(jù)的加速傳送等功能,因此在應用層協(xié)議中加入相應的措施,如給數(shù)據(jù)報加上順序標識、定時等待、采用重傳機制等輔助性的操作來彌補它的缺陷。從應用的角度看, Simplified TCP/IP協(xié)議棧主要是應用于家用電器上網。對于溫度、煙霧和濕度傳感器等的每秒一次地集中監(jiān)控來說,發(fā)送頻繁,包較小,只需前端設備向網絡中廣播實時狀態(tài)等數(shù)據(jù)即可,因此選用UDP較為合適。

  4 Simplified TCP/IP協(xié)議棧處理流程

  Simplified TCP/IP協(xié)議棧接收數(shù)據(jù)包的過程就是解析數(shù)據(jù)包的過程。首先當一個數(shù)據(jù)幀到達時,網絡接口控制程序將其讀入緩沖區(qū),檢查協(xié)議類型字段,如值依次為0x0800,表示數(shù)據(jù)域內為IP包;值依次為0x0806,表示數(shù)據(jù)域內為ARP包[6]。由此以確定使用那種協(xié)議模塊來處理此分組。去掉以太網幀首部的數(shù)據(jù)包將被分配到IP緩存或者ARP緩存。接著,由IP協(xié)議處理模塊或ARP協(xié)議處理模塊繼續(xù)解析。ARP根據(jù)包的類型,或者更新ARP地址映射表或者發(fā)送ARP應答。IP協(xié)議處理模塊對數(shù)據(jù)包解析后,將數(shù)據(jù)交給UDP協(xié)議處理模塊或ICMP協(xié)議處理模塊。ICMP協(xié)議模塊會發(fā)回一個ICMP回顯應答包。Simplified TCP/IP協(xié)議棧發(fā)送數(shù)據(jù)包的過程是封裝數(shù)據(jù)包的過程,數(shù)據(jù)經過某層協(xié)議的處理,就會在數(shù)據(jù)包首部增加某種

  格式的頭部。在IP協(xié)議模塊處理數(shù)據(jù)包的過程,它要通過調用ARP協(xié)議獲得對方主機的物理地址。

  Simplified TCP/IP協(xié)議棧處理流程如圖3所示。

  圖3 Simplified TCP/IP協(xié)議棧處理流程圖

 

  5 總結與展望

  為了驗證方案的可行性,實驗中以簡單圖像的傳輸為研究對象,檢驗Simplified TCP/IP協(xié)議棧的運行效果。從測試結果可看出,大流量的圖像傳輸系統(tǒng)中發(fā)生數(shù)據(jù)報的幾率還是比較大的。當然,如果是應用在數(shù)據(jù)流量不是很大,僅有一些少量數(shù)據(jù)和簡單的控制指令或反饋信息的應用系統(tǒng)中,運行的情況會更好一些。

  目前Simplified TCP/IP協(xié)議棧技術還有一些不完善的地方。比如在數(shù)據(jù)量大的網絡中減小數(shù)據(jù)報的丟失率,更有效的進行擁塞控制等,這些都是今后的努力方向。另外,還需要進一步優(yōu)化代碼,提高SimplifiedTCP/IP協(xié)議棧的性能。

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

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

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

關鍵字: 汽車 人工智能 智能驅動 BSP

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

關鍵字: 亞馬遜 解密 控制平面 BSP

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

關鍵字: 騰訊 編碼器 CPU

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

關鍵字: 華為 12nm EDA 半導體

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

關鍵字: 華為 12nm 手機 衛(wèi)星通信

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

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

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

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

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

關鍵字: BSP 信息技術
關閉
關閉