在ZStack中主要使用C语言进行开发,在一些对时间要求比较严格的操作环节也使用汇编语言进行时序控制。而ZStack编程中使用的工具也是大家熟悉的工具IAR。
ZStack主要的开发平台是IAR Systems。
而ZStack从2004年发展至今所经历的IAR版本又各不相同,各版本ZStack对应的开发环境及开发版本如图4-16所示。
1.系统的开发环境
本书就以ZStack-CC2540-2.5.1-a为例进行介绍。它的开发需要EW80518.10。安装于系统的D盘,其目录为D:\ProgramFiles。如同Windows操作系统其他一般的软件安装一样,单击setup.exe进行安装。跟随提示一步步安装,当进入提示界面图license填写时请将在IAR官方网站申请的license填入其中。只有license及li-cense key填写正确才能继续下一步安装。
安装目录实际上用户可以任意指定,为了方便讨论我们统一将开发环境安装于D:\Program Files,如图4-17所示。
IAR界面中,工具栏存放一些常用工具,如图4-18所示。对文件的操作工具:新建、打开、保存、打印。对文字代码操作工具:剪切、复制、粘贴。对程序员操作记录的操作工具:恢复、取消恢复。查找与替换工具:向上查找、向下查找、增加查找内容、查找并替换、跳转到光标所在页的某一行某列、设置光标所在行书签标记、跳转到光标所在页的书签位置、代码编辑或者查看的位置导航向后、代码编辑或者查看的位置导航向前。编译仿真调试类工具:简单编译、编译、停止编译、设置调试断点、编译并下载调试、不下载调试。
菜单栏我们重点看看Project菜单File,具体如图4-19所示。
图4-16 IARSystems
图4-17 安装路径设置
图4-18 IAR界面图
IAR仿真环境如图4-20所示。
2.ZStack其他有用软件
(1)Packet_Sniffer.exe
为了方便ZStack的开发,TI公司还为用户准备了该协议分析软件,由于ZigBee协议是统一的,因此该软件可以用于对所有同频段的ZigBee协议进行分析,将数据包分层拆开并用不同的颜色段区别开,让用户清楚地知道数据帧的构成。
可以看到数据传输方向、数据发生时间差统计、数据源网络地址、目标网络地址等内容。用户可以自由设定用什么协议版本对接收到的数据进行分析,也可以设置过滤掉某些不需要的信息段。注意该软件对已经加密的数据帧是无法拆包分析的,仅能知道收到一个已经加密的数据包。
(2)SmartRFProgr.exe
图4-19 Project菜单栏说明图
图4-20 IAR仿真环境
该软件是TI公司为方便用户在后续量产产品时下载程序和烧写IEEE地址以及加密目标代码提供的软件。目标板及仿真器识别区在识别到仿真器和目标板之后会将仿真器信息以及目标板芯片型号显示出来。目标代码加载区用于指定将要用于下载的目标代码。IEEE编写及保护设置区用于给芯片设备唯一的IEEE地址或者在编程时保护该地址不被擦除。功能选择区用于选择用户接下来要执行的操作,例如擦除芯片、读取目标代码或者下载目标代码。
目标代码加密设置区用于对用户目标代码保护;由于某些Flash可能用于存放参数而不便加密,用户可以指定加密某些Flash页;还可以加密调试接口。
(3)SmartRF_Studio.exe
该软件能够帮助读者学习如何去配置寄存器;也能简单地通过该软件去检测自己研发出的设备硬件的功率性能指标,在没有频谱分析仪时可以作出一些定性的判断。此功能比较实用,对于低成本的RF性能测评已经做得非常优秀,有条件的读者可以试试。
前面介绍了协议,其只是一个数据格式的规范;协议栈是用于解释协议的执行代码。这些代码不能孤立于硬件平台运行,在某些执行过程中需要人机交互以达到某种执行效果或者执行某个过程。这样就涉及支撑ZStack运行的平台。学习ZStack我们必须要有一套开发系统,即使我们能够通过自己所掌握的ZStack相关知识去研发一套适合自己产品的硬件平台,我们也不能忽略一套开发系统在我们认知ZStack环节中的重要性。
3.ZStack开发系统
前面我们提到ZStack版本相当多,承载这些版本的处理器也各有不同,市面上能找到的开发系统多而且混乱。由于TI公司为大家提供协议栈是在一个或者一种固定的硬件平台上运行,通常是在CC2540EB及CC2540DB系统上运行。TI公司提供的ZStack硬件平台如图4-21所示,它包括了读者们常见的一些人机接口,例如LED、LCD、按键、RS242、USB、JTAG等。在学习过程中我们会穿插国内某些大厂商经过二次开发的开发系统,用以介绍如何去改变ZStack设置去适应自己的硬件产品。
(1)ZStack文件结构树
我们将从TI官方网站下载的ZStack-CC2540-2.5.1安装到D:\Texas Instruments目录下;打开该目录我们会得到如图4-22所示的几个文件结构。
1)Components:ZStack的功能组成块,用户在编程时一般以调用为主,可以改但一般不能删,除非用户对各功能块有绝对的了解或者根本用不上,例如一些硬件相关部分。重点我们要看看以下文件包:
hal:该文件包主要存放ZStack底层与硬件寄存器相关的文件,主要包括芯片驱动,板载外围设备驱动,各处理器外设及板载外的休眠处理,以及一些有用的技巧处理文件。hal文件包内包括三个文件夹common,include,Target;其中target里存放的文件就是各实验板板载外设的一些驱动和功耗处理文件。这里的CC2540EB即对应SmartRF05EB开发板资源驱动文件。
图4-21 SmartRF05EB开发板图(www.daowen.com)
mt:该文件包存放了各种管理类型代包,例如ZDO管理代码MT_ZDO。
osal:存放操作系统相关代码。如调度系统,时间管理,内存管理,Flash管理等文件。
stack:该文件包里存放了几乎所有用户可能更改到的协议栈相关文件,其中以Globals,ZDObject,ZDProfile为重点。
2)Projects:该文件包里存放了大量的范例工程及TI公司打包好的路由算法地址分配等功能库。范例工程包括:
HomeAutomation(ZigBee Home Automation):家庭自动化应用模式范例,介绍如何制作一个标准应用模式。
ZBA(ZigBee Building Automation):建筑物智能化应用模式范例,介绍如何制作一个标准应用模式。
SE(Smart Energy):智能能源应用模式范例,介绍如何制作一个标准应用模式。
ZNP(ZigBee Network Processor):ZigBee网络处理器。由于ZStack集成的功能越来越多,代码规模越来越庞大,开发起来就越来越吃力,TI公司为广大用户编写了简单通用代码。该代码一旦固化到CC2540以后,用户只需要将CC2540当作一颗普通的外设芯片操作即可,省去了从立项到产品的开发周期及开发成本。
图4-22 ZStack文件夹
OTA(over the air dowland):无线更新,也叫无线下载,有的设备在安装使用之后有可能需要将代码版本升级而拆下设备来升级代码,显得麻烦并且规模庞大,通过无线方式将执行机器码传递到目标节点后自动执行就成为许多用户的一种选择,该范例介绍了如何去制作一个基于ZigBee的无线下载的基本系统。
3)Tools:该文件包提供学习ZStack的一些辅助工具软件。
协议栈的范例很多功能比较复杂,但整个程序构架和运行机制是完全一样的,只是不同的范例列举了不同的协议解析功能块,例如不同的应用模式就用应用模式的标准来解析通过ZigBee得到的数据,OTA就是用自己的标准来解析通过ZigBee得到的数据,而我们要会应用就必需首先了解ZigBee的运行机制,传数如何发生,如何保证其可靠性,而不必要去完整研究ZigBee的每一个数据交换的格式以及每一个应用模式。
(2)ZStack项目工程结构
ZStack项目工程结构主要包括以下几个文件包,如图4-23所示。
APP:存放用户应用层所有代码,用户的几乎所有代码都存放于此。
HAL:用户对于底层硬件驱动定义,协议栈调用的底层函数库均存放于该文件包。
MAC:802.15.4MAC层处理文件。
MT:各层接口,回调管理类型代码存放处。
NWK:网络层代码存放处。
OSAL:操作系统内核相关代码存放处。
Profile:应用模式相关代码存放处,无应用模式工程默认只存放AF(Application Frame-work)代码。
Tools:存放全局扩展编译控制代码。
ZDO:存放ZDO代码。
ZMain:主函数与函数入口存放处。
4.ZStack编程
ZStack协议栈入口都是从ZMain.c中的main同一入口开始运行。其执行流程图如图4-24所示。
图4-23 工程结构图
图4-24 ZStack协议栈执行流程图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。