999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

物聯網中嵌入式TCP/IP協議棧的設計技巧

2011-01-23 03:31:10劉波濤
通化師范學院學報 2011年2期
關鍵詞:嵌入式系統設計

劉波濤

(長江大學 計算機科學學院,湖北 荊州 434023)

當前,物聯網技術正受到研究者的廣泛關注[1],而在物聯網技術中的一個關鍵問題[2-4],就是要實現嵌入式設備聯入Internet.嵌入式設備接入Internet的方法很多,其中一種方法[5-8]就是在嵌入式設備中實現裁剪后的TCP/IP協議棧.通用計算機系統有足夠的資源支持系統在內核中實現復雜的標準TCP/IP協議棧,而這對只有有限資源的嵌入式系統來說,既不可能也沒有必要.因此,針對嵌入式系統的特點,把握嵌入式TCP/IP協議棧設計的技巧就顯得尤為重要.

1 嵌入式系統的特點

在理解嵌入式TCP/IP協議棧設計技巧前,需了解嵌入式系統的特點,特別是其資源較少的特點.

嵌入式系統與通用計算機系統的本質區別在于系統應用的不同,嵌入式系統是將計算機系統嵌入到對象系統中.因此,嵌入式系統與通用計算機系統相比,主要具有以下特點[9]:第一,嵌入式系統是面向特定應用的系統.嵌入式系統與通用型系統的最大區別就在于嵌入式系統大多為特定用戶群設計的系統,因此它通常都具備低功耗、體積小、集成度高等特點,并且可以滿足不同應用的特定需求;第二,嵌入式系統的硬件和軟件都必須進行高效地設計,量體裁衣、去除冗余,這樣才能更具競爭力;第三,為了提高執行速度和系統可靠性,嵌入式系統中的軟件一般都固化在Flash或ROM中,而不是存儲在磁盤中;第四,嵌入式系統本身不具備二次開發能力,即設計完成后用戶通常不能對其中的程序功能進行修改,必須有一套開發工具和環境進行再次開發.

2 嵌入式TCP/IP協議棧設計技巧

正因為嵌入式系統不像通用計算機那樣有豐富的系統資源,因此必須針對嵌入式系統的特點,來設計協議棧的實現技巧,否則協議棧實現的再好,但由于缺乏嵌入式系統的支持,也將是徒勞無功.

2.1 零拷貝

TCP/IP協議棧的工作過程如圖1所示.數據以一定的單位(通稱為數據包)在發送端一方由應用進程交給協議棧,數據包在協議棧從上層至下層被依次封裝,即將上層的整個數據包作為下層的數據部分,再添加下層的首部,而作為新的數據包;在接收端,數據包則經由協議棧從下層至上層被依次解包:即將下層的首部剝去,并根據其內容將數據部分交付上層的協議處理,最后應用層的數據交由應用進程處理[10].

圖1 TCP/IP協議棧的工作過程

為了保證協議棧中層與層之間的封裝性,一般TCP/IP的實現過程中多采用層層拷貝的原則.也就是說,在封包時,將上層協議的數據包從上層協議拷貝到下層協議的數據空間中;而在解包時,將數據包從下層協議拷貝到上層協議的數據空間中.而對應于嵌入式系統,特別是資源極其有限的單片機系統及SOC片上的系統,如果在封包或解包時按上述方法來拷貝數據,則需要很多的緩沖區并且耗費大量嵌入式CPU拷貝時間.顯然,這是不明智的.

因此,筆者設計的數據包封裝及解封裝采用了如下方法:在層與層之間交換信息時,以數據緩沖區首指針作為函數參數進行傳遞;在封裝時,上層協議在分配空間時充分考慮以后下層協議的封裝,并在緩沖區首部多分配一些必要的空間,便于下層協議在不需要從上層拷貝的情況下直接填充該層的首部.例如,HTTP協議在分配數據空間時多分配54字節用于隨后的TCP、IP和Ethernet協議首部的填充;在解封裝時,也將收到的原始數據包首地址直接傳給向上層協議,便于上層協議獲取下層協議的一些必要信息.如讓TCP層知道數據包的源IP地址,以便于填充TCP傳輸控制塊的目的IP地址字段.因此,這種方式不僅節約了系統的資源,而且會因為不需要拷貝數據包而提高了系統的處理速度.

2.2 動態內存管理

不管是零拷貝還是層層拷貝,都需要分配一定的內存來支持實現.嵌入式系統不像通用計算機那樣,內存資源豐富,一般內存較少,因此更應該“精打細算”.考慮到Internet網絡中接收和發送的數據包大小不一,即收到的和發送的數據包長度都不是一個定值,例如以太網數據包的長度范圍值是64至1518字節,因此對內存的分配應該采用動態的方式進行管理.有如下兩種方案可供選擇:方案一,是每次分配一個固定長度的緩存.讓該緩存能夠容納一個最大的數據包,且在該緩存中設置一個字段用來存儲其有效數據的長度,顯然這種方案實現簡單,但是浪費了寶貴內存資源;方案二,是按需分配合適大小的緩存,而不管該緩存是用于底層接收數據還是用于上層發送數據,這種方案節約了內存資源.因此,筆者建議采用方案二來實現數據包緩存的動態分配.

需要注意的是,動態管理內存就肯定會面臨“內存泄露”的風險,它最終會將系統的可用內存耗盡,最終會使嵌入式設備崩潰、停止運行.為避免這個風險的出現,嵌入式TCP/IP協議棧實現過程中,應該遵從“誰分配誰釋放”的原則來進行內存的動態管理.例如,HTTP有數據包需要發送,那么在它依次調用完TCP發送模塊函數、IP發送模塊函數、驅動發送函數后,應該釋放它申請的動態內存.

2.3 模塊化設計

因為TCP/IP協議棧本身就是一個分層的軟件系統,故應該按協議將協議棧實現分為若干個模塊文件,讓每個模塊實現一層每一個協議的功能,如圖2所示.在圖2中,在頭文件(*.H)中定義了該模塊對外的接口變量及函數接口聲明,而在源文件(*.C)中則定義了相關的變量和函數.要引用某模塊的變量或調用其中的函數時,只需包含此模塊的頭文件即可.這樣設計之后,分工明確,程序清晰,可讀性好,便于程序的維護及修改.

圖2 協議棧實現的文件目錄

圖3 嵌入式TCP/IP軟件構成層次圖

2.4 分層設計

嵌入式處理器多種多樣,嵌入式設備類型豐富,廠家眾多,因此,在進行嵌入式軟件的設計過程中應該充分考慮這一點,實現盡可能的方便移植.為了使嵌入式TCP/IP協議棧具備良好的可移植性,以便適應多種目標平臺,可將實現分為硬件無關層和硬件依賴層,如圖3所示.在圖3中,硬件無關層的實現使用高級語言完成,例如C語言,以方便將硬件無關層相關代碼移植到所有其他能夠編譯C代碼的硬件平臺上;在硬件依賴層中使用特殊機制,例如C語言中的#define宏定義來重新定義數據類型,這樣就可根據移植環境的變化來重新定義數據類型,以盡量消除系統對于具體編譯器的依賴;依賴層和無關層間采用統一的接口交互信息,當硬件平臺改變時,只需改動硬件依賴層的各驅動程序實現,在其接口函數名稱與參數不變的情況下,硬件無關層無需改變,從而屏蔽了硬件實現的差異.

2.5 其他技巧

由于嵌入式的系統運行速度和內存容量有限,在設計時還應遵循下列原則:盡量避免使用全局變量或外部變量,全局變量或外部變量在整個程序運行期間都要占用內存,所以要盡量少用全局變量或外部變量,而盡量多地用局部變量.因此,建議采用函數參數傳遞的方式來共享信息;占用內存較多的變量應該定義在外部RAM中.因嵌入式處理器的內部RAM可用存儲空間非常有限,占用過多的內部RAM會使嵌入式處理的硬件堆棧溢出,從而導致函數調用失敗.如實現嵌入式TCP/IP協議棧中的TCP傳輸控制塊數組較大,就應當定義在外部RAM中.

圖4 測試內存泄露時輸出的信息

圖5 客戶端動態獲取服務傳感器溫度

3 測試結果

遵循前述設計思路,筆者在單片機W78E58B上實現了一個嵌入式TCP/IP協議棧[5],并在此基礎上實現了一個嵌入式Web服務器.采用的測試方法是將該此嵌入式Web服務器與PC機在RJ-45口及串口分別對接.將嵌入式Web服務的調試信息從串口輸出,并由串口精靈顯示[11].圖4顯示的是對其進行內存泄露的測試.筆者對系統的內存塊進行相關記錄和統計:Len字段記錄是本次分配的內存長度,UsedMemLen字段記錄的是所用內存總長度,FreeMemLen字段記錄的是空閑內存的長度;每一條信息表明了某個內存塊分配或釋放所在函數名及所處時刻.如由圖4可知,每條信息對應的UsedMemLen與FreeMemLen之和是一個定值,也就是說,筆者遵照這一思路設計的嵌入式Web服務器不存在內存泄露的風險.

對嵌入式Web服務器進行相關功能測試,如圖5所示.由圖可知,嵌入式Web服務器能完成數據的下載及上傳功能,遵照這一思路設計的嵌入式TCP/IP協議棧運行穩定可靠.

4 結論

本文總結了在實現嵌入式TCP/IP協議棧的過程中,應該注意的設計技巧.并做了相關測試,驗證了該技巧的可行性.這為嵌入式設備中順利實現嵌入式TCP/IP協議棧,從而實現物聯網技術打下了堅實的基礎.

[1]劉書艷.十年后,物聯網風行[N].中華工商時報,2010-3-5(7).

[2]International Telecommunication Union UIT.ITU Internet Reports 2005:The Internet of Things[R].2005.

[3]王保云.物聯網技術研究綜述[J].電子測量與儀器學報,2009,23(12):1-7.

[4]AMARDEO C,SARMA,J G.Identities in the Future Internet of Things[J].Wireless Pers Commun 2009,49:353-363.

[5]馮翠麗,劉波濤.一種嵌入式TCP/IP協議棧的設計與實現[J].長江大學學報,2008,5(4):331-333.

[6]陳立家,焦戰立,熊文龍.基于精簡TCP/IP協議棧網絡服務器的實現[J].武漢理工大學學報,2007,31(3):565-568.

[7]任會平,王平,徐櫞.低成本嵌入式web服務器的研究[J].微計算機信息,2008,24(10):23-25.

[8]陳立家,焦戰立,熊文龍.基于精簡TCP/IP協議棧網絡服務器的實現[J].武漢理工大學學報,2007,31(3):565-568.

[9]牛茹.基于嵌入式系統的農業數據采集傳輸關鍵技術研究[D].咸陽:西北農林科技大學,2008.

[10]劉波濤,賈菡,馮翠麗,等.嵌入式Web服務器中TCP/IP協議棧的裁剪設計[J].西安通訊學院學報,2008,7(4):28-30.

[11]劉波濤,馮翠麗,王青海,等.應用RTL8019AS的嵌入式Web服務器硬件實現[J].長江大學學報,2008,5(1):75-78.

猜你喜歡
嵌入式系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 一级爆乳无码av| 欧美日韩国产成人在线观看| 成人国产精品一级毛片天堂| 国产浮力第一页永久地址| 亚洲第一黄色网| 综合网天天| 亚洲视频在线青青| 久久a级片| 国产黄色片在线看| 亚洲国产91人成在线| 第一区免费在线观看| 欧美.成人.综合在线| 国产情精品嫩草影院88av| 国产精品999在线| 免费毛片全部不收费的| 白浆免费视频国产精品视频| 国产乱人伦AV在线A| 97视频在线精品国自产拍| 久热这里只有精品6| 无码免费视频| 亚洲男人的天堂久久香蕉网| 亚洲香蕉伊综合在人在线| 国产乱子伦精品视频| 欧美国产在线精品17p| 美女国内精品自产拍在线播放| 色老二精品视频在线观看| 亚洲大学生视频在线播放| 成人在线亚洲| 九月婷婷亚洲综合在线| 97久久精品人人做人人爽| 国产办公室秘书无码精品| 欧美成人日韩| 久久国产成人精品国产成人亚洲| 丁香婷婷激情综合激情| 啪啪永久免费av| 亚洲国产成人无码AV在线影院L| 久久精品午夜视频| 亚洲第一视频网| 国产精品美人久久久久久AV| 亚洲色图欧美| 99re精彩视频| 欧美日韩国产在线播放| 欧美一级在线| 五月激情婷婷综合| 国产亚洲精品97AA片在线播放| 日韩在线影院| 亚洲一区毛片| 91精品国产自产在线观看| 成人在线综合| 国产精品网址你懂的| 亚洲欧美成人综合| 少妇高潮惨叫久久久久久| 成人福利一区二区视频在线| 波多野结衣无码AV在线| 国产亚洲精品无码专| 亚洲永久色| 亚洲欧美在线精品一区二区| a天堂视频| 国产美女无遮挡免费视频| 夜夜操国产| 亚洲日韩精品无码专区97| 中文字幕第1页在线播| 婷婷色丁香综合激情| 成人在线欧美| 日韩视频免费| 午夜在线不卡| 国模沟沟一区二区三区| 成人在线第一页| 國產尤物AV尤物在線觀看| 91欧洲国产日韩在线人成| 亚洲一区二区三区香蕉| 亚洲乱码视频| 欧美另类第一页| 国产精品成人AⅤ在线一二三四| 日韩二区三区| 久久永久免费人妻精品| 亚洲无限乱码| 欧美久久网| 91网红精品在线观看| 成人午夜视频在线| 国产农村妇女精品一二区| 久久综合结合久久狠狠狠97色|