TIZstack协议栈开发环境和工作流程
- 格式:doc
- 大小:112.50 KB
- 文档页数:10
【⽆线通信篇Zstack协议栈】CC2530ZigbeeZstack协议栈组⽹项⽬及详细讲解篇物联⽹⽆线通信技术,ZigBee⽆线传感⽹络CC2530最⼤的特点就是⼀个拥有⽆线收发器(RF)的单⽚机,既能实现单⽚机功能,也能实现⽆线传输Zstack协议栈是ZigBee协议栈⾥的翘楚,是ZigBee组⽹的⾸选协议栈项⽬实现功能:l 总共有三个端点,⼀个协调器和两个终端节点l 终端节点1连接DHT11温湿度传感器,定时上传给协调器l 终端节点2连接LED,可以通过协调器按键控制,定时上报LED开关状态l 协调器连接12864 OLED 屏幕,实时显⽰温湿度和LED状态l 协调器可以通过按键控制终端2的LED开关,控制后将会显⽰控制结果扩展功能(当前未实现,可进⼀步开发实现):l 连接协调器串⼝,将终端节点采集的数据通过串⼝发送,PC写上位机实现数据展⽰l 连接WIFI或者4G模块,WIFI模块如ESP8266,实现数据局域⽹⽆线传输或者上传到OneNET、机智云、阿⾥云、⾃⼰开发云服务器等,实现WEB或⼿机APP显⽰和控制。
⼀、项⽬测试(可想⽽知,⼴州的天⽓有多热,39℃了都)实现功能汇总:l 总共有三个端点,⼀个协调器和两个终端节点l 终端节点1连接DHT11温湿度传感器,定时上传给协调器l 终端节点2连接LED,可以通过协调器按键控制,定时上报LED开关状态l 协调器连接12864 OLED 屏幕,实时显⽰温湿度和LED状态l 协调器可以通过按键控制终端2的LED开关,控制后将会显⽰控制结果(⼀) 环境汇总芯⽚:CC2530F256Zstack协议栈:ZStack-CC2530-2.5.1a编程环境:IAR(⼆) 引脚分配协调器:128*64 OLED 0.96⼨屏幕供电:3.3V通信协议:IIC引脚:SDA P0_6SCL P0_7按键:IO:P0_1下降沿触发中断终端1:DHT11:通信⽅式:单总线协议供电:3.3VIO:P0_6终端2:LEDIO:P1_0说明:⾼电平点亮,低电平熄灭⼆、基础认识(⼀) CC2530单⽚机CC2530最⼤的特点就是⼀个拥有⽆线收发器(RF)的单⽚机,既能实现单⽚机功能,也能实现⽆线传输。
协议栈的主要工作流程姓名:____________________________职位:____________________________联系方式:____________________________姓名:____________________________职位:____________________________联系方式:____________________________根据《劳动合同法》及相关法律法规,结合实际工作情况,为明确薪酬追索及扣回的相关事宜,双方经友好协商,达成如下补充协议:1. 协议背景1.1 为了保障银行的合法权益,明确薪酬追索及扣回的条件,双方依据《劳动合同法》和《银行劳动合同》的相关条款,制定本补充协议,以规范薪酬追索及扣回的程序和要求。
1.2 本协议旨在补充和完善原劳动合同中的薪酬管理条款,以便在出现薪酬错误支付、超额支付或其他需要扣回薪酬的情况下,能有明确的操作规范和解决方案。
2. 薪酬追索扣回条件2.1.1 银行因误操作或其他原因,错误支付了超出应支付金额的薪酬。
2.1.2 员工因故意隐瞒或虚报事实,导致银行支付了超额薪酬。
2.1.3 员工在合同终止或劳动关系变动后,银行发现有误发薪酬情况需要进行追索。
2.1.4 其他法律法规或合同约定的情形。
2.2 乙方确认上述条件成立时,银行将有权按照本协议的规定进行薪酬追索或扣回。
3. 扣回金额和方式3.1 扣回金额的计算应以实际支付金额和实际应支付金额之间的差额为准。
银行应提供详细的扣回金额计算依据和相关证明材料。
3.2.1 一次性扣回:银行在通知乙方后,直接从乙方下一期薪酬中扣除相关金额。
3.2.2 分期扣回:银行与乙方协商,按照一定的分期计划进行扣回,每期扣回金额不超过乙方月薪的30%。
3.2.3 其他双方协商确定的合理方式。
4. 追索和扣回程序4.1 银行发现需要追索或扣回薪酬的情况后,应立即书面通知乙方,说明扣回的原因、金额和计算依据。
竭诚为您提供优质文档/双击可除zstack协议栈简介篇一:zstack完整资料\zigbee\南京\cc2530模块资料(天线杆版本)\cc2530模块资料(天线杆版本)\相关的学习文档\zstackosal详解.pdf\zigbee\南京\cc2530模块资料(天线杆版本)\cc2530模块资料(天线杆版本)\相关的学习文档\zigbee技术实践教程.pdf\zigbee\z-stack\z-stack_api.pdf配置cc2530的第2功能时,不需要配置方向寄存器,否则可能出错hal_key.c下的halkeyconfig()函数中/*Rising/Fallingedgeconfiguratinn*/hal_key_joy_moVe_ictl/*cleartheedgebit*//*Forfallin gedge,thebitmustbeset.*/#if(hal_key_joy_moVe_edge==hal_key_Falling_edge) hal_key_joy_moVe_ictl|=hal_key_joy_moVe_edgebit;#endif有错,应将hal_key_joy_moVe_ictl改为pictl1zigbee协议架构1.1zigbee简介zigbee是ieee802.15.4协议的代名词。
根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。
这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。
其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。
主要适合用于自动控制和远程控制领域,可以嵌入各种设备。
zigbee是一种新兴的短距离、低速率、低功耗无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术提案。
它此前被称作“homeRFlite”或“FireFly”无线技术,主要用于近距离无线连接。
协议栈开发1. 简介协议栈开发是指基于特定的通信协议,在硬件和软件之间建立通信连接的过程。
协议栈是网络通信中的重要组成部分,它负责处理数据传输、错误检测和纠正、安全认证等功能。
本文将介绍协议栈开发的基本概念、流程和注意事项。
2. 协议栈开发流程协议栈开发的流程可以分为以下几个步骤:2.1 需求分析在协议栈开发之前,需要明确开发的目标和需求。
这包括确定支持的通信协议、功能需求、性能要求等。
通过需求分析,可以明确开发的方向,为后续的设计和实现提供指导。
2.2 设计根据需求分析的结果,进行协议栈的设计。
设计包括协议层次结构的划分、协议之间的关系定义、数据结构的设计等。
设计的目标是实现协议栈的功能,并提高其性能和可扩展性。
2.3 实现在设计完成后,根据设计文档进行协议栈的实现。
实现可以使用不同的编程语言和开发工具,开发人员需要按照设计要求完成代码编写、模块集成和功能测试等任务。
2.4 集成与测试协议栈的开发完成后,需要进行集成测试和系统测试。
集成测试是指将各个模块集成到一起,测试其整体功能和稳定性。
系统测试是指在实际环境下对协议栈进行测试,验证其性能和可靠性。
2.5 优化与维护在协议栈开发的过程中,可能会遇到性能瓶颈和bug等问题。
优化是指对协议栈进行性能调优,提高其运行效率。
维护是指对协议栈进行修复和升级,保证其长期稳定运行。
3. 协议栈开发的挑战协议栈开发面临着一些挑战,包括:3.1 复杂性协议栈开发涉及到多个层次的协议设计和实现,需要考虑各个层次之间的交互和兼容性。
同时,协议栈的功能非常复杂,涉及到数据传输、错误控制、安全性等多个方面。
3.2 兼容性协议栈需要兼容不同的通信协议和硬件平台,这需要对不同的标准和规范进行理解和实现。
同时,协议栈还需要考虑不同版本的协议之间的兼容性。
3.3 性能和效率协议栈需要在有限的资源下实现高性能和高效率的数据传输。
这需要对算法和数据结构进行优化,并考虑到实际应用场景中的性能要求。
T I Z s t a c k协议栈开发环境和工作流程精编 Document number:WTT-LKK-GBB-08921-EIGG-22986TI Z-stack协议栈开发环境和工作流程By KuangJunBinKuangJunBin:如您对本项目感兴趣或者有任何疑问,欢迎与我一起探讨:。
谢谢您的阅读!?系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。
节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。
Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。
图 ZigBee节点开发环境TI的Z-Stack装载在一个基于IAR开发环境的工程里。
强大的IAR Embedded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。
Z-Stack根据IEEE 802. 和ZigBee标准分为以下几层:API(Application Programming Interface),HAL (Hardware Abstract Layer),MAC(Media Access Control), NWK(Zigbee Network Layer),OSAL (Operating System Abstract System),Security,Ser vice,ZDO(Zigbee Device Objects)。
使用IAR打开工程文件后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。
该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。
Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。
Zstack协议栈ZNP例程使用说明一、硬件准备1)将ZBeePlus S1或者ZBeeplus M1安装到ZBDC51GB上,配套天线拧到ZBeeplus 模块上,安装完成模块如下图所示。
2)使用交叉RS232电缆连接模块串口到PC机;电池盒装上两节5号1.5V电池,电池盒电缆连接到模块电池盒接口。
如果需要下载代码,将ccdebugger调试电缆连接到模块仿真器接口。
3)检查电池合是否拨到on位置,SW1开关拨到ON位置,模块上电开始工作。
二、编译和下载ZNP例程1)运行IAR 7.6.0以上版本,打开ZStack-CC2530-2.4.0-1.4.0\Projects\zstack\ZNP\CC253x\znp.eww工程文件。
2)编译和下载ZNP代码,如下图所示.1.选择工程配置项CC2530 - Debug。
2.选中ZNP->CC2530-Debug->HAL->TARGET->CC2530ZNP->hal_board_cfg.h文件,双击打开文件。
在文件第62行,将#define xHAL_PA_LNA修改为#define HAL_PA_LNA.(注:这个操作步骤只针对ZBeepls M1模块,ZBeeplus S1模块不要作上述修改操作)3.选择CC2530-Debug,右键弹出菜单,选择Rebuild All。
4.编译完成之后,如果没有错误,点击下载按钮,将程序烧写入模块。
5.采用上述方法下载ZNP程序到其他模块。
三、用Smartrf Flash Programmer下载ZNP代码如果不是从源代码编译下载到模块中,使用光盘上附带的hex文件,可以采用SmartRf Flash Programmer进行程序下载。
1)连接好CCDebugger和ZBeePlus模块;运行SmartRF Flash Programmer程序。
2)选定需要的hex文件,进行程序下载,如果烧写成功会有提示信息。
ZStack协议栈实验概述:ZStack协议栈是一个用于物联网(IoT)设备的开源协议栈,它提供了一套标准的通信协议,使得不同的物联网设备能够互相通信和协同工作。
本文将介绍ZStack协议栈的实验内容,包括实验环境的搭建、实验步骤和实验结果的分析。
实验环境搭建:为了进行ZStack协议栈的实验,首先需要搭建实验环境。
以下是搭建实验环境的步骤:1. 硬件准备:准备一台开发板或者物联网设备,确保其与计算机可以进行连接。
2. 软件准备:下载并安装ZStack协议栈的开发工具包,该工具包包含了开发ZStack协议栈所需的各种工具和库文件。
3. 连接硬件:使用USB线将开发板或物联网设备与计算机连接,并确保连接成功。
4. 配置环境:根据ZStack协议栈的官方文档,配置开发环境并导入相应的库文件。
实验步骤:实验环境搭建完成后,可以开始进行ZStack协议栈的实验。
以下是实验步骤的简要介绍:1. 创建网络:使用ZStack协议栈的工具包,创建一个物联网设备网络。
可以选择使用其中的示例代码,或者根据实际需求编写代码。
2. 添加设备:将其他物联网设备添加到已创建的网络中,以建立设备之间的通信。
可以使用工具包提供的API或者示例代码进行设备的添加。
3. 通信测试:进行设备之间的通信测试,例如发送数据包、接收数据包、远程控制等。
通过观察和分析通信结果,可以评估ZStack协议栈的性能和可靠性。
4. 功能扩展:根据实际需求,对ZStack协议栈进行功能扩展和定制化开发。
可以添加更多的传感器、控制模块或者其他自定义功能。
实验结果分析:完成实验步骤后,可以对实验结果进行分析。
以下是分析实验结果的一些建议:1. 性能评估:分析实验中的通信延迟、传输速率、能耗等指标,评估ZStack协议栈的性能。
可以与其他协议栈进行对比,以得出结论。
2. 可靠性分析:观察实验中的通信稳定性,分析出现的错误或异常情况,并提出改进建议。
3. 扩展性评估:根据实验中的功能扩展操作,评估ZStack协议栈的扩展性和灵活性。
Zstack基本工作原理Z-Stack协议栈是一个基于任务轮询方式的操作系统,其任务调度和资源分配由操作系统抽象层OSAL管理着。
Z-Stack协议栈 = OSAL操作系统 + CC2530硬件模块 + AF无线网络应用总体来看,Z-Stack协议栈只做了两件事情:首先进行系统的初始化,然后启动OSAL操作系统。
在任务轮询过程中,系统将会不断查询每个任务是否有事件发生,如果有事件发生,就执行相应的事件处理函数,如果没有事件发生,则查询下一个任务。
1.系统初始化:系统启动代码需要完成初始化硬件平台和软件架构所需要的各个模块,为操作系统的运行做好准备工作,主要分为:初始化系统时钟,检测芯片工作电压,初始化堆栈,初始化各个硬件模块,初始化 FLASH存储,形成芯片 MAC 地址,初始化非易失变量,初始化 MAC 层协议,初始化应用层协议,初始化操作系统等。
osalInitTasks();得到taskID:在这个函数中,先定义了一个任务ID号,tasksEvents所指向的地址长度是两个字节,然后使tasksEvents指向一个为任务总数*2个字节大小的空间的首地址,并将空间内容初始化为0,这里就可以知道tasksEvents其实就是指向每个任务事件的指针了。
而且不难发现,这个函数中的任务排序和tasksArr[]数组定义的排序是一样的。
事实上,当某个tasksEvents[idx]非空时,就表明有对应该任务的事件要处理,可能是一件,也可能是很多件。
然后通过idx在taskArr[idx]中找到相应的事件处理函数进行处理,处理完了之后有这样一句指令return(events^SYS_EVENT_MSG),当然后面的宏定义可能不一样,这是一个异或处理,1^1=0,1^0=1,也就是说SYS_EVENT_MSG这个事件处理完了清零了,剩下的events继续反馈上去,进行下一轮的循环然后处理。
2.启动OSAL操作系统:系统初始化为操作系统的运行做好准备工作以后,就开始执行操作系统入口程序,并由此彻底将控制权交给 OSAL操作系统。
zstack协议栈ZStack协议栈是针对无线物联网应用而开发的一款协议栈,它提供了一套完整的协议栈解决方案,帮助开发者快速构建和部署无线物联网设备。
ZStack协议栈支持多种无线技术,例如Zigbee、BLE和Wi-Fi,具备优秀的可扩展性和互操作性。
ZStack协议栈的架构包括应用层、网络层、MAC层和物理层。
应用层提供了常见的网络协议和应用框架,方便开发者进行应用开发。
网络层负责网络拓扑的建立和维护,实现了路由协议和网络发现机制,确保设备能够稳定地通信。
MAC层管理设备的通信资源,控制数据传输和接收。
物理层提供无线通信的信号调制和解调功能,保证数据的传输质量。
ZStack协议栈支持自组网功能,可以实现设备之间的自动组网和自动配置。
设备通过探测周围的网络环境和邻近设备来寻找可用的网络,并自动加入。
自组网功能能够极大地简化设备的部署和配置工作,提高了整个系统的可扩展性。
ZStack协议栈还支持多种安全机制,保护设备和网络的安全。
它提供了身份验证、数据加密和完整性保护等安全功能,确保数据在传输过程中不被篡改或窃取。
安全机制的支持可以保护用户的隐私和资产,提高整个系统的可靠性。
ZStack协议栈具备较低的资源需求,适用于资源有限的物联网设备。
它采用了高效的数据压缩和传输算法,减少了数据传输的带宽和能耗消耗。
对于那些电池供电的物联网设备,这一特性非常重要,可以延长设备的电池寿命。
ZStack协议栈还支持多种无线网络技术的混合使用,例如Zigbee和Wi-Fi的混合组网。
这种混合组网的方式可以充分发挥各种无线技术的特点,提高整个系统的灵活性和性能。
除了基本的协议栈功能,ZStack还提供了强大的开发工具和调试工具,帮助开发者进行快速开发和调试。
开发工具包括代码库、示例代码和开发文档,方便开发者参考和使用。
调试工具提供了设备调试和网络分析的功能,帮助开发者快速定位和解决问题。
总之,ZStack协议栈是一款功能强大的无线物联网协议栈,适用于各种无线物联网设备的开发和部署。
从零开始学习Zstack之1Zstack情况:本人采用的是TI的Zstack1.4.3协议,据说这个需要IAR7.30B及以上版本,而目前市面上又没有破解,所以用的人很少,这也是我的机会!呵呵!(傻笑有点多,关键是WORD里没有表情符号,不能正常表达我此时的心情!)正式开始:开始之前在说一句:从TI网站上下载的Zstack的方法就不介绍了。
否则就是从-1开始了而不是从0开始了-----------------我是这么觉得的!第一步:安装Zstack从 TI官方网站上下载的Zstack为:swrc072c.zip,我想这个压缩包大家都认识。
解压之后为:ZStack- CC2430-1.4.3.exe文件。
这个安装文件大家都会了。
默认安装路径为:C:\ Texas Instruments\ZStack-1.4.3。
安装之后在C:\Texas Instruments\ZStack-1.4.3目录下有各PDF文档为:Getting Started Guide CC2430.pdf,不用多说,这个肯定是要看的。
既然把它放到这么前面,说明它是入门中的入门文档。
下面就简单介绍下这个文档:1、介绍了安装ZStack-CC2430-1.4.3.exe需要的硬件软件条件:需要电脑、操作系统为Wi ndows 2000或 Windows XP。
至于更高或更低版本的本人没有尝试。
2、讲了安装流程。
这个有点多余了,这年月哪个有电脑的没有安装上百上千次的软件啊?但是需要强调的是安装路径----默认就好!3、接下来就是让我们看的第一个文档为:Start->Programs->Texas Instruments->ZStack-1.4.3->Z-Stack User’s Guide,既然让我看我就来看看这个文档!!第二步:Z-Stack 用户指导这个文档的更新时间为:2007年12月21日----应该还是比较新的版本。
系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。
节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。
Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。
图 ZigBee节点开发环境TI的Z-Stack装载在一个基于IAR开发环境的工程里。
强大的IAR Embedded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。
Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层:API(Application Programming Interface),HAL (Hardware Abstract Layer),MAC(Media Access Control), NWK(Zigbee Network Layer),OSAL(Operating System Abstract System),Security,Service,ZDO(Zigbee Device Objects)。
使用IAR打开工程文件SampleApp.eww后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。
该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。
Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。
如果同时有几个事件发生,判断优先级,逐次处理事件。
这种软件构架可以极大地降级系统的功耗。
整个Z-stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段,下面将逐一详细分析。
TIZstack协议栈开发环境和工作流程TI Z-stack协议栈开发环境和工作流程By KuangJunBinKuangJunBin: 如您对本项目感兴趣或者有任何疑问, 欢迎与我一起探讨: 。
谢谢您的阅读!系统软件设计是在硬件设计的基础上进行的, 良好的软件设计是实现系统功能的重要环节, 也是提高系统性能的关键所在。
节点设计基于通用性及便于开发的考虑, 移植了TI公司的Z-Stack协议栈, 其主要特点就是其兼容性, 完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。
Z-Stack还支持丰富的新特性, 如无线下载, 可经过ZigBee网状网络( Mesh Network) 下载节点更新。
图 ZigBee节点开发环境TI的Z-Stack装载在一个基于IAR开发环境的工程里。
强大的IAR Embedded Workbench除了提供编译下载功能外, 还能够结合编程器进行单步跟踪调试和监测片上寄存器、 Flash数据等。
Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层: API( Appli cation Programming Interface) , HAL ( Hardware Abstract Layer) , M AC( Media Access Control), NWK( Zigbee Network Layer) , OSAL( Operating System Abstract System) , Security, Service, ZDO( Zigbee Device Objects) 。
使用IAR打开工程文件SampleApp.eww后, 即可查看到整个协议栈从HAL层到APP层的文件夹分布。
该协议栈能够实现复杂的网络链接, 在协调器节点中实现对路由表和绑定表的非易失性存储, 因此网络具有一定的记忆功能。
Z-Stack采用操作系统的思想来构建, 采用事件轮循机制, 当各层初始化之后, 系统进入低功耗模式, 当事件发生时, 唤醒系统, 开始进入中断处理事件, 结束后继续进入低功耗模式。
如果同时有几个事件发生, 判断优先级, 逐次处理事件。
这种软件构架能够极大地降级系统的功耗。
整个Z-stack的主要工作流程, 大致分为系统启动, 驱动初始化, OSAL初始化和启动, 进入任务轮循几个阶段, 下面将逐一详细分析。
图 Z-Stack系统运行流程图Figure . The Flow Chart of Z-Stack系统初始化系统上电后, 经过执行ZMain文件夹中ZMain.c的ZSEG int m ain( )函数实现硬件的初始化, 其中包括关总中断osal_int_disable( I NTS_ALL )、初始化板上硬件设置HAL_BOARD_INIT( )、初始化I/O口InitBoard( OB_COLD )、初始化HAL层驱动HalDriverIn it( )、初始化非易失性存储器sal_nv_init( NULL )、初始化MAC 层ZMacInit( )、分配64位地址zmain_ext_addr( )、初始化操作系统osal_init_system( )等。
硬件初始化需要根据HAL文件夹中的hal_board_cfg.h文件配置寄存器8051的寄存器。
TI官方发布Z-stack的配置针正确是TI 官方的开发板CC2430DB、 CC2430EMK等, 如采用其它开发板, 则需根据原理图设计改变hal_board_cfg.h文件配置, 例如本方案制作的实验板与TI官方的I/O口配置略有不同, 其中状态指示LED2的需要重新设置LED2控制引脚口、通用I/O口方向和控制函数定义等。
当顺利完成上述初始化时, 执行osal_start_system( )函数开始运行OSAL系统。
该任务调度函数按照优先级检测各个任务是否就绪。
如果存在就绪的任务则调用tasksArr[ ]中相对应的任务处理函数去处理该事件, 直到执行完所有就绪的任务。
如果任务列表中没有就绪的任务, 则能够使处理器进入睡眠状态实现低功耗。
程序流程如图3-13所示。
osal_start_system( )一旦执行, 则不再返回Main ( )函数。
OSAL任务调度流程图Figure . The Flow Chart of OSAL SchedulerOSAL任务OSAL是协议栈的核心, Z-stack的任何一个子系统都作为OS AL的一个任务, 因此在开发应用层的时候, 必须经过创立OSAL任务来运行应用程序。
经过osalInitTasks( )函数创立OSAL任务, 其中TaskID为每个任务的唯一标识号。
任何OSAL任务必须分为两步: 一是进行任务初始化; 二是处理任务事件。
任务初始化主要步骤如下:( 1) 初始化应用服务变量。
const pTaskEventHandlerFn tasksArr[ ]数组定义系统提供的应用服务和用户服务变量, 如MAC层服务macEventLoop、用户服务SampleApp_ProcessEvent等( 2) 分配任务ID和分配堆栈内存void osalInitTasks( void )主要功能是经过调用osal_mem_alloc( )函数给各个任务分配内存空间, 和给各个已定义任务指定唯一的标识号。
( 3) 在AF层注册应用对象经过填入endPointDesc_t数据格式的EndPoint变量, 调用 afRegi ster( )在AF层注册EndPoint应用对象。
经过在AF层注册应用对象的信息, 告知系统afAddrType_t地址类型数据包的路由端点, 例如用于发送周期信息的SampleApp_Periodic_DstAddr和发送LED闪烁指令的SampleApp_Flash_DstAdd r。
( 4) 注册相应的OSAL或则HAL系统服务在协议栈中, Z-stack提供键盘响应和串口活动响应两种系统服务, 可是任何Z-Stask任务均不自行注册系统服务, 两者均需要由用户应用程序注册。
值得注意的是, 有且仅有一个OSAL Task能够注册服务。
例如注册键盘活动响应可调用RegisterForKeys( )函数。
( 5) 处理任务事件处理任务事件经过创立”ApplicationName”_ProcessEvent( )函数处理。
一个OSAL任务除了强制事件( Mandatory Events) 之外还能够定义15个事件。
SYS_EVENT_MSG( 0x8000) 是强制事件。
该事件主要用来发送全局的系统信息, 包括以下信息:AF_DATA_CONFIRM_CMD: 该信息用来指示经过唤醒AF D ataRequest( )函数发送的数据请求信息的情况。
ZSuccess确认数据请求成功的发送。
如果数据请求是经过AF_ACK_REQUEST置位实现的, 那么ZSussess能够确认数据正确的到达目的地。
否则, ZS ucess仅仅能确认数据成功的传输到了下一个路由。
AF_INCOMING_MSG_CMD: 用来指示接收到的AF信息。
KEY_ CHANGE: 用来确认按键动作。
ZDO_ NEW_ DSTADDR: 用来指示自动匹配请求。
ZDO_STATE_CHANGE: 用来指示网络状态的变化。
网络层信息Zigbee设备有两种网络地址: 1个是64位的IEEE地址, 一般也叫作MAC地址或者扩展地址( Extended address) , 另一个是16位的网络地址, 也叫做逻辑地址( Logical address) 或者短地址。
64位长地址是全球唯一的地址, 而且终身分配给设备。
这个地址可由制造商设定或者在安装的时候设置, 是由IEEE来提供。
当设备加入Zigbee网络被分配一个短地址, 在其所在的网络中是唯一的。
这个地址主要用来在网络中辨识设备, 传递信息等。
协调器( Coordinator) 首先在某个频段发起一个网络, 网络频段的定义放在DEFAULT_ CHANLIST配置文件里。
如果ZDAPP_ C ONFIG_ PANID定义的PAN ID是0xFFFF( 代表所有的PAN ID) , 则协调器根据它的IEEE地址随机确定一个PAN ID。
否则, 根据Z DAPP_ CONFIG_ PANID的定义建立PAN ID。
当节点为Router或者End Device时, 设备将会试图加入DEFAULT_ CHANLIST所指定的工作频段。
如果ZDAPP_ CONFIG_ PANID没有设为0xFFFF,则Router或者End Device会加入ZDAPP_ CONFIG_ PANID所定义的PAN ID。
设备上电之后会自动的形成或加入网络, 如果想设备上电之后不马上加入网络或者在加入网络之前先处理其它事件, 能够经过定义HOLD_AUTO_START来实现。
经过调用ZDApp_StartUpFrom App( )来手动定义多久时间之后开始加入网络。
设备如果成功的加入网络, 会将网络信息存储在非易失性存储器( NV Flash) 里, 掉电后依然保存, 这样当再次上电后, 设备会自动读取网络信息, 这样设备对网络就有一定的记忆功能。
对NV Flash 的动作, 经过NV_RESTORE( )和NV_ITNT( )函数来执行。
有关网络参数的设置大多保存在协议栈Tools文件夹的f8wC onfig.cfg里。
路由Z-Stack采用无线自组网按需平面距离矢量路由协议AODV, 建立一个Hoc网络, 支持移动节点, 链接失败和数据丢失, 能够自组织和自修复。
当一个Router接受到一个信息包之后, NMK层将会进行以下的工作: 首先确认目的地, 如果目的地就是这个Router的邻居, 信息包将会直接传输给目的设备; 否则, Router将会确认和目的地址相应的路由表条目, 如果对于目的地址能找到有效的路由表条目, 信息包将会被传递到该条目中所存储的下一个hop地址; 如果找不到有效的路由表条目, 路由探测功能将会被启动, 信息包将会被缓存直到发现一个新的路由信息。
ZigBee End Device不会执行任何路由函数, 它只是简单的将信息传送给前面的能够执行路由功能的父设备。
因此, 如果End Device想发送信息给另外一个End Device, 在发送信息之间将会启动路由探测功能, 找到相应的父路由节点。