花名/ID: 天析

邮箱: 2200475850@qq.com

主攻方向: 物联网安全、WEB安全

兴趣爱好: 乒乓球、羽毛球、排球、业余无线电···

备案信息:蜀ICP备19023334号

ZigBee协议栈

受限于单片机的RAM和ROM大小的限制,任何适用于物联网设备的协议虽然复杂,但并不会过于复杂。

Z-Stack

Z-Stack是符合Zigbee协议栈规范的一个硬件和软件平台,是Zigbee协议栈的一个具体实现。

Z-Stack 是分层的,由下列层次组成:

  • 物理层(PHY和MAC)
  • 介质访问层(MAC)
  • 网络层(NWK)
  • 应用层(APS和ZDO、APL)
  • OSAL操作系统抽象层

Z-Stack采用基于一个轮转查询式操作系统,该操作系统命名为OSAL(Operating System Abstraction Layer),中文为“操作系统抽象层”。Z-Stack协议栈将底层、网络层等复杂部分屏蔽掉,让程序员通过API函数就可以轻松地开发一套ZigBee系统。

操作系统(Operating System,简称OS)看似很复杂,其实只要做几个实训项目,就会很快撑握整个OSAL的工作原理,首先了解一下几个关键的操作系统术语。

  1. 资源(Resource)

任务所占用的实体都可以称为资源,如一个变量、数组、结构体等。

  1. 共享资源(Shared Resource)

至少可以被两个任务使用的资源称为共享资源,为了防止共享资源被破坏,每个任务在操作共享资源时,必须保证是独占该资源。

  1. 任务(Task)

任务又称线程,是一个简单程序的执行过程。在任务设计时,需要将问题尽可能地分为多个任务,每个任务独立完成某种功能,同时被赋予一定的优先级,拥有自己的CPU寄存器和堆栈空间。一般将任务设计为一个无限循环。

  1. 多任务运行(Muti-task Running)

CPU采用任务调度的方法运行多个任务,例如:有10个任务需要运行,每隔10ms运行一个任务,由于每个任务运行的时间很短,任务切换很频繁,这就造成了多任务同时运行的“假象”。实际上,一个时间点只有一个任务在运行。

  1. 内核(Kernel)

在多任务系统中,内核负责为每个任务分配CPU时间、切换任务、任务间的通信等。内核可以大大简化应用系统的程序设计,可以将应用程序分为若干个任务,通过任务切换来实现程序运行。

  1. 互斥(Mutual Exclusion)

多任务间通信的最简单方法是使用共享数据结构,对于单片机系统来说,所有任务共用同一地址的数据,具体表现为全局变量、指针、缓冲区等数据结构。虽然共享数据结构的方法简单,但是必须保证对共享数据结构的写操作具有唯一性。

保护共享资源最常用的方法是:关中断、使用测试并置位指令(T&S指令)、禁止任务切换和使用信号量。其中,在ZigBee协议栈操作系统中,经常使用的方法是关中断。

  1. 消息队列(Message Queue)

消息是收到的事件和数据的封装,比如发生了一个事件(收到别的节点发来的消息),这时就会把这个事件所对应的事件号及收到的数据封装成消息,放入消息队列中。

  1. 事件(Events)

ZigBee协议栈是由各个层组成的,每一层都要处理各种事件,所以就为每一层定义了一个事件处理函数,可以把这个处理函数理解为任务,任务从消息队列中提取消息,从消息中提取所发生的具体事件,调用相应的具体事件处理函数,比如按键处理函数等等。

Zigbee设备的分为Coordinator、Router、Enddevice三种角色,通过切换IAR上的标签可以实现tool目录下不同的编译配置。

我们以SensorDemo工程为例,SensorDemo工程是TI为Z-Sensor Monitor设计的一个不同于GenericApp、SampleApp和SimpleApp的工程,用它我们可以方便的观察到Zigbee网络的数据走向以及协议栈定时器任务的使用。当我们选择工程Coordinator、Router、Enddevice三种角色时,对应的tools目录下配置文件会变,同事会对应设置编译不同的文件,这样实现不同角色的功能不一样。但是他们都是依靠sapi出来的。

z-stack的设计不光是接收发送 无线和串口的数据,更多的强大的功能在于它的组网和定时器上。时钟是一个系统确定时间的基准,不管是单片机RTOS 、嵌入式系统、还是桌面电脑系统,内部都有一个精确的时钟来管理它们的每个任务

文章所属分类:  物联网 

« CTF SHOW CRYPOT 对于自己的一个年度总结 »