- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ZigBee应用开发
内容摘要
Z-Stack协议栈OSAL初始化流程简析
Z-Stack协议栈MT层任务解析
SampleApp自组无线网实例解析
基于Z-Stack协议栈添加用户应用层任务的方法
Z-Stack协议栈OSAL初始化流程简析
Z-Stack软件层次
整个Z-Stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段。
Z-Stack软件启动流程
系统上电后,通过执行Zmain文件夹中ZMain.c的主函数开始系统初始化。
当顺利完成上述初始化时,执行osal_start_system()函数开始运行OSAL系统。
OSAL轮询操作系统
OSAL(Operating System Abstraction Layer)
操作系统抽象层
定义了其它模块中的事件的处理机制。它将每一模块内的所有事件放在一个任务中进行处理,任务间的通信通过传递系统消息来完成,这使得协议栈中的事件处理更类似于一个操作系统;
同时它还定义了堆内存管理、NV(non-volatile,非可变)存储系统的管理、电源管理、时钟管理等。
OSAL的任务调度
OSAL是协议栈的核心,Z-Stack的任何一个子系统都作为OSAL的一个任务。
任务调度函数按照优先级检测
各个任务是否就绪。如果存在就绪
的任务则调用tasksArr[]中相对应的
任务处理函数去处理该事件,直到
执行完所有就绪的任务。如果任务
列表中没有就绪的任务,则可以使
处理器进入睡眠状态实现低功耗。
任何OSAL任务必须分为两步:
任务初始化
分配任务内存空间,和指定唯一的任务ID标识号。
任务事件的处理。
1. 处理任务事件通过创建“ApplicationName”_ProcessEvent()函数处理。
2. 将创建的任务事件处理函数加入到tasksArr[]数组中。
OSAL中有些任务是协议栈运行所必须的,因此在工程中都要加入到任务数组中去(默认)。
OSAL的任务
事件(EVENT)
类型为uint16,位域表述,其形式为: SYS_EVENT_XXX
一个OSAL任务最多定义除系统强制事件外的15个事件。事件中通常待用用于通讯的消息。
消息(MSG)
由uint8的ID标识,可有256个。
OSAL任务中的事件与消息
SYS_EVENT_MSG(0x8000)是强制事件。
该事件主要用来发送全局的系统消息,包括以下信息:
AF_INCOMING_MSG_CMD:用来指示接收到的AF信息。
KEY_ CHANGE:用来确认按键动作。
ZDO_ NEW_ DSTADDR:用来指示自动匹配请求。
ZDO_STATE_CHANGE:用来指示网络状态的变化。
通常我们都是在任务的事件循环中去处理以上事件和消息。
OSAL任务中的事件与消息
OSAL任务中的事件与消息
NWK 层为更高层提供了如下功能:
网络管理
地址管理
网络参数与功能函数
除了管理功能,NWK 还提供了应用程序没有的数据服务。应用程序可以通过 AF数据接口。
AF数据接收:afIncomingData()
AF数据发送:AF_DataRequest()
网络层重要API
网络管理
NLME_NetworkFormationRequest()
此函数允许相邻的更高层请求设备组建一个新网络。
NLME_NetworkDiscoveryRequest()
此函数请求网络层寻找相邻路由器。
NLME_JoinRequest()
此函数允许相邻的更高层请求设备将自己加入到一个网络中。
NLME_ReJoinRequest()
使用此函重新加入一个设备已经加入过的网络。
网络层重要API
地址管理
NLME_GetExtAddr()
这个函数将返回指向 IEEE 设备 64 地址的指针。
NLME_GetShortAddr()
这个函数将返回设备的(16 位短) ?网络地址。
NLME_GetCoordShortAddr()
这个函数将返回设备父节点的(16 位短)网络地址。
NLME_GetCoordExtAddr()
这个函数是将获得设备的父节点设备的 IEEE(64 位)地址。
网络层重要API
AF数据发送
网络层重要API
Z-Stack协议栈MT层任务解析
Monitor Test
MT模块提供了协议栈与上位机软件交互的接口。
它利用串口进行数据的物理传输,并定义了串口数据包
您可能关注的文档
最近下载
- 小学体育_队列队形教学设计学情分析教材分析课后反思.doc
- 中建项目商务策划汇报模板.pptx
- 公路中小跨径钢-混组合梁桥标准图集(制订)》技术方案报告.docx
- “设计思维与方法”教案.ppt
- 大职赛生涯闯关参考答案.docx VIP
- 2022《美宜佳公司营运资金管理存在的问题及对策研究》开题报告文献综述(含提纲)3200字.docx VIP
- 长垣市人民医院西学中培训班《方剂学》考试.pdf VIP
- 苏教版一年级科学上册4.1《自然物与人造物》(课件).pptx
- 电子商务招聘简章模板.pdf
- 统编版小学语文二年级上册第六单元 先辈伟人 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx
文档评论(0)