Zstack协议栈.ppt
- 文档编号:305517
- 上传时间:2022-10-08
- 格式:PPT
- 页数:171
- 大小:5.10MB
Zstack协议栈.ppt
《Zstack协议栈.ppt》由会员分享,可在线阅读,更多相关《Zstack协议栈.ppt(171页珍藏版)》请在冰豆网上搜索。
-1-,Zstack协议栈,-2-,本章目标,理解Zstack软件架构掌握操作系统的运行机制掌握Zstack各层作用,-3-,本章目标,理解Zstack软件架构掌握操作系统的运行机制掌握Zstack各层作用,-4-,Zstack协议栈是德州仪器(英文简称TI)公司为Zigbee提供的一个解决方案,结合CC2530F256芯片可以实现Zigbee完整的解决方案。
本章将对Zstack协议栈进行分层剖析,以了解其运作原理,这是进行Zstack应用开发的基础,6.1概述,-5-,Zstack文件结构,6.1概述,双击此文件安装协议栈相关文件,安装完成后生成此文件,协议栈各目录文件,说明文档,工程文档,工具文件,-6-,Zstack协议栈符合Zigbee协议结构,由物理层、MAC层、网络层和应用层组成。
物理层和MAC层由IEEE802.15.4定义,网络层和应用层由Zigbee联盟来定义。
Zigbee联盟将应用层又详细划分为应用支持子层、应用设备框架以及Zigbee设备对象等。
6.2Zstack软件架构,-7-,Zigbee协议栈结构可参考本书的第2章讲解,包括物理层、MAC层、NWK(网络层)、APL(应用层)、应用支持子层APS、应用程序框架AF、设备对象ZDO层,6.2.1Zigbee协议栈,-8-,Zigbee协议栈结构可参考本书的第2章讲解,包括物理层、MAC层、NWK(网络层)、APL(应用层)、应用支持子层APS、应用程序框架AF、设备对象ZDO层,6.2.1Zigbee协议栈,物理层内容:
物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务单元(PD-SAP)和物理层管理服务(MLME-SAP)。
MAC(介质接入控制子层):
MAC层负责处理所有物理无线信道的访问,并产生网络信号、同步信号;支持PAN连接和分离,提供两个对等的MAC实体之间可靠链路。
NWK(网络层):
网络层是Zigbee协议栈的核心部分,网络层主要实现节点加入或者离开网络、接收或抛弃其它节点、路由查找及维护等功能。
-9-,Zigbee协议栈结构可参考本书的第2章讲解,包括物理层、MAC层、NWK(网络层)、APL(应用层)、应用支持子层APS、应用程序框架AF、设备对象ZDO层,6.2.1Zigbee协议栈,APL(应用层):
Zigbee应用层包括应用支持子层APS、应用程序框架AF、Zigbee设备对象ZDO等。
应用支持子层APS:
APS层在NWK层和APL层之间,提供APSDE-SAP和APSME-SAP两个接口,两个接口的主要功能如下:
APSDE-SAP提供在同一个网络中的两个或者更多的应用实体之间(即端点)的数据通信。
APSME-SAP提供多种服务给应用对象ZDO,这些服务包括安全服务和绑定设备服务,并维护管理对象的数据库(即AIB)。
-10-,Zigbee协议栈结构可参考本书的第2章讲解,包括物理层、MAC层、NWK(网络层)、APL(应用层)、应用支持子层APS、应用程序框架AF、设备对象ZDO层,6.2.1Zigbee协议栈,应用程序框架AF:
运行在Zigbee协议栈上的应用程序实际是厂商自定义的应用对象,并且遵循规范(Profile)运行在端点1240上。
设备对象层ZDO:
远程设备通过ZDO请求描述信息,接收到这些请求时,ZDO会调用配置对象获取相应的描述符值。
ZDO通过APSME-SAP接口提供绑定服务。
-11-,Zstack协议栈可以从TI的官方网站下载(截止本书出版时,Zstack协议栈的最新版本为Zstack-CC2530-2.5.1a),其下载网址为,下载完成后,双击可执行程序即可安装。
使用IAR8.10版本打开Zstack-CC2530-2.5.1a中的SampleApp工程,其协议栈代码文件夹,6.2.2Zstack协议栈,-12-,6.2.2Zstack协议栈,APP:
为应用层目录,用户可以根据需求添加自己的任务。
这个目录中包含了应用层和这个项目的主要内容,在协议栈里面一般是以操作任务实现的。
HAL:
硬件驱动层,包括硬件相关的配置、驱动以及操作函数。
OSAL:
协议栈的操作系统。
Profile:
AF层目录,包含AF层处理函数。
Security&Services:
安全服务层目录,安全层和服务层处理函数,比如加密。
Tools:
工程配置目录,包括空间划分及ZStack相关配置信息。
-13-,6.2.2Zstack协议栈,ZDO:
ZDO设备对象目录。
ZMac:
MAC层目录,包括MAC层参数及MAC层的LIB库函数回调处理函数。
Zmain:
主函数目录,包括入口函数及硬件配置文件。
Output:
输出文件目录,由IAR自动生成。
-14-,6.2.3Zigbee协议栈与Zstack对比,Zstack协议栈是一个半开源的协议栈,其中MAC层和ZMAC层的源码没有全部开源,关于他们的具体内容,在实际的工程开发中也不需要详细了解。
-15-,6.3HAL层分析,Zigbee的HAL层提供了开发板所有硬件设备(例如LED、LCD、KEY、UART等)的驱动函数及接口。
HAL文件夹为硬件平台的抽象层,包含common、include和target三个文件夹,-16-,6.3.1Common文件夹,Common目录下包含有hal_assert.c和hal_dirvers.c两个文件。
其中hal_assert.c是声明文件,用于调试。
hal_dirvers.c是驱动文件,一般不需要修改,了解即可,一些底层驱动文件,需要用户掌握的,-17-,6.3.1Common文件夹,hal_assert.c,halAssertHandler()halAssertHazardLights(),-18-,6.3.1Common文件夹,halAssertHandler(),这个函数为硬件系统检测函数,如果定义了ASSERT_RESET宏定义,系统将调用HAL_SYSTEM_RESET复位,否则将调用halAaaertHazardLights()执行闪烁LED命令,voidhalAssertHandler(void)/如果定义了ASSERT_RESET宏定义#ifdefASSERT_RESET/系统复位HAL_SYSTEM_RESET();#else!
definedASSERT_WHILE/当检测到错误时,LED灯闪烁命令函数halAssertHazardLights();#elsewhile
(1);#endif,-19-,6.3.1Common文件夹,halAssertHazardLights(),此函数控制LED灯闪烁,但是根据不同的硬件平台定义的LED的个数不同来决定闪烁不同的LED。
例如CC2430和CC2530所使用的硬件平台不同决定闪烁的LED不同,/如果硬件平台定义的LED的个数为1#if(HAL_NUM_LEDS=1)/LED1闪烁HAL_TOGGLE_LED1();/如果硬件平台定义的LED的个数为2#if(HAL_NUM_LEDS=2)/LED2闪烁HAL_TOGGLE_LED2();/如果硬件平台定义的LED的个数为3#if(HAL_NUM_LEDS=3)/LED3闪烁HAL_TOGGLE_LED3();/如果硬件平台定义的LED的个数为4#if(HAL_NUM_LEDS=4)/LED4闪烁HAL_TOGGLE_LED4();#endif#endif#endif#endif,-20-,6.3.1Common文件夹,hal_drivers.c:
hal_drivers.c文件中包含了与硬件相关初始化和事件处理函数。
此文件中有4个比较重要的函数:
硬件初始化函数Hal_Init()硬件驱动初始化函数HalDriverInit()硬件事件处理函数Hal_ProcessEvent()询检函数Hal_ProcessPoll(),-21-,6.3.1Common文件夹,硬件初始化函数Hal_Init(),Hal_Init()函数是硬件初始化函数。
其功能是通过“注册任务ID号”以实现在OSAL层注册,从而允许硬件驱动的消息和事件由OSAL处理。
voidHal_Init(uint8task_id)/注册任务IDHal_TaskID=task_id;,Zstack协议栈操作系统任务ID,在后续章节中详细讲解,-22-,6.3.1Common文件夹,硬件驱动初始化函数HalDriverInit(),HalDriverInit()函数被main()函数调用,用于初始化与硬件设备有关的驱动,voidHalDriverInit(void)/如果定义了定时器则初始化定时器#if(definedHAL_TIMER)#endif,-23-,6.3.1Common文件夹,硬件驱动初始化函数HalDriverInit(),HalDriverInit()函数被main()函数调用,用于初始化与硬件设备有关的驱动,/如果定义了LCD,初始化LCD#if(definedHAL_LCD)#endif,-24-,6.3.1Common文件夹,硬件事件处理函数Hal_ProcessEvent(),Hal_ProcessEvent()函数在APP层中的任务事件处理中调用,用于对相应的硬件事件作出处理,具体包括系统消息事件、LED闪烁事件、按键处理事件和睡眠模式等。
uint16Hal_ProcessEvent(uint8task_id,uint16events)uint8*msgPtr;(void)task_id;/系统消息事件if(events,协议栈固有的函数,在使用的时候可以直接调用,不需要大幅度的修改,-25-,6.3.1Common文件夹,硬件事件处理函数Hal_ProcessEvent(),Hal_ProcessEvent()函数在APP层中的任务事件处理中调用,用于对相应的硬件事件作出处理,具体包括系统消息事件、LED闪烁事件、按键处理事件和睡眠模式等。
/按键处理事件if(events,-26-,6.3.1Common文件夹,询检函数Hal_ProcessPoll(),Hal_ProcessPoll()函数在main()函数中被osal_start_system()调用,用来对可能产生的硬件事件进行询检。
voidHal_ProcessPoll()/定时器询检#if(definedHAL_TIMER)#endif,协议栈固有的函数,在使用的时候可以直接调用,不需要大幅度的修改,-27-,6.3.1Common文件夹,询检函数Hal_ProcessPoll(),Hal_ProcessPoll()函数在main()函数中被osal_start_system()调用,用来对可能产生的硬件事件进行询检。
/SPI询检#if(definedHAL_SPI)#endif,-28-,6.3.2Include文件夹,Include目录主要包含各个硬件模块的头文件,主要内容是与硬件相关的常量定义以及函数声明,在移植过程中可能需要修改,需要用户掌握,-29-,6.3.2Include文件夹,Include目录主要包含各个硬件模块的头文件,主要内容是与硬件相关的常量定义以及函数声明,-30-,6.3.3Target文件夹,Target目录下包含了某个设备类型下的硬件驱动文件、硬件开发板上的配置文件,MCU信息和数据类型,本书采用的硬件平台为CC2530,因此本节以硬件设备类型CC2530EB(EB是版本号,表示是评估版)为例进行讲解,-31-,6.3.3Target文件夹,在CC2530EB文件夹下包含三个子文件夹,分别是Config、Drivers、Includes,需要用户重点掌握,-32-,6.3.3Target文件夹,Config文件夹,Config文件夹中包含了hal_board_cfg.h,在hal_board_cfg.h中定义了硬件CC2530硬件资源的配置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Zstack 协议