0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TI ZigBee协议栈本身软件bug的修复详解

丫丫119 来源:未知 作者:肖冰 2019-09-22 08:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1,TIZigBee协议栈不同版本的区别,如何选择合适的协议栈进行产品开发

TI ZigBee 协议栈Z-Stack从最开始的Z-Stack 0.1到大家熟悉的Z-Stack 2.5.1a,以及到现在Z-Stack Home 1.2.1, Z-Stack Lghting 1.0.2, Z-Stack Energy 1.0.1, Z-Stack Mesh 1.0.0. 在协议栈的升级过程TI主要对协议栈做了两方面的工作,1) 根据ZigBee Alliance的ZigBee Specification进行一些新的Feature添加,比方说ZigBee2007是树形的路由,在ZigBee Pro中有了Mesh路由,并且提出了MTO和Source Routing等路由算法,所以TI的把相应新的功能添加到协议栈上去。当然有一部分是Spec中相关bug的修正,比方说有些描述模棱两可的;2) TI ZigBee协议栈本身软件bug的修复。一个版本的协议栈相对于之前一个版本协议栈的区别,都可以在协议栈安装目录下的Release Note中找到。

在Z-Stack 2.5.1a以后,TI的协议栈并没有继续以Z-Stack 2.6.x的形式直接发布,而是按照Application Profile的方式来发布了,原因在于TI希望开发者根据实际的应用选择更有针对的性的协议栈进行开发。像Z-Stack Home 1.2.1之类的协议栈,主要包括两部分,1)核心协议栈Core Stack,这部分起始就是之前的Z-Stack 2.5.1a以后的延续版本,可以在协议栈安装目录下 Z-Stack Core Release Notes.txt文件中找到,Version 2.6.2 。2)应用协议栈 Profile相关,这部分主要跟实际应用相关的,Home Automation 协议栈里都是ZigBee Home Automation Profile相关的实现。同样Z-Stack Lghting 1.0.2和Z-Stack Energy 1.0.1也是一个Core Stack再加上应用上的Profile。1)Z-Stack Home 1.2.2a 针对智能家居相关产品的开发。2)Z-Stack Lighting 1.0.2 针对ZLL相关产品的开发。3)Z-Stack Energy 1.0.1 针对智能能源,Meter, In Home Display, 等相关产品的开发。4)Z-Stack Mesh 1.0.0 针对相关私有应用的产品的开发,只利用标准ZigBee协议相关功能, Mesh路由等,应用层有开发者自己定义。

在ZigBee联盟发布ZigBee 3.0协议以后,最新的ZigBee协议栈是Z-Stack 3.0, 目前支持的设备有CC2530, CC2538, CC2652R。

2,产品如何进行标准ZigBee测试认证,需要了解哪些,需要走什么流程

以开发标准ZigBee Home Automation相关产品为例。首先开发者开发产品时要按照ZigBee Home Automation Profile Specification 中描述的产品进行开发,这个文档可以在www.zigbee.org下载到。在完成产品的开发后,开发着需要了解ZigBee Home Automation Profile Test Specification, 这个文档描述了一个特定产品需要在Test House过的相关测试项,文档也可以在www.zigbee.org下载到,另外除了以上两个文档以外还有一个PICS文档,这个文档专门用于描述需要过认证测试产品所支持的功能,开发者根据开发产品的实际红能,和Specification中所要求的功能,在文档中进行打钩确认。下面是测试的流程,

1) 首先加入ZigBee联盟,一般可以有测试实验室帮助完成。

2) 寄送样品到测试实验室,完成PICS文档的填写。
3) 第一轮预测试,测试实验室对测试结果反馈,开发者修改样品代码。
4) 测试实验室对修改后的样品进行验证,然后开始正式测试。
5) 测试实验室协助开发者完成ZigBee联盟网上认证申请资料的准备和提交。
6) 测试实验室提交正式测试报告给ZigBee联盟。联盟会完成审核并发证

目前国内可以完成标准ZigBee测试的测试实验室有两家

1) CESI 北京 中国标准化电子研究所。

2) Element 深圳办事处(总部在英国)

详细可以参考下面的wiki地址,

http://processors.wiki.ti.com/index.php/ZigBee_Product_Certification_Guide

3,设备的64位 MAC地址是怎么样选取的?

在CC2530/CC2538/CC2630中分为两个IEEE地址,一个称为Primary IEEE地址,另外称为Secondary地址。Primary IEEE地址是存放在芯片的Information Page里面,这个地址是TI向IEEE协会购买的,每个芯片的地址都是唯一的。并且用户只能Read这个值,没办法擦除/修改。在协议栈中直接通过读地址可以获得 osal_memcpy(aExtendedAddress, (uint8 *)(P_INFOPAGE+HAL_INFOP_IEEE_OSET), Z_EXTADDR_LEN)。Secondary地址是存放在CC2530里的Flash最后一个Page里面,用户可以进行Read/Write. 通过函数HalFlashRead(HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, aExtendedAddress, Z_EXTADDR_LEN);。

协议栈运行是,是如何选择Primary IEEE地址或者Secondary地址作为设备的MAC地址的,具体在函数zmain_ext_addr(void)操作。

1) 从NV中读取 IEEE地址,如果已经存在(都不为0xFF),就使用该地址作为MAC地址了。

2) 如果1)中没有,从Secondary IEEE地址存放位置读取,如果有(都不为0xFF),把该地址写入到NV中,以后就用该地址作为MAC地址了。

3) 如果2)中没有,从Primary IEEE地址存放位置读取,如果有(都不为0xFF),把该地址写入到NV中,以后就用该地址作为MAC地址了

4) 如果3)中没有,就随机产生一个64位的变量,写入到NV中,并作为MAC地址。

4,End Device是低功耗设备, 有电池供电, 节点在断网以后,如何能够禁止节点持续搜索网络,或者把发送Beacon Request间隔增大

1)启动搜索网络uint8 ZDApp_StartJoiningCycle( void )

停止搜索网络 uint8 ZDApp_StopJoiningCycle( void )

2) 更改发送Beacon Request的周期

修改变量zgDefaultStartingScanDuration

// Beacon Order Values

#define BEACON_ORDER_NO_BEACONS 15

#define BEACON_ORDER_4_MINUTES 14 // 245760 milliseconds

#define BEACON_ORDER_2_MINUTES 13 // 122880 milliseconds

#define BEACON_ORDER_1_MINUTE 12 // 61440 milliseconds

#define BEACON_ORDER_31_SECONDS 11 // 30720 milliseconds

#define BEACON_ORDER_15_SECONDS 10 // 15360 MSecs

#define BEACON_ORDER_7_5_SECONDS 9 // 7680 MSecs

#define BEACON_ORDER_4_SECONDS 8 // 3840 MSecs

#define BEACON_ORDER_2_SECONDS 7 // 1920 MSecs

#define BEACON_ORDER_1_SECOND 6 // 960 MSecs

#define BEACON_ORDER_480_MSEC 5

#define BEACON_ORDER_240_MSEC 4

#define BEACON_ORDER_120_MSEC 3

#define BEACON_ORDER_60_MSEC 2

#define BEACON_ORDER_30_MSEC 1

#define BEACON_ORDER_15_MSEC 0


5,如何让End Device进入低功耗状态,休眠时间是如何设定的?

在协议栈宏定义中使能POWER_SAVING后,然后在f8wConfig.cfg文件里面把-DRFD_RCVC_ALWAYS_ON=FALSE,就可以让End Device进入休眠状态。

关于休眠的时间是有OSAL操作系统的调度来决定,每次休眠时间都是按照最新会发生的一个Event Timeout作为休眠时间。具体在协议栈hal_sleep函数中有说明。

这个timeout主要分为两类,一类是应用层事件的timeout,另外一类是MAC层事件的timeout,

1)应用层的timeout的时间,是在osal_pwrmgr_powerconserve( void )函数中,通过osal_next_timeout();获得的。

2)MAC层的timeout时间,是通过halSleep( uint16 osal_timeout )函数里面,通过MAC_PwrNextTimeout();来获得的。

6,ZigBee 3.0协议栈有哪些新的东西?

请参考下面的链接,介绍了ZigBee 3.0协议栈相对于之前ZigBee Home Automation/ZigBee Light Link 所增加的东西。

http://processors.wiki.ti.com/index.php/What%27s_New_in_ZigBee_3.0

7,TI ZigBee协议栈中关于终端设备的状态机切换

http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/104629.aspx

8,关于TI协议栈中OAD和OTA的区别

OAD全称Over the Air Download, OTA全称Over the Air. 这两个实现的功能都一样,都可以叫做对程序的空中升级。在早期的ZigBee协议标准中,并没有关于节点程序空中升级方面的标准,但是很多客户都对空中升级有需求,所以TI自己开发了一套关于程序空中升级的协议栈,并且命名为OAD。后来ZigBee联盟看到产品对空中升级的需求越来越来,随机也指定了空中升级方面的标准,命名为OTA,该标准也是参考了TI的OAD实现方式,做了相关的修改。所以TI的早期协议栈中,空中升级叫OAD,后来的协议栈中跟随ZigBee联盟的空中升级协议,就叫OTA了。

9,如果在非低功耗设备中,未焊接32K晶振,Z-Stack协议栈需要怎么修改?

在Z-Stack协议栈中,初始化都有对使用的晶振是否稳定进行检测。如果未焊接32K晶振,则需要对下面的代码进行修改。TI Z-Stack 协议栈默认是使用32K晶振的。

在hal_board_cfg.h文件,

#define OSC32K_CRYSTAL_INSTALLED FALSE

10,如果开发基于ZigBee Mesh网络的私有应用,应该选择哪个协议栈?

很多用户只想把zigbee mesh网络的功能运用在自己的系统或者产品中,并不需要完全按照zigbee 定义的应用层规范来做,特别是一些行业性的应用。针对这样的应用需求,应该如何选择TI 合适的协议栈进行产品开发呢?

http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/132197.aspx

11,使用CC2630/CC2650进行ZigBee开发,Debug时可以在Core stack代码进行下断点调试吗?

可以下的,你要下载断电的代码对应的文件,一定要提前打开,然后进行Debug,就可以去打开的文件进行Debug了。

12,Zigbee协调器是如何选择合适的信道创建网络?

Zigbee网络的创建必须有协调器来完成,一个Zigbee网络有且只有一个协调器。Zigbee协调器在创建网络时主要完成的是网络信道的选择和PANID的生成。关于信道的选择,大致可以分为两个步骤,1)被动扫描也叫能量扫描Energy Scan,所谓被动扫描就是协调器将自己的接收机打开,然后在事先设定的信道列表上依次扫描,扫描后会得到每个信道的能量值,这个能量主要来自其他的Zigbee网络,或者其他的2.4GHz无线信号。协调器会将能量值高于事先设定的阈值的信道认为有较大的干扰存在,将该信道排除。2) 主动扫描Active Scan,在第一轮扫描以后留下的信道中,依次发送Beacon Request,如果收到对应的Beacon数据包,认为该信道中存在其他的Zigbee。最后协调器会选择一个没有其他的Zigbee网络PANID., 或者存在Zigbee网络最少的信道建立自己的网络并且设定一个没有冲突的PANID.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ZigBee
    +关注

    关注

    158

    文章

    2310

    浏览量

    250259
  • CC2530
    +关注

    关注

    19

    文章

    222

    浏览量

    60343
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    OCA认证只认整机——为什么OCPP协议放在哪里不重要?

    认证是对“某个部件”(如通信主控板、协议模块)的认可。实际上,OCA认证的核心规则非常明确——证书只颁发给整机,至于OCPP协议具体跑在主控板上、独立通信模组
    的头像 发表于 04-10 15:38 1059次阅读
    OCA认证只认整机——为什么OCPP<b class='flag-5'>协议</b><b class='flag-5'>栈</b>放在哪里不重要?

    AI 辅助代码修复:嵌入式软件开发的突破性进展

    凭借 AI 辅助修复,开发人员不仅能实现“边写边分析”,还能做到“边写边修复”。这不仅带来了更准确、更安全的软件,还优化了缺陷检测与修复的左移流程,提升了开发速度,进而全面增强了嵌入式
    的头像 发表于 03-26 11:19 1601次阅读
    AI 辅助代码<b class='flag-5'>修复</b>:嵌入式<b class='flag-5'>软件</b>开发的突破性进展

    Bug 躲猫猫?信而泰X-NetFuzzer模糊测试,一键“照妖镜”显形!

    多的测试用例和随机性,就可以让那些隐藏的很深很难出现的Bug成为必然现象。因此,模糊测试能够有效地发现软件中存在的安全问题,在信息安全漏洞挖掘领域被⼴泛采用。 2、自动化测试技术 模糊测试技术是一种自动化
    发表于 03-23 11:52

    ZigBee:低功耗物联的“网状神经”

    一、什么是ZigBeeZigBee,也称紫蜂,是一种低速、低功耗、低成本的无线网络协议,其底层基于IEEE 802.15.4标准,专为低数据速率、长时间运行的无线传感与控制网络而设计。它支持大规模
    发表于 03-12 10:45

    Linux内核bug狩猎指南:从跟踪到修复,官方文档教你搞定系统核心故障

    内核是 Linux 系统的 “心脏”—— 一旦它出 bug,小则功能异常,大则系统崩溃、死机。但内核 bug 往往藏在百万行代码中,想快速定位、修复绝非易事。
    的头像 发表于 02-06 16:59 3283次阅读
    Linux内核<b class='flag-5'>bug</b>狩猎指南:从<b class='flag-5'>栈</b>跟踪到<b class='flag-5'>修复</b>,官方文档教你搞定系统核心故障

    芯科科技发布Simplicity Studio 6软件开发套件最新版本SiSDK 2025.12.0

    性能、功耗效率、可扩展性和生态系统准备度,同时为未来SDK的架构演进奠定了重要基础。更新涵盖蓝牙(Bluetooth)、Matter、多协议操作、实时操作系统(RTOS)、平台服务、安全、无线协议
    的头像 发表于 01-29 10:29 1247次阅读

    车载以太网通信协议如何测?UT和SP联手!

    引言在汽车以太网的通信测试中,面对复杂的协议分层与交互,一个核心挑战在于:如何高效、直接地对ECU内部的网络层、传输层等协议实现进行验证?仅仅通过外部网络接口发送测试数据包,往往只能进行黑盒测试
    的头像 发表于 01-21 10:04 1807次阅读
    车载以太网通信<b class='flag-5'>协议</b><b class='flag-5'>栈</b>如何测?UT和SP联手!

    RDMA设计12:融合以太网协议设计1

    本文主要交流设计思路,在本博客已给出相关博文90多篇,希望对初学者有用。注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP设计。 融合以太网协议负责用户请求与 RDMA 数据包的转换、管理
    发表于 12-25 11:39

    IPv6 Only 进入倒计时 ,单替代双成网络演进必然选择

    2025年末,中国工程院院士邬贺铨在“2026ICT行业趋势年会”上强调“双是过去的妥协,IPv6Only才是未来的必然”,这一判断精准点出了全球网络协议演进的核心方向。随着技术兼容方案成熟、政策
    的头像 发表于 12-23 09:59 1697次阅读
    IPv6 Only 进入倒计时 ,单<b class='flag-5'>栈</b>替代双<b class='flag-5'>栈</b>成网络演进必然选择

    EtherCAT主站协议EC-Master在ROS(机器人操作系统)中的应用

    EtherCAT主站协议EC-Master在ROS(机器人操作系统)中的应用
    的头像 发表于 12-10 14:46 632次阅读
    EtherCAT主站<b class='flag-5'>协议</b><b class='flag-5'>栈</b>EC-Master在ROS(机器人操作系统)中的应用

    TI CC1311P3 LaunchPad™开发套件技术解析与应用指南

    Texas Instruments CC1311P3 LaunchPad™ 开发套件设计用于加速开发SimpleLink™ 亚1GHz无线MCU。该器件支持TI 15.4堆和专有射频协议。CC13XX-CC26XX
    的头像 发表于 09-01 15:19 1645次阅读
    ‌<b class='flag-5'>TI</b> CC1311P3 LaunchPad™开发套件技术解析与应用指南

    摩尔线程吴庆详解 MUSA 软件:以技术创新释放 KUAE 集群潜能,引领 GPU 计算新高度​

    的分享。GPU 计算软件开发总监吴庆登上讲台,发表了题为《摩尔线程 MUSA 软件助力 KUAE 集群释放无限潜能》的演讲。他从专业视角出发,为在场听众深入剖析了 MUSA 软件
    的头像 发表于 07-28 13:47 6390次阅读
    摩尔线程吴庆<b class='flag-5'>详解</b> MUSA <b class='flag-5'>软件</b><b class='flag-5'>栈</b>:以技术创新释放 KUAE 集群潜能,引领 GPU 计算新高度​

    【应用】ZigBee智能灯控系统设计应用(上)

    什么是ZigBeeZigBee是一种成熟的无线通信协议,在智能灯控领域有着悠久的应用历史。ZigBee本身是一种带有自愈功能的Mesh网络
    的头像 发表于 07-03 19:32 1355次阅读
    【应用】<b class='flag-5'>ZigBee</b>智能灯控系统设计应用(上)

    NVMe协议研究扫盲

    协议的执行流程密切相关。NVMe Host端的命令需要经过文件系统层、块设备层、驱动层等多个层次的处理,同时NVMe协议中的队列设计、乱序执行、完成信息检查等流程也十分复杂,加之嵌
    发表于 06-02 23:28

    51+单片机TCP-IP+协议ZLIP源码

    概述 单片机上网技术,是当前的一个热门技术。单片机上网技术中的一个重要部分是在单片上实现 TCP/IP 协议。现在可获得的 TCP/IP 源代码一般并不为 51 单片机设计,而 51 单片机
    发表于 04-22 15:11