06-第6章-Zstack协议栈PPT资料.ppt

上传人:wj 文档编号:13061344 上传时间:2022-10-04 格式:PPT 页数:171 大小:4.33MB
下载 相关 举报
06-第6章-Zstack协议栈PPT资料.ppt_第1页
第1页 / 共171页
06-第6章-Zstack协议栈PPT资料.ppt_第2页
第2页 / 共171页
06-第6章-Zstack协议栈PPT资料.ppt_第3页
第3页 / 共171页
06-第6章-Zstack协议栈PPT资料.ppt_第4页
第4页 / 共171页
06-第6章-Zstack协议栈PPT资料.ppt_第5页
第5页 / 共171页
点击查看更多>>
下载资源
资源描述

06-第6章-Zstack协议栈PPT资料.ppt

《06-第6章-Zstack协议栈PPT资料.ppt》由会员分享,可在线阅读,更多相关《06-第6章-Zstack协议栈PPT资料.ppt(171页珍藏版)》请在冰豆网上搜索。

06-第6章-Zstack协议栈PPT资料.ppt

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硬件资

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1