zstack技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ZigBee协议栈ZigBee协议栈安徽理工大学2012200486朱泽朋NUST计算机学院2第一章.基础概念1.1ZigBee技术的概念无线传感网络的无线通讯技术可以采用ZigBee技术、蓝牙、Wi-Fi和红外等技术。ZigBee技术是一种短距离、低复杂度、低数据率、低成本的双向无线通讯技术,是一组基于IEEE802.15.4无线标准研发的有关组网、安全和应用软件方面的通讯技术。ZigBee联盟与2005年公布了第一份ZigBee规范“ZigBeeSpecificationV1.0”。Zigbee协议规范使用了IEEE802.15.4定义的物理层(PHY)和媒体介质访问层(MAC),并在此基础上定义了网络层(NWK)和应用层(APL)架构。NUST计算机学院3第一章.基础概念1.2ZigBee协议的体系结构Zigbee的体系结构由称为层的各模块组成。每一层为其上提供特定的服务:即由数据服务实体提供数据传输服务:管理实体提供所用的其他管理服务。每个服务实体通过相应的服务接入点(SAP)为其上提供一个接口,每个服务接入点通过服务原语来完成所对应的功能。ZigBee协议的体系结构图如下图(1)所示:NUST计算机学院4NUST计算机学院5第一章.基础概念物理层(PHY)物理层定义了物理无线通讯和MAC子层之间的接口,提供物理层数据服务和物理层管理服务。物理层内容:(1)ZigBee的激活;(2)当前信道的能量检测;(3)接收链路服务质量信息;(4)ZigBee信道接入方式;(5)信道频率选择;(6)数据传输和接收。介质接入控制子层(MAC)MAC层负责处理所有的物理无线信道访问,并产生网络信号、同步信号:支持PAN连接和分离,提供两个MAC实体之间可靠链路。NUST计算机学院6第一章.基础概念MAC层功能:(1)网络协调器产生信标;(2)与信标同步;(3)支持PAN(个域)链路的建议和断开;(4)为设别的安全性提供支持;(5)信道接入方式采用免冲突载波检测多址接入(CSMA)机制;(6)处理和维护保护时隙(GTS)机制;(7)在两个对等的MAC实体之间提供一个可靠地通讯链路;NUST计算机学院7第一章.基础概念网络层(NWK)ZigBee协议栈的核心部分在网络层。网络层主要实现点加入或离开网络、或抛弃其他节点、路由查找及出送数据等功能。网络层功能:(1)网络发现;(2)网络形成;(3)允许设别连接;(4)路由器初始化;(5)设别同网络连接;(6)直接将设别通网络连接;(7)断开网络连接;(8)重新复位设别;(9)接收机同步;(10)信息库维护。NUST计算机学院8第一章.基础概念应用层(APL)ZigBee应用层框架包括应用支持层(APS)、ZigBee设备对象。应用支持层的功能包括:维持绑定表、在绑定的设备之间传送消息。ZigBee应用层除了提供一些必要函数以及为网络层提供合适的服务接口外,一个重要的功能是应用者可在这层定义自己的应用对象。应用程序框架(AF):运行在ZigBee协议栈上的应用程序实际上就是厂商自定义的应用对象,并且遵循规范(profile)运行在端点1-240上。在ZigBee应用中,提供2种标准服务类型:键值对(KVP)或报文(ZDO):ZigBee设备对象(ZDO):远程设备通过ZDO请求描述符信息,接收到这些请求时,ZDO会调用配置对象获取相应描述符值。另外,ZDO提供绑定服务。NUST计算机学院9第一章.基础概念协议栈体系分层架构协议栈代码文件夹物理层(PHY)硬件层目录(HAL)介质接入控制子层(MAC)链路层目录(MAC和Zmac)网络层(NWK)网络层目录(NWK)应用支持层(APS)网络层目录(NWK)应用程序框架(AF)配置文件目录(profile)和应用程序(sapi)ZigBee设备对象(ZDO)设备对象目录(ZDO)协议栈体系结构框架图NUST计算机学院10第一章.基础概念1.3ZigBee协议术语ZigBee基本术语之间的关系如下:设备(device)一个节点(FFD/RFD)就是一个设备,对应一个无线单片机(CC2430);一个设备有一个射频端,具有唯一的IEEE地址(64位)和网络地址(16位)。在协议栈中不同的设备有相应的配置文件:协调器(全功能设备FFD)配置文件、路由器(全功能设备FFD)配置文件、终端设备(半功能设备RFD)配置文件。NUST计算机学院11第一章.基础概念端点(endpoint)它是一个8位的字段,描述一个射频端所支持的不同应用。端点0x00,用于寻址设备配置文件,这是每个ZigBee设备必须使用的端点;端点0x00:用于寻址设备配置文件,这是每个ZigBee设备必须使用的端点;端点0xff:用于寻址所有活动端点;端点0xf1-0xfe:保留;端点0x01-0xf0:共支持240个应用,即一个物理信道最多支持240个虚拟链路。NUST计算机学院12第一章.基础概念簇(cluser)多个属性的汇聚形成了簇,簇是属性的集合,每个簇也拥有一个唯一的ID。譬如,FS_ZStack\SimpleSwitch.cconstcld_tzb_OutCmdList[NUM_OUT_CMD_SWITCH]={TOGGLE_LIGHT_CMD_ID};FS_Zstack\SimpleController.cconstcld_tzb_inCmdList[NUM_IN_CMD_CONTROLLER]={TOGGLE_LIGHT_COM_ID};NUST计算机学院13第一章.基础概念属性(attribute)设备之间通讯的每一种数据像开关的状态或温度计值等皆是可称为属性。每个属性可得到唯一的ID它们都用结构体来描述。Fs_Zstack\zcl.htypedefstruct{uint16attrld;uint8dataType;uint8accessControl;void*dataPtr;}zclAttribute_t;NUST计算机学院14第一章.基础概念typedefstruct{uint16cluserID;zclAttribute_tattr;}zclAtrrRec_t;NUST计算机学院15第二章Z-Stack体系架构2.1Z-Stack软件架构Z-Stack由main()函数开始执行,main()函数共做了2件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统,如下图所示:开始系统初始化执行操作系统NUST计算机学院16第二章Z-Stack体系架构FS_Zstack\ZMain.cZSEGintmain(void){osal_int_disable(INTS_ALL)//关闭所有中断HAL_BOARD_INIT();//初始化系统时钟zmain_vdd_check();//检查芯片电压是否正常zmain_ram_init();//初始化堆栈initBoard(OB_COLD);//初始化I/OLEDTimer等HalDriverInit();//初始化芯片个硬件模块osal_nv_init(NULL);//初始化Flash存储器zmain_ext_addr();//确定IEEE地址zgInit();//初始化非易失变量ZMacInit();//初始化MAC层NUST计算机学院17第二章Z-Stack体系架构osal_init_system();//初始化操作系统osal_init_enable(INTS_ALL);//使能全能中断InitBoard(OB_READY);//初始化按键zmain_dev_info();//显示设备信息osal_start_system();//执行操作系统}NUST计算机学院18第二章Z-Stack体系架构2.2Z-Stack操作系统初始化byteosal_init(){osal_mem_init();//初始化存储模块osal_qHead=NULL;//初始化消息队列osalTimerInit();//初始化时钟osal_pwrmgr_init();//初始化电源管理系统osalInitTasks();//初始化系统任务osal_mem_kick();return(ZSUCCESS);//成功返回}NUST计算机学院19第二章Z-Stack体系架构操作系统任务初始化voidosalInitTask(void){uint8taskID=0;//分配内存,返回指向缓冲区的指针taskaEvents=(uint16*)osal_mem_alloc(sizeof(uint16)*tasksCnt);//设置所分配的内存空间单元值为0osal_memset(tasksEvents,0,(sizeof(uint16)*taskCnt));//任务优先级由高向低依次排列,高优先级对应taskID的值反而小macTsdkInit(taskID++);//macTsakInit(0),用户不需考虑NUST计算机学院20第二章Z-Stack体系架构nwk_init(taskID++);//macTaskInit(1),用户不用考虑Hal_Init(taskID++);//nwk_init(2),用户不用考虑APS_Init(taskID++);//APS_Init(3),用户需考虑ZDApp_Init(taskID++);//ZDApp_Init(4),用户需考虑SAPI_Init(taskID);//SAPI_Init(5),用户需考虑}NUST计算机学院21第二章Z-Stack体系架构2.3操作系统执行过程Z-Stack中操作系统是基于优先级的轮转查询操作系统,执行过程如下图所示:NUST计算机学院22开始Mac_EventLoop()本任务当前最高优先级事件nwk_event_loop()Hal_processEvent()本任务当前最高优先级事件系统消息事件LED闪烁事件键盘事件nwk_event_loop()NUST计算机学院23第二章Z-Stack体系架构详细执行过程如下:操作系统启动,并且不返回voidosal_start_system(woid){for(;;)//死循环{do{if(taksEvents[idx]){break;//得到待处理的最高优先级任务索引号idx}}while(++idxtaskCnt);NUST计算机学院24第二章Z-Stack体系架构if(idxtasksCnt){HAL_EVENT_CRITICAL_SECTION(inState);//进入临界区events=tasksEvents[idx];//提取需要处理的任务中的事情tasksEvents[idx]=0;//清除本任务中的事件HAL_EXIT_CRITICAL_SECTION(intState);//退出临界区events=(tasksArr[idx])(idx,events);//通过指针调用任务处理函数HAL_ENTER_CRITICAL_SECTION(instate);//进入临界区tasksEvents[idx]|=events;//保存未处理的事件HAL_EXIT_CRITICAL_SECTION(inState);//退出临界区}}}NUST计算机学院25第二章Z-Stack体系架构SAPI任务事件处理函数:UINT16SAPI_ProcessEvent(bytetask_id,UINT16events)要处理的事件如下:允许绑定时间事件:afSetMatch(sapi_epDesc,simpleDesc-EndPoint,FALSE)绑定时间事件:SAPI_BindConfirm(sapi_bindInProgress,ZB_TIMEROUT)系统消息事件:pMsg-event进入事件:zb_HandleOsalEvent(ZB_ENTERY_EVENT)用户事件:zb_HandleOsalEvent(zb_USER_EVENTS)NUST计算机学

1 / 122
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功