搜档网
当前位置:搜档网 › Z-Stack协议栈代码介绍

Z-Stack协议栈代码介绍

8.1 TI Z-Stack协议栈代码介绍

TI公司在提供Zigbee无线单片机CC2530的同时,也提供了Z-Stack协议栈源代码,以方便设计人员将Z-Stack直接移植到CC2530上使用,使其支持IEEE 802. 15. 4/ZigBee 协议。TI也提供比较多的工具软件,如CC2530的FLASH编程软件,包监视分析软件,以及一些在协议之上的应用案例,简单点对点通信软件、智能家居应用软件等。

为了使我们自己的系统稳定可靠运行,必须保证硬件的设计稳定可靠,满足需要的功能要求外,软件的设计也是同样重要的。为了使整个系统能很好的正常工作,必须让软硬件协同操作,在TI的Z-Stack协议栈之上开发我们自己的软件系统,不愧为一种很好的、省力的方式。自己去写Z-Stack协议栈代码并让其稳定运行是不现实的,不是投入太大就是时间太长。这样,对TI的Z-Stack协议栈代码进行必要的了解是非常必要的。

通过IAR软件打开TI的Z-Stack协议栈,如下图所示:

第一次打开工程印象最深刻的就是左边一排文件夹,非常多,很庞杂,感觉无从下手。我们先不深入目录之下,先了解每个目录放的是什么内容,那么知道各个文件夹大概是什么功能,分布在 ZIGBEE 的哪一层,那么在以后的工作中无论是查询某些功能函数还是修改某些功能函数,甚至是添加或删除某些功能函数就能顺利的找到在什么地方了,方便对Z-Stack协议栈软件的更深入的学习了解。

下面对Z-Stack协议栈的文件夹进行介绍:

APP(ApplicationProgramming):应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。

APP:用户应用程序及接口,包括串口数据处理、无线接收数据处理、用户LCD显示处理、传感器数据读取和发送等。

HAL(Hardware (H/W) Abstraction Layer):硬件层目录,包含有与硬件相关的配置和驱动及

操作函数。

MAC:MAC 层目录,包含了 MAC 层的参数配置文件及其 MAC 的 LIB 库的函数接口文件。

MT(Monitor Test):实现通过串口可控各层,于各层进行直接交互。

NWK(ZigBee Network Layer):网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS 层库的函数接口

OSAL(Operating System (OS) Abstraction Layer):协议栈的操作系统。

Profile:AF(Application work)层目录,包含 AF 层处理函数文件。

Security:安全层目录,安全层处理函数,比如加密函数等。

Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。

Tools:工程配置目录,包括空间划分及 ZStack 相关配置信息。

ZDO(ZigBee Device Objects):ZDO 目录。

ZMac: MAC 层目录,包括 MAC 层参数配置及 MAC 层 LIB 库函数回调处理函数。

ZMain:主函数目录,包括入口函数及硬件配置文件。

Output:输出文件目录,这个是EW8051 IDE 自动生成的。

Z-Stack 协议栈用操作系统的思想来构建,采用事件轮询机制。当各层初始化之后,系统进

入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,则判断优先级,逐个处理事件。这种软件构架可以极大地降级系统的功耗。

整个Z-Stack 的主要工作流程,大致分为系统启动,驱动初始化,OSAL 初始化和启动,

进入任务轮循几个阶段,下面将逐一详细分析。

1、TI的Z-Stack协议栈启动流程

可打开ZMain文件夹中的ZMain.c文件,查看int main(void)函数,协议栈即从此函数开始运

行。其启动流程如下所示:

2、系统初始化

系统上电后,通过执行ZMain文件夹中ZMain.c的ZSEG int main( )函数实现硬件的初

始化。硬件初始化需要根据HAL文件夹中的hal_board_cfg.h文件配置8051的寄存器。TI 官方发布Z-stack的配置针对的是TI 官方的开发板CC2530DB、CC2530EMK等,如采用其它开发板,则需根据原理图设计改变hal_board_cfg.h 文件配置。如按键多少及其对应的I/O口,LED指示灯的多少及其对应的I/O口,串口的波特率及中断还是DMA操作方式,是否有LCD等。也可以通过宏定义的方式,将硬件的功能模块的操作放开或屏蔽掉。

下面列出main函数,并在其掉用的函数处对其进行注释说明:int main( void ){

//关全局中断

osal_int_disable( INTS_ALL );

//板相关的硬件初始化,如时钟、LED等

HAL_BOARD_INIT();

//确保电源电压比正常运行的电压高

zmain_vdd_check();

//参数堆栈及返回地址堆栈清0

zmain_ram_init();

//判别是上电复位,复位键复位还是看门狗复位

InitBoard( OB_COLD );

//初始话硬件抽象层驱动,如Timers、

Adc,Dma,Flash,Aes,Leds,Uart,Key,Spi,and Lcd等

HalDriverInit();

//初始化FLASH存储器系统

osal_nv_init( NULL );

//初始化基本的非易失性存储器的项目,初始话Z-Stack全局变量。如果一个项目在非易失性//存储器中没有,则将缺省值写入其中。

zgInit();

//初始化MAC层

ZMacInit();

//决定起始的扩展IEEE地址

zmain_ext_addr();

//如果无网络层,则调用afInit()对无线射频部分进行初始化

#ifndef NONWK

afInit();

#endif

//初始化操作系统,初始化存储器系统、消息队列、定时器、电源管理系统、系统任务等

osal_init_system();

//开全局中断

osal_int_enable( INTS_ALL );

//进行板硬件的最后初始化,如键盘,摇杆等初始化

InitBoard( OB_READY );

//如果使用LCD,则调用用于LCD硬件的初始化

#ifdef LCD_SUPPORTED

zmain_lcd_init();

#endif

//显示如IEEE地址等设备信息,

zmain_dev_info();

//如果使用了看门狗,则将看门狗使能

#ifdef WDT_IN_PM1

WatchDogEnable( WDTIMX );

#endif

//启动操作系统,将不会从此函数返回

osal_start_system(); // No Return from her

//不会到达这里

return ( 0 );

}

当顺利完成上述初始化时,执行osal_start_system( )函数开始运行OSAL 系统。该任务调度函数按照优先级检测各个任务是否就绪,如果存在就绪的任务则调用

tasksArr[ ]中相对应的任务处理函数去处理该事件,直到执行完所有就绪的任务。如果任务列表中没有就绪的任务,则可以使处理器进入睡眠状态实现低功耗。程序流程如下图所示。osal_start_system( )一旦执行,则不再返回Main( )函数。

3、OSAL 任务

OSAL是协议栈的核心,Z-Stack 的任何一个子系统都作为OSAL 的一个任务,因此在开发应用层的时候,必须通过创建OSAL任务来运行应用程序。通过osalInitTasks( )函数创建OSAL 任务,其中TaskID 为每个任务的唯一标识号。任何OSAL任务必须分为两步:一是进行任务初始化;二是处理任务事件。任务初始化主要步骤如下:1)初始化应用服务变量

const pTaskEventHandlerFn tasksArr[ ]数组定义系统提供的应用服务和用户服务变量,如MAC 层服务macEventLoop、用户服务controlEpProcess,functionEpProcess, 等2)分配任务ID 和分配堆栈内存

void osalInitTasks( void )主要功能是通过调用osal_mem_alloc( )函数给各个任务分配内存空间,和给各个已定义任务指定唯一的标识号。

3)在AF 层注册应用对象

通过填入endPointDesc_t 数据格式的EndPoint 变量,调用afRegister( )在AF层注册EndPoint 应用对象。通过在AF 层注册应用对象的信息,告知系统afAddrType_t 地址类型数据包的路由端点,例如用于发送周期信息的SampleApp_Periodic_DstAddr 和发送LED 闪烁指令的

SampleApp_Flash_DstAddr。

4)注册相应的OSAL 或者HAL 系统服务

在协议栈中,Z-Stack 提供键盘响应和串口活动响应两种系统服务,但是任何

Z-Stask任务均不自行注册系统服务,两者均需要由用户应用程序注册。值得注意的是,有且仅有一个OSAL Task 可以注册服务,例如注册键盘活动响应可调用RegisterForKeys( )函数。

5)处理任务事件

处理任务事件通过创建“ApplicationName”_ProcessEvent( )函数处理。一个OSAL 任务除了强制事件(Mandatory Events)之外还可以定义15 个事件。下面对这些事件进行介绍:

SYS_EVENT_MSG:

一个强制任务事件 SYS_EVENT_MSG (0x8000), 被保留必须通过 OSAL 任务设计。

管理者应该处理如下的系统信息子集,下面只列出了部分信息,但是是最常用的几个信息处理,推荐根据例子复制到自己项目中使用。

AF_DATA_CONFIRM_CMD:

调用 AF_DataRequest()函数数据请求成功的指示。Zsuccess 确认数据请求传输成功,如果数据请求设置 AF_ACK_REQUEST 标志位,那么,只有最终目的地址成功接收后,Zsuccess 确认才返回。如果如果数据请求没有设置 AF_ACK_REQUEST 标志位,那么,数据请求只要成功

传输到下跳节点就返回 Zsuccess 确认信息。

AF_INCOMING_MSG_CMD:

AF 信息输入指示

KEY_CHANGE

键盘动作指示

ZDO_NEW_DSTADDR

匹配描述符请求(Match Deor Request)响应指示。(例如:自动匹配)

ZDO_STATE_CHANGE

网络状态改变指示

4、网络层信息

ZigBee 设备有两种网络地址:1 个是64 位的IEEE 地址,通常也叫作MAC 地址或者扩展地址(Extended address),另一个是16 位的网络地址,也叫做逻辑地址(Logical address)或者短地址。64 位长地址是全球唯一的地址,并且终身分配给设备。这个地址可由制造商设定或者在安装的时候设置,是由IEEE 来提供。当设备加入ZigBee 网络

被分配一个短地址,在其所在的网络中是唯一的,这个地址主要用来在网络中辨识设备,传递信息等。

协调器(Coordinator)首先在某个频段发起一个网络,网络频段的定义放在DEFAULT_CHANLIST 配置文件里。如果ZDAPP_ CONFIG_ PANID 定义的PAN ID 是0xFFFF (代表所有的PAN ID),则协调器根据它的IEEE 地址随机确定一个PAN ID。否则,根据ZDAPP_CONFIG_ PANID 的定义建立PAN ID。当节点为Router 或者End Device 时,设备将会试图加入DEFAULT_ CHANLIST 所指定的工作频段。如果ZDAPP_ CONFIG_ PANID 没有设为0xFFFF,则Router 或者End Device 会加入ZDAPP_ CONFIG_ PANID 所定义的PAN ID。

设备上电之后会自动的形成或加入网络,如果想设备上电之后不马上加入网络或者在加入网络之前先处理其他事件,可以通过定义HOLD_AUTO_START 来实现。通过调用ZDApp_StartUpFromApp( )来手动定义多久时间之后开始加入网络。

设备如果成功的加入网络,会将网络信息存储在非易失性存储器(NV Flash)里,掉电后仍然保存,这样当再次上电后,设备会自动读取网络信息,这样设备对网络就有一定的记忆功能。对NV Flash 的动作,通过NV_RESTORE( )和NV_ITNT( )函数来执行。

有关网络参数的设置大多保存在协议栈Tools 文件夹的f8wConfig.cfg 里。

5、路由

Z-Stack 采用无线自组网按平面距离矢量路由协议AODV,建立一个Hoc 网络,支持移动节点,链接失败和数据丢失,能够自组织和自修复。当一个Router 接收到一个信息包之后,NMK 层将会进行以下的工作:首先确认目的地,如果目的地就是这个Router 的邻居,信息包将会直接传输给目的设备;否则,Router 将会确认和目的地址相应的路由表条目,如果对于目的地址能找到有效的路由表条目,信息包将会被传递到该条目中所存储的下一个hop 地址;如果找不到有效的路由表条目,路由探测功能将会被启动,信息包将会被缓存直到发现一个新的路由信息。

ZigBee End Device 不会执行任何路由函数,它只是简单的将信息传送给前面的可以执行路由功能的父设备。因此,如果End Device 想发送信息给另外一个End Device,在发送信息之间将会启动路由探测功能,找到相应的父路由节点。

另外,在工程文件夹NWK目录中的nwk_globals.h 文件里有对网络拓扑结构的定义,如下:

#define NWK_MODE NWK_MODE_STAR //星型网络

//#define NWK_MODE NWK_MODE_TREE //树型网络

//#define NWK_MODE NWK_MODE_MESH //网状网络通过修改

通过对NWK_MODE 模式的设置,即可更改网络拓扑结构。

注:ZIGBEEPRO在Tools\f8wConfig.cfg中定义。

在工程文件夹Tools中f8wConfig.cfg文件里有对网络组网号及无线通道号的定义,如下:

-DZDAPP_CONFIG_PAN_ID=0x0001

通过修改-DZDAPP_CONFIG_PAN_ID参数的设置,为无线传感器网络节点分配不同的网络组

网号。协调器将使用此值作为网络的PANID值,路由器和端节点将使用此PANID加入个域网。

-DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。 ◆在2.45GHz频带内定义了16个通道;在915MHz频带内定义了10个通道;在868MHz频带内定义了1个通道。 为了使供应商能够提供最低可能功耗的设备,IEEE(InstituteofElectricalandElectronicsEngineers,电气及电子工程师学会)定义了两种不同类型的设备:一种是完整功能设备(full.functionaldevice,FFD),另一种是简化功能设备

2020年Zigbee协议栈中文说明免费

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。 端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2 每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee 堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象 (ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。 所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。 1.1.2 80 2.15.4 MAC层 IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz 波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868 /915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC 层安全:它能提供二个设备之间的可靠链接。 1.1.3 关于服务接入点 ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。 1.1.4 ZigBee的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用

TI_Z-stack协议栈开发环境和工作流程

TI Z-stack协议栈开发环境和工作流程 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。 图 ZigBee节点开发环境 TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embed ded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层:API(Application Programming Interface),HAL (Hardw are Abstract Layer),MAC(Media Access Control), NWK(Zigbee Networ k Layer),OSAL(Operating System Abstract System),Security,Servic e,ZDO(Zigbee Device Objects)。使用IAR打开工程文件SampleApp.eww后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,

TI_zigbee协议栈结构分析应用

无线盛世《快速进入ZB世界》
Ver:1

进入Zigbee世界的准备工作
§ 首先,我们需具备一些硬件设备及平台。以下 我就罗列一下Zigbee开发基本工具: § 计算机:不管是设计电路还是编程开发都是离 不开它的。 § Zigbee开发板:对于初学者来说,Zigbee开发 板无疑是最佳选择。有了开发板,你可以在我 们成熟设计的基础上学习或者做自己的设计。 § Zigbee模块:集MCU,RF,天线设计于一体 的Zigbee模块。使用它,我们可省去设计天线 及IC周边电路设计的复杂工作。

进入Zigbee世界的准备工作
§ Zigbee仿真器:是集烧写程序、在线编程和在线仿真 功能于一身的开发过程工作中必不可少的开发工具。 编程器既能对CC243x芯片(其实包括TI产品中的CC 系列的大部分芯片)进行烧写程序(hex标准文件程序 ),也能对CC243x芯片进行在线编程和仿真,让我们 能方便地在线调试开发,从而大大地提高了开发效率 。 § Zigbee协议分析仪:ZigBee的设计开发者必不可少的 工具!ZigBee协议分析仪具有广泛的功能,包括:分 析以及解码在PHY、MAC、NETWORK/SECURITY、 APPLICATION FRAMEWORK、和APPLICATION PROFICES等各层协议上的信息包;显示出错的包以 及接入错误;指示触发包;在接收和登记过程中可连 续显示包。

进入Zigbee世界的准备工作
§ 再次,我们需要在将用于开发Zigbee的计 算机平台上安装这些软件: § Zigbee协议分析软件(sniffer) § 程序烧写软件(Flash Programmer) § IAR公司的EW8051 version 7.20I/W32 。

zigbee协议栈源码

竭诚为您提供优质文档/双击可除 zigbee协议栈源码 篇一:zigbeez-stack协议栈构架 zstack基础 1、zstack协议栈构架 zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层api,供用户调用。协议栈体系分层架构与协议栈代码文件夹对应表如下:整个协议栈的构架,如图所示 app:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 hal:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。 mac:mac层目录,包含了mac层的参数配置文件及其mac的lib库的函数接口文件。 mt:监控调试层,主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。nwk:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,aps层库的

函数接口。 osal:协议栈的操作系统。 profile:aF层目录,包含aF层处理函数文件。 security:安全层目录,安全层处理函数接口文件,比如加密函数等。 services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 tools:工程配置目录,包括空间划分及zstack相关配置信息。 zdo:zdo目录。 zmac:mac层目录,包括mac层参数配置及mac层lib 库函数回调处理函数。zmain:主函数目录,包括入口函数main()及硬件配置文件。 output:输出文件目录,这个ew8051ide自动生成的。 2、zigbee20xx协议栈源码库结构分析 了解了zigbee20xx协议栈整个构架后,再来看看协议栈源码库结构是什么样的,各层的具体文件是什么,建立不同的项目、添加自己的应用层任务及处理函数需要修改什么文件。zigbee20xx协议栈zstack-1.4.2文件目录及说明如下: 打开smapleapp项目工程 先看app层:

TIZstack协议栈开发环境和工作流程

TIZstack协议栈开发环境和工作流程

TI Z-stack协议栈开发环境和工作流程 By KuangJunBin KuangJunBin: 如您对本项目感兴趣或者有任何疑问, 欢迎与我一起探讨: 。谢谢您的阅读! 系统软件设计是在硬件设计的基础上进行的, 良好的软件设计是实现系统功能的重要环节, 也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑, 移植了TI公司的Z-Stack协议栈, 其主要特点就是其兼容性, 完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性, 如无线下载, 可经过ZigBee网状网络( Mesh Network) 下载节点更新。 图 ZigBee节点开发环境

TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外, 还能够结合编程器进行单步跟踪调试和监测片上寄存器、 Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层: API( Appli cation Programming Interface) , HAL ( Hardware Abstract Layer) , M AC( Media Access Control), NWK( Zigbee Network Layer) , OSAL( Operating System Abstract System) , Security, Service, ZDO( Zigbee Device Objects) 。使用IAR打开工程文件SampleApp.eww后, 即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈能够实现复杂的网络链接, 在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建, 采用事件轮循机制, 当各层初始化之后, 系统进入低功耗模式, 当事件发生时, 唤醒系统, 开始进入中断处理事件, 结束后继续进入低功耗模式。如果同时有几个事件发生, 判断优先级, 逐次处理事件。这种软件构架能够极大地降级系统的功耗。 整个Z-stack的主要工作流程, 大致分为系统启动, 驱动初始化, OSAL初始化和启动, 进入任务轮循几个阶段, 下面将逐一详细分析。

ZStack协议栈结构的初步解析

int main( void ) { // Turn off interrupts(关中断) osal_int_disable( INTS_ALL ); // Initialization for board related stuff such as LEDs(初始化板上组件,如LED) HAL_BOARD_INIT(); // Make sure supply voltage is high enough to run(电压检查) zmain_vdd_check(); // Initialize board I/O(初始化I/O接口) InitBoard( OB_COLD ); // Initialze HAL drivers(初始化HAL设备,在hal_drivers.c中实现) HalDriverInit(); // Initialize NV System(初始化NV系统,即非易失设备,如Flash) osal_nv_init( NULL ); // Initialize the MAC(初始化MAC) ZMacInit(); // Determine the extended address(确定设备的长地址) zmain_ext_addr(); // Initialize basic NV items(初始化ZStack的全局变量,如果在NV内存中不存在,则写入缺省值) zgInit(); #ifndef NONWK // Since the AF isn't a task, call it's initialization routine afInit(); #endif // Initialize the operating system(初始化操作系统) osal_init_system(); // Allow interrupts(开中断) osal_int_enable( INTS_ALL ); // Final board initialization(最后初始化板)

基于TI_BLE协议栈_ZStack协议栈解析

基于TI_BLE协议栈_ZStack协议栈解析 基于STM32的虚拟多线程,可以很好的用于裸机程序中,用于模拟小型操作系统的多线程概念。本实例参考TI_BLE协议栈_ZStack协议栈。 #include “Hal_Led/Hal_Led.h” #include “Hal_delay/delay.h” #include “Hal_Key/Hal_Key.h” #include “ringbuffer.h” #define APP_LED2_BLINK_EVENT 0x0001 #define HAL_LED1_BLINK_EVENT 0x0001 #define TASK_NO_TASK_RUNNING 0xFF unsigned short Hal_ProcessEvent(unsigned char task_id,unsigned short events ); unsigned short App_ProcessEvent(unsigned char task_id,unsigned short events ); typedef unsigned short uint16; typedef unsigned char uint8; #define TASK_CNT 2 //定义线程的个数 //定义函数指针 typedef unsigned short (*pTaskEventHandlerFn)(unsigned char task_id,unsigned short events ); //线程函数表 const pTaskEventHandlerFn tasksArr[]= { Hal_ProcessEvent, App_ProcessEvent }; const unsigned char tasksCnt = sizeof(tasksArr )/ sizeof(tasksArr[0]);

Zigbee协议栈原理基础

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。

Zstack协议栈ZNP例程使用说明

Zstack协议栈ZNP例程使用说明 一、硬件准备 1)将ZBeePlus S1或者ZBeeplus M1安装到ZBDC51GB上,配套天线拧到ZBeeplus 模块上,安装完成模块如下图所示。 2)使用交叉RS232电缆连接模块串口到PC机; 电池盒装上两节5号1.5V电池,电池盒电缆连接到模块电池盒接口。 如果需要下载代码,将ccdebugger调试电缆连接到模块仿真器接口。 3)检查电池合是否拨到on位置,SW1开关拨到ON位置,模块上电开始工作。 二、编译和下载ZNP例程 1)运行IAR 7.6.0以上版本,打开 ZStack-CC2530-2.4.0-1.4.0\Projects\zstack\ZNP\CC253x\znp.eww工程文件。

2)编译和下载ZNP代码,如下图所示. 1.选择工程配置项CC2530 - Debug。 2.选中ZNP->CC2530-Debug->HAL->TARGET->CC2530ZNP->hal_board_cfg.h文件,双击打开文件。 在文件第62行,将#define xHAL_PA_LNA修改为#define HAL_PA_LNA. (注:这个操作步骤只针对ZBeepls M1模块,ZBeeplus S1模块不要作上述修改操作) 3.选择CC2530-Debug,右键弹出菜单,选择Rebuild All。 4.编译完成之后,如果没有错误,点击下载按钮,将程序烧写入模块。 5.采用上述方法下载ZNP程序到其他模块。 三、用Smartrf Flash Programmer下载ZNP代码 如果不是从源代码编译下载到模块中,使用光盘上附带的hex文件,可以采用SmartRf Flash Programmer进行程序下载。

TIZstack协议栈开发环境和工作流程精编

T I Z s t a c k协议栈开发 环境和工作流程精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

TI Z-stack协议栈开发环境和工作流程 By KuangJunBin KuangJunBin:如您对本项目感兴趣或者有任何疑问,欢迎与我一起探讨:。谢谢您的阅读! ? 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。 图 ZigBee节点开发环境 TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。Z-Stack根据IEEE 802. 和ZigBee标准分为以下几层:API(Application Programming Interf

ace),HAL (Hardware Abstract Layer),MAC(Media Access Control), NWK(Zigbee Network Layer),OSAL (Operating System Abstract System),Security,Ser vice,ZDO(Zigbee Device Objects)。使用IAR打开工程文件后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。 Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。 整个Z-stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段,下面将逐一详细分析。 图 Z-Stack系统运行流程图 Figure . The Flow Chart of Z-Stack ?

TIZstack协议栈开发环境和工作流程

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 TIZstack协议栈开发环境和工作流程 甲方:___________________ 乙方:___________________ 日期:___________________

TI Z-stack 协议栈开发环境和工作流程 系统软件设计是在硬件设计的基础上进行的,良好的软件设计是 实现 系统功能的重要环节,也是提高系统性能的关键所在。节点设计基丁通用 性及便丁开发的考虑,移植了 TI 公司的Z-Stack 协议栈,其主要特点就是其兼 容性,完全支持IEEE 802. 15. 4/ZigBee 的CC2430片上系统解决方案。Z-Sta ck 还支持丰富的新特性,如无线下载,可通过 ZigBee 网状网络(Mesh Networ k)下载节点更新。 Z furn gr irrc vrivci t Bfei AS JJiflll-ltC -liNri l - lie *4--? U ■Bl.K II 图ZigBee 节点开发环境 TI 的Z-Stack 装载在一个基丁 IAR 开发环境的工程里。强大的IAR E mbedded Workbench 除了提供编译下载功能外,还可以结合编程器进行单步跟踪 调试和监测片上寄存器、Flash 数据等。Z-Stack 根据IEEE 802. 15.4 和ZigB ee 标准分为以下几层: API (Application Programming Interface ) , HAL (H ardware Abstract Layer ) , MAC( Media Access Control) , NWK( Zigbee Ne twork Layer ) , OSAL( Operating System Abstract System ) , Security , Se rvice , ZDO(Zigbee Device Objects )。使用 IAR 打开工程文件 SampleApp.e ww 后,即可查看到整个协议栈从 HAL 层到APP 层的文件夹分布。该协议栈可以 实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。 Z-Stack 采用操作系统的思想来构建,采用事件轮循机制,当各层 初始 化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断 Ri-TPr — iw"" t ■ W T ■ E M ± -

ZigBee协议栈(免费下载)

2005 Microchip Technology Inc.DS00965A_CN 第1页 AN965 引言 ZigBee?是专为低速率传感器和控制网络设计的无线网络协议。有许多应用可从ZigBee 协议受益,其中可能的一些应用有:建筑自动化网络、住宅安防系统、工业控制网络、远程抄表以及PC 外设。 与其他无线协议相比,ZigBee 无线协议提供了低复杂性、缩减的资源要求,最重要的是它提供了一组标准的规范。它还提供了三个工作频带,以及一些网络配置和可选的安全功能。 如果您正在寻求现有的控制网络技术(例如RS-422、RS-485)或专有无线协议的替代方案,ZigBee 协议可能是您所需的解决方案。 此应用笔记旨在帮助您在应用中采用ZigBee 协议。 可以使用在应用笔记中提供的Microchip ZigBee 协议栈快速地构建应用。为了说明该协议栈的用法,本文包含了两个有效的演示应用程序。可将这两个演示程序作为参考或者根据您的需求经过简单修改来采用它们。此应用笔记中提供的协议栈函数库实现了一个与物理层无关的应用程序接口。 因此,无需做重大修改就可以轻松地在射频(Radio Frequency ,RF )收发器之间移植应用程序。 在此文档末尾的“常见问题解答”中提供了有关Microchip 协议栈和用法的一些常见问题及其答案。 假设 此文档假设您熟悉C 编程语言。文档中大量使用了有关ZigBee 和IEEE 802.15.4规范的术语。 此文档没有详细讨论ZigBee 规范,只提供了对ZigBee 规范的简要概述。建议您仔细阅读ZigBee 和IEEE 802.15.4规范。 特性 Microchip ZigBee 协议栈设计为随着ZigBee 无线协议规范的发展而发展。在发布此文档时,该协议栈的 1.0版本具有以下特点(欲知最新特性,请参阅源代码版本日志文件version.log ):? 基于ZigBee 规范的0.8版本 ? 使用Chipcon CC2420 RF 收发器支持2.4GHz 频带 ? 支持简化功能设备(Reduced Function Device ,RFD )和协调器 ? 在协调器节点中实现对邻接表和绑定表的非易失性存储 ? 支持非时隙的星型网络 ? 可以在大多数PIC18系列单片机之间进行移植? 协同多任务处理架构? 不依赖于RTOS 和应用 ? 支持Microchip MPLAB ? C18和Hi-Tech PICC-18? C 编译器 ? 易于添加或删除特定模块的模块化设计 限制 Microchip 协议栈的1.0版本包含以下限制。请注意随着时间的推移,Microchip 会添加新特性。如需了解目前的限制,请参阅源代码版本日志文件(version.log )。? 不完全符合ZigBee 协议? 不支持群集和点对点网络? 无安全和访问控制功能? 无路由器功能 ? 不提供标准的配置文件;但是包含创建配置文件必需的所有原始函数? 不支持一对多绑定 作者: Nilesh Rajbharti Microchip Technology Inc. Microchip ZigBee ?协议栈 https://www.sodocs.net/doc/9415556938.html, 电子发烧友 https://www.sodocs.net/doc/9415556938.html, 电子技术论坛

ZigBee协议栈原理简介

第1章ZigBee协议栈原理 2007 年4 月,德州仪器推出业界领先的ZigBee 协议栈(Z-Stack)。Z-Stack 符合ZigBee2006 规范,支持多种平台,包括基于CC2420 收发器以及TI MSP430 超低功耗单片机的平台、CC2530 SOC 平台等。Z-Stack 包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的ZigBee 领域占有很重要地位。 4.1 Zigbee 设备类型 在 ZigBee 网络中存在三种逻辑设备类型:Coordinator(协调器),Router(路由器)和End-Device(终端设备)。ZigBee 网络由一个Coordinator 以及多个Router 和多个End_Device组成。 下图是一个简单的ZigBee 网络示意图。其中黑色节点为Coordinator,红色节点为Router, 白色节点为End-Device。 1、Coordinator(协调器) 协调器负责启动整个网络。它也是网络的第一个设备。协调器选择一个信道和一个网络ID(也称之为PAN ID,即Personal Area Network ID),随后启动整个网络。协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。 注意,协调器的角色主要涉及网络的启动和配置。一旦这些都完成后,协调器的工作就像一个路由器。 2、Router(路由器) 路由器的功能主要是:允许其他设备加入网络,多跳路由和协助它自己的由电池供电的子终端设备的通讯。通常,路由器希望是一直处于活动状态,因此它必须使用主电

源供电。但是当使用树型网络模式时,允许路由间隔一定的周期操作一次,这样就可以使用电池给其供电。 3、End-Device(终端设备) 终端设备没有特定的维持网络结构的责任,它可以睡眠或者唤醒,因此它可以是一个电池供电设备。通常,终端设备对存储空间(特别是RAM)的需要比较小。 注意:在Z-Stack 1.4.1 中一个设备的类型通常在编译的时候通过编译选项 (ZDO_COORDINATOR 和RTR_NWK)确定。所有的应用例子都提供独立的项目文件来 编译每一种设备类型。 栈配置(Stack Profile) 栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置。ZigBee 联盟定义了这些由栈配置组成的栈参数。网络中的所有设备必须遵循同样的栈配置。为了促进互用性这个目标,ZigBee 联盟为ZigBee2006 规范定义了栈配置。所有遵循此栈配置的设备可以在其它开发商开发的遵循同样栈配置的网络中使用。

zigbee协议栈深入详解

zigbee协议栈 2010-03-10 15:11 zigbee协议栈结构由一些层构成,每个层都有一套特定的服务方法和上一层连接。数据实体(data entity)提供数据的传输服务,而管理实体(managenmententity)提供所有的服务类型。每个层的服务实体通过服务接入点(Service Access Point.SAP)和上一层相接,每个SAP提供大量服务方法来完成相应的操作。 ZigBee协议栈基于标准的OSI七层模型,但只是在相关的范围来定义一些相应层来完成特定的任务。IEEE 802.15.4—2003标准定义了下面的两个层:物理层(PHY层)和媒介层(MAC层)。ZigBee联盟在此基础上建立了网络层(NWK 层)以及应用层(APL层)的框架(framework)。APL层又包括应用支持子层(Application Support Sub—layer,APS)、ZigBee的设备对象(ZigBee Device 0bjects。ZD0)以及制造商定义的应用对象。 1物理层(PHY) IEEE802.15.4协议的物理层是协议的最底层,承担着和外界直接作用的任务。它采用扩频通信的调制方式,控制RF收发器工作,信号传输距离约为 50m(室内)或150m(室外)。 IEEE802.15.4.2003有两个PHY层,提供两个独立的频率段:868/915MHz 和2.4GHz。868/915MHz频段包括欧洲使用的868MHz频段以及美国和澳大利亚使用的915MHz频段,2.4GHz频段世界通用。 2媒体访问控制层(MAC) MAC层遵循IEEE802.15.4协议,负责设备间无线数据链路的建立、维护和结束,确认模式的数据传送和接收,可选时隙,实现低延迟传输,支持各种网络拓扑结构,网络中每个设备为16位地址寻址。它可完成对无线物理信道的接入过程管理,包括以下几方面:网络协调器(coordinator)产生网络信标、网络中设备与网络信标同步、完成PAN的入网和脱离网络过程、网络安全控制、利用CSMA—CA机制进行信道接入控制、处理和维持GTS(Guaranteed Time Slot)机制、在两个对等的MAC实体间提供可靠的链路连接。 数据传输模型: MAC规范定义了三种数据传输模型:数据从设备到网络协调器、从网络协调器到设备、点对点对等传输模型。对于每一种传输模型,又分为信标同步模型和无信标同步模型两种情况。 在数据传输过程中,ZigBee采用了CSMA/CA碰撞避免机制和完全确认的数据传输机制,保证了数据的可靠传输。同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。 帧结构定义: MAC规范定义了四种帧结构:信标帧、数据帧、确认帧和MAC命令帧。

Z-Stack协议栈代码介绍

8.1 TI Z-Stack协议栈代码介绍 TI公司在提供Zigbee无线单片机CC2530的同时,也提供了Z-Stack协议栈源代码,以方便设计人员将Z-Stack直接移植到CC2530上使用,使其支持IEEE 802. 15. 4/ZigBee 协议。TI也提供比较多的工具软件,如CC2530的FLASH编程软件,包监视分析软件,以及一些在协议之上的应用案例,简单点对点通信软件、智能家居应用软件等。 为了使我们自己的系统稳定可靠运行,必须保证硬件的设计稳定可靠,满足需要的功能要求外,软件的设计也是同样重要的。为了使整个系统能很好的正常工作,必须让软硬件协同操作,在TI的Z-Stack协议栈之上开发我们自己的软件系统,不愧为一种很好的、省力的方式。自己去写Z-Stack协议栈代码并让其稳定运行是不现实的,不是投入太大就是时间太长。这样,对TI的Z-Stack协议栈代码进行必要的了解是非常必要的。 通过IAR软件打开TI的Z-Stack协议栈,如下图所示: 第一次打开工程印象最深刻的就是左边一排文件夹,非常多,很庞杂,感觉无从下手。我们先不深入目录之下,先了解每个目录放的是什么内容,那么知道各个文件夹大概是什么功能,分布在 ZIGBEE 的哪一层,那么在以后的工作中无论是查询某些功能函数还是修改某些功能函数,甚至是添加或删除某些功能函数就能顺利的找到在什么地方了,方便对Z-Stack协议栈软件的更深入的学习了解。 下面对Z-Stack协议栈的文件夹进行介绍:

APP(ApplicationProgramming):应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 APP:用户应用程序及接口,包括串口数据处理、无线接收数据处理、用户LCD显示处理、传感器数据读取和发送等。 HAL(Hardware (H/W) Abstraction Layer):硬件层目录,包含有与硬件相关的配置和驱动及 操作函数。 MAC:MAC 层目录,包含了 MAC 层的参数配置文件及其 MAC 的 LIB 库的函数接口文件。 MT(Monitor Test):实现通过串口可控各层,于各层进行直接交互。 NWK(ZigBee Network Layer):网络层目录,含网络层配置参数文件及网络层库的函数接口文件,APS 层库的函数接口 OSAL(Operating System (OS) Abstraction Layer):协议栈的操作系统。 Profile:AF(Application work)层目录,包含 AF 层处理函数文件。 Security:安全层目录,安全层处理函数,比如加密函数等。 Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 Tools:工程配置目录,包括空间划分及 ZStack 相关配置信息。 ZDO(ZigBee Device Objects):ZDO 目录。 ZMac: MAC 层目录,包括 MAC 层参数配置及 MAC 层 LIB 库函数回调处理函数。 ZMain:主函数目录,包括入口函数及硬件配置文件。 Output:输出文件目录,这个是EW8051 IDE 自动生成的。 Z-Stack 协议栈用操作系统的思想来构建,采用事件轮询机制。当各层初始化之后,系统进 入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,则判断优先级,逐个处理事件。这种软件构架可以极大地降级系统的功耗。 整个Z-Stack 的主要工作流程,大致分为系统启动,驱动初始化,OSAL 初始化和启动, 进入任务轮循几个阶段,下面将逐一详细分析。 1、TI的Z-Stack协议栈启动流程 可打开ZMain文件夹中的ZMain.c文件,查看int main(void)函数,协议栈即从此函数开始运

相关主题