ZStack基本工作原理

暖諾安陽發表於2019-05-13

目錄
ZStack基本工作原理 1
摘要 1
前言 2
1、ZStack協議棧介紹 2
1.1、ZStack 2
1.2、ZStack協議棧的架構 2
2、 ZStack協議棧工作 4
2.1、ZStack的實現 4
2.2、ZStack OSAL API 介紹 5
2.3、ZStack的工作函式 6
參考 8

ZStack基本工作原理
摘要
ZStack是下一代開源的雲端計算IaaS(基礎架構即服務)軟體。它主要面向的是未來的智慧資料中心,通過提供的API來管理包括計算、儲存和網路在內的資料中心的各種資源,ZStack可以做到15分鐘完成安裝部署,版本間5分鐘無縫升級,全API交付,零手工配置;可以單節點管理十萬物理機、百萬級虛擬機器,同時響應數萬併發API呼叫; API層面提供SQL級別的查詢,擁有單項查詢條件超過400萬個,組合查詢條件為400萬階乘;內建工作流引擎,可以在錯誤發生時隨時回滾,維護系統一致性。
前言
ZStack於2015年4月首發0.6版本後,迅速獲得技術圈關注。國內CSDN、InfoQ、國外The New Stack、51CTO及IT168都對ZStack的架構和技術進行了報導。阿里雲(5月13日)、百度開放雲(9月5日)、金山雲(10月8日)和網易研究院(2016年1月26日)分別邀請ZStack創始團隊進行技術交流,為他們的工程師團隊講解ZStack架構和技術。
1、ZStack協議棧介紹
1.1、ZStack
Z-Stack協議棧是一個基於任務輪詢方式的作業系統,其任務排程和資源分配由作業系統抽象層OSAL管理著。即Z-Stack協議棧=OSAL作業系統+CC2530硬體模組+AF無線網路應用。
1.2、ZStack協議棧的架構
整個協議棧的架構,如圖所示:

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、ZStack協議棧工作
2.1、ZStack的實現
ZigBee無線網路的實現,是建立在ZigBee協議棧的基礎上的,協議棧採用分層的結構協議分層的目的是為了使各層相對獨立,每一層都提供一些服務,服務由協議定義,程式設計師只需關心與他的工作直接相關的那些層的協議,它們向高層提供服務,並由低層提供服務。
在ZigBee協議棧中,PHY、MAC層位於最低層,且與硬體相關;NWK、APS, APL層以及安全層建立在PHY和MAC層之上,並且完全與硬體無關。分層的結構脈絡清晰、一目瞭然,給設計和除錯帶來極大的方便。
整個Z-Stack採用分層的軟體結構,硬體抽象層(HAL)提供各種硬體模組的驅動,包括定時器Timer,通用I/O口GPIO,通用非同步收發傳輸器UART,模數轉換ADC的應用程式介面API,提供各種服務的擴充套件集。作業系統抽象層OSAL實現了一個易用的作業系統平臺,通過時間片輪轉函式實現任務排程,提供多工處理機制。使用者可以呼叫OSAL提供的相關API進行多工程式設計,將自己的應用程式作為一個獨立的任務來實現。
2.2、ZStack OSAL API 介紹
OSAL層是與協議棧獨立的,但是整個協議都要基於OS才能執行。OSAL提供如下服務和管理:資訊管理、任務同步、時間管理、中斷管理、任務管理、記憶體管理、電源管理以及非易失儲存管理。[28][29]
一、資訊管理API
資訊管理為任務間的資訊交換或者外部處理事件(例如:中斷服務程式或一個控制迴圈內的函式呼叫等)提供一種管理機制。包括允許任務分配或不分配資訊快取、傳送命令資訊到其他任務、接受應答資訊等API函式。
二、同步任務API
該API允許一個任務等待某個事件的發生並返回等待期間的控制。該API的功能是為某個任務設定事件,一旦任何一個事件被設定就修改該任務。
三、時間管理API
該API允許定時器被內部(Z-Stack)任務和外部任務使用。該API提供開始和停止一個定時器的功能,這些定時器能用毫秒(ms)設定。
四、中斷管理API
這些API是外部中斷和任務的介面。這些API函式允許一個任務為每個中斷分配指定服務程式。這些中斷能被允許或禁止。在服務程式內,可為其他的任務設定事件。
五、任務管理API
該API用在管理OSAL中的任務,包括系統任務和使用者自定義任務的建立、管理和資訊處理等。
六、記憶體管理API
該API描繪了簡單的儲存分配系統。這些函式允許動態儲存分配。
七、電源管理API
這裡描寫了OSAL的電源管理系統。當OSAL安全地關閉接收器與外部硬體並使處理器進入休眠模式時,該系統提供嚮應用/任務通告該事務的方式。
2.3、ZStack的工作函式
一.APP層

OSAL_Example.c中存放著作業系統介面檔案,並且對於不公的專案,大部分的程式碼都是相同的,只是在使用者應用層,新增了不同的任務及事件處理函式。因此一般情況下,使用者只需要額外新增上圖中的三個檔案(主檔案、標頭檔案、作業系統介面檔案)就可以完成一個專案,然後編寫自己的額任務處理函式就可以了。
二.HAL層目錄

common目錄下的檔案是公用檔案,基本上與硬體無關,hal_assert.c檔案是斷言檔案,用於除錯,hal_drivers.c是驅動檔案,抽象出於硬體無關的驅動函式,包含有與硬體相關的配置和驅動及操作函式。Include目錄下主要包含各個硬體模組的標頭檔案,Target目錄下的檔案是跟硬體平臺相關的,可以看到有兩個平臺,其中我們正在用的是CC2530EB平臺。
三.MAC層目錄

MAC分為高層和低層,Include目錄下包含了MAC層的引數配置檔案及LIB庫的函式介面檔案。
四.ZMac目錄

Zmac.c是ZStack MAC層介面檔案,Zmac_cb.c是ZMAC需要呼叫的網路層函式。
五.ZMain目錄

Z-Stack有main()函式開始執行,main()中Zmain.c中該函式共做了兩件事:一是系統初始化,另外是開始執行輪訓查詢式作業系統,OnBoard.c中包含了對硬體開發平臺各類外設進行控制的介面函式。
參考
[1].杜軍朝、ZigBee技術原理與實踐、機械工業出版社
[2].https://blog.csdn.net/kangerdong/article/details/86523286
[3].https://blog.csdn.net/weilexuexi12/article/details/71374307

相關文章