Z-Stack原理闡述 ZigBee聯(lián)盟定義的ZigBee協(xié)議棧結(jié)構(gòu)包括物理 層、MAC層、網(wǎng)絡(luò)層和AF應(yīng)用層,協(xié)議棧底層支持IEEE802.15.4協(xié)議, 操作系統(tǒng)抽象層OSAL提供了程序執(zhí)行過程中任務(wù)的注冊(cè)、任務(wù)間信息傳遞、任務(wù)的同步、中斷處理、時(shí)間片管理、內(nèi)存的管理和分配等功能。 ZigBee的組網(wǎng)類型主要分為三種:星型、樹型和網(wǎng)狀類型,在實(shí)際的組網(wǎng)過程中,根據(jù)具體的應(yīng) 用場(chǎng)景設(shè)置不同的組網(wǎng)類型。星型網(wǎng)絡(luò)是最常見的一種無線網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),在該拓?fù)浣Y(jié)構(gòu)中,只包含一個(gè)協(xié)調(diào)器節(jié)點(diǎn),每個(gè)終端節(jié)點(diǎn)之間的數(shù)據(jù)通過協(xié)調(diào)器進(jìn)行轉(zhuǎn)發(fā),協(xié)調(diào)器節(jié)點(diǎn)在網(wǎng)絡(luò)中數(shù)據(jù)轉(zhuǎn)發(fā)非 常頻繁,由于節(jié)點(diǎn)都是采用電池供電,所以在星型 網(wǎng)絡(luò)中容易出現(xiàn)網(wǎng)絡(luò)分割現(xiàn)象。在樹型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,除了協(xié)調(diào)器節(jié)點(diǎn)之外,還有若干路由器節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)端到端轉(zhuǎn)發(fā)。網(wǎng)狀結(jié)構(gòu)組成的網(wǎng)絡(luò)拓?fù)浔容^靈活,根據(jù)存儲(chǔ)的路由表進(jìn)行數(shù)據(jù)傳輸。 Z-Stack協(xié)議棧是一個(gè)基于任務(wù)輪詢方式的操作系統(tǒng),其任務(wù)調(diào)度和資源分配由操作系統(tǒng)抽象層OSAL管理著。可以理解為:Z-Stack協(xié)議棧 = OSAL操作系統(tǒng) + CC2530硬件模塊 + AF無線網(wǎng)絡(luò)應(yīng)用。總體來看,Z-Stack協(xié)議棧只做了兩件事情:首先進(jìn)行系統(tǒng)的初始化,然后啟動(dòng)OSAL操作系統(tǒng)。在任務(wù)輪詢過程中,系統(tǒng)將會(huì)不斷查詢每個(gè)任務(wù)是否有事件發(fā)生,如果有事件發(fā)生,就執(zhí)行相應(yīng)的事件處理函數(shù),如果沒有事件發(fā)生,則查詢下一個(gè)任務(wù)。 深入理解OSAL的調(diào)度機(jī)制和工作機(jī)理,是靈活應(yīng)用Z-Satck協(xié)議棧進(jìn)行Zigbee無線應(yīng)用開發(fā)的重要基礎(chǔ)。深入的理解OSAL操作系統(tǒng)的關(guān)鍵是要理解任務(wù)初始化函數(shù)osalInitTasks()、任務(wù)標(biāo)識(shí)符taskID、任務(wù)事件數(shù)組taskEvents[]和任務(wù)事件處理函數(shù)指針數(shù)組tasksArr[]之間的對(duì)應(yīng)關(guān)系以及它們?cè)贠SAL運(yùn)行過程中的執(zhí)行情況。 APP:應(yīng)用層目錄,這是用戶創(chuàng)建各種不同工程的區(qū)域,在這個(gè)目錄中包含了應(yīng)用層的內(nèi)容和這個(gè)項(xiàng)目的主要內(nèi)容,在協(xié)議棧里面一般是以操作系統(tǒng)的任務(wù)實(shí)現(xiàn)的。 用戶只需要額外添加上圖中的三個(gè)文件(主文件、頭文件、操作系統(tǒng)接口文件)就可以完成一個(gè)項(xiàng)目,然后編寫自己的額任務(wù)處理函數(shù)就可以了。 HAL:硬件層目錄,包含有與硬件相關(guān)的配置和驅(qū)動(dòng)及操作函數(shù)。 Common目錄下的文件是公用文件,基本上與硬件無關(guān),hal_assert.c文件是斷言文件,用于調(diào)試,hal_drivers.c是驅(qū)動(dòng)文件,抽象出于硬件無關(guān)的驅(qū)動(dòng)函數(shù),包含有與硬件相關(guān)的配置和驅(qū)動(dòng)及操作函數(shù)。Include目錄下主要包含各個(gè)硬件模塊的頭文件,Target目錄下的文件是跟硬件平臺(tái)相關(guān)的,可以看到有兩個(gè)平臺(tái),其中我們正在用的是CC2530EB平臺(tái)。 MAC:MAC層目錄,包含了MAC層的參數(shù)配置文件及其MAC的LIB庫的函數(shù)接口文件。 MT:監(jiān)控調(diào)試層,主要用于調(diào)試目的的,即實(shí)現(xiàn)通過串口調(diào)試各層,與各層進(jìn)行直接交互。 NWK:網(wǎng)絡(luò)層目錄,涵網(wǎng)絡(luò)層配置參數(shù)文件及網(wǎng)絡(luò)層庫的函數(shù)接口文件,APS層庫的函數(shù)接口。 OSAL:協(xié)議棧的操作系統(tǒng)。 Profile:AF層目錄,包含AF層處理函數(shù)文件。 Security:安全層目錄,安全層處理函數(shù)接口文件,比如加密函數(shù)等。 Services:地址處理函數(shù)目錄,包括著地址模式的定義及地址處理函數(shù)。 Tools:工程配置目錄,包括空間劃分和Zstack相關(guān)的配置信息。 ZDO:ZDO目錄。 ZMac:MAC層目錄,包括MAC層參數(shù)配置及MAC層LIB庫函數(shù)回調(diào)處理函數(shù)。其中Zmac.c是ZStack MAC層接口文件,Zmac_cb.c是ZMAC需要調(diào)用的網(wǎng)絡(luò)層函數(shù)。 ZMain:主函數(shù)目錄,包括入口函數(shù)main()及硬件配置文件。Z-Stack有main()函數(shù)開始執(zhí)行,main()中Zmain.c中該函數(shù)共做了兩件事:一是系統(tǒng)初始化,另外是開始執(zhí)行輪訓(xùn)查詢式操作系統(tǒng),OnBoard.c中包含了對(duì)硬件開發(fā)平臺(tái)各類外設(shè)進(jìn)行控制的接口函數(shù)。 Output:輸出文件目錄層,這個(gè)EW8051 IDE自主設(shè)計(jì)的。 |