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.

[参考译文] CC2640R2F:SDK_5_30_00_03 blestack multi_role 项目、默认自旋锁导致8个子原因85

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1168715/cc2640r2f-sdk_5_30_00_03-blestack-multi_role-project-default-spinlock-cause-8-subcause-85

器件型号:CC2640R2F
主题中讨论的其他器件: LAUNCHXL-CC2640R2

我有一个基于 multi_role 示例的项目、在该示例中、我获得了原因8和85子条款的默认自旋锁错误。

当我只有一个基于外设的简单 BLE 器件连接到 multi_role 时、就会发生这种情况、在几分钟到一小时的连接后、它会随机发生。

查看 HAL_ASSERT 定义会将原因8定义为 HAL_ASSERT_CAUSE_hardware_error。 我找不到详细的第85款。

如果您对85V 的子原因以及从何处开始查找问题提出任何建议、我们将不胜感激。

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

    尊敬的 David:

    明白了。 是的、同意这是奇怪的。 当您有机会使用笔记本电脑进行测试时、请告诉我。 如果 SDK 进行了任何修改、则可能会解释缺少的表达式、并且可能是我们看到的原始错误的原因。 您能否还提供您正在使用的 CCS 版本以及编译器版本?

    此致、

    1月

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

    你(们)好、Jan

    好的、问题已解决。 我没有在"exersion"窗口中正确命名您想要的指标。

    现在、我已经运行调试并收集了硬件自旋锁错误发生时所需的信息:

    我使用的是 CCS 9.3.0.00012、我认为它是与 BLE Stack 配合使用的最新版本、如 SDK 5.30.0.03中所示。

    编译器版本为 TI V18.12.4 LTS、如果感兴趣、优化级别为4、速度与大小之间的关系为1。

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

    尊敬的 David:

    我很高兴堆指标现在可以正常工作。 根据提供的值、似乎没有遇到内存错误、这似乎排除了内存问题。 您是否看到堆变量增加导致出现行为? SDK 的依赖项如下所示:

    考虑到您提供的内容、这些内容似乎是可以的。 我还会尝试删除目前的优化、因为这可能有助于调试。 如果 对 cc26xx_app.cmd 文件、ble_user_config.c、ble_user_config.h、CCFG 文件或任何类似的配置文件进行了任何更改、您能否共享?

    此致、

    1月

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

    你(们)好、Jan

    cc26xx_app.cmd 不变。

    BLE_USER_CONFIG.c 已更改为为我们的定制 PCB 添加#ifdef、但当我使用 LaunchXL 作为目标进行测试时、这些不适用。

    ble_user_config.h 已更改、添加了用于 BLE 连接的#ifdef、BLE HCI PDU、BLE HCI PDU 的最大大小、但在 LaunchXL 上进行测试时、这些不适用。

    CCFG 已通过 ccfg_app_ble.c 进行更改、以添加用于引导加载程序启用的#ifdef、但在 LaunchXL 上进行测试时、这不适用。

    因此、我确信在 LaunchXL 上进行测试时、与原始的 multi_role 项目相比、没有什么变化。 如果您愿意、我可以与您共享这些文件。

    我看不到 heapmgrMetrics 在自旋锁误差的建立过程中显著增加。

    我想更改优化、但由于我们接近闪存限制、因此很难更改。 但是、您可以通过以下方式帮助我:

    。 当我从 SmartRF 闪存编程器下载闪存时、我可以看到我们正在将大小为0x004000的区域用于用户闪存存储的变量、该区域的运行范围为0x01A000至0x01DFFF、 我们仅使用大约0x0400、该值仅适用于一个擦除扇区。 我看不到如何从4个擦除扇区更改大小或移动它。

    我在 PCB 配置文件中看到 NVS_REGASE_BASE 和 REGIZE 的定义、但更改它们无效。 您是否知道它们是否在项目的其他位置被覆盖或定义? 文本搜索没有显示任何内容。

    我认为我只需要1个擦除扇区大小是正确的?

    谢谢

    David

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

    尊敬的 David:

    明白了。 感谢您的详细信息。 我认为此时最好的行动计划是尝试删除一些添加的功能、以查看哪个功能引入了此错误。 我注意到"将配对信息存储在闪存中"功能、您能否先尝试删除此功能以查看发生了什么情况? 如果仍然观察到该行为、我建议继续执行下一个功能、直到该行为消失。

    关于闪存问题、我建议参考 用户指南的闪存章节。 您应该能够更改  NVS_REGESS_BASE 和 REGIZE 定义。 您能否分享您进行修改的位置?

    此致、

    1月