zstack 的體系結構由稱為層的各模組組成。每一層為其上層提供特定的服務:即由
資料服務實體提供資料傳輸服務;管理實體提供所有的其他管理服務。每個服務實體通
過相應的服務接入點(sap) 為其上層提供乙個介面,每個服務接入點通過服務原語來完
成所對應的功能。
ming inte***ce),hal(hardware abstract layer),mac(media access control),nwk(z
igbee network layer),osal(operating system abstract system),security,service,z
do(zigbee device objects)。zstack 的體系結構如圖所示
整個 zstack 的主要工作流程,如圖所示,大致分為以下 6 步:
(1) 關閉所有中斷;
(2) 晶元外部(板載外設)初始化;
(3) 晶元內部初始化;
(4) 初始化作業系統;
(5) 開啟所有中斷;
(6) 執行作業系統。
其中,初始化作業系統和執行作業系統這兩步是最為關鍵的兩步。這兩步都是在位
於 zmain 資料夾下的 zmain.c 檔案裡的 main 函式裡進行的。
osal_init_system()函式裡面是一些系統初始化操作,我們需要關心的是 osalinittasks()函
數,至於其他的初始化函式,都是關於晶元正常工作所需要的配置,所以,使用者可以不
用考慮。
下面分別介紹各層。
物理層(phy)
物理層定義了物理無線通道和 mac 子層之間的介面,提供物理層資料服務和物理
層管理服務,物理層內容:
(1)zigbee 的啟用;
(2) 當前通道的能量檢測;
269(3) 接收鏈路服務質量資訊;
(4) zigbee 通道接入方式;
(5) 通道頻率選擇;
(6) 資料傳輸和接收。
介質接入控制子層(mac)
mac 層負責處理所有的物理無線通道訪問,並產生網路訊號、同步訊號;支援 p
an 連線和分離,提供兩個對等 mac 實體之間可靠的鏈路。mac 層功能:
(1) 網路協調器產生信標;
(2) 與信標同步;
(3) 支援 pan (個域網) 鏈路的建立和斷開;
(4) 為裝置的安全性提供支援;
(5) 通道接入方式採用免衝突載波檢測多址接入(csma-ca)機制;
(6) 處理和維護保護時隙(gts )機制;
(7) 在兩個對等的 mac 實體之間提供乙個可靠的通訊鏈路。
網路層(nwk)
zstack 的核心部分在網路層。網路層主要實現節點加入或離開網路、接收或拋棄其
他節點、路由查詢及傳送資料等功能。網路層功能:
(1) 網路發現;
(2) 網路形成;
(3) 允許裝置連線;
(4) 路由器初始化;
(5) 裝置同網路連線;
(6)直接將裝置同網路連線;
(7)斷開網路連線;
(8)重新復位裝置;
(9)接收機同步;
(10)資訊庫維護。
應用層(apl)
zstack 應用層框架包括應用支援層(aps)、zigbee 裝置物件(zdo)和**商所定義
270的應用物件。
(1) 應用支援層的功能包括:維持繫結表、在繫結的裝置之間傳送訊息。
(2) zigbee 裝置物件的功能包括:定義裝置在網路中的角色(如 zigbee 協調器和終
端裝置) ,發起和響應繫結請求,在網路裝置之間建立安全機制。zigbee 裝置物件還負
責發現網路中的裝置,並且決定向他們提供何種應用服務。
zigbee 應用層除了提供一些必要函式以及為網路層提供合適的服務介面外,乙個重
要的功能是應用者可在這層定義自己的應用物件。
應用程式框架(af)
執行在 zigbee 協議棧上的應用程式實際上就是廠商自定義的應用物件,並且遵循
規範(profile)執行在端點 1~240 上。在 zigbee 應用中,提供 2 種標準服務型別:鍵值
對(kvp)或報文(msg)。
zigbee 裝置物件(zdo )
遠端裝置通過 zdo 請求描述符資訊,接收到這些請求時,zdo 會呼叫配置物件獲
取相應描述符值。另外,zdo 提供繫結服務。
ti z-stack協議棧學習-新增新任務
1.zstack中如何實現自己的任務
在zstack(ti的zigbee協議棧)中,對於每個使用者自己新建立的任務通常需要兩個相關的處理函式,包括:
下面分3個部分分析.
1.使用者自己設計的任務**在zstack中的呼叫過程
(1).main()執行(在zmain.c中)
main()---> osal_init_system()
(2).osal_init_system()呼叫osalinittasks(),(在osal.c中)
osal_init_system()--->osalinittasks()
void osalinittasks( void )
2.任務處理呼叫的重要資料結構
const ptaskeventhandlerfn tasksarr = ;
注意, tasksevents和tasksarr裡的順序是一一對應的,tasksarr中的第i個事件處理函式對應於tasksevents中的第i個任務的事件.
//計算出任務的數量
const uint8 taskscnt =sizeof(tasksarr)/sizeof(tasksarr[0]);
uint16 *tasksevents;
3. 對於不同事件發生後的任務處理函式的呼叫
osal_start_system()很重要,決定了當某個任務的事件發生後呼叫對應的事件處理函式
void osal_start_system(void)
}while(++idxif(idx
#if defined( power_s**ing )
else // complete pass through all task events with no activity?
#endif}}
2.z-stack新增乙個新的任務
在osalinittasks()和tasksarr新增相應的項就可以了。
1.修改osalinittasks()
void osalinittasks( void )
2.修改tasksarr
const ptaskeventhandlerfn tasksarr = ;
3.新增_init()和_processevent()
// release the memory
osal_msg_deallocate( (uint8 *)msgpkt );
// next - if one is **ailable
}// return unprocessed events
return (events ^ sys_event_msg);
}// discard unknown events
return 0;
}
TI Z stack協議棧開發環境和工作流程
2016 12 18 12 36 37 分享 zstack 的體系結構由稱為層的各模組組成。每一層為其上層提供特定的服務 即由 資料服務實體提供資料傳輸服務 管理實體提供所有的其他管理服務。每個服務實體通 過相應的服務接入點 sap 為其上層提供乙個介面,每個服務接入點通過服務原語來完 成所對應的功...
移動開發 oFono開源電話協議棧
ofono是乙個開源免費的 協議棧軟體,它遵循3gpp27.007等通訊標準,通過at命令與2g 3g modem進行互動,以實現各種 功能 voicecall,gprs,sms,stk等等 在ofono的基礎上,很容易開發用qt,gtk,clutter等api編寫的使用者介面。ofono一般作為守...
TCP IP 協議 協議棧
tcp ip協議棧 整個協議棧被分為了四層,每一層協議負責不同的功能 鏈路層 負責處理物理介面的細節,接受傳送的都是位元流,鏈路層主要有三個目的 1.為ip模組傳送和接收i p資料報 2.為arp模組傳送arp請求和接收arp應答 3.為rarp傳送rarp請求和接收rarp應答 網路層 用來處理網...