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