薛建彬++郭燕波++許洋++畢玉++王斌
摘要:隨著物聯(lián)網技術及IOT的發(fā)展,傳感器節(jié)點有接入互聯(lián)網的需求,本文設計了一種基于嵌入式TCP/IP協(xié)議棧LwIP的輕量級實現方案。詳細分析了嵌入式TCP/IP協(xié)議棧LwIP的架構和原理,結合實際應用的特點實現了LwIP協(xié)議棧在STM32微處理器上的移植和適配。實驗結果表明,基于LwIP協(xié)議棧的傳感系統(tǒng)滿足了網絡化交互需求。
關鍵詞:TCP/IP LwIP 微控制器
中圖分類號:TP316.81 文獻標識碼:A 文章編號:1007-9416(2016)10-0002-01
隨著計算機互聯(lián)技術與物聯(lián)網技術的發(fā)展,一些像傳感器一類的輕便設備可以接入互聯(lián)網,以便隨時監(jiān)控;這些輕便設備的特點是體積小,內部運算及存儲資源有限,因此就必須在資源受限的情況下實現及處理Internet協(xié)議。基于這種趨勢,各種用于嵌入式系統(tǒng)的小型協(xié)議棧應運而生,如uC/IP、uIP、LwIP和TinyTCP等,這幾種協(xié)議棧均源自BSD TCP/IP。其中,LwIP[1](輕量級TCP/IP協(xié)議棧,Lightweight TCP/IP protocol stack)是由瑞士計算機科學院Adam Dunkels等人開發(fā)的一套用于嵌入式系統(tǒng)的開源TCP/IP協(xié)議棧。LwIP最小限度的使用系統(tǒng)資源,通過共享內存的方式實現應用層與底層協(xié)議之間的通訊。應用層通過了解底層協(xié)議使用的緩沖處理機制將使應用層可以更加有效的重復使用緩沖區(qū),同時,應用與網絡代碼可以使用相同的內存區(qū),應用層可以直接讀寫內部緩沖區(qū),從而避免了內存復制產生的性能損失,一般只需幾十K的RAM和40K左右的ROM就可以運行。
與其他的TCP/IP實現一樣,LwIP也是以分層的協(xié)議為參照設計的,它除了實現IP/ICMP/UDP/TCP等模塊還包括許多相關支持模塊,如操作系統(tǒng)模擬層、緩沖與內存管理子系統(tǒng)、網絡接口函數及API概要說明。
1 硬件設計
本項目的需求是將微控制系統(tǒng)接入互聯(lián)網以便服務器發(fā)起對前端設備的控制,采用的STM32F107[2-3]微控制器是意法半導體公司生產的基于ARM Cortex-M3內核的STM系列的32位互連型微處理器。處理器內置嵌套向量中斷控制器(NVIC),并且使用尾聯(lián)技術,使得中斷的響應只要6個時鐘周期,從而大大提高了中斷事件的處理速度,并且STM32F107系列芯片內部集成了一個10/100 Mbps以太網媒體控制器(MAC)。支持MII和RMII兩種接口規(guī)范。本文設計中采用RMII模式。系統(tǒng)硬件可分為電源模塊、MCU模塊、繼電器控制模塊、網絡數據收發(fā)模塊。其中電源模塊負責整個系統(tǒng)的供電;MCU模塊負責系統(tǒng)內的運算及控制邏輯;視頻模塊負責將攝像頭視頻傳輸到服務器的任務;繼電器控制模塊主要負責前端執(zhí)行器的開合狀態(tài)等;網絡數據收發(fā)模塊負責與服務器進行網絡數據的交互;系統(tǒng)結構框圖如圖1所示。
2 LwIP協(xié)議棧的移植
移植LwIP需要在STM32F107系統(tǒng)上修改模擬層的實現,包括定時器、進程同步及消息傳遞機制等系統(tǒng)服務的實現。
2.1 消息傳遞機制的移植
ethernetif_input()函數用于從底層物理網卡讀取報文,并將該報文向上傳遞給LwIP協(xié)議棧函數ethernet_input()進行處理。
low_level_input()函數用于從內存中申請一個新的pbuf,并把接收到數據報文內容拷貝至該pbuf中。
low_level_output()函數將pbuf中的數據幀通過底層發(fā)送函數發(fā)送出去。
至此,消息傳遞機制的移植工作就完成了,用戶修改LwIP協(xié)議棧提供的系統(tǒng)模擬層函數即可。
2.2 定時器及IO的移植
STM32F107的以太網模塊實現了局域網CSMA/CD的子層,支持10/100Mbps的數據傳輸速率,支持全雙工和半雙工兩種操作模式。以太網模塊底層驅動的實現主要由初始化函數ETH_BSP_Config()完成,通過設置定時器及IO配置,完成底層通信的移植。
3 結語
基于STM32F107微控制器的網絡協(xié)議棧的移植,可以使得物聯(lián)網系統(tǒng)內的前端節(jié)點在無操作系統(tǒng)支持的環(huán)境下接入網絡,從而完成網絡通信控制。
參考文獻
[1]DunkelsA.Design and Implementation of the LwIPTCP/IP Stack [D].Stockholm, Sweden: SwedishInstitute of Computer Science, 2001.
[2]劉火良,楊森.STM32庫開發(fā)實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2013.
[3]李志明,檀永,徐石明.STM32嵌入式系統(tǒng)開發(fā)實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2013.
收稿日期:2016-09-20
作者簡介:薛建彬(1986—),男,山西汾陽人,碩士,助理工程師,研究方向:嵌入式系統(tǒng)應用。