Z-Stack原理阐述 ZigBee联盟定义的ZigBee协议栈结构包括物理 层、MAC层、网络层和AF应用层,协议栈底层支持IEEE802.15.4协议, 操作系统抽象层OSAL提供了程序执行过程中任务的注册、任务间信息传递、任务的同步、中断处理、时间片管理、内存的管理和分配等功能。 ZigBee的组网类型主要分为三种:星型、树型和网状类型,在实际的组网过程中,根据具体的应 用场景设置不同的组网类型。星型网络是最常见的一种无线网络拓扑结构,在该拓扑结构中,只包含一个协调器节点,每个终端节点之间的数据通过协调器进行转发,协调器节点在网络中数据转发非 常频繁,由于节点都是采用电池供电,所以在星型 网络中容易出现网络分割现象。在树型网络拓扑结构中,除了协调器节点之外,还有若干路由器节点负责数据端到端转发。网状结构组成的网络拓扑比较灵活,根据存储的路由表进行数据传输。 Z-Stack协议栈是一个基于任务轮询方式的操作系统,其任务调度和资源分配由操作系统抽象层OSAL管理着。可以理解为:Z-Stack协议栈 = OSAL操作系统 + CC2530硬件模块 + AF无线网络应用。总体来看,Z-Stack协议栈只做了两件事情:首先进行系统的初始化,然后启动OSAL操作系统。在任务轮询过程中,系统将会不断查询每个任务是否有事件发生,如果有事件发生,就执行相应的事件处理函数,如果没有事件发生,则查询下一个任务。 深入理解OSAL的调度机制和工作机理,是灵活应用Z-Satck协议栈进行Zigbee无线应用开发的重要基础。深入的理解OSAL操作系统的关键是要理解任务初始化函数osalInitTasks()、任务标识符taskID、任务事件数组taskEvents[]和任务事件处理函数指针数组tasksArr[]之间的对应关系以及它们在OSAL运行过程中的执行情况。 APP:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。 用户只需要额外添加上图中的三个文件(主文件、头文件、操作系统接口文件)就可以完成一个项目,然后编写自己的额任务处理函数就可以了。 HAL:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。 Common目录下的文件是公用文件,基本上与硬件无关,hal_assert.c文件是断言文件,用于调试,hal_drivers.c是驱动文件,抽象出于硬件无关的驱动函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,Target目录下的文件是跟硬件平台相关的,可以看到有两个平台,其中我们正在用的是CC2530EB平台。 MAC:MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件。 MT:监控调试层,主要用于调试目的的,即实现通过串口调试各层,与各层进行直接交互。 NWK:网络层目录,涵网络层配置参数文件及网络层库的函数接口文件,APS层库的函数接口。 OSAL:协议栈的操作系统。 Profile:AF层目录,包含AF层处理函数文件。 Security:安全层目录,安全层处理函数接口文件,比如加密函数等。 Services:地址处理函数目录,包括着地址模式的定义及地址处理函数。 Tools:工程配置目录,包括空间划分和Zstack相关的配置信息。 ZDO:ZDO目录。 ZMac:MAC层目录,包括MAC层参数配置及MAC层LIB库函数回调处理函数。其中Zmac.c是ZStack MAC层接口文件,Zmac_cb.c是ZMAC需要调用的网络层函数。 ZMain:主函数目录,包括入口函数main()及硬件配置文件。Z-Stack有main()函数开始执行,main()中Zmain.c中该函数共做了两件事:一是系统初始化,另外是开始执行轮训查询式操作系统,OnBoard.c中包含了对硬件开发平台各类外设进行控制的接口函数。 Output:输出文件目录层,这个EW8051 IDE自主设计的。 |