This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2538:TI Zigbee Linux 网关许可加入始终是假的

Guru**** 1555210 points
Other Parts Discussed in Thread: CC2538, CC2531, Z-STACK, CC2538EMK
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1347586/cc2538-ti-zigbee-linux-gateway-permit-join-is-always-false

器件型号:CC2538
主题中讨论的其他器件: CC2531Z-stack

环境、我有一个 CC2538通过 USB 连接至运行 Yocto Linux 的单板计算机的定制板。 所有依赖项(protobuf)均已安装、并且 TI Linux 网关应用程序以及演示应用已编译并运行。

CC2538正在运行以下固件:
/ti/Zigbee_3_0_Linux_Gateway_ 1_0_1/Firmware/ZNP/CC2538_GW_ZNP_EM_Standalone_USB.hex

可在以下固件版本的路径/dev/ttyACM0中找到它

```
root:tools#./gw_soc_fw_version_query.bin /dev/ttyACM0
使用串行端口:/dev/ttyACM0
收到的系统版本。
传输协议版本:2
产品 ID:0
软件版本:2.7.2
软件版本:0
(未指定版本)
```

我已修改 NPI_Gateway.cfg 以具有此器件路径和 config.ini 以将 permit_join 设置为1、并将 PAN ID 设置为0x1337。

演示应用和其他应用中的所有内容看起来都很好、但当我在演示应用中按下"P"以允许加入时、我的路由器设备都无法加入网络。

我将 CC2531 USB 软件狗设置为数据包监听器、让它看同一个通道、这就是我的 CC2538中的所有信标所呈现的样子。

它看起来像一把抽烟枪,协会许可证总是错误的,即使在我按下演示应用程序中的"P"后,信标被发送几秒钟,以允许加入,并在 config.in 中让 permit_join=1。

起初、我认为问题是关键和安全问题、或者设备位于不同的通道上、或者 PAN ID 在某个位置设置错误。 但这个问题是将一切东西都立即从栅极上停止。

演示应用和 TI 堆栈非常复杂、我不确定从何处查看需要更改哪些内容来强制启用加入许可。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    海恩斯、您好!

    请首先确认您已执行 Zigbee_3_0_Linux1_0_1\Documents\Z-Stack Linux_Gateway_网关-快速入门指南和用户指南中的所有步骤。  本地网关样例应用程序屏幕和日志显示的所有内容都正确无误。  您甚至可以观察到[SEND] 05:25:36:02:00:00:3C:01 Returns [SRSP] 01:65:36:00、这是 ZDO_MGMT_permit_Join_Req Monitor and Test API的预期。  这可能是 CC2538固件或器件的问题。  您使用的是什么 CC2538封装以及您是否曾使用 CC2538EMK 进行过测试? 在对 ZNP 固件进行编程之前、您是否确保擦除所有器件存储器?  尝试查看是否可以使用 Z-Tool 构建 Zigbee 网络并使用现有 ZNP 固件和定制板加入器件、以下是 社区成员提供的博客说明。

    此致、
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的建议、我取得了一些进展。

    该电路板使用 CC2538SF53RTQT。  

    我没有使用 CC2538EMK、 一些早期开发是使用相同的单板计算机(在开发板上)和 CC2531 USB 软件狗完成的。 不过、我们使用的 CC2538的布局基于此处的 CC2538EMK 布局。
    https://www.ti.com/lit/df/tidr187/tidr187.pdf?ts = 1712675466113

    现在来看进度。

    我使用相同的 ZNP hex 文件重新刷入 CC2538、然后重新启动 TI Linux 网关和演示应用。 在演示应用程序上按"P"后、我非常高兴看到我的路由器设备(以及 Bee 3)加入我的 CC2552网络。

    在浏览过监听器的日志后,我发现信标中的关联许可位瞬间为真,这最终允许我的 XBee 加入。 之后的密钥交换很顺利、之后几分钟内链路状态更新了。

    然后,在没有任何改变的情况下,我从网络中移除了 XBee 路由器,重新启动了所有的事情,并尝试复制该过程。 又失败了...
    从那时起,我只看到关联许可是假的。

    因此、我继续进行了故障排除、并获得了更多可证实您怀疑根本原因与 CC2538上的固件有关的观察结果。

    我看到的另一件奇怪的事情是、

    在 config.ini 中、当我更改 PAN ID (例如、从0x1337更改为0x1338)。 演示应用始终会将 PAN ID 显示为0x1337、即使在重新启动 CC2538和我的单板计算机后也是如此。

    更改 PAN ID 的唯一方法是完全重新刷新 CC2538、然后运行 TI Linxux Zigbee Stack。 不过、之后我无法更改、除非我再次重新刷写 CC2538。

    这 意味着 CC2538中有一些非易失性存储器、而程序 ROM 除外、它会卡在特定值(因此、对其进行刷新是唯一的更改方法)。  

    这似乎与我的关联许可问题有关。 我可以想象、有一个变量存储在非易失性存储器中、无论 TI Linux Zigbee Stack 发送什么命令、都会导致加入许可卡在0。

    我的选项

    我可以考虑两种方法来解决这个问题:

    1.使用不使用非易失性存储器的版本重新编译 ZNP 源代码。 (我对每次下电上电后从干净电源开始的一切都很满意。 但是、我从未使用过 ZNP 源代码、甚至没有安装 TI 的 IDE、这会给我带来更多的开发风险。

    2.使用 TI Linux Zigbee 堆栈中的某种命令来重置 CC2538非易失性存储器中的所有内容。 如果 Z-tool 可以在 Linux 下运行、可以通过 API 进行实验、查看是否存在这样的命令、但不使用 Z-tool 则更为繁琐。 我无法轻松地将电路板的 USB 信号连接到 Windows 机器以使用那里的 Z-tool。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这 意味着在 CC2538中除了程序 ROM 之外、有一些非易失性存储器卡在特定值(因此重新刷新它是更改它的唯一方法)。  [/报价]

    我认为是正确的、"重新启动一切"会导致 CC2538 ZNP 器件和 Linux 主机之间的非易失性(NV)闪存设置不一致。

    1.这需要您下载 Z-stack 3.0.2并 在 IAR EWARM 8.22.1中编译\projects\ZStack\ZNP\CC2538应用程序、同时从 znp.cfg 中删除 NV_RESTORE

    2.具有 ID 0x03 (ZCD_NV_STARTUP_OPTION)和值0x03后跟 SYS_RESET 类型0x00的 SYS_OSAL_NV_WRITE 将清除 CC2538 ZNP NV 存储器。  我在前面提供的链接中进一步详细说明了这一点。  您可以 修改 ZNP_MISC.c osal_nv_write 和 znpReset 用法以满足您的需求。

    此致、
    瑞安

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢、您对1的建议。 为我做到了。

    我在 ZNP_MIC.c 中修改了 znpReset、始终执行硬复位并清除非易失性存储器(Hackish、但我稍后会尝试不太激进的方法)。

    然后、我修改了 osal_ZStack_server_znp.c、以便在调用 zspbInit (taskID++)之前调用 znpReset (1、1、0)。

    我一定是在演示应用中发现了一些问题,因为配对的 XBee 路由器不再出现在设备列表中;但是,我可以看到,它已经根据自己的关联指示和我的监听器捕获的流量加入了网络。 (无论如何、我不需要演示应用程序长期使用)。

    我相信还会有其他困难、但这可以解决我遇到的直接问题。

    另外、对于任何将来的观众 、为了如何 加入 Xbee 3 (或者运行完整 ZigBee 堆栈的类似 XBee)与 TI 协调员来说、这些都是要在 Xbee 上使用的 AT 设置。

    https://www.digi.com/support/knowledge-base/zigbee-home-automation

    最重要的是使 ZS = 2。

    此外、XBee 的 Pan ID 应按反向字节序设置为您的 TI 协调员的 EXTPANID

    对我来说:

    我需要在 XBee 中将我的 ID 参数设置为以下内容:

    或者只需设置 ID=0并允许 Xbee 加入任何网络、然后检查 OP at 参数以查看操作 PAN ID 是什么。