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.

[参考译文] CC2642R-Q1:在主机模式下运行的 CC2642器件随机触发 Hwi_exchardFault ()异常

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1494213/cc2642r-q1-the-cc2642-device-operating-in-host-mode-randomly-triggers-hwi_exchardfault-exceptions

器件型号:CC2642R-Q1

工具/软件:

主题:  CC2642多角色基本工程的看门狗复位问题

您好、我们在使用时遇到看门狗复位  CC2642多角色  作为 CC2642的基础项目。

问题详细信息:

  • 设置的  两个广播信道 、每个广播在  100ms 间隔

  • 启用扫描后、一旦检测到器件、器件就会连接到外设。

  • 该连接持续时间  10秒 、然后是  2秒断开连接 、然后恢复扫描。

  • 此周期(扫描→连接并保持10s→断开并持续2s→重复)无限期持续。

在某个时刻、将触发此过程  Hwi_excHardFault()

  • 最长的测试运行  19小时  故障前。

  • 中发生了最短故障  设备

  • 其他中间时间也会发生故障、从而使问题出现  随机

跟进调查:
我禁用了看门狗并在中运行系统  调试模式 、等待问题发生。 每次失败后、我都观察到  SP (栈指针)值始终一致  0x20013A94

进一步分析:

  1. 已检查  映射文件  但未找到对此地址的引用。

  2. 已检查  存储器窗口  并确认该地址位于范围之内  Hwi (硬件中断)任务栈

  3. 已监控的堆栈使用情况  每项任务  并跟踪  存储器池 无堆栈溢出或内存泄漏  磁场。

    • 内存泄漏验证:  池中可分配的内存大小在建立连接和断开连接之间保持一致。

我们使用的 SDK 版本是 simplelink_cc13xx_cc26xx_sdk_7_10_00_98

以下是在问题发生时捕获的一些关键屏幕截图:

 

使用前已验证所有外设均已正确初始化  

您能帮助解决此问题吗?

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

    您好:

    感谢您对此问题的全面解释。 我明天会尝试重现这个问题。

    [报价 userid="552035" url="~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1494213/cc2642r-q1-the-cc2642-device-operating-in-host-mode-randomly-triggers-hwi_exchardfault-exceptions

    问题详细信息:

    • 设置的  两个广播信道 、每个广播在  100ms 间隔

    • 启用扫描后、一旦检测到器件、器件就会连接到外设。

    • 该连接持续时间  10秒 、然后是  2秒断开连接 、然后恢复扫描。

    • 此周期(扫描→连接并保持10s→断开并持续2s→重复)无限期持续。

    [/报价]

    您是否有一个可以共享的项目? 如果没有、您是否不介意提供一些有关如何实施此场景的信息:

    1. 是否使用任何驱动程序? 例如、连接持续时间内的计时器?

    2.是否有其他流程?

    3. MULTI_ROLE 如何确定要连接到哪个外设?

    4.发生此问题时、是否有其它活动连接?

    此致、

    Nima Behmanesh

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

    嗨、Nima

    由于项目机密性限制、我无法共享完整的源代码。 但是、请在下面找到详细的实现方案:

    1. 任务架构

      • 修改了 TI 的 multi_role 参考工程

      • 已创建优先级设置为的专用任务  下面是一个级别  主要 multi_role 任务

    2. 实时数据处理

      • 实施了一个  1ms 软件计时器  新功能

      • 计时器回调处理周期性:
        ‣与 TCAN4450 CAN 收发器进行 SPI 通信
        ‣CAN 总线数据处理

    3. 外设连接逻辑

      • 目标器件选择:
        ‣通过 CAN 总线数据接收的 MAC 地址
        ‣转发给 CC2642主机控制器

      • 连接后序列:
        ‣通过写入 CCCD 立即启用通知

      • 连接持续时间:
        ‣使用 API 调用、10秒后主动断开连接

    4. 外部触发机制

      • 外部系统发送连接命令  间隔为12秒

      • 当前测试环境:
        ‣无其他并发 BLE 连接

    5. 问题表征

      • 发生故障  频率
        ‣在活动连接期间可能会发生
        ‣μ s 或在断开状态期间

      • 无确定性复制模式

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

    您好:

    您是否能够在未修改的  multi_role  示例上重现此情形? 当第二个任务进行数据处理和1ms 中断时、堆栈和数据处理之间可能会存在一些问题。

    因为我的项目1:1不匹配、所以我仍然可以尝试重现问题、但如果它与 BLE 栈无关、则可能无法重现问题。

    此致、

    Nima Behmanesh

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

    你(们)好

    我可以通过调整示例中的重试尝试次数来重现该现象。 关于您提到的1毫秒触发中断问题-如果确实有问题、我可以尝试将计时器调整为5毫秒。 这是最小间隔要求、不能进一步延长。

    此外、您是否尝试过在您的端运行示例代码? 如果您观察到任何结果、请与我分享。

    此外、我想提出另一个问题、如下图所示。

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

    您好:

    我仍在研究这个问题、需要更多时间。 关于您的第二个问题、我看到您随附了规格图片、但可能忽略了该问题。 您的问题是什么?

    此致、

    Nima Behmanesh

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

    关于第二个问题:我的疑问是 CC2642 SDK 是否支持图中所述的功能。 我的理解是、该图展示了:
    "配对失败后、同一设备无法在特定时间段内再次尝试配对;必须等到超时结束。 如果连续配对失败、则每次后续失败后的等待时间会呈指数级增长。"

    持续时间呈指数级增长的基本值是多少?

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

    您好:

    我很抱歉耽误时间、我需要更多时间来研究这一点、并将在 EOD 周一前作出回复。

    此致、

    Nima Behmanesh

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

    您好:

    我很抱歉,我当时没有时间来研究这个问题。 我将在下周优先解决这些问题。

    此致、

    Nima Behmanesh

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

    您好:

    根据我所见、您所指的部分适用于 BR/EDR 或经典蓝牙。 我认为适用于低功耗蓝牙的内容已在第3卷第 H 部分中捕获。如果配对失败、则必须在再次开始配对之前重新建立连接。  

    此致、

    Nima Behmanesh

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

    您好:

    我仍然无法重现此问题。 在应用程序方面、您使用什么来分配内存和释放内存? 是否在指针空闲后将其设置为 NULL?

    此致、

    Nima Behmanesh

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

    第一点:关于主机与从连接进入硬件错误中断
    我想我已经确定了问题。
    问题可能在于 MOVE 函数—当传递给函数 0的 length 参数为时、可能会导致错误。 在我添加了一个防止零长度参数的检查后,系统连续运行48小时,没有任何问题。

    第二点:关于图片中的内容
    我能否确认当前 SDK 不包含图中所示的功能? 这是否意味着无论时间如何、都需要重新连接才能重新启动配对?

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

    您好:

    是的、是的。 此功能不是低功耗蓝牙控制器的一部分、但是经典蓝牙的一项要求。 在低功耗蓝牙中、使用 SMP 计时器、如果在 SMP 计时器触发期间配对未完成/失败、则在建立新的物理链路之前不会发生配对操作。  

    此致、

    Nima Behmanesh