综合OSAL的ZigBee协议栈设计
2016-01-22郑海杰宋开新
郑海杰,宋开新
(杭州电子科技大学新型电子器件与应用研究所,浙江 杭州 310018)
综合OSAL的ZigBee协议栈设计
郑海杰,宋开新
(杭州电子科技大学新型电子器件与应用研究所,浙江 杭州 310018)
摘要:介绍了在IEEE802.15.4协议标准和ZigBee协议栈架构的基础上,结合OSAL事件轮询机制和多任务处理机制的ZigBee协议栈设计。将触发事件与事件处理函数形成映射,由操作系统抽象层OSAL进行管理,实现任务调度和处理、数据发送和接收。实验结果表明,该ZigBee协议栈能建立稳定的星型网络拓扑结构,数据在网络中能正确发送和接收。
关键词:无线通信;操作系统抽象层;无线射频;星型网络拓扑结构
0引言
ZigBee无线通信技术具有低速率、低功耗及高传输可靠性等特点,在工业控制领域和智能家庭网络中有着重要应用。目前国内对ZigBee技术的研究偏向应用层面[1],国内无线射频芯片技术的落后束缚着ZigBee协议栈的自主研发,而国外掌握着传感网和基础芯片的核心技术,开始物联网业务的大力发展,也形成了较完善的商业模式。由于ZigBee协议栈的实现目前没有统一标准,存在效率低,组网速度慢等缺点。本文提出将操作系统抽象层(Operating System Abstraction Layer,OSAL)嵌入到ZigBee协议栈中,OSAL事件轮询机制能有效地分配传输过程中的事件处理资源,提高传输效率并能快速建立网络。
1OSAL原理
OSAL较之于标准的操作系统,有着更低的功耗和系统开销,这使得在资源不多的MCU上也可以用OSAL实现任务切换,内存管理等功能[2]。
图1 OSAL任务表和函数表映射关系
2ZigBee协议栈设计
ZibBee协议栈采用分层的方式来实现[4],分别为物理层、媒体访问控制层、网络层和应用层,其中应用层还包含应用程序支持子层、应用程序框架层和ZDO设备对象。不同层负责不同的功能,数据仅在相邻的层之间传递。ZigBee协议栈的构成如图2所示。
图2 ZigBee协议栈结构图
2.1 物理层和MAC层设计与实现
FREQCTRL.FREQ=11+5(k-11)k∈(11,26)
(1)
媒体接入控制层(MAC层)在网络层和物理层之间,主要有协调器信标发送、支持PAN链路连接断开、CSMA-CA信道接入等功能[6]。MAC层采用超帧来描述信道接入资源的结构,并采用时隙CSMA-CA算法和主动扫描。在信标网络中,超帧被划为16个时隙,第一个时隙为信标帧,CCA在退避周期的边界处开始执行,节点的退避时间以时隙为单位。在时隙CSMA-CA算法中,如果节点经过4次信道忙碌退避后仍然无法接入信道,则放弃数据传送。在启动和建立一个PAN网络过程中,协调器会从低到高扫描信道序号,选择一个合适的信道和PAN标识符,可以用MLME-SCAN.request原语来实现信道扫描。
2.2 网络层的设计与实现
网络层提供两类服务,分别是网络层数据服务和网络层管理服务[7]。前者负责数据的发送和接收,后者负责网络层管理和维护,包括网络的创建和发现,设备加入和退出网络。ZigBee网络是由协调器发起,协调器扫描信道并选择在最佳的空闲信道上创建网络,其默认的网络地址是0x0000。建立网络后,路由设备及终端节点会根据PANID加入到指定网路或者加入到最先扫描到的网络中,并获得16位的网络地址。网络层的分布式地址分配机制由以下算法实现。网络最大深度(Lmax)、父节点拥有的子节点最大数目(Cmax)以及父节点拥有路由器最大数目(Rmax)这3个参数决定了整个网络的地址分配[8]。
根据以下公式计算某父节点的路由子设备之间的地址间隔Cskip(d):
(2)
Aparent父节点分配的第n个路由器地址Arn为:
Arn=Aparent+(n-1)Cskip(d)+1
(3)
Aparent父设备分配的第n个终端节点网络地址An公式为:
An=Aparent+Cskip(d)Rmax+n
(4)
网络地址使数据可以定向传播,网络层可以实现广播(Broadcast)、单播(Unicast)和组播(Multicast)3种数据通信方式。通过设置afAddrType_t类型的结构体中的afAddrMode_t类型的变量的值来选定通信方式。
当addrMode=AddrBroadcast时,为广播方式发送数据;addrMode=AddrGroup时,为组播方式发送数据;addrMode=Addr16 Bit时,为单播方式发送数据;不同的通信方式以满足不同的网络需要选择。
3OSAL与ZigBee协议栈结合
ZigBee协议栈要实现多任务运行,需要OSAL提供的API来支持。OSAL提供了8类API,涵盖消息管理、任务管理和同步、中断管理等功能。Zigbee协议栈首先调用osal_init_system()完成各层的初始化,并完成协调器建立网络,终端加入网络的工作。初始化完系统任务事件后,进入osal_start_system()启动事件轮询访问。协议栈组网流程如图3所示。
从osal_start_system()开始,ZigBee协议栈才真正启动。Hal_ProcessPoll()函数会将dmaCfg.uartCB函数注册成为UserApp_CallBack,每次循环会对串口的内容进行查询。DMA中接收到了数据,此时tasksEvents[idx]中的事件发生,调用HalUARTRead将DMA数据读至数据buffer并通过 AF_DataRequest函数将数据发送出去。
图3 协调器组网终端设备加入网络流程图
4实验结果
应用IAR Embedded Workbench IDE来编译及调试协议栈代码,在工作空间中选择Coordinator编译成协调器的可执行文件,相应的选择EndDevice编译成终端节点的可执行文件。本实验采用CC2530射频MCU作为硬件平台,3个终端节点与协调器组成星型拓扑网络结构。通过AccessPort观察数据发送和接收,如图4所示,并通过Packet Sniffer来抓取ZigBee协议栈的数据包结构,如图5所示。测试结果如下:
图4 AccessPort中数据接收
1)本文设计的协议栈实现了在IAR workspace中协调器、路由器和终端节点3种网络设备代码的编译;
2)协议栈提供节能控制,终端设备在完成任务后就进入休眠模式,直到有下一个任务触发信号,设备才被唤醒。休眠时的电流仅为几个mA;
4)AccessPort观察数据接收的数据正确率高。终端节点响应时间仅为300 μs左右;
5)Packet Sniffer抓取的ZigBee数据包结构显示源网络地址与目的网络地址符合NWK层的节点网络地址分配机制。其中NWK Scr.Address为0x0000,即协调器的网络地址。
图5 Packet Sniffer 抓取MAC层、NWK层数据包
5结束语
本文提出了结合OSAL的ZigBee协议栈设计,选择2.4 GHz作为通信频段,采用时隙CSMA-CA防止信道冲突。代码量小,节省内存资源;可靠性高,功耗低。在此协议栈的基础上,应用层的开发变得灵活,使原本单任务的ZigBee协议栈实现了多任务的调度的功能,对物联网及ZigBee技术有着重要的意义。
参考文献
[1]朱洪波,杨龙祥,朱琦.物联网技术进展与应用[J].南京邮电大学学报(自然科学版),2011,31(1):1-9.
[2]李春喜.物联网ZigBee协议栈MAC层的研究与实现[D].广州:华南理工大学,2012:10-22.
[3]王风.基于CC2530的ZigBee无线传感器网络的设计与实现[D].西安:西安电子科技大学,2012:34-39.
[4]蔡文晶,秦会斌.基于ZigBee精简协议的无线数据采集系统[J].机电工程,2011,28(2):224-226.
[5]王小强,欧阳俊,黄宁淋.ZigBee无线传感器网络设计与实现[M].北京:化学工业出版社,2012:103-112.
[6]敖志刚.智能家庭网络及其控制技术[M].北京:人民邮电出版社,2011:57-63.
[7]Liu W,Yan Y.Application of ZigBee wireless sensor network in smart home system[J].International Journal of Advancements in Computing Technology,2011,3(5):56-58.
[8]Wang J.Zigbee light link and its applicationss[J].Wireless Communication,IEEE,2013,20(4):6-7.
Design of ZigBee Protocol Stack Combine with OSAL
Zheng Haijie,Song Kaixin
(InstituteofNewElectronicDevicesandApplications,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
Abstract:This paper presents a design of ZigBee protocol stack which combines with events-polling mechanism and multitasking mechanism of OSAL on the base of IEEE802.15.4 protocol and ZigBee protocol framework.This wireless communication stack maps trigger events to event-handlers and it’s managed by OSAL to realize dispatching and disposing of tasks,sending and receiving of data.The results indicate this ZigBee protocol stack can build a stable star network and data’s sending and receiving is correctly in the network.
Key words:wireless communication;operating system abstraction layer;radio frequency identification;star network
中图分类号:TN929.5
文献标识码:A
文章编号:1001-9146(2015)06-0032-04
通信作者:
作者简介:郑海杰(1989-),男,浙江宁波人,在读研究生,微电子与固体电子学.宋开新副教授,E-mail:kxsong@hdu.edu.cn.
收稿日期:2014-11-05
DOI:10.13954/j.cnki.hdu.2015.06.007