转载地址 http://blog.chinaunix.net/space.php?uid=20788636&do=blog&id=1841379
我们都在说ZigBee 2006协议栈Z-Stack是开源的,但是这个协议栈到底是全部开源的,还是只是开源一部分,让我们来揭开它的“开源”面纱?
Z-Stack是在2007年4月,德州仪器推出业界领先的ZigBee协议栈,Z-Stack符合ZigBee 2006规范,支持多种平台,Z-Stack包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的ZigBee领域占有很重要地位。配合OSAL完成整个协议栈的运行。
Z-Stack只是ZigBee协议的一种具体的实现,我们要澄清的是ZigBee不仅仅有Z-Stack这一种,也不能把Z-Stack等同于ZigBee2006协议,现在也有好几个真正开源的ZigBee协议栈,例如:msstatePAN协议栈,freakz协议栈,这些都是ZigBee协议的具体实现,而且是全部真正的开源的,它们的所有源代码我们都可以看到,而Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。那下面我们就以Z-Stack1.4.3-1.2.0看看它的组织架构,那些功能是开源的,那些是以库文件的形式提供给我们的。我们利用Z-Stack开发应用,只能知道怎么做和做什么也就是“how”和“what”,而不能准确的知道“为什么”,“why”.我们也可以通过真正这些开源的ZigBee协议栈了解为什么。
我们可以从TI的官方网站下载最新的协议栈,
http://www.ti.com/zigbee
我这里的是ZigBee2006版本为版本的。下载完以后我们可以点击EXE文件进行安装,默认会在C盘的根目录下建立Texas Instruments目录,该目录下面的子目录就是安装Z-Stack的文件。下面的这个图就是Z-Stack协议栈的目录结构,
根目录下有一个Getting Started Guide CC2430.pdf文件,是安装卸载协议栈的说明文件,另外三个文件夹分别是Documents Components 和Project。
1.Documents
Documents文件夹包含了对整个协议栈进行说明的所有文档信息,下面有很多的PDF格式的文档,内容比较多,不过也无需全部的细读,我们可以把它们当做参考手册,根据需要来阅读。
2. Components
Components文件夹是Z-Stack协议栈的各个功能部件的实现,本文件夹下包含的子目录如下:
1)hal文件夹为硬件平台的抽象层
2)mac文件夹包含了802.15.4物理协议的实现说需要代码文件的头文件,由于TI公司处于某种考虑,这部分并没有给出具体的源代码,而是以库文件的形式存在.\Projects\zstack\Libraries文件夹给出
3)mt 文件夹包含了为系统添加在电脑上有Z-tools调试的功能所需要的源文件
4)osal包含了操作系统抽象层所需要的文件
5)service文件夹保护了Z-Stack提供的两种服务:寻址服务和数据服务所需要的文件
6)stack文件夹是components文件夹最核心的部分,是ZigBee协议栈具体实现部分,在在其下有分为了af(应用框架),nwk(网络层),sapi(简单应用接口)、sec(安全)、sys(系统头文件),zcl(ZigBee簇库),zdo(ZigBee设备对象)等7个文件夹。
7)zmac文件夹包含了Z-Stack MAC 导出层文件。
还有一个Project目录,该目录下包含了用于Z-Stack功能演示的各个项目的例子。可供开发者们参考。
从上面我们可以看到其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。如果要获得这部分的源代码可以向TI购买,可能花费不菲,可要大几万人民币。TI所谓的“开源”只是提供给我们一个平台,开发者可以在上面做应用而已,而绝不是我们通常理解的开源。也就我们在下载后源代码后,有些函数我们根本无法查看到它们的源代码的原因。现在TI公司提供的CC2480芯片,已经把这个协议栈固化到了硬件中,我们只需要掌握几个简单的API就可以完成基本的应用开发。现在也有公司开发出了基于AT指令集的ZigBee协议栈,更方便开发了。
在前面也提到过一些真正开源的ZigBee协议栈,不过这些协议栈没有大的商业公司的支持,开发升级方面,性能方面和TI公司的还是有很大的差距,这里就简单的介绍几个:
(1)msstatePAN协议栈
msstatePAN协议栈是由密西西比大学的R.Reese教授为广大无线技术爱好者开发的精简版ZigBee协议栈,基于标准C语言编写,基本具备了 ZigBee协议标准所规定的功能,最新版本为V0.2.6,该版本支持多种开发平台,包括PICDEM Z、CC2430评估板、MSP430+CC2420(Tmote)以及WIN32虚拟平台。源代码是开放的,整个协议栈是基于状态机(FSM)实现的。如果你的程序构架不是基于操作系统的,有限状态机应该是一个很好的选择。而且OS(operating system)中进程的状态也是个各个状态间的切换。
该协议栈的网站地址如下 http://www.ece.msstate.edu/~reese/msstatePAN/
在网站上我们可以看到起最近的更新是在2007年,到目前为止已经有三年多的时间没有更新升级了。
(2)freakz协议栈和contiki操作系统。
freakz是一个彻底的开源zigbee协议,配合contikj操作系统,相当于Z-Stack+OSAL。相对于另外一个开源的WSN(Wireless Sensor Networking,无线传感网)操作系统TinyOS来讲,contiki的代码全部为C语言写成,用GCC进行编译,对广大应用C语言多年的开发者 来说,减少了学习另外一种语言与编译平台所带来的时间花费。
其下载地址如下:
http://www.sics.se/contiki/
http://sourceforge.net/projects/freakz/
这里介绍一个专门研究开源ZigBee协议的网站,主要是frankz协议栈,已经写了很多好的文章。下面是他们的网站:
http://www.feibit.com/
(3) TinyOS :
TinyOS是UC Berkeley(加州大学伯克利分校)开发的开放源代码操作系统,专为嵌入式无线传感网络设计,操作系统基于构件(component-based)的架构使得快速的更新成为可能,而这又减小了受传感网络存储器限制的代码长度。TinyOS的构件包括网络协议、分布式服务器、传感器驱动及数据识别工具。它只是一个操作系统,不过现在已经成立了 TinyOS ZigBee Working Group 已经开始设计开源的zigbee。非常值得我们的期待。
下载地址如下:
http://www.tinyos.net/