《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > ZigBee空中下載技術研究及其優化設計
ZigBee空中下載技術研究及其優化設計
電子設計工程
摘要: 首先介紹基于ZigBee協議的OTA系統,并在CC2530F256硬件平臺上進行驗證。在Z-Staek協議棧中,設計出一種鏡像頁請求的空中下載(OvertheAir,OTA)更新方式,并通過實驗測試,與原有的鏡像塊請求方式進行了比較分析。實驗結果表明,鏡像頁請求方式可以大大減少網絡的更新流量,從而提高節點的更新效率。
Abstract:
Key words :

引言
本文移植并驗證了一種基于ZigBee協議的空中下載(OTA)技術,其分發協議支持點對多傳輸更新功能,多跳網絡的代碼分發功能由路由協議支撐。在Z-Stack協議棧下,僅僅支持鏡像塊請求功能,更新效率并不理想。針對此問題,設計出一種高效的鏡像頁請求功能,能夠提高點對多的傳輸更新效率,并減少網絡流量。

1 OTA概述
ZigBee協議規范使用了IEEE 802.15.4定義的物理層(PHY)和媒體介質訪問層(MAC),并在此基礎上定義了網絡層(NWK)和應用層(APL)。針對無線傳感網絡重編程技術的需求,ZigBee聯盟在原有協議的框架上,提出了一種OTA規范,其作為一個系統可選的功能模塊。OTA系統的結構示意圖和服務器與客戶端之間的數據交互過程略——編者注。

2 OTA系統設計
本文的OTA系統基于TI公司的ZigBee SoC芯片CC2530F256設計,包括硬件與軟件的設計。
2.1 硬件系統
CC2530F256內部集成一個增強型8051單片機,擁有8 KB SRAM和256 KB內部Flash存儲器。內部Flash主要用來保存程序代碼和常量數據。由于傳統8051代碼存儲空間尋址范圍只有64 KB,CC2530把內部256 KBFlash分成8個bank,每一個bank大小是32 KB,通過寄存器FMA P.MAP[2:0]選擇不同的bank映射到代碼存儲空間,解決了尋址空間受限的問題。
對于OTA客戶端,啟動代碼位于bank0的0x0000~0x0800地址區域,大小為2 KB。其余的254 KB的Flash空間,用來存儲當前固件和其他信息。值得注意的是,0x0888~0x088B區域存放了CRC校驗信息,0x088C~0x0897區域存放了PREAMBLE,包括鏡像大小、制造商ID、鏡像類型和鏡像版本號信息。另外,bank7最后的14 KB空間(0x7C800~0x7FFFF)用作非易失性(None Volatile,NV)變量區(12 KB)和特定信息保留區(2 KB)。

OTA系統升級方案有兩種,分別是片內Flash升級和片外Flash升級??紤]到一般程序固件大小都超過128KB和以后程序功能升級的擴展性,本文采用片外Flash的方案。采用的片外Flash(M25PE20)容量為256 KB,通過SPI總線與CC2530之間傳輸數據。

2.2 軟件系統
對于基于任務事件輪詢機制的Z-Stack工程,默認沒有添加OTA功能。如果節點需要開啟OTA功能,首先需要燒寫OTA的啟動代碼。當節點完成鏡像接收之后,對新鏡像進行CRC校驗,并清空當前鏡像的CRC信息,然后重啟。當節點重啟后,首先跳轉到啟動代碼的地址,開始執行如圖1所示的工作流程。

a.JPG



3 OTA的鏡像頁請求實現
根據ZigBee OTA的規范,OTA客戶端向OTA服務器請求鏡像的方式有兩種,分別是鏡像塊請求與鏡像頁請求。鏡像塊請求的OTA更新方式效率較低。
本文根據ZigBee OTA的規范,在Z-Stack協議棧上設計出鏡像頁請求的更新方式。頁請求命令與塊請求命令類似,在數據幀當中附加了鏡像頁大小與響應間隔信息。當OTA服務器收到一次頁請求后,在一定時間間隔內多次向節點發送塊響應,免去了多次塊請求。其中,塊響應的次數由鏡像頁大小決定,時間間隔由響應間隔設定。正因為請求命令的銳減,能夠大大減輕整個網絡流量的負擔,并提高節點的傳輸更新效率。

Z-Stack運行在一個OSAL操作系統上,OSAL是一種基于任務事件調度機制的操作系統。每個任務包含若干事件,每個事件對應一個事件號。當一個事件需要產生時,可以通過API函數設置相應的事件號,然后提交給操作系統調度觸發。本文設計的鏡像頁請求功能正是基于這種機制。OTA服務器的鏡像頁請求處理流程如圖2所示,OTA服務器為每一個請求更新的節點分配一個事件號,并通過請求節點的短地址索引,設置特定的事件。進入事件后,OTA服務器通過串口向OTA應用控制臺請求鏡像數據塊,并向節點發送鏡像塊數據。通過把事件添加到定時器鏈表,就能夠以響應間隔為時間單位,循環發送鏡像塊數據,直到累計的發送鏡像塊大小等于節點的請求鏡像頁大小,從而完成一次鏡像頁請求的傳輸過程。

b.JPG


Z-Stack協議棧有一個MAC定時器為操作系統提供計時。該定時器以每1 ms為單位,更新系統的定時器事件鏈表。定時器事件鏈表如圖3所示,鏈表的每一個結點記錄了任務號(task_id)、事件號(event_flag),計時時間(timeout)和下一個結點地址(*next)。圖中的ZCL_OTA_MT_ READ n定義為每個請求節點對應的事件號,Response Spacing即為節點請求的響應間隔,把兩者添加到鏈表當中。當計時時間減為0后,系統自動設定對應的事件號,從而使OTA服務器循環地向OTA應用控制臺索取鏡像塊數據,并向節點發送鏡像塊響應。

c.JPG


OTA服務器處理鏡像頁請求的部分代碼段如下:
d.JPG
e.JPG

4 驗證與分析
4.1 功能驗證
為了驗證OTA功能,在CC2530F256平臺上搭建一個小型樹狀網絡,并使用Packet Sniffer對OTA更新時的節點進行抓包分析。4個傳感節點的固件并沒有添加溫度采集功能,所以溫度顯示為0。在新的固件中添加了溫度采集函數,用于驗證OTA更新成功。
對于某些特定應用,需要節點更新固件后能夠保持原來的網絡拓撲結構。內部Flash的NV區能夠保存節點的網絡信息,只要在工程添加NV_INIT與NV_RESTORE預編譯項,節點在掉電后還能恢復原來網絡信息。
對4個傳感節點進行OTA更新。OTA更新后,溫度采集功能成功添加,而且傳感節點的網絡短地址沒有發生變化,網絡拓撲結構保持完整,驗證了進行OTA鏡像升級過程中,并不會對NV區進行擦除,有利于節點網絡信息的恢復。
OTA服務器被配置為路由器(0x06BC),對傳感節點(0x0002)進行點對點更新。第一條短幀是子路由向OTA服務器發送Image Block Reque st,應用層載荷從第4字節開始記錄了新鏡像的制造商ID(0x5678)、鏡像類型(0x1234)、版本號(0x00000002)和鏡像塊偏移量。最后1個字節記錄了每次傳送最大鏡像塊大小(OTA_MAX_MTU),默認為0x20,即為32字節。第二條長幀是OTA服務器發送的Image Block Response,載荷記錄格式與前者類似,并在最大鏡像塊大小字節后面附上32字節鏡像塊信息,從而完成一個鏡像塊傳輸周期。
4.2 效率分析
搭建一個星形網絡,把OTA服務器配置成協調器,把所有OTA客戶端配置成節點,并進行如下兩個實驗。
4.2.1 實驗一
為了對比分析兩種更新手段的效率,分別使用鏡像塊請求命令與鏡像頁請求命令,對節點進行OTA更新。星形網絡中,通過廣播Image Notify,能夠對多節點進行批量更新。網絡規模分別為1~6個節點,測量了不同規模網絡下節點完成更新傳輸所需的時間。Min與Max分別
指最快與最慢完成更新傳輸的節點對應的時間,Ave指平均每個節點完成更新傳輸所需時間(使用Max值計算)。
其中,鏡像頁請求設置的Response Spacing為100 ms,鏡像頁大小為640字節。鏡像大小統一為113 KB,并修改OTA_MAX_MTU大小為64字節。節點與OTA服務器間隔均為5 m。鏡像塊、鏡像頁請求的傳輸時間分別如表1、表2所列,響應間隔均為100 ms。

f.JPG


實驗一中,使用鏡像塊請求,節點發送鏡像塊請求所需時間為15.5 ms,OTA服務器返回鏡像塊響應所需時間實際為96 ms,來回確認幀時間大概為1.92+3.84=5.76ms。一個更新周期傳輸鏡像塊大小為64字節,完成113KB大小的鏡像傳送需要1765個周期??倳r間為(96+15.5 +5.76)×1765=206 963 ms,這與表1中的測量值207.2 s基本符合。
本文設計的鏡像頁請求中鏡像頁大小為640字節,每次傳輸鏡像塊大小為64字節,即節點發送1次頁請求可以得到10次塊響應。當更新1個節點時,使用鏡像頁請求可以把原來的1 765條請求命令和1 765條確認幀減少9/10,共減少3 177條傳輸幀。減少的傳輸幀數量隨著節點數目成比例增長。
對比表1與表2,可以發現無論節點數目為多少,頁請求的平均每個節點的更新傳輸時間都比塊請求的要短。其中,發送鏡像頁請求時間為15.5 ms,請求確認幀時間為1.92 ms,節點為1時,共減少時間為(15.5+1.92)×1765×0.9=27 672 ms,此值與表1和表2的測量值207.2-179.6=27.6 s基本符合。
4.2.2 實驗二
為了測試鏡像頁請求在點對點更新情況下的最高效率,設定最短的響應間隔為10 ms,分別測量不同鏡像頁大小的單個節點更新傳輸時間。使用CC2531(支持USB)作為OTA服務器,能夠縮短服務器向應用控制臺索取鏡像塊數據的時間,進一步加快更新傳輸效率。鏡像大小統一為113 KB,OTA_MAX_MTU大小為64字節,節點與OTA服務器間隔均為5 m。不同鏡像頁大小下的傳輸時間如表3所列。

g.JPG


實驗二中,由于采用了支持USB的CC2531,能夠把OTA服務器返回的鏡像塊響應所需時間縮短為22.5ms,節點發送鏡像頁請求所需時間保持為15.5 ms不變,來回確認幀時間為5.76 ms。當鏡像頁大小為64字節時,傳輸所需時間為(22.5+15.5+5.76)×1765=77 236ms,也與表3中的測量值77.2 s基本相符。當鏡像頁大小為6 400字節時,即請求命令減少到原來的1/100,時間縮短了50 s,更新效率大幅度提高,基本達到了單個節點更新速度的極限。

結語
通過無線更新固件,免去了回收更新節點所需時間,可以達到更新完成后不破壞當前網絡拓撲結構的效果。另外,在Z-Stack協議棧設計了一種鏡像頁請求更新方式,實驗結果表明,當批量更新整個網絡時,既可以提高節點的更新效率,又可以大大減小網絡的更新流量,并節省節點的功耗。當進行點對點更新時,如果把響應間隔縮減為10 ms,并把鏡像頁設置得足夠大,單個節點的更新時間可以縮減為27.3 s,接近單個節點更新速度的極限。至于使用批量的更新方式還是點對點的更新方式,視具體的應用場合而定。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩一区二区在线视频 | 一区二区免费在线播放| 狠狠久久亚洲欧美| 国产噜噜噜噜噜久久久久久久久| 欧美私人网站| 欧美视频导航| 欧美视频在线观看| 欧美日韩一区二区免费在线观看| 欧美精品一区二区三区久久久竹菊 | 亚洲第一色在线| 在线电影一区| 亚洲第一福利在线观看| 一区二区三区在线免费视频| 狠狠干综合网| 精品电影在线观看| 亚洲第一精品福利| 亚洲国产日韩一级| 亚洲激情成人网| 99精品欧美一区二区三区综合在线 | 午夜精品一区二区三区四区| 亚洲在线播放电影| 亚洲综合国产激情另类一区| 亚洲欧美在线x视频| 香蕉精品999视频一区二区| 欧美一区视频在线| 欧美在线黄色| 亚洲电影观看| 亚洲精品乱码久久久久久久久| 亚洲另类黄色| 在线亚洲成人| 香蕉精品999视频一区二区| 久久福利一区| 美乳少妇欧美精品| 欧美国产在线电影| 欧美日韩在线高清| 国产精品一级| 黄色成人在线网址| 亚洲精品日韩综合观看成人91| 一本一本久久a久久精品综合妖精| 亚洲午夜精品福利| 欧美在线视频导航| 亚洲精品国产系列| 亚洲综合国产| 久久久激情视频| 欧美国内亚洲| 国产精品免费福利| 好吊日精品视频| 亚洲精品影视| 先锋亚洲精品| 99ri日韩精品视频| 欧美一区二区三区电影在线观看| 久久久久久久欧美精品| 欧美激情第3页| 国产精品你懂的在线欣赏| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲激情视频| 亚洲欧美电影院| 亚洲破处大片| 午夜精品久久久久久久| 久久综合九色综合网站 | 欧美精品在线一区二区| 国产乱码精品一区二区三区五月婷| 极品少妇一区二区三区精品视频| 亚洲精品专区| 久久不见久久见免费视频1| 亚洲最新视频在线播放| 久久久久久久综合| 欧美三区在线视频| 尤物yw午夜国产精品视频明星| 在线亚洲免费视频| 91久久久久久国产精品| 午夜精品久久久久久| 欧美激情精品久久久久久蜜臀| 国产日韩精品视频一区| 亚洲精品欧洲精品| 亚洲电影第三页| 午夜久久久久久久久久一区二区| 欧美成人激情视频| 国产日韩精品一区二区三区| 亚洲精品在线电影| 91久久精品一区| 久久久7777| 国产精品电影网站| 亚洲三级电影在线观看| 久久精品一区二区| 西西人体一区二区| 欧美日韩亚洲激情| 亚洲国产欧美不卡在线观看 | 亚洲久久一区二区| 久久婷婷久久| 国产精品一区二区在线| 亚洲最快最全在线视频| 亚洲国产精品一区在线观看不卡| 校园春色国产精品| 欧美新色视频| 亚洲精品免费网站| 91久久精品日日躁夜夜躁欧美| 久久成人精品一区二区三区| 欧美性猛交99久久久久99按摩| 亚洲黑丝在线| 亚洲国产毛片完整版| 久久精品视频在线播放| 国产精品视频一区二区高潮| 99国内精品| 亚洲最新中文字幕| 欧美韩国日本综合| 1000部国产精品成人观看| 欧美自拍偷拍午夜视频| 久久高清一区| 国产一区二区三区免费不卡 | 欧美亚洲一区二区在线观看| 亚洲欧美日韩一区二区三区在线观看 | 亚洲一区二区在线| 亚洲一线二线三线久久久| 欧美日韩国产二区| 日韩视频在线免费| 亚洲特级片在线| 国产精品久久精品日日| 中国成人黄色视屏| 亚洲欧美视频一区二区三区| 国产精品久久久久久福利一牛影视| 亚洲最新在线| 亚洲男人影院| 国产精品一区二区三区四区五区| 亚洲免费在线视频| 欧美诱惑福利视频| 国产欧美婷婷中文| 欧美一区国产在线| 老司机67194精品线观看| 激情视频亚洲| 亚洲精品欧美一区二区三区| 欧美国产综合视频| 亚洲免费高清视频| 亚洲一区二区三区色| 国产精品劲爆视频| 午夜日韩视频| 久久免费少妇高潮久久精品99| 国语精品一区| 亚洲区一区二| 欧美日韩一区二区三区在线看 | 亚洲午夜免费视频| 欧美在线视频不卡| 狠狠色狠狠色综合日日tαg| 亚洲国产精品一区在线观看不卡| 欧美激情成人在线| 在线视频精品一区| 久久精品日韩欧美| 亚洲国产美女| 亚洲性夜色噜噜噜7777| 国产精自产拍久久久久久| 欧美在线短视频| 欧美激情一区二区三区全黄| 9i看片成人免费高清| 欧美亚洲视频一区二区| 韩国av一区二区| av成人手机在线| 国产精品亚洲片夜色在线| 久久精品亚洲一区| 欧美日韩一卡| 欧美资源在线| 欧美日韩一区二区免费视频| 亚洲欧美日韩直播| 欧美电影免费观看| 亚洲小说欧美另类婷婷| 开心色5月久久精品| 99精品视频一区| 久久久久久久久久久久久9999| 亚洲黄色免费电影| 欧美一区二区三区在线看| 在线看视频不卡| 亚洲在线免费| 在线观看视频免费一区二区三区| 在线视频你懂得一区二区三区| 国产欧美精品一区二区色综合| 亚洲电影免费观看高清完整版在线观看 | 日韩一级视频免费观看在线| 国产精品欧美日韩一区二区| 久久精品二区三区| 欧美网站大全在线观看| 久久xxxx| 国产精品国产三级国产aⅴ无密码| 久久精品国产欧美亚洲人人爽| 欧美日韩精品免费在线观看视频| 欧美有码视频| 欧美色偷偷大香| 亚洲国产成人av好男人在线观看| 欧美日一区二区在线观看| 久久黄色网页| 国产精品日韩欧美一区| 日韩亚洲一区二区| 狠狠色香婷婷久久亚洲精品| 亚洲在线视频免费观看| 亚洲第一黄网| 久久精品视频免费观看| 一区二区三区四区蜜桃| 欧美二区乱c少妇| 久久精品欧洲| 国产精自产拍久久久久久| 一本一本久久a久久精品牛牛影视| 国产在线成人|