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.

[参考译文] CC2340R5:初始化会在重新启动后冻结

Guru**** 2392905 points


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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1536885/cc2340r5-the-initialization-froze-after-the-restart

器件型号:CC2340R5

工具/软件:

使用 2340 作为节点、使用 2652 作为协调器。 串行端口数据通过上层计算机发送、然后将 64 字节串行端口数据发送给另一方。 执行双向数据传输。 节点另一侧串行端口的上部计算机每两秒发送一次数据、协调器每五秒发送一次数据。

在这个过程中,我发现程序崩溃了。 我怀疑程序重启后在初始化时卡住了。 下面是调试屏幕截图

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

    您好、

    除非您已执行 连接到正在运行的目标 的必要步骤、否则这些调试映像可能无法反映实际问题。  您能否说明您认为固件自行重新启动(即无需用户干预)的原因、并且您是否能够使用 CCS 调试器在该位置放置一个断点以进一步确定根本原因?  您是否能够 启用日志记录 以确定 Zigbee MAC、OSIF 或应用层正在传输哪些错误或消息?

    此致、
    Ryan

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

    您好、Ryan
    我是在程序死机后、按照Running Target步骤操作的、这些截图就是按照Running Target步骤出来的调试图。μ s

    我认为固件重启、因为我挂测了几个小时后、程序才跑死的、我看到死机的地方好像在zb init()

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

    您好、Ryan
    我根据程序崩溃后的 Running Target 步骤进行操作。 这些屏幕截图是根据运行目标步骤发出的呼叫尝试。

    我认为固件已重新启动、因为在我测试了几个小时后、程序最终崩溃。 我注意到它崩溃的地方似乎是 ZB_init ()。

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

    ZB_init 的位置 (ZB_osif_random_HW) 指示 RNG 不能生成一个随机数、因此在进入循环时永远是一个。  RNG 从对讲机资源值、软重置后可能无法正确初始化。  您是否可以使用 ZB_GET_RESET_SOURCE_PMCTLGetResetReason 来正确确定复位原因?  复制步骤是否可用?

    此致、
    Ryan

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

    您好、Ryan
    我在一段时间后添加 ZB_GET_RESET_SOURCE_PMCTLGetResetReason 观察请参阅复位原因

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

    请澄清您的调查结果、因为我不理解您的最后一封邮件、如果这封邮件旨在提供更多信息。  此外、   在调试期间、请将断点置于 ZB_RESET -> PMCTLResetSystem 和 FALATE_ERR 内、然后在输入了这些函数时提供调用堆栈。

    此致、
    Ryan

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

    您好、Ryan
    我发现 PMCTLGetResetReason 返回 0x36、这表示看门狗复位、ZB_GET_RESET_SOURCE 返回 5。 这意味着“/* RSTSRC_WAKEUP_FROM_SHUTDOWN 或 RSTSRC_WAKEUP_FROM_TCK_NOISE 或 RSTSRC_WARMRESET */“

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

    您好、

    RSTSRC_WARMRESET 通常也是看门狗复位、由于 RSTSRC_WAKEUP_FROM_SHUTDOWN 或 RSTSRC_WAKEUP_FROM_TCK_NOISE 在这种情况下没有意义、因此您必须遇到看门狗复位。  您能否在 ZB_INIT 之前检测复位原因/源、并考虑改用完全系统复位 (PMCTLResetSystem) 来确定这是否可以解决问题?

    我们尚未确定 为什么会发生看门狗复位。  我之前提到过、      在调试期间将断点置于 ZB_RESET -> PMCTLResetSystem 和 FALATE_ERR(也是 EXCEPTION_HANDlerSpin)中、以确定应用程序是否在永久 while 循环中保持。   

    此致、
    Ryan