当前位置:文档之家› 项目三了解无线传感器协议栈

项目三了解无线传感器协议栈

项目三了解无线传感器协议栈项目三了解ZigBee无线传感器网络协议栈知识目标1.掌握zigbee无线传感器网络的协议栈和协议的区别等知识。

2.掌握Z-Stack协议栈的OSAL分配机制。

3.了解Z-Stack协议栈的OSAL运行机制。

4.掌握Z-Stack协议栈的OSAL常用函数。

项目三了解ZigBee无线传感器网络协议栈技能目标1.掌握Z-Stack协议栈的运行机制。

2.掌握Z-Stack协议栈中OSAL的添加新任务的方法。

项目三了解ZigBee无线传感器网络协议栈在实际zigbee无线传感器网络工程的开发过程中首先借助TI提供的协议栈中例程SampleApp,接着根据需要完成的功能,查看支持Z-Stack协议栈的硬件电路图,再查阅数据手册(CC2530的数据手册、Z-Stack协议栈说明、Z-Stack协议栈API函数使用说明等)文件,然后再进行协议栈的修改。

最后,还需要烧录器下载到相应的硬件,实现zigbee无线传感器网络的组建和开发。

设计思路3.1.1协议与协议栈协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据收发;议栈是协议的具体实现形式。

通俗的理解为代码实现的函数库,以便于开发人员调用。

3.1Z-Stack协议栈3.1.1协议与协议栈协议栈是指网络中各层协议的总和,一套协议的规范。

其形象地反映了一个网络中文件传输的过程由上层协议到底层协议,再由底层协议到上层协议。

使用最广泛的是因特网协议栈,由上到下的协议分别是应用层(Http、Tel、DNS、Email等),运输层(TCP、UDP),网络层(IP),链路层(WI-FI、以太网、令牌环、FDDI等)。

3.1Z-Stack协议栈3.1.1协议与协议栈3.1Z-Stack协议栈3.1.1协议与协议栈Zigbee协议栈开发的基本思路如下。

①借助TI提供的协议栈中例程SampleApp进行二次开发,用户不需要深入研究复杂的zigbee协议栈,这样可以减轻开发者的工作量。

②Zigbee无线传感器网络中数据采集,只需要用户在应用层加入传感器的读取函数和添加头文件即可实现。

③如果考虑节能,可以根据数据采集周期(zigbee协议栈例程中已开发了定时程序)进行定时,定时时间到就唤醒zigbee终端节点,终端节点唤醒后,自动采集传感器数据,然后将数据发送给路由器或者直接发给协调器,即监测节点定时汇报监测数据。

④协调器(网关)根据下发的控制命令,将控制信息转发到具体的节点,即控制节点等待控制命令下发。

3.1Z-Stack协议栈3.1.2使用Z-Stack协议栈传输SampleApp.c 中定义了发送函数static voidSampleApp_SendTheMessage(void)。

该函数通过调用AF_DataRequest来发送数据。

该函数定义在Profile目录下的AF.c文件中。

3.1Z-Stack协议栈3.1.2使用Z-Stack协议栈传输*dstAddr发送目的地址+端点地址(端点号)和传送模式。

*srcEP源(答复或确认)终端的描述(比如操作系统中任务ID等)源源EP。

cID被Profile指定的有效的集群号。

len发送数据长度。

*buf指向存放发送数据的缓冲区的指针。

*transID任务ID号。

options:有效位掩码的发送选项。

Radius发送跳数,通常设置为AF_DEFAULT_RADIUS。

3.1Z-Stack协议栈3.2.1物理层物理层(PHY)定义了无线信道和MAC子层之间的接口,提供物理层数据服务和物理层管理服务,主要是在驱动程序的基础上,实现数据传输和管理。

物理层数据服务从无线物理信道上收发数据,管理服务包括信道能量监测(ED)、链接质量指示(LQI)、载波检测(CS)和空闲信道评估(CCA)等,维护一个由物理层相关数据组成的数据库。

3.2zigbee无线传感器网络功能层简介3.2.2质访问控制层介质访问控制层(MAC)提供点对点通信的数据确认(Per-hop Acknowledgments)以及一些用于网络发现和网络形成的命令,但是介质访问控制层不支持多跳(Multi-hop)、网型网络(Mesh)等概念3.2zigbee无线传感器网络功能层简介3.2.3网络层网络层(NWK)主要负责设备加入和退出网络、路由管理,在设备之间发现和维护路由,发现邻设备,存储邻设备信息等。

3.2zigbee无线传感器网络功能层简介3.2.3网络层网络层(NWK)主要负责设备加入和退出网络、路由管理,在设备之间发现和维护路由,发现邻设备,存储邻设备信息等。

1.地址类型2.网络地址分配3.Z-Stack寻址4.路由5.安全3.2zigbee无线传感器网络功能层简介3.2.4应用层应用层主要包括应用支持子层(APS)和Zigbee设备对象(ZDO)。

其中,APS负责维护和绑定表、在绑定设备之间传送消息;而ZDO 定义设备在网络中的角色,发起和响应绑定请求,在网络设备之间建立安全机制。

3.2zigbee无线传感器网络功能层简介3.3.1OSAL基础知识1.资源(Resource)2.共享资源(Shared Resource)3.任务(Task)4.多任务运行(Muti-Task Running)5.内核(Kernel)6.互斥(Mutual Exclusion)7.消息队列(Message Queue)3.3OSAL多任务分配机制3.3.1OSAL基础知识1.资源(Resource)2.共享资源(Shared Resource)3.任务(Task)4.多任务运行(Muti-Task Running)5.内核(Kernel)6.互斥(Mutual Exclusion)7.消息队列(Message Queue)3.3OSAL多任务分配机制3.3.2OSAL简介Z-stack是TI公司开发的zigbee协议栈,并经过zigbee联盟认可而被全球众多开发商所广泛采用。

Z-Stack采用基于一个轮转查询式操作系统,帮助程序员方便地开发一套zigbee系统。

3.3OSAL多任务分配机制3.3.2OSAL简介3.3OSAL多任务分配机制3.3.2OSAL简介一般情况下,用户只需额外添加3个文件就可以完成一个项目,一个是主控文件,存放具体的任务事件处理函数(例如SampleApp_ProcessEven t或GenericApp_ProcessEvent);一个是这个主控文件的头文件(例如SampleApp.h),另外一个是操作系统接口文件(例如OSAL_SampleApp.c),该文件主要存放任务数组tasksArr[],任务数组的具体内容为每个任务的相应的处理函数指针。

3.3OSAL多任务分配机制3.3.2OSAL简介“数据实体接口”的目标是向上层提供所需的常规数据服务;“管理实体接口”的目标是向上层提供访问内部层的参数、配置和管理数据服务。

物理层和媒体接入控制子层均属于IEEE802.15.4标准,而IEEE802.15.4标准与网络/安全层、应用层一起,构成了zigbee协议栈。

3.3OSAL多任务分配机制3.3.3协议栈软件架构整个Z-Stack的主要工作流程大致分为系统启动、驱动初始化、OSAL初始化和启动、进入任务轮询几个阶段。

3.3OSAL多任务分配机制3.3.3协议栈软件架构3.3OSAL多任务分配机制3.3.3协议栈软件架构系统上电后,通过执行ZMain文件夹中ZMain.c的main()函数实现硬件的初始化。

关总中断osal_int_disable(INTS_ALL);初始化板上硬件设置HAL_BOARD_INIT();检查工作电压状态zmain_vdd_check();初始化I/O口InitBoard(OB_COLD);初始化HAL层驱动HalDriverInit();初始化非易失性存储器sal_nv_init(NULL);初始化MAC层ZMacInit();分配64位地址zmain_ext_addr();初始化Zstack的全局变量并初始化必要的NV项目zgInit();初始化操作系统osal_init_system();使能全局中断osal_int_enable(INTS_ALL);初始化后续硬件InitBoard(OB_READY);显示必要的硬件信息zmain_dev_info();最后进入操作系统调度osal_start_system()。

3.3OSAL多任务分配机制此例程的默认路径为C:\Texas Instruments\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Sampl es\SampleApp\CC2530DB下找到SampleApp.eww。

在右侧工作空间窗口打开App文件夹,我们可以看到5个文件,分别是“SampleApp.c”、“SampleApp.h”、“OSAL_SampleApp.c”、“SampleAppHw.c”、“SampleAppHw.h”。

整个程序所实现的功能都在这5个文件当中。

3.4OSAL运行机制运行机制。

3.4OSAL运行机制①①tasksCnt该变量保存了任务数,其声明为const uint8tasksCnt,其中uint8的定义为typedef unsigned char uint8。

tasksCnt变量的定义在OSAL SampleApp.c文件中。

②②tasksEvents为该变量是一个指针,指向了事件表的首地址,其声明为uint16*tasksEvents,其中uint16的定义为typedef unsigned short uint16。

tasksEvents[]是一个指针数组,只是在OSAL_SampleApp.c文件进行定义。

③③tasksArr该变量是一个数组,该数组的每一项都是一个函数指针,指向了事件的处理函数,其声明为pTaskEventHandlerFn tasksArr[],其中pTaskEventHandlerFn的定义为typedef unsignedshort(*pTaskEventHandlerFn)(unsignedchartask_id,uns ignedshortevent)。

变量pTaskEventHandlerFn的定义OSAL_Tasks.h文件中。

3.4OSAL运行机制OSAL调度机制如下。

①入口程序为Zmain.c;②执行main()主程序;③任务调度初始化osal_init_system();④默认启动了osalInitTasks(),最多9个任务,添加到队列,序号0~8;⑤最后通过调用SampleApp_Init()实现用户自定义任务的初始化(用户根据项目需要修改该函数)。

相关主题