張青青
摘要:LwIP 是一個占用內存比較小的開源 TCP/IP 的協議棧,在嵌入式的平臺上如果需要網絡通信則會廣泛的應用這個協議棧。但是由于在網絡中協議棧和通信比較復雜,想要直接調試程序在嵌入式平臺上,會非常的麻煩,浪費精力。根據這個思路,依據VisualC++開發環境,我們研究開發了一套該協議棧的開發平臺是直接運行在pc的系統上的。
關鍵詞:嵌入式系統 LwIP協議棧 網絡驅動
中圖分類號:TP311 文獻標識碼:A 文章編號:1007-9416(2016)08-0191-01
設計了一套基于Windows操作系統的LwIP網絡應用開發平臺系統。用戶可以更方便的開發和調試基于LwIP協議棧的網絡程序。
1 系統整體設計
系統包含的四個模塊如下:(1)網絡應用模塊:提供可視化的參數配置和數據統計。(2)LwIP協議棧模塊:實現網絡通信的核心模塊。(3)網絡驅動模塊:與操作系統驅動適配,實現硬件級別的數據收發控制在圖1中所示,居于中間的模塊為LwIP 協議棧,是這個軟件的核心部位,它通過與windows的系統接口連接,實現該軟件在windows系統上的運行;在核心模塊之上,是實現了基本的數據發送和接收的網絡應用模塊;置于最底層的模塊是負責讓協議棧與windows網絡驅動互相適配的數據驅動模塊,主要功能是通過windows設備驅動將該LwIP協議棧構造的報文發送到網絡,并將WINDOWS設備驅動收到的報文遞交給LwIP協議棧處理。
2 網絡應用子模塊
網絡應用模塊的設計目標是,基于LwIP協議棧提供的三種調用模式,提供了可視化的網絡應用配置和操作界面。通過應用子模塊,用戶可以直觀的配置并查看網絡程序的運行狀況;通過查看源代碼,用戶也可以獲得直接的可參考的LwIP網絡程序代碼示例。
主界面使用 MFC 開發,包含參數配置區和數據統計區。參數配置區提供了實現網絡通信需要的參數選項;數據統計區則提供數據傳輸統計,方便進行傳輸性能測試與對比。
3 LwIP協議棧子模塊
這個系統軟件是搭建在windows平臺上的,這個軟件的核心部分就是LwIP協議棧。所以最重要的自然就是如何將該協議棧移植于windows操作系統中。因為嵌入式系統操作系統和windows操作系統是由很大的不同的,所以在移植中,如果想要確保移植后的lwip順利運行并且執行命令,必須注意以下關鍵點:(1)內存:因為我們最終目的是將在windows平臺上調試好的lwip網絡應用移植到嵌入式系統中去運動,但是由于windows操作系統和嵌入式系統的內存配置是不同的,所以如果不考慮內存限制,則會在后面的嵌入式調試中出現各種問題,所以在windows平臺下的需要為內存調試預留一定條件,必須對lwip內存的相關接口和參數配置進行強調和注意。(2)線程:進程和線程在windows系統中存在,所以我們要考慮該協議棧在這種多線程運行下的共享變量問題,需要將windows的線程lwip的工作線程來適配的。對于如何記錄和管理線程的參數需要專門來定義線程結構。(3)通知與保護:因為該協議棧支持多線程,所以我們必然要考慮線程之間的通信和全局變量的訪問保護。而lwip提供了信號量,郵箱和臨界區這三種不同的通知和保護機制。
4 網絡驅動子模塊
4.1 通信模塊技術方案
主要內容:這個網絡應用的開發最關鍵的部分就是如何讓lwip協議棧網絡通信,即解決如何接受和發送報文的這個問題。
該開發平臺在網絡應用子模塊和lwip協議棧子模塊完成之后,就表示我們已經實現了該協議和上層應用構造ip或以太網報文的功能。這個平臺的核心是網絡程序的測試,所以系統聯網是必不可少的。主要就是讓該協議棧構造的報文調動windows的網卡驅動往網絡中傳送數據,反之,windows的網卡驅動也能將收到的數據交付給lwip協議棧來處理分析。
winpcap是一個免費的代碼可以隨時查看的第三方網絡操作庫,用它來實現在windows網絡設備上的操作是很方便的,因為winpcap基于windows平臺專門有一組接口用于使用,只要能熟練應用這些接口,就可以輕松的實現對網絡數據包的捕獲和分析。
WinPcap的層次結構是怎么樣的呢?它主要由三部分構成:內核級數據包過濾器,底層的設備動態鏈接庫(packet.dll),對WINDOWS系統的封裝庫(wpcap.dll)。因為winpcap也有兩種難度不同的接口可以編程。一個是功能特別抽象但是龐大的基于libpcap的wpcap.dll,另一個則是功能簡單的較底層的packet.dll。
4.2 通信模塊設計
首先下載winpcap并且在windows平臺上安裝winpcap驅動軟件,然后直接讓winpcap操作網絡適配器,完成收發數據包的作用。
由于本文的目的主要是實現以太網數據的收發。因為該平臺對于winpcap提供的別的網絡功能沒用什么特別的要求,基于開發程序的省時省力性考慮,決定使用好用的libpcap接口。
5 結語
全面的對于網絡開發平臺的設計框架進行了介紹。把各個部分及其主要實現的功能逐個介紹,著重的描述了上層應用開發的特點,及其輕量級協議棧的移植要點。對于winpcap的使用讓lwip協議棧和windows驅動之間的數據收發也做了詳細說明。使得最后搭建了一個完整的調試環境。