基于CC2652R的zigbee 3.0万能网关开发

物联网神教 2019-12-01 11:49:18
CC2652R性能真强大,芯片用的是Rev E版,配合SDK 3.10,3.20和3.30用。
最开始是在SDK3.10上面开发的,基本功能实现后,更新到SDK3.20。

SDK3.20存在以下几个bug
1,TC Link Key超过112个后,协调器会崩溃,导致原因是SDK3.20的NV RAM只能使用2个扇区FLASH
2,如果目标设备是基于silabs的,CC2652对其发带APS Ack请求的命令,silabs的zigbee节点先回复Response或其它应用层报文,再回复ASP Ack。CC2652会误判APS Ack超时,而且这种误判只有在多级路由的情况下出现。
3,Group表在NV RAM中无法正确保存,这个bug TI官方已经给了补丁。

SDK3.30解决了bug1和bug2,但是又带出新的bug。
1,SDK 3.20以前版本,Associate List和TC Link Key Table在NV RAM中的保存地址,各自独立占了一个NV RAM的分块,也就是说每条记录都是独占一个NV记录条目。但是可能是TI的协议栈团队太粗心,这两个表在store和restore的时候会出幺蛾子,我在E2E给出了解决办法。

2,Group表不能保存NV RAM的问题,是在他们的SDK 3.30已经发版的情况下,我给他们找到的,所以SDK3.30继续使用蛋疼的补丁方案。

3,解析ZCL Config Report命令时,bool型的数据占用0字节的字段,但是TI的代码鬼使神差的跳了一个字节,TI的所有版本协议栈都有这个bug,已经出现N年了,TI让开发者在代码中自己修复。关键是TMD这个错误都好多年,都没被人发现。


---------------------------------------------------------------------------------------------------------------------------------------------

说说我们的万能网关,首先要支持zigbee 3.0协议。TI的原生协议栈,收发命令时居然不支持带manufacture code的命令,之前在对接鲸鱼座和小米的外设时发现的,我自己改了zcl的代码,可以完美支持带manufacture code的命令。

其次是zigbee 3.0的入网管理,按照我自己的理解,zigbee 3.0有3个APS层加密的Key,分别是Default Key,TC Link Key(或者叫Verified Key),以及install code key。

设备入网时,协调器(又叫trust center)向入网设备发送NWK Key,在zigbee HA中,收到了NWK Key就算入网。在zigbee 3.0中,又增加了Verify Key这个过程,在Verify key时获取一个唯一的TC Link Key,才算真正入网。TC Link Key可以算作zigbee 3.0的灵魂。

TC Link Key有几个用处:1,如果以后NWK Key再次发生变化,协调器会使用TC Link Key来加密NWK Key,传给目标设备。2,TC Link Key可以用于APS层加密,与NWK Key不同的是,TC Link Key只有协调器和目标节点知道,用来加密一些私密的消息,如OTA升级的数据包等。









...全文
1666 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkkj_csdn 2020-03-10
  • 打赏
  • 举报
回复
大神,可以分享你的改动,让我学习一下吗,请添加:微信:cenjiu999
物联网神教 2020-02-04
  • 打赏
  • 举报
回复
引用 1 楼 39827140 的回复:
cc2530F256请问是否也支持zigbee 3.0么?
肯定支持啊,就和北汽212吉普装ETC一个性质啊
39827140 2020-02-02
  • 打赏
  • 举报
回复
cc2530F256请问是否也支持zigbee 3.0么?

3,846

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 无线
社区管理员
  • 无线
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧