基于ARM9的嵌入式Zigbee網關設計與實現
關鍵詞:無線傳感器網絡;Zigbee;嵌入式網關;STR912;LwIP
引言
無線傳感器網絡(Wireless Sensor Network,WSN)是指由大量成本相對低廉的,具有感知能力、計算能力、實時通信能力的傳感器節(jié)點組成的嵌入式無線網絡,是當前眾多領域的研究和應用熱點。建立在IEEE 802.15.4(LR_WPAN,低速率無線個人區(qū)域網)上的Zigbee協議是應用于無線監(jiān)測與控制的全球性無線通信標準,是無線傳感器網絡組網的首選技術之一。
隨著Zigbee無線傳感器網絡技術的廣泛應用,如何通過現有網絡基礎設施(如Internet、GPRS等)對其進行遠程管理、控制感測環(huán)境中的各種傳感裝置,逐漸成為該領域的重要研究課題。圖1給出了基于Zigbee的無線傳感器網絡體系結構,如圖示Zigbee網關在整個無線傳感器網絡體系中起著重要的樞紐作用,同時也是WSN整體系統的“瓶頸”之一。當圖1中的服務器或用戶部分為其它Zigbee網絡時,通過Zigbee網關和Internet或GPRS做媒介,就使得世界范圍內的不同監(jiān)測區(qū)域都可以信息共享,這大大縮小了物理世界的時空距離。
圖1 基于Zigbee技術的無線傳感器網絡
本文主要研究的是Internet環(huán)境下基于Zigbee傳感器網絡的網關設計及其實現。
1 系統概述
網關是建立在傳輸層以上的協議轉換器,通常它連接兩個或多個相互獨立的網絡,每接收一種協議的數據包后,在轉發(fā)之前將它轉換為另一種協議的格式??紤]到Zigbee節(jié)點的通信能力有限(數據速率僅為250 Kbps),為了減少網關協議轉換自身的工作量,本網關選擇了一款集成Ethernet接口的ARM9 芯片來完成硬件系統的搭建。
本網關采用模塊化設計方案,如圖2所示由硬件層、軟件層和應用層三大部分組成。其中硬件層描述了網關的硬件實現,在后文將詳細介紹;軟件層移植μC/OS-II實時操作系統內核、Zigbee和嵌入式TCP/IP協議棧LwIP,實現了Zigbee和TCP/IP協議的雙向透明轉換,同時封裝一些關鍵API函數供應用層程序調用;應用層運行的是用戶編寫的應用程序,用戶可以根據實際需要使用下層定義的API自行擴充相關應用。
圖2 Zigbee網關總體結構
2 硬件設計
網關硬件結構如圖3所示,由內部集成以太網MAC的ARM9處理器STR912FW44X、Zigbee射頻收發(fā)模塊CC2420、大容量DataFlash存儲卡片AT45DCB008、以太網收發(fā)芯片(PHY) RTL8201和帶觸摸功能的LCD顯示模塊LQ084V1DG21等模塊組成。
圖3 Zigbee網關硬件結構
其中STR912FW44X作為硬件系統的主控芯片,它是意法半導體(ST Microelectronics)推出的基于ARM966E-S內核,片內集成Flash、USB、CAN、以太網MAC、AC馬達控制、ADC、RTC、DMA等接口的高性能ARM9 SOC,最高主頻可達96Mhz;
Zigbee射頻收發(fā)芯片CC2420是挪威Chipcon(現為TI)推出的符合2.4 GHz IEEE 802.15.4和Zigbee 標準的射頻收發(fā)器。CC2420采用O-QPSK調制方式,工作頻帶范圍為2.400~2. 4835 GHz,接收靈敏度為-94 dBm,抗鄰頻道干擾能力為39 dB。利用此芯片開發(fā)的無線通信設備支持數據傳輸率高達250 Kbps,能夠實現點對多點的快速組網;
AT45DCB008是Atmel公司推出的新型DataFlash存儲芯片,在該網關中用來保存網絡故障狀態(tài)下的數據信息。AT45DCB008中的數據按頁存放,主存共8192頁,每頁1024字節(jié),總容量約為8M字節(jié),每頁的擦寫次數保證在100,000次以上;
以太網PHY層芯片采用的是Realtek公司的RTL8201BL,它是一個單端口的物理層收發(fā)器,實現了全部的10/100M以太網物理層功能;
顯示部分采用的LQ084V1DG21是SHARP公司的帶觸摸屏8.4英寸TFT數字液晶顯示屏,分辨率為640480。
3 嵌入式網關軟件設計
3.1 μC/OS-II下的LwIP的移植
μC/OS-II是一個搶占式的實時多任務內核操作系統,具有開放源碼、可固化、可剪裁、高穩(wěn)定性和可靠性等特點。目前國內外對μC/OS-II的相關研究已有很多,其在STR912處理器上的移植在此不再贅述。LwIP是瑞士計算機科學院開發(fā)的輕量級(Light Weight)開放源碼TCP/IP協議棧,目前最新版本為1.2.0
LwIP協議棧把所有與硬件相關、OS、編譯器相關的部分獨立出來,放在/src/arch目錄下,可以是說其在設計時就考慮了移植問題。LwIP在μC/OS-II上的移植就是修改這個目錄下的文件,其它的文件一般不做修改。需要修改和自己編程實現的是以下幾部分:
●與STR912及IAR編譯器相關的include文件;
●μC/OS-II模擬層相關代碼編寫;
●與μC/OS-II相關的一些結構和函數;
●lib_arch中庫函數的實現;
●STR912網絡驅動程序編寫。
完成以上代碼移植的工作后,LwIP就可以順利運行在μC/OS-II下,主要通過以下程序完成LwIP的初始化及運行:
main(){
OSInit();//μC/OS-II初始化
OSTaskCreate(lwip_init_task,LineNo11,lwip_init_stk[TASK_STK_SIZE-1], 0); //創(chuàng)建LwIP初始化任務
OSTaskCreate(usr_task,LineNo12,usr_stk[TASK_STK_SIZE-1],1);//創(chuàng)建用戶任務
OSStart();//啟動LwIP }
在main函數中創(chuàng)建了lwip_init_task來初始化LwIP任務(優(yōu)先級為0)和usr_task用戶任務(優(yōu)先級為1)。需要指出的是,在lwip_init_task任務中除了完成初始化硬件時鐘和LwIP本身等工作之外,還創(chuàng)建了tcpip_thread(優(yōu)先級為5)和tcpecho_thread(優(yōu)先級為6),其中tcpip_thread才是LwIP的主線程,也是應該先創(chuàng)建的。
3.2 μC/OS-II下的Zigbee協議棧的實現
我們在該網關平臺上運行自主編寫Zigbee協議棧的子集ez_PAN。ez_PAN目前還很不完善,只實現了Zigbee的部分關鍵功能,僅支持星型和簇狀網絡(Cluster),支持網絡的動態(tài)組網配置和動態(tài)綁定等。ez_PAN協議棧結構如圖4所示:
圖4 ez_PAN協議棧結構
下面給出ez_PAN 協議棧上的協調器(Coordinator)、路由器(Router)和精簡節(jié)點(RFD)實現的關鍵代碼。Coordinator通過aplFormNetwork()函數建立網絡,等待其它節(jié)點(Router和RFD)的加入,主要程序如下:
Main()
{
halInit(); //初始化 HAL 層
hawInit();//硬件初始化
aplInit(); //初始化APL
ENABLE_GLOBAL_INTERRUPT(); //開中斷
aplFormNetwork(); //建立網絡
while(apsBusy)()) {apsFSM();} //等待建立完成
while(1) {apsFSM();} //循環(huán)執(zhí)行協議棧
}
其中調用apsBusy()來判斷當前協議棧是否忙于其它程序調用,apsFSM()是在APS層上實現的FSM(有限狀態(tài)機),被apsBusy周期調用來維持ez_PAN的運行。在Coordinator建立網絡完成后,允許Router或RFD節(jié)點動態(tài)加入,關鍵代碼實現如下:
do {
aplJoinNetwork();//Router或RFD加入網絡
while(apsBusy ()) { apsFSM();} //等待加入完成
} while (aplGetStatus ()! =LRWPAN_SUCCESS);
3.3 協議轉換軟件設計
在TCP/IP協議簇中,以太網的數據傳輸使用硬件地址(MAC)來進行識別,其中ARP(地址解析協議)完成IP地址和數據鏈路層使用的硬件地址之間的轉換,因此為了保證Zigbee網關在以太網中的通信,首先要實現ARP協議的功能。Zigbee網絡中的節(jié)點數理論上最多可達65536個,每個節(jié)點同樣有自己唯一的MAC地址(64位長地址或16位短地址)。參考TCP/IP下的實現機制,我們實現了Zigbee協議中的適配層和ARP,實現IP地址到Zigbee節(jié)點地址的映射。協議轉換的工作原理如圖5所示,下面簡單描述一下數據包在網關中從Ethernet向Zigbee單方向轉換過程:Ethernet端從某網絡接口接收一個正常發(fā)往本機的IP數據包,簡單判斷后向上發(fā)給對應的UDP或TCP處理函數進行相應處理,然后再向上發(fā)給網關應用程序處理;網關應用程序經過簡單分析后,確定要轉發(fā)給Zigbee網絡中的哪個節(jié)點,通過Zigbee端的ARP解析出該節(jié)點在Zigbee網絡中的MAC地址,然后將相應數據包成功交至該節(jié)點,這樣就完成此次從Ethernet向Zigbee端的協議轉換。Zigbee向Ethernet端轉換類似,不再贅述。
圖5 網關協議轉換框圖
4 結論
本文設計的網關已在我們的“基于Zigbee無線傳感器網絡的煤礦井下定位跟蹤系統”項目中得以實用,取得了較好的效果。經測試該網關具有效率高、響應實時、可靠性高、功耗低,抗干擾能力強等特點,同時具有很好的通用性。由于當前Zigbee技術還在不斷的更新和完善中,如何跟蹤最新的Zigbee技術來提高網關的性能以及如何提高ez_PAN的多平臺可移植性,將是我們以后研究的重點。
本文作者創(chuàng)新點:采用集成Ethernet (MAC)接口的ARM9芯片STR912作為核心擴展設計了一個Zigbee網關,它很好地克服了傳統網關架構下Zigbee傳輸速率的瓶頸,大大降低了協議轉換過程中的資源和處理時間消耗。該網關設計思路、技術實現新穎,具有較強的實用性。
參考文獻
[1] Zigbee specification v1.1. Zigbee Alliance.http://www.zigbee.org,2006
[2] LwIP v1.2.0 source code. Leon Woestenberg.http://savannah.nongnu.org/projects/lwip/, 2006
[3] Patrick Kinney, Kinney Consulting LLC.Gateways: Beyond the Sensor Network .Zigbee Alliance, 2005
[4] http://www.ece.msstate.edu/~reese/msstatePAN/, 2006
[5] 趙晨,何波,王睿.基于射頻芯片CC2420實現的Zigbee無線通信設計[J].微計算機信息,2007(1-2):P101-102
linux操作系統文章專題:linux操作系統詳解(linux不再難懂)
評論