ZigBee TI ZStack CC2530 4.5 裝置地址01-Primary/Secondary IEEE Address
(配套原始碼、軟體、開發板等資源,可移步部落格同名QQ群:拿破崙940911)
很多朋友可能至今也還不知道關於IEEE address,還有“Primary”、“Secondary”和“temporary”之分,本節就向大家介紹一下關於協議棧中的“IEEE address”是如何選擇的。
每個ZigBee裝置都需要有一個唯一的64位IEEE address。Z-Stack中用如下四個等級次序來決定當裝置工作時使用的IEEE address:
步驟1、從NV儲存區中讀取;
步驟2、從Secondary IEEE address的位置尋找;
步驟3、從Primary IEEE address的位置尋找;
步驟4
、使用隨機數產生器建立temporary IEEE address。
一般情況下,當執行協議棧的裝置啟動時,它會從非易失性儲存區(NV)中去讀取IEEE address(在上一次裝置執行時被儲存下來)。NV儲存區保留了包括IEEE address在內的很多引數,為裝置重啟時使用,尤其是當裝置斷電時。在三種可能的情況下,NV儲存區中的IEEE address會被儲存下來——最初按上述步驟2和3的等級次序,或是後期由外部來源傳遞過來(比如通過串列埠,來自電腦端執行如Z-Tool這樣的程式)。
在裝置重啟的過程中,如果“從NV儲存區讀取”的操作不成功,Z-Stack首先會嘗試在Secondary IEEE address
Secondary IEEE address的地址在CC2530 FLASH的最後一頁,距離最後儲存地址偏移地址為0x0018。對於256KB FLASH的裝置來說,IEEE address可以在0x3FFE8~0x3FFEF部分被找到。這個地址是供使用者用來覆蓋TI在出廠時就已經預程式設計的Primary IEEE address。和Z-Stack配套的裝置程式設計工具可以用來在這個位置儲存IEEE address。
在裝置重啟的過程中,如果在NV儲存區或是Secondary IEEE address的位置都找不到IEEE address,Z-Stack會嘗試去讀取TI預程式設計的Primary IEEE address(位於裝置“資訊儲存區”0x00C~0x013的位置)。在極少數的情況下,CC2530裝置中沒有這樣一個預程式設計的Primary IEEE address,那麼協議棧會使用系統的隨機數字發生器生成一個以0xF8開頭的64位temporary IEEE address。
Z-Stack允許通過標準的NV_Write應用介面函式來更新NV儲存區中的IEEE address。這樣也就允許開發者基於他們自己的考慮,使用Z-Tool或其他等效的機制來改變IEEE address。在生產環境下,還是建議不要使用這樣的功能,因為一個已經部署了的ZigBee裝置是不應該允許被修改它的IEEE address的。
參考文件:
1、Texas Instruments\ZStack-CC2530-2.5.1a\Documents 《Z-Stack User's Guide - CC2530DB.pdf》 7.2
(配套原始碼、軟體、開發板等資源,可移步部落格同名QQ群:拿破崙940911)