《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 面向設備監(jiān)控的LwIP協(xié)議棧擴展設計
面向設備監(jiān)控的LwIP協(xié)議棧擴展設計
來源:電子技術應用2013年第6期
孫棣華1,2,陸 旭1,2,廖孝勇1,2,鄭林江2,3,余楚中1
1.重慶大學 自動化學院,重慶400044; 2.重慶大學 信息物理社會可信服務計算教育部重點實驗室,重慶400044; 3.重慶大學 計算機學院,重慶400044
摘要: 針對遠程設備監(jiān)控中數據傳輸速度慢、傳輸距離有限、無法監(jiān)控設備網絡狀態(tài)等問題,提出一種基于改進輕型IP協(xié)議棧(LwIP)的設備監(jiān)控方案。在嵌入式ARM硬件平臺和μC/OS-Ⅱ軟件平臺基礎上,采用LwIP協(xié)議棧實現了監(jiān)控終端網絡通信功能。通過擴展LwIP中因特網信報控制協(xié)議(ICMP)模塊中的報文應答機制,完成了對ICMP數據報文的監(jiān)聽和處理,以達到對遠端設備的實時監(jiān)控。實驗結果證明了設計方案的可行性和實用性。
中圖分類號: TP274+.2
文獻標識碼: A
文章編號: 0258-7998(2013)06-0010-04
Expansion design of LwIP in device monitoring
Sun Dihua1,2,Lu Xu1,2,Liao Xiaoyong1,2,Zheng Linjiang2,3,Yu Chuzhong1
1.College of Automation,Chongqing University,Chongqing 400044,China; 2.Key Laboratory of Dependable Service Computing in Cyber Physical Society of Ministry of Education, Chongqing University,Chongqing 400044,China; 3.College of Computer Science,Chongqing University,Chongqing 400044,China
Abstract: Aiming at problems of slow speed of data transmission, restricted transmission distance and difficulty to get monitoring device network state in remote device monitoring, this paper designs a new device monitoring scheme which is based on improved LwIP. This scheme realizes the function of the network by transplanting LwIP on ARM platform and μC/OS-Ⅱ system. In order to achieve the purpose of real-time monitoring on remote device, it completes monitoring and treatment of the ICMP message by improving ICMP support in LwIP. The experimental results prove the feasibility and practicability of the scheme.
Key words : LwIP;device monitoring;STM32F207;ICMP

    設備監(jiān)控系統(tǒng)可獲得設備的工作環(huán)境參數和設備運行狀況,對確保設備安全正常運行、充分發(fā)揮設備效能、提高企業(yè)經濟效益有極其重要的作用[1]。目前已有許多企業(yè)構建了設備監(jiān)控系統(tǒng),但大部分是通過RS232、RS485和CAN總線等協(xié)議進行通信,不僅在數據傳輸距離和傳輸速度上有很大限制,而且無法直接接入互聯(lián)網,無法滿足信息化條件下對企業(yè)生產作業(yè)管理的要求[2]。本文將結合嵌入式技術和網絡技術,設計一種遠程設備監(jiān)控方案,保證設備工作狀態(tài)的準確采集和快速傳遞,同時輔助工作人員實現對現場設備的及時維護與管理。

    瑞士計算機科學院的Adam Dunkels等開發(fā)了一套用于嵌入式系統(tǒng)的TCP/IP協(xié)議棧-LwIP,這是一種既可以移植到操作系統(tǒng)上,又可以獨立運行的輕型嵌入式TCP/IP協(xié)議棧,其主要特點是在保持TCP協(xié)議主要功能的基礎上減少了對RAM的占用[2-3]。LwIP作為一種嵌入式網絡協(xié)議棧,具有相對齊全的功能,并提供一套非常完善的內存管理方法,適合在32位的低端嵌入式系統(tǒng)中使用。
    在綜合考慮設計成本和穩(wěn)定性等多方面因素后,本文在32位ARM處理器 STM32F207和嵌入式實時操作系統(tǒng)μC/OS-II組成的軟硬件平臺上移植和改進LwIP協(xié)議棧,從而實現了對遠端設備的監(jiān)控與管理。
1 系統(tǒng)硬件平臺
    設備監(jiān)控系統(tǒng)主要包括以太網通信和本地數據采集兩大模塊。采用STM32F207系列作為開發(fā)板核心處理器,硬件功能模塊主要包括網絡功能模塊、串口設備驅動模塊、A/D模塊、看門狗定時器功能模塊、Flash數據讀寫模塊等,通過各模塊之間的互相輔助與合作,保證監(jiān)控終端的穩(wěn)定可靠工作,實現配電狀態(tài)檢測、網絡狀態(tài)檢測以及環(huán)境溫濕度數據采集等功能,并通過以太網向上位機傳遞現場設備信息[4]。硬件電路結構框圖如圖1所示。

3 LwIP協(xié)議的移植與改進
3.1 LwIP協(xié)議進程模式

    LwIP的設計與實現采用分層模式,每層協(xié)議都解決網絡通信的一部分問題并作為獨立的模塊來實現,提供一些與其他協(xié)議的接口函數。各層之間通過共享內存的方式實現通信,從而減少了內存拷貝開銷,提高其性能[5]。LwIP所支持的協(xié)議主要包括IP、ICMP、UDP和TCP等協(xié)議,這些模塊能夠完成網絡通信的主要功能。除此之外,還設計了一些輔助模塊,主要包括內存管理子系統(tǒng)、操作系統(tǒng)模擬層、網絡API函數等[6]。
3.2 LwIP協(xié)議的移植
    (1)與CPU或編譯器相關的文件移植
    修改/include/arch目錄下cc.h文件中有關數據長度、字的高低位順序等的宏定義。同時,使用_packed關鍵字聲明結構體struct,以便LwIP讀取pbuf結構體中不同長度的數據[2]。
    (2)與操作系統(tǒng)相關的部分
    LwIP中使用信號量通信,所以在 sys_arch.h、sys_arch.c中應實現信號量結構體sys_sem_t和相關的信號量處理函數,包括sys_sem_new()、sys_ sem _free()、sys_sem_signal()、sys_arch_sem_wait()等,完成信號量的建立、釋放、發(fā)送和等待接收功能。同時,LwIP使用消息隊列來緩沖、傳遞數據報文, 因此需要實現消息隊列結構體sys_mbox_t以及相應的操作函數(包括sys_mbox_new()、sys_mbox_free()、sys_mbox_post()等),從而實現消息隊列的創(chuàng)建、釋放、發(fā)送和獲取等功能。
    LwIP與外界網絡連接的線程都有獨立的等待超時時間,也就要求在移植過程中用戶要實現sys_arch_
timeouts()函數, 返回當前該線程所對應的timeout隊列指針。另外,LwIP 中網絡數據的處理需要新建任務來完成操作, 有必要實現sys_thread_new()函數來保證數據處理任務在操作系統(tǒng)中能夠被建立。
    (3)相關庫函數的實現
    LwIP協(xié)議棧中用到了8個外部函數,主要完成16 bit數據的高低字節(jié)交換、32 bit數據的大小頭對調、返回字符串長度、字符串比較、內存數據塊拷貝、指定長度的數據塊清零等功能,與系統(tǒng)或編譯器有關,需要用戶實現。
    (4)網絡設備驅動程序
    在LwIP中可以有多個網絡接口,每個網絡接口都對應了一個struct netif結構,這個netif包含了相應網絡接口的屬性、收發(fā)函數。在網絡設備驅動程序中主要是實現4個網絡接口函數:網卡初始化、網卡接收數據、網卡發(fā)送數據以及網卡中斷處理函數。
3.3 LwIP問題分析
    LwIP中對ICMP協(xié)議的數據處理比較簡單,基本流程如圖3所示。底層物理接口將接收ICMP包并向上傳送至網絡層,經由IP模塊中的ip_input()函數移交到ICMP層處理,在ICMP協(xié)議中調用icmp_input()函數解析出IP包頭、ICMP包頭及數據內容。一些ICMP信息被傳遞到更高協(xié)議層并被傳輸層的一些特殊函數處理,其中函數icmp_dest_unreach()用來通過傳輸層的UDP協(xié)議發(fā)送目標無法到達消息[7]。通常情況下,使用ICMP ECHO信息來探測LwIP協(xié)議移植情況,主要在函數icmp_input()中完成對ICMP ECHO信息的響應,包括地址信息驗證、目的與源地址進行交換、修改ICMP數據類型、求取校驗和,然后通過IP層協(xié)議中的ip_output()將應答信息回傳。

    但是在設備監(jiān)控中,要求LwIP能夠識別ICMP_ER類型的回送報文。因此,需要對LwIP中的ICMP模塊進行補充,以滿足嵌入式終端對局域網中設備網絡狀態(tài)的監(jiān)控。另外,為了模擬類似Linux系統(tǒng)中ping功能系統(tǒng)調用,需要開發(fā)相應的功能接口函數來組成所需IP數據包,并通過IP層的報文發(fā)送函數ip_output()或者原始套接字將數據包發(fā)送到目的主機,以達到監(jiān)控網絡狀態(tài)的目的。
3.4 LwIP改進方法
    根據以上所述問題,本文所采取的改進方法主要包括合成ICMP報文、建立套接字并發(fā)送報文到目的地址、添加ICMP協(xié)議支持這三個基本步驟。
    (1)ping指令簡介
    因特網包探索器ping(packet internet groper),是用來檢查網絡是否通暢或者網絡連接速度的命令。ping發(fā)送一個ICMP包,發(fā)送請求消息給目的主機并報告是否收到所希望的ICMP應答。ping本質上屬于IP協(xié)議層,并且根據用戶輸入不同的指令參數返回網絡狀態(tài)信息。
    (2)合成ICMP_ER報文
    LwIP本身具有一套較為完善的內存管理機制,利用pbuf結構實現數據傳遞,這與BSD中的Mbuf 很相似。pbuf主要用于保存用戶應用程序與LwIP之間互相傳遞的用戶數據。利用LwIP提供的內存分配函數pbuf_alloc(),在RAM中分配一塊空間存儲IP數據包,數據大小為sizeof(struct icmp_echo_hdr),然后填充icmp_echo_hdr類型對象iecho。基本過程如下:
    q=pbuf_alloc(PBUF_IP,sizeof(struct IcmpHeader),
PBUF_RAM);
    iecho=q->payload;
    iecho->type=ICMP_ECHO;
    iecho->code=0;
    iecho->seqno=htons(1);
    iecho->id=htons(13);
    iecho->chksum=0;  //由硬件求取校驗和
    (3)通過RAW套接字發(fā)送請求
    RAW SOCKET可以接收本機網卡上的所有數據幀或者數據包,這對于監(jiān)聽網絡的流量和分析是很有作用的。所以選擇利用LwIP提供的API套接字函數操作建立RAW SOCKET,并調用lwip_sendto()函數將數據通過RAW SOCKET發(fā)送到目的IP。基本過程如下:
    sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
    lwip_sendto(sockfd,q->payload, sizeof(q->payload), 0,
(struct sockaddr *) & dest_addr,sizeof(dest_addr));
    (4)修改ICMP協(xié)議文件
    為了實現對ICMP_ER消息的監(jiān)聽和處理,需要對/src/core/ipv4目錄下的icmp.c文件做補充修改。在主要的報文處理函數icmp_input()中,添加ICMP_ER消息中斷響應方法,由于IP包頭已經被剝離,所以需要在switch(type){}框架中添加case ICMP_ER:單元,主要處理是計算響應時間和消息存活時間,并提取icmp_seq、對方IP地址等相關信息,主要實現方法如下:
    case ICMP_ER:
    timeofrecv = OSTimeGet();
    iechr = (struct IcmpHeader *)p->payload;
    timeofsend = iechr->timestamp;
    timeofrecv = (timeofrecv - timeofsend) * 1000 /
OS_TICKS_PER_SEC;
    printf("%d byte from %s: icmp_seq=%u ttl=%d rtt=
%u ms \n\r",ntohs(iphdr->_len),ip_ntoa(&(iphdr->src)),
ntohs(iecho->seqno),IPH_TTL(iphdr),timeofrecv);
4 實驗分析
4.1 LwIP移植情況測試

    移植情況測試是通過設備監(jiān)控終端與PC之間的網絡ping指令實現的。監(jiān)控終端IP地址為:172.20.36.93,主機IP地址為:172.20.36.72。從圖4中可以看出,終端響應時間為1 ms,可以滿足數據快速收發(fā)的要求,數據存活時間為ttl=255 ms,丟包率為0,說明LwIP協(xié)議已經移植成功。

4.2 改進后設備監(jiān)控功能測試
    在地址為172.20.36.72的主機上使用IP Sinffer軟件偵聽網絡中傳遞上來的ICMP報文,如圖5所示。分析圖5可知,主機接收到了多條由終端發(fā)送上來的ICMP報文,數據包具體內容顯示在右側邊框中,IP數據包的內容是ICMP_ER類型的ICMP報文;ID號0x0D與終端中所設置的報文ID相等,即iecho->id=htons(13);序號為1與終端中所設置的報文序號相等,即iecho->seqno=htons(1)。由此說明終端中所合成的ICMP_ER類型的IP報文已經成功發(fā)送到了目的地址,并且目的主機立刻返回了ICMP請求。

 

 

    對實驗環(huán)境的具體要求:通過監(jiān)控終端監(jiān)測IP尾數為204和128的設備網絡狀態(tài),同時監(jiān)測設備電源配電狀況并回顯配電狀態(tài)參數。分析圖6可知,局域網內被監(jiān)控設備網絡連接正常,能快速響應網絡檢測數據包,丟包率為0,說明對LwIP的協(xié)議棧優(yōu)化后,能夠發(fā)送網絡狀態(tài)檢測數據,并獲得對方主機響應。另外,監(jiān)控終端與主機網絡連接正常,可以將設備狀態(tài)參數通過網絡及時上傳到控制中心。

    本文在分析設備遠程監(jiān)控實際需求的基礎上,以32位微處理器STM32F207系列的處理器為核心,完成了LwIP嵌入式TCP/IP協(xié)議棧的移植與改進,設計并實現了一個基于改進LwIP的設備監(jiān)控方案。該方案已經在實驗室環(huán)境下完成了樣機的研制并驗證了其功能。實踐表明,改進后的LwIP彌補了原有協(xié)議棧對ICMP協(xié)議功能支持上的不足,滿足了用戶需要,相信在未來的設備監(jiān)控等領域必將有著廣闊的應用前景。
參考文獻
[1] 孫彩云,李世中,李麗麗,等.基于ZigBee技術的設備監(jiān)控系統(tǒng)設計[J].水電能源科學,2010,11(28):125-127.
[2] 張亞魁.基于LwIP的嵌入式WEB服務器的研究與實現[D].合肥:合肥工業(yè)大學,2009:14-19.
[3] 楊曄.實時操作系統(tǒng)的μC/OS-Ⅱ下TCP/IP協(xié)議棧的實現[J].單片機與嵌入式系統(tǒng)應用,2003(7):80-83.
[4] 王暉,周巧娣,章雪挺,等.基于LwIP的海洋數據采集與傳輸系統(tǒng)[J].電子技術應用,2012,38(8):26-29.
[5] Duan Zhiyu,Zhao Zhaowang.A study of the Ethernet  throughput performance of the embedded system[J].Astronomical Research and Technology,2007,4(3):266-275.
[6] DUNKELS A.Design and implementation of the LwIP TCP/IP stack[EB/OL].(2001-2-1)[2004-2-1].http://www.ece.ualberta.ca/~cmpe401/fall2004/labs/docs/lwip.pdf.
[7] 徐鑫,曹奇英.基于LwIP協(xié)議棧的UDP協(xié)議分析與優(yōu)化[J].計算機應用與軟件,2011,28(3):246-249.

此內容為AET網站原創(chuàng),未經授權禁止轉載。
主站蜘蛛池模板: 亚洲午夜免费 | 美女黄视频免费观看 | 免费视频精品一区二区三区 | 毛片免费观看视频 | 中文一区二区在线观看 | 殴美一级视频 | 手机看片av | 特黄视频 | 久久999精品| 越南高清幻女bbwxxxx | 精品久久久久久久久久久久久久久 | 国产高清自拍视频 | 欧美成 人h版在线观看 | 特级无码a级毛片特黄 | 亚洲美女免费视频 | 欧美一级成人毛片视频 | 97久久免费视频 | 夜间福利在线观看 | 国产三级借妻 | 三级黄色毛片网站 | 国产亚洲一区二区手机在线观看 | 亚洲羞羞裸色私人影院 | 成年人免费黄色 | www.xxx.国产| 日日碰碰 | 国产免费爽爽视频免费可以看 | 在线观看国产情趣免费视频 | 99精品国产成人一区二区在线 | 在线观看国产一区二区三区 | 国产亚洲一区二区精品 | av在线手机播放 | 成人在线播放视频 | 一级做a爰片性色毛片视频图片 | 久草在线视频网 | 香港黄页亚洲一级 | 亚洲国产中文字幕 | 国产三级精品三级 | 中国老太性色xxxxxhd | 欧美成人免费在线观看 | 欧美丝袜自拍 | 精品视频久久久久 |