协议栈中包含了ZigBee协议的完整实现,再加上实现了一个简易操作系统层,因此文件数较多。TI公司已经对所有文件进行了合理的组织,使用ZStack的所有的工程都会包含有如图4-13所示的文件组织。
在ZStack项目中大约有14个目录文件,目录文件下面又有很多的子目录和文件。下面就来看看这14个根目录,具体是起什么作用。
可以看出ZStack将整个协议的实现分成了若干个文件夹,每个文件夹也可以看成是某一个层的实现。比如NWK文件夹中是实现了ZigBee协议网络层,App文件夹则是实现了协议的应用层等。几个需要修改移植的文件夹所实现的功能如下:
1)App:应用层目录,里面的文件为创建新项目中的应用时要添加的文件。
2)HAL:硬件接口目录,包括3个子目录。Com-mon目录,里面是一些与硬件无关的公用文件。Include目录,包含了各个硬件模块的头文件,如串口操作模块、传感器模块、LED交互模块等的头文件。Target目录,包含了与底层硬件相关的各硬件接口模块的实现文件。
图4-13 ZStack在项目中的 目录结构图
3)NWK:协议网络层目录,含有对应的配置参数文件及该层的函数接口文件。本层中并未给出源代码,但给出的接口设计良好,已足够构建所需的传感器网络。(www.daowen.com)
4)OSAL:协议栈的操作系统抽象层目录。关于操作系统的抽象层,后面再详细介绍。
其他文件夹的主要功能为:Profile,AF层目录;Application Framework(应用框架),包含AF层处理函数接口文件;MT,与协议无关的调试文件;Security,安全层,包含该层处理函数接口文件;Services,协议设备地址处理函数;Tools,工作配置目录,一些ZStack配置信息;ZDO,设备对象;Zmain,其中的Zmain.c包含整个项目的入口函数main()。
从main()函数开始,对各函数的调用流程进行跟踪,并参考TI公司所给的一些资料,可以总结出ZStack协议栈的整个执行过程。正如前面协议栈结构图中所示,系统的核心是一个简易的管理系统——OSAL(操作系统抽象层)。底层的接口和协议栈实现以后,可以在系统中使用,并以此为基础建立高层的传感器网络应用。在OSAL开始管理系统之前,需要相应的初始化。整个ZStack的执行流程可以归纳为:程序启动、驱动初始化、OSAL初始化和启动、OSAL系统运行几个阶段。
由于TI公司所给的ZStack 2.5版本都是根据TI公司的开发板而设计的,因此只有购买CC2430的几个版本的开发板(2430DB,2430BB等),才能直接使用所下载的1.4.3版本协议栈。但开发板昂贵,并且为方便学习,板上资源较多,包括了按键、LCD显示屏、摇杆等,并不适合实际的建网中使用。本系统中设计的节点硬件电路与开发板完全不同,因此需要对默认的协议栈进行一定的修改移植后才能使用。整个ZStack协议栈中,与底层硬件有关的模块为硬件接口模块和ZigBee协议实现部分。其中协议实现部分只与MCU和无线芯片有关,因此在同样使用CC2530芯片的情况下并不需要修改。主要的移植就是修改项目文件组织中的HAL文件夹和硬件接口中的各文件。
根据自己的设计需要,可以修改的目录为:①修改HAL目录下target子目录中的hal_board_cfg.h文件,此文件为对实际电路板的配置文件,所以删除掉其中所设计电路不包含的相关元素,包括LCD显示屏、摇杆;②删除HAL目录下common子目录中的原有硬件接口实现文件;③在target子目录下添加自己的硬件接口文件,主要有LED操作函数文件、UART串口收发实现文件、传感器数据获取实现文件等。ZStack协议栈运行流程图如图4-14所示。
图4-14 ZStack协议栈运行流程图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。