当前位置:文档之家› Zigbee入门指导经典教程

Zigbee入门指导经典教程

OSAL任务调度流程图
Figure . The Flow Chart of OSAL Scheduler
OSAL任务
OSAL是协议栈的核心,Z-stack的任何一个子系统都作为OSAL的一个任务,因此在开发应用层的时候,必须通过创建OSAL任务来运行应用程序。通过osalInitTasks( )函数创建OSAL任务,其中TaskID为每个任务的唯一标识号。任何OSAL任务必须分为两步:一是进行任务初始化;二是处理任务事件。任务初始化主要步骤如下:
每个Zigbee网络节点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。
Zigbee技术的应用领域:
Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。另外它还可以对局部区域内移动目标例如城市中的车辆进行定位。(成都西谷曙光数字技术公司的专利技术)。
8.使用现存移动网络进行低数据量传输的遥测遥控系统。
9.使用GPS效果差,或成本太高的局部区域移动目标的定位应用。
Zigbee技术的特点:
省电:两节五号电池支持长达6个月到2年左右的使用时间可靠:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突;节点模块之间具有自动动态组网的功能,信息在整个Zigbee网络中通过自动路由的方式进行传输,从而保证了信息传输的可靠性、时延短:针对时延敏感的应用做了优化,通信时延和从休眠状态激活的时延都非常短。
第一步:复制GenericApp文件夹修改文件名为HawsnAppCoor。
第二步:再打开source文件夹,修改三个应用源文件的文件名。分别改成HawsnAppCoor.c HawsnAppCoor.h OSAL_HawsnAppCoor.c分别是应用C文件,头文件,和操作系统接口文件。然后用记事本打开,把GenericApp全部替换成HawsnAppCoor。
step by step create a new z-stackl project
根据ti提供的资料,我们可以复制一个工程作为模板,然后,改名这样就生成了一个新的工程。
如果要用到串口收发数据的话,就选用SerialApp做模板,如果不需要使用到串口的话,就是用GenericApp做模板。
在这里,我选择复制GenericApp做模板。
先说点zigbee的基础知识
Zigbee:全新无线网络数据通信技术
Zigbee技术是随着工业自动化对于无线通信和数据传输的需求而产生的,Zigbee网络省电、可靠、成本低、容量大、安全,可广泛应用于各种自动控制领域。
Zigbee的由来:
在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,......而工业自动化对无线通信的需求越来越强烈。正因此,经过人们长期努力,Zigbee协议在2003年中通过后,于2004正式问世了。
不同的是,Zigbee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee"基站"却不到1000元人民币;每个Zigbee网络节点不仅本身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料;除此之外,每一个Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。
硬件初始化需要根据HAL文件夹中的hal_board_cfg.h文件配置寄存器8051的寄存器。TI官方发布Z-stack的配置针对的是TI官方的开发板CC2430DB、CC2430EMK等,如采用其他开发板,则需根据原理图设计改变hal_board_cfg.h文件配置,例如本方案制作的实验板与TI官方的I/O口配置略有不同,其中状态指示LED2的需要重新设置LED2控制引脚口、通用I/O口方向和控制函数定义等。
图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层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。
当顺利完成上述初始化时,执行osal_start_system( )函数开始运行OSAL系统。该任务调度函数按照优先级检测各个任务是否就绪。如果存在就绪的任务则调用tasksArr[ ]中相对应的任务处理函数去处理该事件,直到执行完所有就绪的任务。如果任务列表中没有就绪的任务,则可以使处理器进入睡眠状态实现低功耗。程序流程如图3-13所示。osal_start_system( )一旦执行,则不再返回Main( )函数。
(5)处理任务事件
处理任务事件通过创建“ApplicationName”_ProcessEvent( )函数处理。一个OSAL任务除了强制事件(Mandatory Events)之外还可以定义15个事件。
SYS_EVENT_MSG(0x8000)是强制事件。该事件主要用来发送全局的系统信息,包括以下信息:
第三步:打开2430DB文件夹,修改工程名修改三个后缀为ewd,ewp,eww的文件名。然后用记事本打开,把GenericApp全部替换成HawsnAppCoor。
然后,再双击HawsnAppCoor.eww,重新编译一下就成功建立了一个新的工程模板
【转】TI Z-stack协议栈开发环境和工作流程
(1)初始化应用服务变量。
const pTaskEventHandlerFn tasksArr[ ]数组定义系统供的应用服务和用户服务变量,如MAC层服务macEventLoop、用户服务SampleApp_ProcessEvent等
(2)分配任务ID和分配堆栈内存
void osalInitTasks( void )主要功能是通过调用osal_mem_alloc( )函数给各个任务分配内存空间,和给各个已定义任务指定唯一的标识号。
Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。
整个Z-stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段,下面将逐一详细分析。
图Z-Stack系统运行流程图
Figure . The Flow Chart of Z-Stack
系统初始化
系统上电后,通过执行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( )等。
网络容量大:可支持达65000个节点。
安全:ZigBee提供了数据完整性检查和鉴权功能,加密算法采用通用的AES-128。
高保密性:64位出厂编号和支持AES-128加密
Zigbee的发展前景:
Zigbee技术和RFID技术在2004年就被列为当今世界发展最快,市场前景最广阔的十大最新igbee",你就会看到大量的有关报道。总之,今后若干年,都将是Zigbee技术飞速发展的时期。
AF_INCOMING_MSG_CMD:用来指示接收到的AF信息。
KEY_ CHANGE:用来确认按键动作。
ZDO_ NEW_ DSTADDR:用来指示自动匹配请求。
ZDO_STATE_CHANGE:用来指示网络状态的变化。
网络层信息
Zigbee设备有两种网络地址:1个是64位的IEEE地址,通常也叫作MAC地址或者扩展地址(Extended address),另一个是16位的网络地址,也叫做逻辑地址(Logical address)或者短地址。64位长地址是全球唯一的地址,并且终身分配给设备。这个地址可由制造商设定或者在安装的时候设置,是由IEEE来提供。当设备加入Zigbee网络被分配一个短地址,在其所在的网络中是唯一的。这个地址主要用来在网络中辨识设备,传递信息等。
By KuangJunBin
系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。
相关主题