找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3391|回复: 0
打印 上一主题 下一主题
收起左侧

Zstack之文件结构梳理

[复制链接]
跳转到指定楼层
楼主
ID:76127 发表于 2015-4-18 00:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    TI的Zigbee解决方案Zstack提供了一整套基于TI的CC253X系列芯片的Zigbee解决方案。从TI官方网站上下载下来的Zstack安装文件安装完成后是一个文件夹。很多人在刚接触的时候很难使用这个文件夹里的东西进行Zigbee开发,这确实非常出乎TI的风格,使用过TI的CCS软件的朋友就能感受到,CCS在引导使用方面做得相当地完善,而这个呢,还要自己去搞个IAR,然后面对一堆文件夹不知道该怎么用。⊙﹏⊙b汗,我觉得学习使用这个首先要明白其结构,从大局上看明白其结构,然后再着重具体细节是一种比较好的深入方式。下面首来看下Zstack文件夹中的相关内容吧。
如图1所示,打开Zstack文件夹,里面有几个文件夹和一个英文的引导手册。

图1
手册实际没说啥有用的,而且Zstack里面的资源文件都是基于TI自家的开发板的,其目录里的user guider文件只有些许参考价值。重要的是几个文件夹,Components文件夹里存放的是Zstack协议栈的各层的接口函数文件,包括hal、mac、mt、osal、stack等。各层都在独立的文件夹中,如图2所示

图2
其中最值得注意的是mac和zstack这两个文件夹,这是整个zstack的灵魂所在。打开各自的子目录,大家可以发现,里面只提供了.h文件,即只提供了所谓的接口调用,这就是所谓的TI的不开源协议栈的方式。这两层大家都只能够调用,而不能查看具体的源代码。而其他子文件夹中,有很多是开源的,比如说osal文件夹,这是TI的Zstack小型操作系统的资源文件所在,在其中我们可以看见不光提供了.h调用,甚至还提供了诸如Osal_timer.c各模块的源文件和Osal.c主源文件,有兴趣的朋友可以根据这些源代码把OSAL移植到其他架构的单片机上去哦。这是关于Components文件夹的介绍,其中存放了Zstack工程所必需的各种源文件和调用声明。至于不开源的部分的库文件在哪里,后面再做介绍。
Documents文件夹中包含了TI官方提供的认为有助于进行Zstack开发的文档,这里面的东西都相当的实在和给力,建议大家在接触使用时,多参看其中的文档,很多东西在这些文档中都已经做了很详细和深刻的介绍和使用了。其他的中文辅助资料,个人认为没啥大用,有时候还会误导他人,反而很久都搞不定。

Tools文件夹存放的是上位机调试工具,在Zstack中通过预编译宏定义启用了MT(Moniter ang Test)层之后,可以使用这里面的工具获取Zstack工程在运行中的各种状态参数,说白了,就是中国工程师们所惯用的串口调试打印,把一些关键的参数状态通过串口打印出来,只不过这里TI给你做好了,而且是上位机都做好了,我们只需要学习如何调用即可。:)这个文件夹里的工具如何使用在后续再做具体介绍。

最后一个文件夹也是TI最用心良苦的地方,Projects文件夹,打开该文件夹如图3所示:

图3
这里面包含了很多歌文件夹,但如果大家有仔细地查看每个文件夹,就会发现其实这些个文件夹里面,有多个其中的内容是相近的。大体上这些文件夹分为三类,第一类也是使用Zstack协议栈所必须的文件Zmain.c文件,该文件存放于Zmain文件夹中,并根据Zigbee解决方案又分为两类,如图4所示:TI2530DB和TI2530ZNP。

                     图4
首先要明确的是一点,Zmain.c文件在每个Zstack工程中仅且有一个,而图5所示的两个文件夹中各自有一个Zmain.c文件,说明了这两个文件夹对应两种不同的解决方案所采用不同的Zmain.c文件。TI2530DB 表示的是基于TI 2530芯片为核心的Zigbee解决方案,而ZNP呢,ZNP即Zigbee and Processor,即CC2530+MCU的解决方案,这也是TI所提供的两种不同的解决方案,具体的在Documents文件夹中有相关的介绍文档。
第二类文件即库文件,上面在介绍Components文件夹中就说了,TI 的MAC和Zstack是不开源的,在Compoents文件夹中仅提供了.h文件供调用,而库文件.lib就在这里,Libraries文件夹中,大家打开该文件夹可以发现TIMAC和Zstack的库文件,如图5、6所示:

图5

图6
剩下的几个文件夹中内容就是TI提供Zstack使用的模板了。这些个文件夹中都包含了一个或多个工程,比如Samples文件夹,很多教程都喜欢以它为例,里面内容如图7所示:

图7
这里面很显然包含三个不同的工程,GenericApp、SampleApp、SimpleApp,点击其中一个GenericApp工程的文件进入,可以看见又有两个文件夹,如图8所示:

图8
这两个文件夹中,其中CC2530DB是IAR工作空间文件,包含了相应的各种工程设置,都是官方预先设置好了的,是适用于一定的应用场合的设置。而Source文件夹中一般包含三个文件,也是我们进行Zigbee开发所需要进行自行编辑的三个文件,app.h、app.c、OSAL_app,这三个文件中app.c是具体的适用于自己应用的应用进程函数所在之处,.h当然就是调用了,OSAL_app.c里面包含了三个最主要的东西,初始化系统时所需要对应用app的初始化和对应的事件处理函数,还有就是任务事件处理指针数组。这也是一般在此文件中需要修改的地方。这就是整个Zstack的结构,调用,库,工程设置,应用源文件这几部分。其余的几个文件夹中,也是同样的结构,它们都是提供了适用于各方面应用的模板工作空间和对应的源代码。我觉得模板两个字足以概括出TI的Zstack提供这款协议栈的方式所在。

该文是自己在学习使用Zstack过程中的一些心得体会,其中可能会有一些错误和不清之处,欢迎大家指出并一起讨论研究。:)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表