ZigBee空中下載技術(shù)研究及其優(yōu)化設(shè)計(jì)
摘要:首先介紹基于ZigBee協(xié)議的OTA系統(tǒng),并在CC2530F256硬件平臺(tái)上進(jìn)行驗(yàn)證。在Z-Staek協(xié)議棧中,設(shè)計(jì)出一種鏡像頁(yè)請(qǐng)求的空中下載(Over the Air,OTA)更新方式,并通過(guò)實(shí)驗(yàn)測(cè)試,與原有的鏡像塊請(qǐng)求方式進(jìn)行了比較分析。實(shí)驗(yàn)結(jié)果表明,鏡像頁(yè)請(qǐng)求方式可以大大減少網(wǎng)絡(luò)的更新流量,從而提高節(jié)點(diǎn)的更新效率。
關(guān)鍵詞:無(wú)線傳感網(wǎng)絡(luò);ZigBee;空中下載;鏡像塊請(qǐng)求;鏡像頁(yè)請(qǐng)求;更新效率
引言
本文移植并驗(yàn)證了一種基于ZigBee協(xié)議的空中下載(OTA)技術(shù),其分發(fā)協(xié)議支持點(diǎn)對(duì)多傳輸更新功能,多跳網(wǎng)絡(luò)的代碼分發(fā)功能由路由協(xié)議支撐。在Z-Stack協(xié)議棧下,僅僅支持鏡像塊請(qǐng)求功能,更新效率并不理想。針對(duì)此問(wèn)題,設(shè)計(jì)出一種高效的鏡像頁(yè)請(qǐng)求功能,能夠提高點(diǎn)對(duì)多的傳輸更新效率,并減少網(wǎng)絡(luò)流量。
1 OTA概述
ZigBee協(xié)議規(guī)范使用了IEEE 802.15.4定義的物理層(PHY)和媒體介質(zhì)訪問(wèn)層(MAC),并在此基礎(chǔ)上定義了網(wǎng)絡(luò)層(NWK)和應(yīng)用層(APL)。針對(duì)無(wú)線傳感網(wǎng)絡(luò)重編程技術(shù)的需求,ZigBee聯(lián)盟在原有協(xié)議的框架上,提出了一種OTA規(guī)范,其作為一個(gè)系統(tǒng)可選的功能模塊。OTA系統(tǒng)的結(jié)構(gòu)示意圖和服務(wù)器與客戶端之間的數(shù)據(jù)交互過(guò)程略——編者注。
2 OTA系統(tǒng)設(shè)計(jì)
本文的OTA系統(tǒng)基于TI公司的ZigBee SoC芯片CC2530F256設(shè)計(jì),包括硬件與軟件的設(shè)計(jì)。
2.1 硬件系統(tǒng)
CC2530F256內(nèi)部集成一個(gè)增強(qiáng)型8051單片機(jī),擁有8 KB SRAM和256 KB內(nèi)部Flash存儲(chǔ)器。內(nèi)部Flash主要用來(lái)保存程序代碼和常量數(shù)據(jù)。由于傳統(tǒng)8051代碼存儲(chǔ)空間尋址范圍只有64 KB,CC2530把內(nèi)部256 KBFlash分成8個(gè)bank,每一個(gè)bank大小是32 KB,通過(guò)寄存器FMA P.MAP[2:0]選擇不同的bank映射到代碼存儲(chǔ)空間,解決了尋址空間受限的問(wèn)題。
對(duì)于OTA客戶端,啟動(dòng)代碼位于bank0的0x0000~0x0800地址區(qū)域,大小為2 KB。其余的254 KB的Flash空間,用來(lái)存儲(chǔ)當(dāng)前固件和其他信息。值得注意的是,0x0888~0x088B區(qū)域存放了CRC校驗(yàn)信息,0x088C~0x0897區(qū)域存放了PREAMBLE,包括鏡像大小、制造商ID、鏡像類(lèi)型和鏡像版本號(hào)信息。另外,bank7最后的14 KB空間(0x7C800~0x7FFFF)用作非易失性(None Volatile,NV)變量區(qū)(12 KB)和特定信息保留區(qū)(2 KB)。
OTA系統(tǒng)升級(jí)方案有兩種,分別是片內(nèi)Flash升級(jí)和片外Flash升級(jí)??紤]到一般程序固件大小都超過(guò)128KB和以后程序功能升級(jí)的擴(kuò)展性,本文采用片外Flash的方案。采用的片外Flash(M25PE20)容量為256 KB,通過(guò)SPI總線與CC2530之間傳輸數(shù)據(jù)。
2.2 軟件系統(tǒng)
對(duì)于基于任務(wù)事件輪詢機(jī)制的Z-Stack工程,默認(rèn)沒(méi)有添加OTA功能。如果節(jié)點(diǎn)需要開(kāi)啟OTA功能,首先需要燒寫(xiě)OTA的啟動(dòng)代碼。當(dāng)節(jié)點(diǎn)完成鏡像接收之后,對(duì)新鏡像進(jìn)行CRC校驗(yàn),并清空當(dāng)前鏡像的CRC信息,然后重啟。當(dāng)節(jié)點(diǎn)重啟后,首先跳轉(zhuǎn)到啟動(dòng)代碼的地址,開(kāi)始執(zhí)行如圖1所示的工作流程。
3 OTA的鏡像頁(yè)請(qǐng)求實(shí)現(xiàn)
根據(jù)ZigBee OTA的規(guī)范,OTA客戶端向OTA服務(wù)器請(qǐng)求鏡像的方式有兩種,分別是鏡像塊請(qǐng)求與鏡像頁(yè)請(qǐng)求。鏡像塊請(qǐng)求的OTA更新方式效率較低。
本文根據(jù)ZigBee OTA的規(guī)范,在Z-Stack協(xié)議棧上設(shè)計(jì)出鏡像頁(yè)請(qǐng)求的更新方式。頁(yè)請(qǐng)求命令與塊請(qǐng)求命令類(lèi)似,在數(shù)據(jù)幀當(dāng)中附加了鏡像頁(yè)大小與響應(yīng)間隔信息。當(dāng)OTA服務(wù)器收到一次頁(yè)請(qǐng)求后,在一定時(shí)間間隔內(nèi)多次向節(jié)點(diǎn)發(fā)送塊響應(yīng),免去了多次塊請(qǐng)求。其中,塊響應(yīng)的次數(shù)由鏡像頁(yè)大小決定,時(shí)間間隔由響應(yīng)間隔設(shè)定。正因?yàn)檎?qǐng)求命令的銳減,能夠大大減輕整個(gè)網(wǎng)絡(luò)流量的負(fù)擔(dān),并提高節(jié)點(diǎn)的傳輸更新效率。
評(píng)論