中國船舶重工集團第715研究所 許 光
嵌入式T C P/I P協議棧的設計與應用
中國船舶重工集團第715研究所 許 光
本文介紹了一種嵌入式TCP/IP協議棧的設計方法,使用ARM7處理器和網絡控制器ENC28J60搭建硬件平臺進行了協議棧的移植,整個設計具有一定的參考價值。
嵌入式TCP/IP協議棧;ENC28J60;ARM7
隨著計算機技術和網絡通信技術的發展,采用網絡進行數據的遠程傳輸已經成為工業領域的重要發展方向。與此同時,以MCU、MPU等構成的嵌入式系統也已經廣泛地應用于工業、家電等各個領域,嵌入式系統對網絡應用的要求也越來越高,因此在嵌入式系統中實現網絡通信已經成為電子設計領域的研究熱點[1]。
傳統的TCP/ IP協議在實現時需要占大量的存儲空間,這對于資源相對緊張的嵌入式系統而言顯得非常的龐大,研究并設計一個適合于嵌入式系統的簡易的TCP/ IP協議棧來實現嵌入式系統的網絡通信功能具有重要的現實意義。
我們的應用環境中需要使用TCP協議與設備進行通信,鑒于整個TCP/IP協議的分層體系,我們只要實現幾個核心功能協議即可,圍繞著這個設計思想即可進行協議棧的裁剪與壓縮,整個設計的重點一目了然:即需要實現ARP、IP、ICMP以及TCP,通信不涉及應用層的協議,所以應用層不作具體實現,此外針對特定的硬件平臺需要提供網絡驅動層的接口。
網絡驅動主要功能是設置網絡控制器ENC28J60,實現它發送和接收以太網數據包的功能。這個部分需要為上層協議提供三個功能:初始化接口ENC28J60_Init()、數據包發送功能ENC28J60_ SendPkt()以及數據包接收功能ENC28J60_RecPkt(),這也是實現系統的整個網絡通信的基礎[2]。
ARP協議主要用于IP地址和采用不同網絡技術的硬件地址的解析與映射,所以該協議的核心任務就是能夠對其他機器發來的ARP請求報文進行一個應答,以便于下一步能夠進行通信連接和傳輸。所以在我們這個協議棧中我們需要實現ARP的請求和應答功能。
IP協議的主要功能就是實現IP數據報的封裝與解封裝,另外一個重要的功能就是驗證IP數據報的首部是否正確,鑒于實際使用的嵌入式系統的數據傳輸量不是很大(一般每次通信只有幾十個字節),我們在IP協議的設計中對于IP數據包的頭部使用固定的長度(即20個字節),另外IP數據報也不進行分組傳輸。此外,為了檢測網絡的連通性,我們也需要實現ICMP協議,這樣通過PC機的PING測試即可知道設備是否連接正常。
在TCP/IP協議體系中,TCP協議是最重要的一個協議,在實現上也是比較復雜的一個協議,針對我們這個特定的系統,我們將TCP協議進行一些簡化處理:第一,對于打開的TCP端口僅僅處于被動連接狀態,即當有連接請求到來時才進行通信,空閑時只進行端口的查詢,所以硬件系統只作為服務器的角色進行工作;第二,去掉了“滑動窗口”和擁塞控制機制;第三,發生數據丟失時不發送錯誤報告也不進行數據的重傳。經過簡化之后,TCP協議在實現上就變得相對容易,但是核心功能依然完備[3]。
系統的硬件部分主要核心處理器ARM7和網絡控制器ENC28J60組成。ARM7負責運行整個TCP/IP協議棧軟件,同時需要對收發的數據包進行處理;ENC28J60負責發送和接收網絡數據包,整個硬件平臺采用3.3V的統一電源進行供電,ARM7通過SPI接口與ENC28J60通信,最終實現設備與PC機的交互。
設計完協議棧之后我們需要將其移植到硬件平臺中,為了便于數據的管理,在ARM7中具體實現時,我們使用一個全局的Buf數組來存放一個完整的MAC數據幀,每次發送數據包之前,都按照數據幀的格式將這個數據幀填充完畢,然后調用ENC28J60_ SendPkt()發送出去;同樣,當ENC28J60收到數據時,我們仍然將整個數據幀讀入這個全局緩沖區中,然后依次進行數據的解封裝操作。最后,為了驗證程序的正確性,我們將設計的程序下載到的硬件平臺中,用網線將硬件平臺與計算機相連,同時借助于Wireshark進行網絡數據包的捕獲與分析。通過在PC機上執行簡單的PING測試可以驗證整個系統的連通性,然后通過網絡調試助手測試TCP的通信功能[4]。
本文設計了一個面向嵌入式系統的TCP/IP協議棧,運輸層使用TCP協議進行通信,所以數據傳輸也能得到保證,整個設計具有很好的參考價值。
[1]張青青.LwIP協議棧的移植[J].信息系統工程,2015(8):139.
[2]Microchip Technology Inc.ENC28J60數據手冊[OL].http:// www.microchip.com/.
[3]謝希仁.計算機網絡(第6版)[M].北京:電子工業出版,2013,6.
[4]W.Richard Stevens.TCP/IP詳解卷1:協議[M].北京:機械工業出版社,2000,4.
Design and application of Embedded TCP/IP stack
XU Guang
(Institute of 715,China Shipbuilding Industry Corporation)
This paper introduces a method of designing an embedded TCP/IP stack.The article also shows how to run the stack in ARM7 process with the network controller ENC28j60.The method has certain reference value.
Embedded TCP/IP stack;ENC28J60;ARM7