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

一種基于lwIP協議棧的雙網口通信方案設計

2016-11-09 01:11:30徐業榮包明磊
計算機應用與軟件 2016年9期
關鍵詞:系統

徐業榮 包明磊 李 明

1(南京國電南自電網自動化有限公司 江蘇 南京 211100)2(國電南京自動化股份有限公司 江蘇 南京 211100)

?

一種基于lwIP協議棧的雙網口通信方案設計

徐業榮1,2包明磊1李明1

1(南京國電南自電網自動化有限公司江蘇 南京 211100)2(國電南京自動化股份有限公司江蘇 南京 211100)

針對嵌入式系統低成本以太網通信的需求提出將lwIP開源協議棧移入μC/OS系統,構成一種雙網口通信方案。操作系統模擬層所用內部郵箱與信號量使用專屬內存塊。應用層設計成連接層和規約層,連接層循環遍歷所有處于穩定狀態的TCP連接,規約層負責解析上層應用規約。實驗結果表明,應用此方案的系統能夠實現可靠的以太網通信需求。

lwIPμC/OSTCP連接應用層

0 引 言

隨著嵌入式系統設備的廣泛應用,當設備需要與多個網絡設備交互數據時,需要設備具有多網口、多連接功能,同時能夠解析應用規約。目前嵌入式系統攜帶以太網通信功能,可采用商用操作系統的自帶協議棧或者開發協議棧。前者對系統CPU的硬件性能要求較高[1],且一般為收費授權方式,使用成本較高。后者對開發人員的技術要求較高,開發周期較長。

lwIP協議棧作為一種開源、可穩定運行的網絡協議棧,可移植于多種操作系統中。使用lwIP協議棧時,若采用新建任務方式管理新建TCP連接,存在兩個弊端:新建TCP連接數目容易受操作系統任務數量上限限制;TCP連接關閉時需刪除對應的任務,回收任務所占用的堆棧空間時,若處理不當,容易造成系統運行致命錯誤。

本文中提出一種基于lwIP協議棧雙網口多連接的方案設計。方案中連接層以單任務循環遍歷所有的TCP連接,規約層負責解析應用規約內容。

1 方案平臺設計

1.1硬件平臺設計

如圖1所示,方案硬件平臺由四個部分組成:邏輯處理單元、外接網口單元、存儲單元、時鐘單元。邏輯處理單元中的CPU采用Atmel公司AT91RM9200芯片,操作系統選用搶占式的實時多任務操作系統μC/OS II系統[2],將lwIP協議棧移植入操作系統中。

外接網口單元共設計2個以太網口,其中一個(NET1)由AT91RM9200自帶的以太網控制器外擴PHY芯片(LXT971)構成,另一個(NET2)由總線外擴的以太網控制器CS8900構成。當外部以太網通信幀發送至一以太網網口時,主CPU收到相應的中斷信號并讀取外部通信幀。

在存儲單元中,平臺外擴一片16位4 MB大小的FLASH(S29GL032M)存儲程序,選用兩片內存芯片組成32位16 MB大小的SDRAM作為內存,選用鐵電存儲芯片FM24CL64存放系統運行時的關鍵配置參數。時鐘單元由RTC芯片向系統提供時鐘信息。

圖1 系統平臺設計框圖

1.2μC/OS系統下的移植與實現

為了能夠與不同操作系統或者無操作系統兼容,lwIP協議棧內部不使用特定的數據結構或者功能模塊,而是通過模擬層接口函數實現協議棧與不同操作系統的兼容。在將lwIP協議棧移植入μC/OS操作系統時,利用μC/OS系統中的郵箱、信號量實現操作系統模擬層的功能[3]。

圖2 系統軟件架構

圖2顯示了方案的軟件架構,其中操作系統模擬層銜接μC/OS系統和lwIP協議棧。后者完成 TCP/IP參考模型[4]中的運輸層、網絡層功能。為每個外部網絡接口建立lwIP協議棧中的虛擬網絡接口struct netif,構成鏈路層功能。

通信幀進入外接網口單元中的一個外部網絡接口,經以太網控制器對通信幀處理,完成網口中斷信號發出。邏輯處理單元接到中斷信號后,調用網口中斷處理函數對通信幀進行處理,將通信幀以消息發送至對應的消息處理任務。后者調用虛擬網絡接口的通信幀輸入函數處理通信幀,使通信幀進入lwIP協議棧內部處理流程。

方案在應用層中設計了連接層和規約層。連接層實現UDP報文的接收[5]、TCP連接的維護和TCP報文的收發,規約層完成接收報文的解析和回復報文的組幀功能。

1.3協議棧內存管理

在系統運行過程中,系統與外部的TCP連接與斷開將有lwIP協議棧內部郵箱、信號量不斷的新建與回收。為了避免系統長時間運行后,出現內存碎片化,方案對協議棧中郵箱、信號量的內存管理使用專屬內存塊的方式。

以郵箱申請為例,首先申請內存塊pcQueueMemoryPool,調用OSMemCreate對pcQueueMemoryPool內存塊進行初始化,返回數據塊鏈表地址pQueueMem。如圖3所示,內存塊被初始化成數量為MAX_QUEUES、大小為strQueu數據塊鏈表。每個數據塊頭部為struct os_mem結構體,用于存儲數據塊鏈表當前可用數據塊信息。當使用sys_mbox_new申請郵箱時,先從pQueueMem中使用OSMemGet獲取內存塊。操作系統通過改變os_mem參數,使得可用數據塊指針指向下一個數據塊,可用數據塊數量減1。sys_mbox_free釋放郵箱時,調用OSMemPut函數將內存塊放回內存池中,可用數據塊指針指向當前數據塊,可用數據塊數量加1。信號量的申請和釋放與郵箱方法類似。

圖3 動態內存管理

2 應用層可靠性關鍵設計

方案中,應用層設計了連接層和規約層,連接層負責UDP廣播報文的接收、TCP連接的維護和TCP報文的收發。規約層專注于具體規約處理,提高方案的擴展性,可用于不同的上層規約解析[6]。

2.1連接層可靠性關鍵技術設計

通常為了使每個TCP連接能夠獨立接收和發送數據,系統需為每個TCP連接申請獨立的接收與發送內存區。當連接被關閉時,應對該連接的內存區進行回收。當各連接只需同步向外部上送相同信息時,每個連接的接收與發送內存區可采用代理線程設計模式[7],避免申請大量內存空間;當外部系統對系統通信數據需求差異較大,系統需為多個連接開獨立的內存區用于接收和發送數據。以單次發送或者接收最多1500字節的數據為例,當TCP連接最大數目為10時,系統需約30 Kbyte的內存,內存消耗較大。本文提出一種基于單任務循環接收所有TCP連接的方法,此方法將節省內存開銷。

首先,新建任務Newecho_thread()用于建立TCP連接,當任務接收到外部系統廣播報文后,如果系統沒有與此外部系統建立TCP連接,則調用lwIP內部函數新建TCP連接;其次,新建Tcpecho_thread()任務,循環遍歷協議棧中tcp_active_pcbs鏈表,實現循環接收系統中所有處于穩定狀態的TCP連接數據。

由于方案中是單任務接收所有TCP連接數據,將不必申請多個接收、發送數據內存區,節省了內存開銷。此方案的弊端是多個TCP連接不能并行接收TCP連接數據,可以通過設置固定超時時間recv_timeout,減少每個TCP連接的阻塞時間。為了實現長連接功能,方案中采用兩種策略維護活躍狀態TCP連接,及時刪除已失效TCP連接。

(1) 設置lwIP Keepalive功能選項

從Ver1.3.0開始,lwIP協議棧提供Keepalive保活功能[8]。在lwipopts.h文件中將Keepalive宏開關LWIP_TCP_KEEPALIVE置為1。針對每個TCP連接,可以設置允許持續空閑時間keep_idle、保活探測消息的發送頻率keep_intvl、保活探測消息判斷連接斷開的次數keep_cnt選項。

(2) 檢測TCP狀態

lwIP協議棧以往版本內部函數返回值直接為指向相應數據的指針,此方法的弊端是運行過程中一旦出現錯誤,無法區分錯誤類型,不能對不同類型錯誤做出分類處理。lwIP 從1.4.0版本開始修改內部函數、操作系統模擬層函數的返回值與形參結構。將返回值更改為函數執行錯誤類型,原先的函數返回值以函數形參方式輸出。

圖4為連接層TCP報文接收任務Tcpecho_thread接收數據結構示意圖。任務運行過程中,通過對tcp_active_pcbs鏈表循環遍歷,使用lwIP協議棧內部函數循環接收所有處于活躍狀態的TCP連接。判斷函數返回值,確定當前連接的運行狀態,如果發現連接異常,則進入異常處理環節。如果接收連接正常,則將報文交予規約層解析。

圖4 Tcpecho_thread任務接收數據流程圖

2.2規約層報文解析

在單任務接收所有TCP連接中,當規約層在處理外部通信幀時,連接層將處于阻塞狀態,造成系統不能接收其他TCP連接。為了避免系統丟失其他TCP連接數據,方案中對規約層處理流程進行改進。

以電力行業繼電保護設備信息接口配套標準DL/T667[9]為例,主站與從站之間一般處于非平衡傳輸工作模式。主站發出幀長較小,從站依主站命令類型回復自身系統運行中產生的大量有效信息數據。利用主站發出幀幀長較短特點,規約層可以以較小內存空間建立數據隊列存儲主站的多條通信幀和TCP連接信息。在系統運行過程中,規約解析函數依據先入先回原則對數據隊列中通信幀解析并回復。規約層將待發送報文數據和TCP連接信息一并交予連接層,由連接層完成最終數據的發送。規約層處理完一幀數據后,將當前數據塊標志Isused置為未用狀態,開始處理下一個通信幀。

3 方案通信測試

3.1ICMP協議返回時間測試

圖5 Net1網口Ping命令返回時間

圖6 Net2網口Ping命令返回時間

數據大小(Bytes)最大返回時間(毫秒)Net1Net2最小返回時間(毫秒)Net1Net2平均返回時間(毫秒)Net1Net2320.8841.2480.3610.9340.4991.033640.9701.3170.3701.0870.5161.1831280.8021.5630.3831.3390.5271.442

作為TCP/IP協議的一部分,ICMP(Internet Control Messages Protocol)即因特網信報控制協議主要用于測試網絡連接量。使用該協議對系統進行測試可以反映方案的響應性能。在實際操作上,使用Ping命令測試系統與后臺系統的端對端連通。圖5和圖6分別顯示了依據本方案所設計的通信系統兩個網口在測試過程中,Ping命令不同大小字節數據響應返回時間。表1顯示了最大、最小和平均返回時間。

Net1網口在不同數據負載下,返回時間相對穩定,Net2網口對Ping命令的響應時間,隨著負載通信幀大小的增加而增加。這主要因為系統從外部接收通信幀時,需要先存儲在CS8900芯片片上內存,然后通過總線傳遞至主CPU。當系統往外部發送通信幀時,同樣需經CS8900芯片片上暫存。隨著搬移數據大小的增加,搬移時間也會隨之增大。作為Net1的ARM芯片內部的太網媒體訪問控制器,因為與內核關聯度較高,在傳輸速度上,基本不受字節大小影響。

3.2TCP連接穩定性測試

TCP作為一種面向連接的協議,可以從三個角度測試TCP連接的穩定性:

(1) TCP短連接測試

TCP短連接方式通常為client端向server端發起連接,server端接到請求后建立連接。雙方交互數據后,則斷開連接。本測試中服務器端為一臺PC電腦,客戶端為本方案系統。為了能夠快速驗證短連接建立的有效性,測試程序中省去雙方交互應用層數據這一步。每當TCP連接建立成功后,PC電腦端自動斷開連接并重新發起TCP連接。4小時不間斷建立、斷開TCP連接測試結果顯示,系統能夠滿足TCP短連接要求,不存在系統運行一段時間后出現不能新建連接現象。這主要由于本系統lwIP協議棧郵箱、信號量的建立采用了專屬內存塊管理方法,每一次TCP連接的斷開,該連接對應的郵箱、信號量所占用的內存塊都得以及時回收。相反,如果采用從系統中直接申請內存用于建立郵箱和信號,經過半小時短連接測試,通過打開協議棧斷言開關,顯示sys_sem_new或者sys_mbox_new失敗。

(2) TCP長連接測試

在長連接測試中,后臺側使用數字化變電站自動化系統PS6000+系統,測試時間設定為24小時,結果顯示系統完全滿足長連接可靠性要求。通過調整lwIP協議棧中Keepalive參數,可以實現快速識別網線斷開或者后臺側崩潰現象。當網線重新插上或者后臺重啟后,系統又能快速實現與后臺的重連。

(3) TCP瞬時多條報文測試

為了檢驗系統瞬時接收多條報文功能,利用以太網測試工具瞬時發送多條TCP命令。結果顯示系統能夠緩沖多條TCP命令,命令存儲數目的大小與系統設定的TCP數據隊列區大小相關。

4 結 語

本文介紹了一種基于μC/OS-II系統的lwIP協議棧雙網口多連接的設計方案。在介紹了軟件系統的架構基礎上,本文還介紹了郵箱、信號量的內存管理方法、單任務循環接收所有TCP連接的方法以及規約層的響應機制。實驗結果表明,該方案穩定性高,可以使用較小的系統時間和內存空間實現嵌入式系統與外部的多連接通信。該方案已經應用于電力系統二次側保護設備的對外通信模塊中,滿足了裝置對低成本以太網通信的需求。

[1] 李勁君,張愛民,張杭.一種應用于數字化變電站的嵌入式TCP/IP協議棧[J]. 電力系統自動化,2010,34(10):97-100.

[2] Jean J Labrosse. 嵌入式實時操作系統μC/OS-II[M].邵貝貝,譯.北京:北京航空航天大學出版社,2007.

[3] 馬濤,白瑞林,石堅.Cortex-A8平臺的μC/OS-II及 lwIP協議棧的移植與實現[J]. 計算機應用與軟件,2014,31(1):242-245.

[4] W Richard Stevens. TCP/IP詳解[M].范建華,譯.北京:機械工業出版社,2000.

[5] 徐鑫,曹奇英.基于LwIP協議棧的UDP協議分析與優化[J]. 計算機應用與軟件,2011,28(3):246-249.

[6] 周紹文. 一種基于uIP協議棧的多應用層協議支持方案的設計[J].電力系統保護與控制,2010,38(9):109-112.

[7] 蔣俊,鐘偉勝. μC/OS-II和LWIP的并發服務器與代理線程設計模式[J].單片機與嵌入式系統應用,2014,14(12):42-44.

[8] 胡俐蕊,王則林,胡傳志.基于LwIP的μC/OS-II網絡應用程序設計方法[J].計算機應用與軟件,2010,27(4):271-273.

[9] 譚文恕,劉靜泉,葉鋒,等.遠動設備及系統第5部分傳輸規約 第103篇 繼電保護設備信息接口配套標準[S].DL/T.北京:中國電力出版社,1999.

DESIGN OF AN LWIP-BASED DUAL NETWORK INTERFACE COMMUNICATION SCHEME

Xu Yerong1,2Bao Minglei1Li Ming1

1(Nanjing SAC Power Grid Automation Co., Ltd, Nanjing 211100,Jiangsu,China)2(GuodianNanjingAutomationCo.,Ltd,Nanjing211100,Jiangsu,China)

Aiming at the requirement of low cost Ethernet communication of embedded system, we propose to move the open source protocol stack lwIP into μC/OS system to construct a dual network interface communication scheme. The inner mailbox and semaphore of operating system emulation layer is designed to use the exclusive memory block. The application layer is designed as the connecting layer and the protocol layer. The connecting layer loops through all the stable TCP connections. The protocol layer is responsible for parsing the upper application protocol. Experimental results show that the application of this scheme can achieve reliable Ethernet communication needs.

lwIPμC/OSTCP connectionApplication layer

2015-06-26。徐業榮,工程師,主研領域:繼電保護裝置研究與開發。包明磊,高工。李明,工程師。

TP368.2

A

10.3969/j.issn.1000-386x.2016.09.030

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 伊人久久综在合线亚洲91| igao国产精品| 亚洲综合婷婷激情| 情侣午夜国产在线一区无码| 四虎在线观看视频高清无码| 久久熟女AV| 激情综合婷婷丁香五月尤物| 亚洲最大看欧美片网站地址| 亚洲熟女中文字幕男人总站 | 亚洲精品国偷自产在线91正片| 亚洲无码免费黄色网址| 97久久超碰极品视觉盛宴| 中文无码精品a∨在线观看| 亚洲妓女综合网995久久| 新SSS无码手机在线观看| 国产在线专区| 国产福利免费视频| 国产在线精品99一区不卡| 亚洲欧美h| 国产成人欧美| 2019国产在线| 国产精品无码AV中文| 色首页AV在线| 波多野结衣国产精品| 青青草原国产| 亚洲欧美日韩成人在线| 亚洲一级毛片| 国产精品三区四区| 亚洲欧洲一区二区三区| 免费一级无码在线网站| 亚洲第一成网站| 国产精品尹人在线观看| 综合五月天网| 欧美激情视频一区| 国产美女自慰在线观看| 欧美黄网站免费观看| 自偷自拍三级全三级视频 | 亚洲国产成熟视频在线多多| 欧美福利在线| 亚洲精品国产综合99| 亚洲人成在线精品| 99无码中文字幕视频| 色欲不卡无码一区二区| 日本黄色a视频| 国产男女XX00免费观看| 在线看国产精品| 天天躁夜夜躁狠狠躁躁88| 亚洲日韩图片专区第1页| 国产精品污视频| 成人免费一区二区三区| 国产97视频在线观看| 亚洲欧洲日韩久久狠狠爱| 亚洲综合天堂网| 97在线免费| 久久久久亚洲av成人网人人软件| 亚洲伊人久久精品影院| 嫩草国产在线| 一本二本三本不卡无码| 一本久道久综合久久鬼色| 伊人久久大线影院首页| 欧洲熟妇精品视频| 亚洲V日韩V无码一区二区 | 四虎国产成人免费观看| 亚洲综合经典在线一区二区| 人人91人人澡人人妻人人爽| 国产精品亚洲欧美日韩久久| 精久久久久无码区中文字幕| 亚洲高清中文字幕| 无码人妻热线精品视频| 国产精品视频第一专区| 五月激情婷婷综合| 国产乱人伦AV在线A| 免费看美女自慰的网站| 国产亚洲精| 国产地址二永久伊甸园| 制服丝袜 91视频| 亚洲香蕉在线| 国产成人免费| 中文字幕无码av专区久久| 国产99精品久久| 国产精品2| 亚洲91精品视频|