資源描述:
《ZigBee協(xié)議棧應用分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學術(shù)論文-天天文庫。
1、ZigBee協(xié)議棧Z-Stack應用分析電子科學系系2008級電子信息科學與技術(shù)專業(yè)2班姓名胡健同組人姓名暫無指導老師羅中良日期2010年8月15日ZigBee協(xié)議棧Z-Stack的應用綜述Z-Stack是TI公司提供的ZigBee協(xié)議棧,它從結(jié)構(gòu)看與標準協(xié)議棧的組織結(jié)構(gòu)很相似,所以我相信對于閱讀過ZigBee協(xié)議棧的人來說,對Z-Stack應該不會陌生,TI公司的Z-Stack在組織結(jié)構(gòu)來看,為ZigBee協(xié)議部分的所謂的組(group)有Mac、nwk、profile、security、zdo,這些組包含了
2、大部分ZigBee協(xié)議棧的內(nèi)容,而且?guī)缀醵际且灰粚?,并且在每一層都實現(xiàn)了訪問接口函數(shù),可以方便的查閱“.h”選擇可用的服務函數(shù)。Z-Stack中的Hal則是ZigBee所說的Hal的超集,因為Z-Stack的Hal還包含了對應單片機的硬件抽象,比如按鍵、LED、LCD、ADC、uart等的抽象接口,提供的接口都是對用戶透明的,應用起來比較方便,必要的初始化后可以直接調(diào)用。app是應用層,是添加應用的常規(guī)地方。用戶的應用一般在這里添加。tools是Z-Stack與調(diào)試工具接口的代碼。zmac是Mac的簡單接口
3、,也就是說,在ZigBee協(xié)議棧中看到的某些原語在這里可以找到對應的函數(shù),不過,大部分的Mac原語的實現(xiàn)函數(shù)還是在Mac那個group。zmain是整個Z-Stack開始運行的地方,在這個組的源文件中可以找到主函數(shù)main與一些初始化函數(shù)。OSAL是協(xié)調(diào)協(xié)議棧、硬件、任務有條不紊工作的操作系統(tǒng)組(group),在這里實現(xiàn)一個消息驅(qū)動的實時操作系統(tǒng),為其他任務提供服務,即提供必要的系統(tǒng)服務接口(API)。而ZigBee協(xié)議棧中的層在Z-Stack里面,都對應一個任務,而且越底層任務優(yōu)先級越高,這可以保證最緊急、實
4、時要求高的層得以優(yōu)先執(zhí)行。那么,我們?nèi)绾螒肸-Stack呢?如前面所述,協(xié)議棧的每層都是單獨一組,并以“.h”文件為接口提供接口函數(shù),OSAL也是如此---我們就是應用這些的!也就是說,我們就是在這些服務接口的范圍進行我們的應用開發(fā)的,Z-Stack給我們提供了一個應用的框架!下面,我以開發(fā)應用的角度來分析一下Z-Stack的可用接口。一.熟悉Z-Stack的操作系統(tǒng)第一步,觀察可用的操作系統(tǒng)函數(shù)。在“.h”文件中找,看看有哪些“.h”文件及其對應函數(shù)。OSAL.h函數(shù)列表如下externbyte*osal_
5、msg_allocate(uint16len);//1externbyteosal_msg_deallocate(byte*msg_ptr);//2externUINT16osal_num_msgs(void);//3externbyteosal_msg_send(bytedestination_task,byte*msg_ptr);//4externbyte*osal_msg_receive(bytetask_id);//5externvoidosal_msg_enqueue(osal_msg_q_t*q_p
6、tr,void*msg_ptr);//6externbyteosal_msg_enqueue_max(osal_msg_q_t*q_ptr,void*msg_ptr,bytemax);//7externvoid*osal_msg_dequeue(osal_msg_q_t*q_ptr);//8externvoidosal_msg_push(osal_msg_q_t*q_ptr,void*msg_ptr);//9externvoidosal_msg_extract(osal_msg_q_t*q_ptr,void*m
7、sg_ptr,void*prev_ptr);//10externbyteosal_set_event(bytetask_id,UINT16event_flag);//11externbyteosal_isr_register(byteinterrupt_id,void(*isr_ptr)(byte*));//12/externbyteosal_int_enable(byteinterrupt_id);//13externbyteosal_int_disable(byteinterrupt_id);//14ext
8、ernbyteosal_init_system(void);//15#ifdefined(ZBIT)extern__declspec(dllexport)voidosal_start_system(void);//16#elseexternvoidosal_start_system(void);#endifOSAL_Custom.h函數(shù)列表如下externvoidosalAddTask