ZigBee協議棧Zstack介紹
文中所講述的協議棧是基於ZigBee2006\Zstack-1.4.3-1.2.1
1.ZSTACK協議棧的架構
ZigBee協議棧就是將各個層定義的協議都集合在一起,以函式的形式實現,並給使用者提供一些API,工使用者呼叫。協議棧體系分層結構與協議棧程式碼資料夾對應表如下:
整個協議棧的架構,如圖所示:
APP:應用層目錄,這是使用者建立各種不同工程的區域,在這個目錄中包含了應用層的內容和這個專案的主要內容,在協議棧裡面一般是以作業系統的任務實現的。
HAL:硬體層目錄,包含有與硬體相關的配置和驅動及操作函式。
MAC:MAC層目錄,包含了MAC層的引數配置檔案及其MAC的LIB庫的函式介面檔案。
MT:監控除錯層,主要用於除錯目的的,即實現通過串列埠除錯各層,與各層進行直接互動。
NWK:網路層目錄,涵網路層配置引數檔案及網路層庫的函式介面檔案,APS層庫的函式介面。
OSAL:協議棧的作業系統。
Profile:AF層目錄,包含AF層處理函式檔案。
Security:安全層目錄,安全層處理函式介面檔案,比如加密函式等。
Services:地址處理函式目錄,包括著地址模式的定義及地址處理函式。
Tools:工程配置目錄,包括空間劃分和Zstack相關的配置資訊。
ZDO:ZDO目錄。
ZMac:MAC層目錄,包括MAC層引數配置及MAC層LIB庫函式回撥處理函式。
ZMain:主函式目錄,包括入口函式main()及硬體配置檔案。
Output:輸出檔案目錄層,這個EW8051 IDE自主設計的。
2、ZigBee2006協議棧原始碼庫結構分析
瞭解了ZigBee2006協議棧整個結構後,再來看看協議棧原始碼結構庫是什麼樣的,各層的具體檔案是什麼,簡歷不同的專案、新增自己的應用層任務及處理函式需要修改什麼檔案。
ZigBee2006協議棧ZStack-1.5.2檔案目錄及說明如下:
開啟SmapleAPP專案工程
先看APP層:
從上圖可以看出,對於不公的專案,大部分的程式碼都是相同的,只是在使用者應用層,添加了不同的任務及事件處理函式。因此一般情況下,使用者只需要額外新增上圖中的三個檔案(主檔案、標頭檔案、作業系統介面檔案)就可以完成一個專案,然後編寫自己的額任務處理函式就可以了。
HAL層目錄:
Common目錄下的檔案是公用檔案,基本上與硬體無關,hal_assert.c檔案是斷言檔案,用於除錯,hal_drivers.c是驅動檔案,抽象出於硬體無關的驅動函式,包含有與硬體相關的配置和驅動及操作函式。Include目錄下主要包含各個硬體模組的標頭檔案,Target目錄下的檔案是跟硬體平臺相關的,可以看到有兩個平臺,其中我們正在用的是CC2430EB平臺。
MAC層目錄:
MAC分為高層和低層,Include目錄下包含了MAC層的引數配置檔案及LIB庫的函式介面檔案。
其中Zmac.c是ZStack MAC層介面檔案,Zmac_cb.c是ZMAC需要呼叫的網路層函式。
ZMain目錄:
Z-Stack有main()函式開始執行,main()中Zmain.c中該函式共做了兩件事:一是系統初始化,另外是開始執行輪訓查詢式作業系統,OnBoard.c中包含了對硬體開發平臺各類外設進行控制的介面函式。