TIZstack协议栈开发环境和工作流程.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TIZstack 协议 开发 环境 工作 流程
- 资源描述:
-
TIZstack协议栈开发环境和工作流程 11 2020年4月19日 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 TI Z-stack协议栈开发环境和工作流程 By KuangJunBin KuangJunBin: 如您对本项目感兴趣或者有任何疑问, 欢迎与我一起探讨: 。谢谢您的阅读! 系统软件设计是在硬件设计的基础上进行的, 良好的软件设计是实现系统功能的重要环节, 也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑, 移植了TI公司的Z-Stack协议栈, 其主要特点就是其兼容性, 完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性, 如无线下载, 可经过ZigBee网状网络( Mesh Network) 下载节点更新。 图 ZigBee节点开发环境 TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外, 还能够结合编程器进行单步跟踪调试和监测片上寄存器、 Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层: API( Application Programming Interface) , HAL ( Hardware Abstract Layer) , MAC( Media Access Control), NWK( Zigbee Network Layer) , OSAL( Operating System Abstract System) , Security, Service, ZDO( Zigbee Device Objects) 。使用IAR打开工程文件SampleApp.eww后, 即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈能够实现复杂的网络链接, 在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建, 采用事件轮循机制, 当各层初始化之后, 系统进入低功耗模式, 当事件发生时, 唤醒系统, 开始进入中断处理事件, 结束后继续进入低功耗模式。如果同时有几个事件发生, 判断优先级, 逐次处理事件。这种软件构架能够极大地降级系统的功耗。 整个Z-stack的主要工作流程, 大致分为系统启动, 驱动初始化, OSAL初始化和启动, 进入任务轮循几个阶段, 下面将逐一详细分析。 图 Z-Stack系统运行流程图 Figure . The Flow Chart of Z-Stack n 系统初始化 系统上电后, 经过执行ZMain文件夹中ZMain.c的ZSEG int main( )函数实现硬件的初始化, 其中包括关总中断osal_int_disable( INTS_ALL )、 初始化板上硬件设置HAL_BOARD_INIT( )、 初始化I/O口InitBoard( OB_COLD )、 初始化HAL层驱动HalDriverInit( )、 初始化非易失性存储器sal_nv_init( NULL )、 初始化MAC层ZMacInit( )、 分配64位地址zmain_ext_addr( )、 初始化操作系统osal_init_system( )等。 硬件初始化需要根据HAL文件夹中的hal_board_cfg.h文件配置寄存器8051的寄存器。TI官方发布Z-stack的配置针正确是TI官方的开发板CC2430DB、 CC2430EMK等, 如采用其它开发板, 则需根据原理图设计改变hal_board_cfg.h文件配置, 例如本方案制作的实验板与TI官方的I/O口配置略有不同, 其中状态指示LED2的需要重新设置LED2控制引脚口、 通用I/O口方向和控制函数定义等。 当顺利完成上述初始化时, 执行osal_start_system( )函数开始运行OSAL系统。该任务调度函数按照优先级检测各个任务是否就绪。如果存在就绪的任务则调用tasksArr[ ]中相对应的任务处理函数去处理该事件, 直到执行完所有就绪的任务。如果任务列表中没有就绪的任务, 则能够使处理器进入睡眠状态实现低功耗。程序流程如图3-13所示。osal_start_system( )一旦执行, 则不再返回Main( )函数。 OSAL任务调度流程图 Figure . The Flow Chart of OSAL Scheduler n OSAL任务 OSAL是协议栈的核心, Z-stack的任何一个子系统都作为OSAL的一个任务, 因此在开发应用层的时候, 必须经过创立OSAL任务来运行应用程序。经过osalInitTasks( )函数创立OSAL任务, 其中TaskID为每个任务的唯一标识号。任何OSAL任务必须分为两步: 一是进行任务初始化; 二是处理任务事件。任务初始化主要步骤如下: ( 1) 初始化应用服务变量。 const pTaskEventHandlerFn tasksArr[ ]数组定义系统提供的应用服务和用户服务变量, 如MAC层服务macEventLoop、 用户服务SampleApp_ProcessEvent等 ( 2) 分配任务ID和分配堆栈内存 void osalInitTasks( void )主要功能是经过调用osal_mem_alloc( )函数给各个任务分配内存空间, 和给各个已定义任务指定唯一的标识号。 ( 3) 在AF层注册应用对象 经过填入endPointDesc_t数据格式的EndPoint变量, 调用 afRegister( )在AF层注册EndPoint应用对象。 经过在AF层注册应用对象的信息, 告知系统afAddrType_t地址类型数据包的路由端点, 例如用于发送周期信息的SampleApp_Periodic_DstAddr和发送LED闪烁指令的SampleApp_Flash_DstAddr。 ( 4) 注册相应的OSAL或则HAL系统服务 在协议栈中, Z-stack提供键盘响应和串口活动响应两种系统服务, 可是任何Z-Stask任务均不自行注册系统服务, 两者均需要由用户应用程序注册。值得注意的是, 有且仅有一个OSAL Task能够注册服务。例如注册键盘活动响应可调用RegisterForKeys( )函数。 ( 5) 处理任务事件 处理任务事件经过创立”ApplicationName”_ProcessEvent( )函数处理。一个OSAL任务除了强制事件( Mandatory Events) 之外还能够定义15个事件。 SYS_EVENT_MSG( 0x8000) 是强制事件。该事件主要用来发送全局的系统信息, 包括以下信息: AF_DATA_CONFIRM_CMD: 该信息用来指示经过唤醒AF DataRequest( )函数发送的数据请求信息的情况。ZSuccess确认数据请求成功的发送。如果数据请求是经过AF_ACK_REQUEST置位实现的, 那么ZSussess能够确认数据正确的到达目的地。否则, ZSucess仅仅能确认数据成功的传输到了下一个路由。 AF_INCOMING_MSG_CMD: 用来指示接收到的AF信息。 KEY_ CHANGE: 用来确认按键动作。 ZDO_ NEW_ DSTADDR: 用来指示自动匹配请求。 ZDO_STATE_CHANGE: 用来指示网络状态的变化。 n 网络层信息 Zigbee设备有两种网络地址: 1个是64位的IEEE地址, 一般也叫作MAC地址或者扩展地址( Extended address) , 另一个是16位的网络地址, 也叫做逻辑地址( Logical address) 或者短地址。64位长地址是全球唯一的地址, 而且终身分配给设备。这个地址可由制造商设定或者在安装的时候设置, 是由IEEE来提供。当设备加入Zigbee网络被分配一个短地址, 在其所在的网络中是唯一的。这个地址主要用来在网络中辨识设备, 传递信息等。 协调器( Coordinator) 首先在某个频段发起一个网络, 网络频段的定义放在DEFAULT_ CHANLIST配置文件里。如果ZDAPP_ CONFIG_ PANID定义的PAN ID是0xFFFF( 代表所有的PAN ID) , 则协调器根据它的IEEE地址随机确定一个PAN ID。否则, 根据ZDAPP_ CONFIG_ PANID的定义建立PAN ID。当节点为Router或者End Device时, 设备将会试图加入DEFAULT_ CHANLIST所指定的工作频段。如果ZDAPP_ CONFIG_ PANID没有设为0xFFFF, 则Router或者End Device会加入ZDAPP_ CONFIG_ PANID所定义的PAN ID。 设备上电之后会自动的形成或加入网络, 如果想设备上电之后不马上加入网络或者在加入网络之前先处理其它事件, 能够经过定义HOLD_AUTO_START来实现。经过调用ZDApp_StartUpFromApp( )来手动定义多久时间之后开始加入网络。 设备如果成功的加入网络, 会将网络信息存储在非易失性存储器( NV Flash) 里, 掉电后依然保存, 这样当再次上电后, 设备会自动读取网络信息, 这样设备对网络就有一定的记忆功能。对NV Flash的动作, 经过NV_RESTORE( )和NV_ITNT( )函数来执行。 有关网络参数的设置大多保存在协议栈Tools文件夹的f8wConfig.cfg里。 n 路由 Z-Stack采用无线自组网按需平面距离矢量路由协议AODV, 建立一个Hoc网络, 支持移动节点, 链接失败和数据丢失, 能够自组织和自修复。当一个Router接受到一个信息包之后, NMK层将会进行以下的工作: 首先确认目的地, 如果目的地就是这个Router的邻居, 信息包将会直接传输给目的设备; 否则, Router将会确认和目的地址相应的路由表条目, 如果对于目的地址能找到有效的路由表条目, 信息包将会被传递到该条目中所存储的下一个hop地址; 如果找不到有效的路由表条目, 路由探测功能将会被启动, 信息包将会被缓存直到发现一个新的路由信息。 ZigBee End Device不会执行任何路由函数, 它只是简单的将信息传送给前面的能够执行路由功能的父设备。因此, 如果End Device想发送信息给另外一个End Device, 在发送信息之间将会启动路由探测功能, 找到相应的父路由节点展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




TIZstack协议栈开发环境和工作流程.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4493086.html