ZigBee空中下載技術(shù)研究及其優(yōu)化設(shè)計(jì)
Z-Stack運(yùn)行在一個OSAL操作系統(tǒng)上,OSAL是一種基于任務(wù)事件調(diào)度機(jī)制的操作系統(tǒng)。每個任務(wù)包含若干事件,每個事件對應(yīng)一個事件號。當(dāng)一個事件需要產(chǎn)生時,可以通過API函數(shù)設(shè)置相應(yīng)的事件號,然后提交給操作系統(tǒng)調(diào)度觸發(fā)。本文設(shè)計(jì)的鏡像頁請求功能正是基于這種機(jī)制。OTA服務(wù)器的鏡像頁請求處理流程如圖2所示,OTA服務(wù)器為每一個請求更新的節(jié)點(diǎn)分配一個事件號,并通過請求節(jié)點(diǎn)的短地址索引,設(shè)置特定的事件。進(jìn)入事件后,OTA服務(wù)器通過串口向OTA應(yīng)用控制臺請求鏡像數(shù)據(jù)塊,并向節(jié)點(diǎn)發(fā)送鏡像塊數(shù)據(jù)。通過把事件添加到定時器鏈表,就能夠以響應(yīng)間隔為時間單位,循環(huán)發(fā)送鏡像塊數(shù)據(jù),直到累計(jì)的發(fā)送鏡像塊大小等于節(jié)點(diǎn)的請求鏡像頁大小,從而完成一次鏡像頁請求的傳輸過程。本文引用地址:http://m.butianyuan.cn/article/153699.htm
Z-Stack協(xié)議棧有一個MAC定時器為操作系統(tǒng)提供計(jì)時。該定時器以每1 ms為單位,更新系統(tǒng)的定時器事件鏈表。定時器事件鏈表如圖3所示,鏈表的每一個結(jié)點(diǎn)記錄了任務(wù)號(task_id)、事件號(event_flag),計(jì)時時間(timeout)和下一個結(jié)點(diǎn)地址(*next)。圖中的ZCL_OTA_MT_ READ n定義為每個請求節(jié)點(diǎn)對應(yīng)的事件號,Response Spacing即為節(jié)點(diǎn)請求的響應(yīng)間隔,把兩者添加到鏈表當(dāng)中。當(dāng)計(jì)時時間減為0后,系統(tǒng)自動設(shè)定對應(yīng)的事件號,從而使OTA服務(wù)器循環(huán)地向OTA應(yīng)用控制臺索取鏡像塊數(shù)據(jù),并向節(jié)點(diǎn)發(fā)送鏡像塊響應(yīng)。
OTA服務(wù)器處理鏡像頁請求的部分代碼段如下:
評論