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:ZNP -为什么所有重试?

Guru**** 2535150 points
Other Parts Discussed in Thread: Z-STACK, CC2531, CC2531EMK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/661988/cc2538-znp---why-all-the-retries

部件号:CC2538
主题中讨论的其他部件:Z-stackCC2531CC2531EMK

你(们)好

我尝试将设备添加到Zigbee网络,但该设备没有以节点描述符响应进行响应。  我很快就注意到ZNP重试了很多次。  是否可以减少重试次数,或者这只是为了克服快速衰减?

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的设备是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它是Innr BY165智能灯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它似乎不是TI的器件。 由于协调员发送节点描述符请求时此BY165智能指示灯没有MAC ACK,我建议您联系此设备的制造商以获得帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经这样做了。 我认为我们应该能够连接到任何Zigbee设备,还是这样?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试不要向协调员请求节点描述符以查看其是否工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    我猜连接设备在关联后未正确接收传输密钥,因此无法解密来自TI ZC的节点描述符请求。 能否上传.CuBX文件?

    顺便说一下,我不确定这是否相关,但您的ZC报告它的IEEE地址向后(在关联RSP MAC源中),它应该是00:12:4B:00:A5:AF:B5:14。 这可能是问题(连接设备可能将IEEE地址存储为父/ TC地址的一个方向,而将另一个方向存储为网络密钥源),但我需要完整的日志来确定这一点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,明天我会将该理论付诸测试,向其发送一些消息,然后生成另一个日志。

    我已向ZStack添加了通知,以便我的应用程序收到加入网络的任何设备,详细信息或无详细信息的通知。

    我非常怀疑ZNP代码中存在竞争条件,因为有时它会在我发出指令后几分钟内传输许可加入,此外(根据Ubiqua)它会在几分钟后发送多个虚假许可加入。 有时我们不得不冷启动ZNP。 这种对地雷的怀疑也与上述轨迹中观察到的延迟重试模式相一致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为了供您参考,我们已使用TI Z-Stack协调器测试了此灯泡,它可以与我们的GW正常工作。 我认为提供您的嗅探器日志来了解发生的情况会很有帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,我还会尝试使用带CC2531加密狗的BeagleBone:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,在BBB上运行CC2531EMK的Z-Stack Home GW参考设计应该可以工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    确定下面是重试次数超多的另一个示例:
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无法理解您的描述。 您能详细说明吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../TransportKeyRetries.zip

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

    Ubiqua踪迹^

    链接密钥为69:90:2e:ec:dd:6d:99:6d:aa:0d:be:25:31:5b:54:7b

    我们正在查看链路密钥(序列号197)的重试次数切换,如上图所示。  终端设备成功加入。


    我向Mac-TX添加了一些跟踪,以下条目对应于链接密钥重试次数:

    Mac_TXS:TS 89.3208万 CSMA 1 FrmeTyp 1 ReTx 0 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f
    Mac_TXS:TS 89.3235万 CSMA 1 FrmeTyp 1 ReTx 1 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f
    Mac_TXS:TS 89.3244万 CSMA 1 FrmeTyp 1 ReTx 1 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f
    Mac_TXS:TS 89.3263万 CSMA 1 FrmeTyp 1 ReTx 1 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f

    其中...
    TS是从osal_GetSystemClock()获取的时间戳

    CSMA是以下其中之一:
    #define MAC_TX_TYPE_LEAD_CSMA 0x00
    #define MAC_TX_TYPE_UNLETATE_CSMA 0x01
    #define MAC_TX_TYPE_LEASEed 0x02
    #define MAC_TX_TYPE_GREGE_POWER 0x03

    FrmeTyp是"pMacDataTx->internal.frameType"

    reTx是"txRetransmitFlag"的状态

    len为"pMacDataTx->MSDU.len"

    FC是数据包中的帧控制
    sn是数据包中的序列号
    PAN是数据包中的PAN ID
    nAddr是数据包中的目的网络地址


    因此,我们可以看到同一条消息发送了4次,快速连续重试了3次。

    因此,有两个问题:
    1)从osal_GetSystemClock()返回的代码的时间间隔是多少?
    2)这些重试周期这么短是否正常/预期?

    我在代码中注意到“macTxFrameRetransmit”是从库调用的,因此我看不到使用什么逻辑来确定何时执行重试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是设备不响应MAC ACK,因此发送方重新发送传输密钥。 您的设备是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该设备是基于GenericApp的其中一款设备
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您在没有任何修改的情况下使用GenericApp示例,您是否仍会看到相同的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们稍后将尝试。 我们还将尝试阻止来自终端设备的"数据请求"传输,这可能会导致CSMA冲突。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的意思是什么,同时尝试阻止"数据请求"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    启动应用程序时,您是否确认ZNP设备配置正确?

    如果ZNP设备配置不正确,这将导致其他设备不加入网络(例如 NV写入错误,ZNP设备未立即启动OSAL,而是将保留"保持状态"以供等待高级网关应用程序配置NV项目并启动)

    顺便说一下,您是否确认您的所有终端设备和协调员内置了相同的TCLK和网络密钥?如果没有,Join可能会死机。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据嗅探器日志,设备最终成功加入。由于没有MAC确认,只有传输密钥重新尝试了多次传输。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我很确定您看到的传输密钥问题是由于我们最近发现的竞争状况造成的。 简而言之,在新设备加入网络后,ZvApp会启动NV写入操作以更新NV闪存中的网络信息,这是一个阻止操作,可能需要大量时间,最长~500毫秒。 即使Zed及时轮询传输密钥,ZC由于NV操作受阻而发送传输密钥的速度不够快,并且在实际发送时,Zed已关闭其接收器。

    我们有一个宏,它将错开NV写入操作的开始时间(这是在ZNP项目中,而不是网关项目中)尝试将ZDAPP_UPDATE_Nwk_NV_TIME的值从默认值700 (ms)更改为更大的值,如3500, 这将使NV更新操作稍后开始,因此不会干扰网络调试。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    @Jason我怀疑同样的事情,但只是不确定。 哈!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将ZDAPP_UPDATE_Nwk_NV_TIME增加到了7000,而且频道更干净。 谢谢你们:)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将ZDAPP_UPDATE_Nwk_NV_TIME增加到3500应该足够好。 我建议您不要使用将其扩展到7000。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然,这只是意味着NVRAM可能更新的频率较低?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不会减少,只是在以后的时间。 宏所做的一切就是定义堆栈在请求NV写入操作后何时启动该操作。 在这种情况下,它之所以起作用,是因为Z-Stack 3.0 .x中的网络关联过程从堆栈内请求操作开始需要700毫秒以上的时间,这取决于Zed轮询率。 只要延迟足够长,就应该没有问题,我的测试应该不会超过3500毫秒,但您的里程可能会因您的应用程序而异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还有一个问题-从osal_GetSystemClock()返回的代码的时间间隔是多少?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它以毫秒为单位返回本地时钟。