ZigBee协议栈应用分析

ZigBee协议栈Z-Stack应用分析电子科学系系2008级电了信息科学与技术专业2班姓名胡健同组人姓名暂无指导老师罗中良日期2010年8月15日ZigBee协议栈Z-Stack的应用综述Z-Stack是TI公司提供的ZigBee协议栈,它从结构看与标准协议栈的组织结构很相似,所以我相信对于阅读过ZigBee协议栈的人来说,对Z-Stack应该不会陌牛,TI公司的Z-Stack在组织结构来看,为ZigBee协议部分的所谓的组(group)有Mac、nwk>profile>security>zdo,这些组包含了大部分ZigBee协议栈的内容,而且几乎都是一一对应的,并且在每一层都实现了访问接口函数,可以方便的查阅“・h”选择可用的服务函数。Z-Stack中的Hal则是ZigBee所说的Hal的超集,因为Z-Stack的Hal还包含了对应单片机的硬件抽彖,比如按键、LED、LCD、ADC、miTt等的抽象接口,提供的接口都是对用户透明的,应用起来比较方便,必要的初始化后可以育•接调用。Bpp是应用层,是添加应用的常规地方。用户的应用一般在这里添加。tools是Z-Stack与调试工具接口的代码。zmac是Mac的简单接口,也就是说,在ZigBee协议栈中看到的某些原语在这里可以找到对应的函数,不过,大部分的血ic原语的实现函数还是在血ic那个groupozmain是整个Z-Stack开始运行的地方,在这个组的源文件中可以找到主函数main与一些初始化函数。0SAL是协调协议栈、硬件、任务有条不紊工作的操作系统组(group),在这里实现一个消息驱动的实时操作系统,为其他任务提供服务,即提供必要的系统服务接口(API)。而ZigBee协议栈中的层在Z-Stack里面,都对应一个任务,而J4越底层任务优先级越高,这可以保证最紧急、实时要求高的层得以优先执行。OSAL.h函数列表如下byte*osal」iisg_dll()cate(uintl6len);//lbyteosaljnsg_deallocate(byte*msg_ptr)://2IJINT16osalnummsgs(void);//3byteosalmsgsend(bytedestinationtask,byte*msg_ptr);//4bytevoidexternexternexternexternexternexternexternexternbytevoidexternvoidexternvoidexternexternexternexternbytebytebytebytebyte*osaljnsg_receive(bytetask_id);//5osa1」nsg_enqueue(osal」nsg_q_t*q_ptr,void*msg_ptr);//6osaljnsg_enqueuejnax(osaljnsg_q__t*q_ptr,void*nisg_ptr,bytemax);/,/7*oscilmsgdequeue(osalmsg_q_t*q一ptr);//8osalmsgpush(osalmsgqt*qptr,void*msgptr);//9osal_msg__extract(osal_msg_q_t*q_ptr,void*msg_ptr,void*prev_ptr);//10osal__set_event(bytetask^id,U1NT16event_flag);//11osal_isr_register(byteinterrupt_id,void(*isr_ptr)(byte*));//12/osalintenable(byteinterruptid);//13osalintdisable(oscil___init_system(bytevoidextern#ifdefined(ZBIT)extern_dec1spec(d11export)#elseexternvoidosalstartsystem(void);#endifvoidinterruptid);//14);//15osal_start_system(void);//16那么,我们如何应用Z-Stack呢?如前而所述,协议栈的每层都是单独一组,并以文件为接口提供接口函数,OSAL也是如此一-我们就是应用这些的!也就是说,我们就是在这些服务接口的范围进行我们的应用开发的,Z-Stack给我们提供了一个应用的框架!下而,我以开发应用的角度来分析一下Z-Stack的可用接口。一.熟悉Z-Stack的操作系统第一步,观察可用的操作系统函数。在“・h”文件中找,看看有哪些“・h”文件及其对应函数。OSAL_Custom.h函数列表如下externvoidosalAddTasks(void);OSAL_Memory.h函数列表如下voidosalmeminit(void);externexternvoidosalmemkick(void);void*osalmemalloc(uintl6size);voidosalmemfree(void*ptr);#if(OSALMEMMETRICS)uintl6osalheapblockmax(void);uint16uint16uint16#endifosalheapblockent(void);osalheapblockfree(void);osalheapmemused(void);#ifdefined(ZTOOLPl)丨defined(ZTOOLP2)uintl6osalheaphighwater(void);#endif0SAL_Nv.h函数列表如下externvoidosalnvinit(void*p);externbyteosalnviteminit(uintl6id,ui门tl6len,void*buf);externbyteosalnvread(ui门tl6id,uintl6offset,uint16len,void*buf);externbyteosalnvwrite(uintl6id,uintl6offset,uint.16len,void*buf);externuintl6osaln...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?