网站大量收购独家精品文档,联系QQ:2885784924

基于Z-Stack的串口通信.ppt.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Z-Stack的串口通信.ppt

任务十一 基于Z-Stack的串口通信 目 录 实训目的 通过实训,掌握在IAR环境下Z-Stack的使用,了解Z-Stack的基本架构,学会在IAR环境下Z-Stack的应用层的开发,掌握在Z-Stack下的OSAL增加任务的方法,实现向串口发送数据,控制LED灯的亮灭与闪烁。 目 录 实训内容 在用户应用层任务处理函数SampleApp_ProcessEvent中实现每隔5秒向串口发送“Hello NEWLab!”;并增加一个应用层新任务,实现由PC端发送字符“1”和“2”控制ZigBee模块的LED2灯的开与关。 目 录 实训原理 Z-Stack采用基于一个轮转查询式操作系统,该操作系统命名为OSAL(Operating System Abstraction Layer),中文为“操作系统抽象层”。Z-Stack协议栈将底层、网络层等复杂部分屏蔽掉,让程序员通过API函数就可以轻松地开发一套ZigBee系统。 11. 1 OSAL术语介绍 操作系统(Operating System,简称OS)看似很复杂,其实只要做几个实训项目,就会很快撑握整个OSAL的工作原理,首先了解一下几个关键的操作系统术语。 实训原理 1. 资源(Resource) 任务任务所占用的实体都可以称为资源,如一个变量、数组、结构体等。 2. 共享资源(Shared Resource) 至少可以被两个任务使用的资源称为共享资源,为了防止共享资源被破坏,每个任务在操作共享资源时,必须保证是独占该资源。 3. 任务(Task) 任务又称线程,是一个简单的程序的执行过程。在任务设计 实训原理 时,需要将问题尽可能地分为多个任务,每个任务独立完成某种功能,同时被赋予一定的优先级,拥有自己的CPU寄存器和堆栈空间。一般将任务设计为一个无限循环。 4. 多任务运行(Muti-task Running) CPU采用任务调度的方法运行多个任务,例如:有10个任务需要运行,每隔10ms运行一个任务,由于每个任务运行的时间很短,任务切换很频繁,这就造成了多任务同时运行的“假象”。实际上,一个时间点只有一个任务在运行。 实训原理 5. 内核(Kernel) 在多任务系统中,内核负责为每个任务分配CPU时间、切换任务、任务间的通信等。内核可以大大简化应用系统的程序设计,可以将应用程序分为若干个任务,通过任务切换来实现程序运行。 6. 互斥(Mutual Exclusion) 多任务间通信的最简单方法是使用共享数据结构,对于单片机系统来说,所有任务共用同一地址的数据,具体表现为全局变量、指针、缓冲区等数据结构。虽然共享数据结构的方法简单,但是必须保证对共享数据结构的写操作具有唯一性。 实训原理 保护共享资源最常用的方法是:关中断、使用测试并置位指令(TS指令)、禁止任务切换和使用信号量。其中,在ZigBee协议栈操作系统中,经常使用的方法是关中断。 7. 消息队列(Message Queue) 消息是收到的事件和数据的一个封装,比如发生了一个事件(收到别的节点发的消息),这时就会把这个事件所对应的事件号及收到的数据封装成消息,放入消息队列中。 实训原理 8. 事件(Events) ZigBee协议栈是由各个层组成的,每一层都要处理各种事件,所以就为每一层定义了一个事件处理函数,可以把这个处理函数理解为任务,任务从消息队列中提取消息,从消息中提取所发生的具体事件,调用相应的具体事件处理函数,比如按键处理函数等等。 11. 2 OSAL运行机制 OSAL就是以实现多任务为核心的系统资源分配机制,主要提供任务注册、初始化和启动,任务间的同步、互斥,中断处理,存储器分配与管理等功能。 实训原理 图11.1 OSAL运行机制 实训原理 在ZigBee协议栈中,OSAL负责调度各个任务运行,如果有事件发生时,则会调用相应的事件处理函数进行处理。OSAL运行机制如图3.2.1所示。 那么,事件和任务的事件处理函数是如何建立关系呢? 首先,建立一个事件表,保存各个任务的对应的事件。 其次,建立一个函数表,保存各个任务事件处理函数的地址。 最后,将这两个表建立某种对应关系,当某一事件发生时,则查找函数表找到对应的事件处理函数。事件表与函数的关系如图11.2所示。 实训原理 图11.2 事件表和函数表的关系 实训原理 在ZigBee协议栈中,tasksCnt、tasksEvents和tasksArr三个变量非常重要,读者必须搞清楚它们的作用。 ■ tasksCnt:该变量保存了任务的总数量。在OSAL_SampleApp.c中定义为: const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr[0] ); 说明: ①

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档