搭建一个基于zigbee的小型物联网系统,今天开始记录学习历程
1,zigbee协议栈的实质就是一个实时内核(RTOS)+ 一套通信协议。
2,路由器、协调器、终端设备的主要区别是软件层次的,在硬件方面,这三者完全可以是同样的东西。协调器负责启动、配置整个网络,一旦完成他的任务,协调器一般就退居二线,起到一个终端设备或路由器的功能。路由器主要完成通信中继的功能。终端设备大部分时间处于睡眠状态。
3,网络结构主要有星型、树状、簇状三种,在zigbee协议栈的网络层代码中用#define进行了定义。
4,zigbee信标模式和非信标模式,常用的是非信标模式。
5,zigbee设备有两种类型的地址。第一种是64位的IEEE地址,即MAC地址,全球唯一;第二种是16位的网络地址,协调器的网络地址为0x00,协调器负责给路由器、终端设备分配地址。
6,z-stack是半开源的协议栈,我们并不是能清楚的看到每个层的源码,部分代码是以库的形式提供的。一般情况下,我们至少应该读懂硬件抽象层和设备对象层的代码,这里需要自己添加自己想要的功能。硬件抽象层里面有系统消息事件、led事件、键盘事件。在设备对象层里面有系统消息事件、ZDO状态改变事件、网络初始化事件、网络启动事件、网络更新NV事件、设备重启事件。应用层事件有系统消息事件、允许绑定时间事件、绑定时间事件、进入事件、用户事件等等。
7,Zigbee协议栈的实时性要求不是很高,因此在设计任务调度程序的 时候,OSAL(操作系统抽象层)采用了轮询调度队列方式进行任务调度。
任务号越小,任务优先级越高。MAC层优先级最高,应用层任务优先级最低。OS按优先级高低去执行事件,周而复始去轮询。
zigbee工程文件目录介绍:
APP :应用层文件,*.c和*.h,可根据项目需要进行添加和修改
HAL :硬件抽象层,对应于物理层(PHY)
MAC ,ZMac :与数据链路层有关的文件,其中的的文件不能修改,都是做好的库文件和API,是不开源的,不需要做任何修改
MT :串口调试相关的文件
NWK :网络层的文件,均是*.h文件,是API,直接使用,不需要添加、修改
OSAL :与操作系统(OS)有关的文件
Profile :协议栈规范相关的文件
Security :有关安全机制的文件,不做任何修改
Services :服务相关的文件
Tools :一些配置文件,比如协调器、路由器的配置信息,不需要做修改
ZDO :zigbee设备对象层文件,很重要,通过此目录中的文件可知道协议栈运行的过程,要求读懂
ZMain :整个协议栈的入口,main函数就在这个目录中,读程序一般要从这个目录读起
Output :工程的输出文件,其中的*.map是整个工程编译输出的情况,包含内存的分配、代码量大小之类的信息
Zigbee术语:
NV :非易失性存储器,如nand flash
FFD :全功能设备,如路由器、协调器
RFD :半功能设备,如终端设备节点
簇 :多个属性的集合,每个簇有一个唯一的ID
描述符 :一个设备可以有240个端点,每一个端点必须有一个端点描述符,它是一个结构体