王 永,奚 吉
(1.徐州工業職業技術學院信息與電氣工程學院,江蘇徐州221140;2.河海大學計算機及信息工程學院,江蘇常州213002)
基于ZigBee的空中下載技術的分析及優化*
王永1*,奚吉2
(1.徐州工業職業技術學院信息與電氣工程學院,江蘇徐州221140;2.河海大學計算機及信息工程學院,江蘇常州213002)
ZigBee聯盟為OTA制定了標準,其更新簇為無線升級一個ZigBee設備的固件提供了一個標準機制。Zstack協議棧僅提供了鏡像塊請求方法,更新速度并不理想。在研究OTA實現過程的基礎上,設計出了一種高效的鏡像頁請求方法,能夠提高更新效率,并減少網絡流量。
ZigBee;空中下載;頁請求
ZigBee是一個分層協議標準,IEEE802.15.4管理底層的物理層和介質訪問層;ZigBee規范負責管理中層的網絡層、安全層和API;而用戶則負責控制上層的應用層程序。軟件在ZigBee節點中起著非常重要的作用,系統開發初期,往往需要對軟件進行現場的調試修改、升級,而基于ZigBee標準的無線傳感器節點又往往完全沒有物理連線,而且在現場往往裝配在不易手工連線的地方,這樣就給軟件的升級和調試修改帶來極大的不便。在無線環境下,如何解決安裝以后的軟件升級和調試工作,是設備安裝之前所必須考慮和完成的工作。在無線傳感器網絡中通過無線下載來實現軟件升級是解決問題的方法所在。針對無線傳感網絡重編程技術的需求,ZigBee聯盟在原有協議的框架上,提出了一種OTA規范,作為一個系統可選的功能模塊。Zstack是TI公司提供的實現ZigBee協議的半開源協議棧,其根據ZigBee聯盟制定的標準提供了OTA鏡像塊請求的實現函數及頁請求定義。本文在研究OTA原理的基礎上,添加頁請求功能,實現點對多的無線更新。
1.1OTA原理
空中下載要完成的任務是修改節點上支持節點正常運行的系統程序。其基本原理是向無線節點發送程序鏡像文件,然后由節點內部簡短啟動程序負責用鏡像程序覆蓋原有的系統程序。
通常,在整個空中下載的過程中起到作用的是3個概念上的組件:①命令執行器—責設備鏡像的初始化以及鏡像分發的控制,并在一個適當的時候激活傳輸好的鏡像;②客戶端程序—在終端節點上支持接受和激活到達的新的鏡像;③服務器程序—為目標節點設備提供新的鏡像程序。以上3種組件功能并不一定安裝在相同的硬件平臺上,因此,需要軟件無線升級的節點必須至少支持客戶端程序。
項目來源:江蘇省自然基金項目(14KJB510034)
收稿日期:2015-06-26修改日期:2015-07-23
新的鏡像通過無線傳輸,傳送到目標節點上的未利用的存儲空間,所以目標節點上的存儲空間必須在滿足存儲現行程序的同時,還能夠存放下與現行程序相似大小的新的鏡像文件。
要實現OTA功能,至少需要兩塊ZigBee設備,分別是服務器與客戶端。服務器只有一個,客戶端可有多個。服務器通過串口與PC機連接,需要下載的鏡像文件存放于PC機,命令執行器給服務器發命令及鏡像文件。首先命令執行器控制服務器廣播當前可用的鏡像文件信息,客戶端收到信息后進行對比,若有與自身相匹配的鏡像,則向服務器請求數據。服務器收到請求后向命令執行器索取固定大小的塊,再點對點傳送給客戶端。鏡像傳輸完畢后,客戶端進行校驗,完成后發送終止信號。流程圖如圖1、圖2所示。
圖1、圖2為鏡像文件傳輸過程,也是本文主要研究的過程。在客戶端校驗鏡像文件無誤后,還需要命令執行器發送命令激活鏡像。客戶端收到命令后用代碼鏡像文件覆蓋原有代碼并重啟,且仍然支持空中下載功能。

圖1 服務器流程圖

圖2 客戶端流程
1.2硬件系統
本文的OTA系統基于TI公司的ZigBee SoC芯片CC2530F256,內部集成了一個增強型8051單片機,擁有8 kbyte SRAM和256 kbyte內部FLASH存儲器。對于OTA客戶端,啟動代碼位于bank0的0x0000~0x0800地址區域,大小為2 kbyte。其余的254 kbyte的FLASH空間,用來存儲當前固件和其他信息。值得注意的是,0x0888~0x088B區域存放了CRC校驗信息,0x088C~0x0897區域存放了PREAMBLE,包括鏡像大小、制造商ID、鏡像類型和鏡像版本號信息。另外,bank7最后的 14 kbyte空間(0x7C800~0x7FFFF)用作非易失性NV(None Volatile)變量區(12 kbyte)和特定信息保留區(2 kbyte)。用來存放新代碼的FLASH可以采用片內和片外兩種方式,片內即把256 kbyte的空間劃分成相等的兩塊,新代碼存放在后半塊,片外即外接一塊FLASH,新代碼存放于外部FLASH。考慮到一般程序固件大小都超過128 kbyte和以后程序功能升級的擴展性,本文采用片外FLASH的方案。
1.3軟件系統
空中下載程序組件是一個標準的ZigBee應用層程序,可以調用所有的ZigBee協議棧資源。也就是說程序鏡像的空中下載過程中支持網絡多跳傳輸和AES-128完全安全性等。目前在F8W的Z-Stack協議棧中,已經提供了部分空中下載函數,用戶可調用API以實現和改進OTA。
無線下載過程中所依靠的啟動代碼就是在下載結束后負責將下載鏡像覆蓋于現行鏡像的啟動程序。也就是說這部分程序是在節點內部負責FLASH內部數據讀/寫和擦除,是在節點內部始終需要的代碼,這段代碼是不被覆蓋的,也就是說在節點裝配以后就一直保存在相應的存儲空間內,它不像活動程序代碼和下載鏡像代碼可以被修改和覆蓋。這段啟動代碼必須是Reset矢量的目標,因此內部含有啟動代碼;有FLASH讀/寫和擦除功能;能夠檢驗下載鏡像的完整性,以保證源鏡像程序不是破損的;能夠在運用下載鏡像改寫覆蓋過程中自動從中斷中恢復,并能檢驗升級后軟件的有效性,如果程序正確,則繼續運行新程序,如果仍然存在問題則從鏡像讀取程序修改。
Z-stack運行在一個OSAL操作系統上,OSAL是一種基于任務調度機制的操作系統。它是通過對任務的事件觸發來實現任務調度的。每個任務都包含若干個事件,每個事件都對應一個事件號。當一個事件產生時,對應任務的Event就被設置為相應的事件號,這樣事件調度就會調用相應的任務處理程序。OSAL中的任務可以通過任務API來添加到系統中,這樣就可以實現多任務機制。OSAL任務調度流程如圖3所示。空中下載就是這個系統下的一個任務調度。

圖3 OSAL任務調度流程
根據ZigBee OTA的規范,OTA客戶端向OTA服務器請求鏡像的方式有兩種,分別是鏡像塊請求與鏡像頁請求。鏡像塊請求的OTA更新方式效率較低。鏡像塊請求是客戶端每收到一個塊就向服務器請求一次,而頁請求是請求一次可收到多個數據塊,在數據幀當中附加了鏡像頁大小與響應間隔信息,當OTA服務器收到一次頁請求后,以一定的間隔多次向節點發送塊響應。其中,塊響應的次數由鏡像頁大小決定。請求命令的銳減,大大減輕了整個網絡流量的負擔,并提高節點的傳輸更新效率。
根據請求類型不同,服務器的處理函數也不同,而客戶端程序只需稍作改動。本文主要介紹服務器的頁請求處理功能。OTA服務器為每一個請求更新的節點分配一個事件號,對應一個節點號,并通過請求節點的短地址索引,設置特定的事件。進入事件后,OTA服務器通過串口向OTA應用控制臺請求鏡像數據塊,并向節點發送鏡像塊數據。通過把事件添加到定時器鏈表,就能夠以響應間隔為時間單位,循環發送鏡像塊數據,直到累計的發送鏡像塊大小等于節點的請求鏡像頁大小,從而完成一次鏡像頁請求的傳輸過程,流程圖如圖4所示。

圖4 頁請求處理流程
搭建一個星形網絡,把OTA服務器配置成協調器,把所有OTA客戶端配置成節點,并進行如下實驗。為了對比分析兩種更新手段的效率,分別使用鏡像塊請求命令與鏡像頁請求命令,對節點進行OTA更新。網絡規模分別為1個節點~7個節點,測量了不同規模網絡下節點完成更新傳輸所需的時間,每個節點與服務器距離相同,均為1 m。其中鏡像大小均為120 kbyte,數據塊大小(OTA_MAX_MTU)為64,串口波特率為38 400 bit/s。

表1 鏡像塊請求

表2 鏡像頁請求
其中時間間隔是經實驗確定的最小間隔,若間隔小于上表中的值,則出錯率較高。由上表可得,節點越多,用時越多,但平均用時越少。鏡像頁的大小為100,減少了99%的請求命令和確認幀。雖然頁請求方式提高了OTA的速率,但由于代碼結構不完善,速度受限于串口波特率等原因,還有進一步提升的空間。
通過無線更新固件,免去了回收更新節點所需時間,可以達到更新完成后不破壞當前網絡拓撲結構的效果,彌補傳感器網絡中節點軟件修改、調試方面的缺陷。本文實現的頁請求方式,雖然在速度上優于塊請求方式,但如果時間間隔選取不當,或外界干擾較大導致數據錯誤,其可靠性沒有塊請求方式高。針對此問題,可以再添加一個糾錯功能,一旦出現丟包,則接前一個數據包重新發送頁請求。另外,對于要求不是很嚴格的應用場合,可以嘗試服務器廣播鏡像文件的方式,理論上將進一步縮短更新時間。
[1] CC2530 Data Sheet[EB/OL].http://www.ti.com/product/cc2530.
[2] Texas Instruments.Z-Stack User Guides[S].America.Texas Instruments,2009:221-232.
[3] Texas Instruments.Z-Stack OTA Upgrade User's Guide[S]. America.Texas Instruments,2010:105-112.
[4] ZB_ZARC_Interest-ZigBee_OTA_Upgrade_Cluster_Specification [S].ZigBee Alliance,2010:210-220.
[5] 張心泉,左蕓,凌志浩.基于zigbee_網絡節點的軟件無線下載探討[C]//第八屆工業儀表與自動化學術會議,2007:2-4.
[6] 陳英杰,朱晉鋒.ZigBee空中下載技術研究及其優化設計[J].單片機與嵌入式系統應用,2012(11):3-4.
[7] 李麗娜.無線傳感器網絡代碼更新技術研究[D].哈爾濱:哈爾濱工業大學,2006.

王永(1972-),男,江蘇銅山人,碩士,副教授,徐州工業職業技術學院,主要研究方向為計算機應用與電子通信技術。
Analysis and Optimization of OTA Based on ZigBee*
WANG Yong1*,XI Ji2
(1.School of Information and Electrical Engineering,College of Industrial Technology,Xuzhou Jiangsu 221140,China;2.College of Computer and Information,Hohai University,Changzhou Jiangsu 213022,China)
ZigBee alliance had set a standard for OTA,and the upgrade cluster provides a standard mechanism for wirelessly upgrading a ZigBee device's firmware.The Zstack provides only the block request method,and the speed is not satisfactory.Based on the reaserch of the process of OTA,an designs an effective method—image page request is designed,which can speed up the session and reduce network traffic.
ZigBee;OTA(Over-The-Air);page request
TP393
A
1005-9490(2016)03-0671-04
EEACC:7230;720010.3969/j.issn.1005-9490.2016.03.033