开篇:润墨网以专业的文秘视角,为您筛选了一篇基于RTOS的ZigBee协议物理层和MAC层的设计分析范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要:该文基于嵌入式实时操作系统[1]对无线传感器网络[2-3]协议进行了研究。在分析rtos和无线传感器网络特点的基础上,提出了基于微小内核的嵌入式实时操作系统的zigbee[4-5]协议的物理层和mac层的软件设计方法,降低了无线网络开发难度,有利于程序扩展和代码移植,为以后网络层和应用层的开发,提供了一个简单易实现的平台。
关键词:ZigBee;无线网络;实时操作系统;软件设计
中图分类号: TN929 文献标志码:A文章编号:1009-3044(2009)36-10608-03
Design of Physical Layer and MAC Layer of ZigBee Protocol Based on Embedded Real-Time Operating System
SUN Yi
(Shandong Jiaotong University, Jinan 250357, China)
Abstract: This paper researches on wireless sensor network based on Embedded Real-Time Operating System. In analyzing RTOS and wireless sensor networks, a software design methods on physical and MAC layer of ZigBee is presented based on a micro-kernel embedded real-time operating system. This method reduced the difficulty of the wireless network development by programs expansion and codes migration. It provides a simple and easy to realize platform for the subsequent network layer and application layer development.
Key words: ZigBee; wireless sensor network; real time operating system; software design
随着嵌入式系统、无线通信、微电子等技术的快速发展,具有感知、计算和无线网络通信能力的传感器,以及由其构成的无线传感器网络(Wireless Sensor Network, WSN)引起了人们的极大关注。实时操作系统(Real-Time Operating System,RTOS)是建立在单片机硬件系统之上的一个平台,用户的一切开发工作都在该平台上进行,它定义了每个应用任务和内核的接口,也促进了应用程序的标准化。应用程序标准化后便于软件的存档、交流、修改和扩展,减少开发管理工作量。ZigBee是一种新兴的短距离、低速率、低功耗无线网络技术,国际上IEEE802.15.4工作组及ZigBee联盟共同致力于该无线连接技术的推广工作,其中,IEEE802.15.4只规定了ZigBee的物理层和MAC层的功能,仅处理这两层的通信协议。ZigBee网络通信过程,大致包括协调器组织网络,节点器件加入、离开,发送、接收数据,信标帧的产生、重发,安全机制以及PIB属性管理等等过程,利用传统的前后台模式思路,开发过程和调试过程会非常复杂,甚至实时性、稳定性较差。
本文正是鉴于ZigBee网络协议的复杂性和嵌入式RTOS平台开发的方便性,在分析二者特点的基础上,将ZigBee协议的物理层和MAC层移植到RTOS上。利用RTOS来开发,通过把复杂的过程划分为几个独立的任务,任务之间的相互联系通过事件来驱动,这样会使设计过程简单,降低开发难度,大大增加程序的移植性和代码的可重复利用性。经多次测试、使用,开发的嵌入式系统运行效果良好,系统比较可靠、稳定。
1 设计目标
软件设计分为两部分:系统级任务和应用级任务。系统级任务能够独立完成基础性工作,不需要高层协议来管理,并且给应用级任务提供接口,能够实现任务的扩展;应用级任务通过系统级任务提供的交互与操作系统进行交互,应用级任务根据实际的需要来开发,利用操作系统提供的接口,利用系统级任务来实现具体的应用。
2 系统设计
在原有RTOS基础上增加几个系统任务,完成ZigBee网络通信的基本功能,使RTOS成为符合ZigBee开发的嵌入式操作系统。其中增加的系统功能为:协调器的网络组建功能,节点器件的加入网络和断开网络功能,信标帧的产生功能,信标帧的跟踪功能,数据接收功能,数据发送功能,数据确认重发功能以及网络邻居表的维护和PIB属性的管理。整个通信主程序的流程图如图1所示。
2.1 系统级任务分析
系统初始化设计:主要是对寄存器等基本硬件进行设置,对变量赋初始值等。
1)消息泵任务emMsg_Pump()。该任务是整个系统消息机制核心部分,负责接收并处理每个任务发给系统的消息,并根据消息值触发相应的任务。是系统优先级最低的任务,永远处于就绪状态。系统运行之初,如果没有其他优先级高的任务,系统便会运行此任务,处于就绪状态。在整个嵌入式系统运行期间,所有任务之间通信机制是消息驱动机制,具体做法是某个进程运行结束时,产生系统消息,并把它放入系统的消息队列,等到消息分发任务运行时候,它从消息队列中提取消息,然后分发消息到需要触发的任务当中,修改触发任务的运行状态为就绪状态,当系统再次调度时,运行要触发的任务。流程图如图2所示。
2)组建网络或加入网络任务emAssociation_Join()。要实现节点和协调器之间通信,必须构成一个基本的ZigBee无线网络。IEEE802.15.4标准中规定无线个人局域网的构成至少有一个协调器,最大网络容量为255个节点。该任务就是实现构建网络的过程。若器件是协调器,它首先完成创建一个网络的过程,若是节点器件,则完成加入网络的过程。具体组网的过程实现:协调器首先进行频道扫描确定未使用的信道,并在自己电磁波辐射范围内通过接收的信标帧来捕捉其它协调器的信息,从而确定此范围内正在使用的信道和网络标识符,然后根据某种算法选择一个未使用网络标号更新系统的macPANId,通过自己的信道发送信标帧,通知周围的节点。网络节点器件被动的扫描,捕捉附近的网络协调器,选择合适的网络协调器,发送加入网络请求,收到ack应答后开始在最大响应时间内等待协调器的响应帧。如果协调器允许此节点加入网络,则会分配一个16位的短地址给节点,并把此节点的信息存入网络邻居表,网络节点收到允许加入的响应帧后更新自己的地址信息。否则,继续扫描其他的协调器,请求加入其他网络。当协调器和节点器件完成上述过程后,也就完成了组网的过程。当组网过程结束后,会改变系统的状态机,产生消息MSG_JOIN_NET并触发另一个任务的运行。
3)断开网络连接的任务emAssociation_Leave()。该任务是节点器件任务。当网络节点想离开当前加入的网络,就发送离开网络的请求命令,协调器允许其离开,会在信标帧中通知此节点同时将其信息从网络邻居表中删除。网络节点完成该任务后,产生系统消息MSG_LEAVE_NET,并修改系统的状态机。
4)数据帧报文发送任务emPacket_Send()。当协议上层要发送数据,把数据写入发送缓冲区,并产生系统消息给RTOS,由RTOS来完成数据报文发送。RTOS便会调用该数据帧报文发送任务,首先填写帧控制、地址等报文头信息,复制数据缓冲区内的数据,加上CRC校验码,完成数据报文封包工作。其次打开射频收发器的发送开关,通过对CCA检测,判断通信信道的状态,从而实现冲突碰撞检测机制。若信道空闲,则发送报文,若信道处于忙状态,则随机等待一段时间,再次检测信道状态,直到其空闲,完成数据报的发送过程,同时发送系统消息MSG_SEND_END触发确认重发任务,在macAckWaitDuration时间内等待收到报文的设备发送ack确认报文。在上述时间段内收到ack确认,便返回一个数据发送成功的状态,否则便启动重发机制,若重发次数超过aMaxFrameResponse,仍未收到确认,则丢弃报文,返回发送失败的状态。流程图如图3所示。
5)数据帧报接收任务emPacket_Receive()。该任务对报文进行三级过滤,首先对报文进行地址辨识,检测报文的发送目的地址是否是发给本网络的协调器,不是则丢弃报文,完成数据报文第一级过滤;其次对报文进行长度判断,检测报文长度是否符合协议规定,不符合则丢掉报文,完成第二级数据报文的过滤;接着对报文进行CRC校验的判断,不正确则丢掉报文,实现第三级报文过滤。最后根据报文种类的不同将其存入对应的接收缓冲区,修改信号量的值,表明数据接收缓冲区内有数据。流程图如图4所示。
该任务有中断实现,执行完毕并不触发消息,只是修改接收缓冲区的信号量的值。原因在于网络内的节点发送数据频率较高,为了能够及时响应,保证此任务不会使其它正在进行的任务重复重启。从而提高了系统实时性,减少了数据报文的丢失率。
6)各种命令处理任务emCmd_Process()。在ZigBee无线网络中,规定在接收到的报文中对确认帧是优先处理的,其次是命令帧,最后才是数据帧。协调器处理的命令包括节点器件的请求加入网络命令、离开网络命令、网络冲突命令、器件孤立命令。协调器收到这些命令,可能要发送响应命令,又涉及到冲突检测、确认和重发的判定,为了减少对系统任务在实现一个简单的功能反复切换,直接在命令处理任务中实现确认重发机制。协调器对请求加入网络的命令要给予响应,分配短地址,加入网络邻居表;对来开网络请求,要在信标帧中给予通知,并从网络邻居表中删除节点信息。对网络标识符冲突命令,要重新扫描、组网等。处理完毕产生系统消息MSG_CMD_END,触发数据处理任务。
7)数据帧报文的处理任务emData_Process()。把数据帧的报文处理,单独作为一个任务,主要原因在于数据帧是在协议上层来组织和处理,操作系统如果收到数据和数据请求命令,只给上层任务发送消息,触发上层处理任务。具体的处理工作由上层处理任务完成,从而实现了操作系统完成基本的操作,给上层任务提供接口,供上层任务使用,为后续开发奠定了基础。
8)定时发送信标帧的任务emBeacon_Send(),在信标使能的网络中,所有的通信过程都是由协调器来主导,协调器通过信标帧来实现网络内所有节点的通信的同步,并且控制通信的节点,控制通信的时间等。节点器件加入网络,也要首先对信标帧进行跟踪捕捉,进行综合判断。所以在ZigBee网络内,协调器每隔一定的时间来发送信标帧,网络内的各个节点器件通过信标帧安排自己的工作,从而实现了信标使能网络的通信过程。发送信标帧后发送系统消息MSG_BEACON_OVER。这个任务是由定时器的定时消息驱动。当定时时间到达以后,发送定时到达的系统消息MSG_TIME_OUT,通过系统调度实现此任务的运行。
2.2 应用级任务分析
1)对数据请求命令的处理任务emDataRequest_Task()。这个任务收到操作系统的消息后,就会组织数据,发送给节点。它要做的只是发送一个消息给系统,消息的内容包括发送数据的指针和数据的长度。
2)网络PIB数据库管理emPIB_Manage(),此任务可以用来更新、维护物理层和MAC层的属性,包括能量设定管理,以适应不同情况下通信需要。
3 结束语
该文通过对嵌入式RTOS运行机制和无线传感器网络ZigBee协议的深入研究,成功将ZigBee协议的物理层和MAC层移植到RTOS上,对无线通信过程各个环节进行了较为详细任务实现分析,该方法的实现降低了系统开发难度,提高了开发效率,对于开发相关的应用软件或进行硬件平台的移植有一定参考价值。
参考文献:
[1] 威尔姆舍斯特.PIC嵌入式系统开发[M].北京:人民邮电出版社,2008.
[2] Estrin D,Culler D,Pister K,et al.The Physical World with Pervasive Networks[J].IEEE Pervasive Computing,2002,1(1):59-69.
[3] 孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005.
[4] 李文仲,段朝玉.PIC单片机与ZigBee无线网络实战[M].北京:北京航天航空大学出版社,2007.
[5] 金纯,罗祖秋.ZigBee技术基础及案例分析[M].北京:国防工业出版社,2008.