鄭海杰,宋開新
(杭州電子科技大學(xué)新型電子器件與應(yīng)用研究所,浙江 杭州 310018)
?
綜合OSAL的ZigBee協(xié)議棧設(shè)計
鄭海杰,宋開新
(杭州電子科技大學(xué)新型電子器件與應(yīng)用研究所,浙江 杭州 310018)
摘要:介紹了在IEEE802.15.4協(xié)議標(biāo)準和ZigBee協(xié)議棧架構(gòu)的基礎(chǔ)上,結(jié)合OSAL事件輪詢機制和多任務(wù)處理機制的ZigBee協(xié)議棧設(shè)計。將觸發(fā)事件與事件處理函數(shù)形成映射,由操作系統(tǒng)抽象層OSAL進行管理,實現(xiàn)任務(wù)調(diào)度和處理、數(shù)據(jù)發(fā)送和接收。實驗結(jié)果表明,該ZigBee協(xié)議棧能建立穩(wěn)定的星型網(wǎng)絡(luò)拓撲結(jié)構(gòu),數(shù)據(jù)在網(wǎng)絡(luò)中能正確發(fā)送和接收。
關(guān)鍵詞:無線通信;操作系統(tǒng)抽象層;無線射頻;星型網(wǎng)絡(luò)拓撲結(jié)構(gòu)
0引言
ZigBee無線通信技術(shù)具有低速率、低功耗及高傳輸可靠性等特點,在工業(yè)控制領(lǐng)域和智能家庭網(wǎng)絡(luò)中有著重要應(yīng)用。目前國內(nèi)對ZigBee技術(shù)的研究偏向應(yīng)用層面[1],國內(nèi)無線射頻芯片技術(shù)的落后束縛著ZigBee協(xié)議棧的自主研發(fā),而國外掌握著傳感網(wǎng)和基礎(chǔ)芯片的核心技術(shù),開始物聯(lián)網(wǎng)業(yè)務(wù)的大力發(fā)展,也形成了較完善的商業(yè)模式。由于ZigBee協(xié)議棧的實現(xiàn)目前沒有統(tǒng)一標(biāo)準,存在效率低,組網(wǎng)速度慢等缺點。本文提出將操作系統(tǒng)抽象層(Operating System Abstraction Layer,OSAL)嵌入到ZigBee協(xié)議棧中,OSAL事件輪詢機制能有效地分配傳輸過程中的事件處理資源,提高傳輸效率并能快速建立網(wǎng)絡(luò)。
1OSAL原理
OSAL較之于標(biāo)準的操作系統(tǒng),有著更低的功耗和系統(tǒng)開銷,這使得在資源不多的MCU上也可以用OSAL實現(xiàn)任務(wù)切換,內(nèi)存管理等功能[2]。
圖1 OSAL任務(wù)表和函數(shù)表映射關(guān)系
2ZigBee協(xié)議棧設(shè)計
ZibBee協(xié)議棧采用分層的方式來實現(xiàn)[4],分別為物理層、媒體訪問控制層、網(wǎng)絡(luò)層和應(yīng)用層,其中應(yīng)用層還包含應(yīng)用程序支持子層、應(yīng)用程序框架層和ZDO設(shè)備對象。不同層負責(zé)不同的功能,數(shù)據(jù)僅在相鄰的層之間傳遞。ZigBee協(xié)議棧的構(gòu)成如圖2所示。
圖2 ZigBee協(xié)議棧結(jié)構(gòu)圖
FREQCTRL.FREQ=11+5(k-11)k∈(11,26)
(1)
媒體接入控制層(MAC層)在網(wǎng)絡(luò)層和物理層之間,主要有協(xié)調(diào)器信標(biāo)發(fā)送、支持PAN鏈路連接斷開、CSMA-CA信道接入等功能[6]。MAC層采用超幀來描述信道接入資源的結(jié)構(gòu),并采用時隙CSMA-CA算法和主動掃描。在信標(biāo)網(wǎng)絡(luò)中,超幀被劃為16個時隙,第一個時隙為信標(biāo)幀,CCA在退避周期的邊界處開始執(zhí)行,節(jié)點的退避時間以時隙為單位。在時隙CSMA-CA算法中,如果節(jié)點經(jīng)過4次信道忙碌退避后仍然無法接入信道,則放棄數(shù)據(jù)傳送。在啟動和建立一個PAN網(wǎng)絡(luò)過程中,協(xié)調(diào)器會從低到高掃描信道序號,選擇一個合適的信道和PAN標(biāo)識符,可以用MLME-SCAN.request原語來實現(xiàn)信道掃描。
網(wǎng)絡(luò)層提供兩類服務(wù),分別是網(wǎng)絡(luò)層數(shù)據(jù)服務(wù)和網(wǎng)絡(luò)層管理服務(wù)[7]。前者負責(zé)數(shù)據(jù)的發(fā)送和接收,后者負責(zé)網(wǎng)絡(luò)層管理和維護,包括網(wǎng)絡(luò)的創(chuàng)建和發(fā)現(xiàn),設(shè)備加入和退出網(wǎng)絡(luò)。ZigBee網(wǎng)絡(luò)是由協(xié)調(diào)器發(fā)起,協(xié)調(diào)器掃描信道并選擇在最佳的空閑信道上創(chuàng)建網(wǎng)絡(luò),其默認的網(wǎng)絡(luò)地址是0x0000。建立網(wǎng)絡(luò)后,路由設(shè)備及終端節(jié)點會根據(jù)PANID加入到指定網(wǎng)路或者加入到最先掃描到的網(wǎng)絡(luò)中,并獲得16位的網(wǎng)絡(luò)地址。網(wǎng)絡(luò)層的分布式地址分配機制由以下算法實現(xiàn)。網(wǎng)絡(luò)最大深度(Lmax)、父節(jié)點擁有的子節(jié)點最大數(shù)目(Cmax)以及父節(jié)點擁有路由器最大數(shù)目(Rmax)這3個參數(shù)決定了整個網(wǎng)絡(luò)的地址分配[8]。
根據(jù)以下公式計算某父節(jié)點的路由子設(shè)備之間的地址間隔Cskip(d):
(2)
Aparent父節(jié)點分配的第n個路由器地址Arn為:
Arn=Aparent+(n-1)Cskip(d)+1
(3)
Aparent父設(shè)備分配的第n個終端節(jié)點網(wǎng)絡(luò)地址An公式為:
An=Aparent+Cskip(d)Rmax+n
(4)
網(wǎng)絡(luò)地址使數(shù)據(jù)可以定向傳播,網(wǎng)絡(luò)層可以實現(xiàn)廣播(Broadcast)、單播(Unicast)和組播(Multicast)3種數(shù)據(jù)通信方式。通過設(shè)置afAddrType_t類型的結(jié)構(gòu)體中的afAddrMode_t類型的變量的值來選定通信方式。
當(dāng)addrMode=AddrBroadcast時,為廣播方式發(fā)送數(shù)據(jù);addrMode=AddrGroup時,為組播方式發(fā)送數(shù)據(jù);addrMode=Addr16 Bit時,為單播方式發(fā)送數(shù)據(jù);不同的通信方式以滿足不同的網(wǎng)絡(luò)需要選擇。
3OSAL與ZigBee協(xié)議棧結(jié)合
ZigBee協(xié)議棧要實現(xiàn)多任務(wù)運行,需要OSAL提供的API來支持。OSAL提供了8類API,涵蓋消息管理、任務(wù)管理和同步、中斷管理等功能。Zigbee協(xié)議棧首先調(diào)用osal_init_system()完成各層的初始化,并完成協(xié)調(diào)器建立網(wǎng)絡(luò),終端加入網(wǎng)絡(luò)的工作。初始化完系統(tǒng)任務(wù)事件后,進入osal_start_system()啟動事件輪詢訪問。協(xié)議棧組網(wǎng)流程如圖3所示。
從osal_start_system()開始,ZigBee協(xié)議棧才真正啟動。Hal_ProcessPoll()函數(shù)會將dmaCfg.uartCB函數(shù)注冊成為UserApp_CallBack,每次循環(huán)會對串口的內(nèi)容進行查詢。DMA中接收到了數(shù)據(jù),此時tasksEvents[idx]中的事件發(fā)生,調(diào)用HalUARTRead將DMA數(shù)據(jù)讀至數(shù)據(jù)buffer并通過 AF_DataRequest函數(shù)將數(shù)據(jù)發(fā)送出去。
圖3 協(xié)調(diào)器組網(wǎng)終端設(shè)備加入網(wǎng)絡(luò)流程圖
4實驗結(jié)果
應(yīng)用IAR Embedded Workbench IDE來編譯及調(diào)試協(xié)議棧代碼,在工作空間中選擇Coordinator編譯成協(xié)調(diào)器的可執(zhí)行文件,相應(yīng)的選擇EndDevice編譯成終端節(jié)點的可執(zhí)行文件。本實驗采用CC2530射頻MCU作為硬件平臺,3個終端節(jié)點與協(xié)調(diào)器組成星型拓撲網(wǎng)絡(luò)結(jié)構(gòu)。通過AccessPort觀察數(shù)據(jù)發(fā)送和接收,如圖4所示,并通過Packet Sniffer來抓取ZigBee協(xié)議棧的數(shù)據(jù)包結(jié)構(gòu),如圖5所示。測試結(jié)果如下:
圖4 AccessPort中數(shù)據(jù)接收
1)本文設(shè)計的協(xié)議棧實現(xiàn)了在IAR workspace中協(xié)調(diào)器、路由器和終端節(jié)點3種網(wǎng)絡(luò)設(shè)備代碼的編譯;
2)協(xié)議棧提供節(jié)能控制,終端設(shè)備在完成任務(wù)后就進入休眠模式,直到有下一個任務(wù)觸發(fā)信號,設(shè)備才被喚醒。休眠時的電流僅為幾個mA;
4)AccessPort觀察數(shù)據(jù)接收的數(shù)據(jù)正確率高。終端節(jié)點響應(yīng)時間僅為300 μs左右;
5)Packet Sniffer抓取的ZigBee數(shù)據(jù)包結(jié)構(gòu)顯示源網(wǎng)絡(luò)地址與目的網(wǎng)絡(luò)地址符合NWK層的節(jié)點網(wǎng)絡(luò)地址分配機制。其中NWK Scr.Address為0x0000,即協(xié)調(diào)器的網(wǎng)絡(luò)地址。
圖5 Packet Sniffer 抓取MAC層、NWK層數(shù)據(jù)包
5結(jié)束語
本文提出了結(jié)合OSAL的ZigBee協(xié)議棧設(shè)計,選擇2.4 GHz作為通信頻段,采用時隙CSMA-CA防止信道沖突。代碼量小,節(jié)省內(nèi)存資源;可靠性高,功耗低。在此協(xié)議棧的基礎(chǔ)上,應(yīng)用層的開發(fā)變得靈活,使原本單任務(wù)的ZigBee協(xié)議棧實現(xiàn)了多任務(wù)的調(diào)度的功能,對物聯(lián)網(wǎng)及ZigBee技術(shù)有著重要的意義。
參考文獻
[1]朱洪波,楊龍祥,朱琦.物聯(lián)網(wǎng)技術(shù)進展與應(yīng)用[J].南京郵電大學(xué)學(xué)報(自然科學(xué)版),2011,31(1):1-9.
[2]李春喜.物聯(lián)網(wǎng)ZigBee協(xié)議棧MAC層的研究與實現(xiàn)[D].廣州:華南理工大學(xué),2012:10-22.
[3]王風(fēng).基于CC2530的ZigBee無線傳感器網(wǎng)絡(luò)的設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2012:34-39.
[4]蔡文晶,秦會斌.基于ZigBee精簡協(xié)議的無線數(shù)據(jù)采集系統(tǒng)[J].機電工程,2011,28(2):224-226.
[5]王小強,歐陽俊,黃寧淋.ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計與實現(xiàn)[M].北京:化學(xué)工業(yè)出版社,2012:103-112.
[6]敖志剛.智能家庭網(wǎng)絡(luò)及其控制技術(shù)[M].北京:人民郵電出版社,2011:57-63.
[7]Liu W,Yan Y.Application of ZigBee wireless sensor network in smart home system[J].International Journal of Advancements in Computing Technology,2011,3(5):56-58.
[8]Wang J.Zigbee light link and its applicationss[J].Wireless Communication,IEEE,2013,20(4):6-7.
Design of ZigBee Protocol Stack Combine with OSAL
Zheng Haijie,Song Kaixin
(InstituteofNewElectronicDevicesandApplications,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
Abstract:This paper presents a design of ZigBee protocol stack which combines with events-polling mechanism and multitasking mechanism of OSAL on the base of IEEE802.15.4 protocol and ZigBee protocol framework.This wireless communication stack maps trigger events to event-handlers and it’s managed by OSAL to realize dispatching and disposing of tasks,sending and receiving of data.The results indicate this ZigBee protocol stack can build a stable star network and data’s sending and receiving is correctly in the network.
Key words:wireless communication;operating system abstraction layer;radio frequency identification;star network
中圖分類號:TN929.5
文獻標(biāo)識碼:A
文章編號:1001-9146(2015)06-0032-04
通信作者:
作者簡介:鄭海杰(1989-),男,浙江寧波人,在讀研究生,微電子與固體電子學(xué).宋開新副教授,E-mail:kxsong@hdu.edu.cn.
收稿日期:2014-11-05
DOI:10.13954/j.cnki.hdu.2015.06.007