主题中讨论的其他器件: SysConfig、 CC2640
您好!
我们正在使用 CC2340R5器件型号、其在 RAM 中的堆区消耗20KB。 如果我们减少它所广播的堆内存,但它不与任何移动的配对。 外设+观测器角色中进行配置。
同一应用在 CC2640R2上正常运行、不会出现任何问题。 请说明两个器件型号的记忆之间有何差异。 以及如何 在 CC2340R5中使用外设+中央角色。

谢谢
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器件型号、其在 RAM 中的堆区消耗20KB。 如果我们减少它所广播的堆内存,但它不与任何移动的配对。 外设+观测器角色中进行配置。
同一应用在 CC2640R2上正常运行、不会出现任何问题。 请说明两个器件型号的记忆之间有何差异。 以及如何 在 CC2340R5中使用外设+中央角色。

谢谢
您好!
感谢您与我们联系。 CC2340R5是我们的下一代器件、并在 SimpleLink 低功耗 F3 SDK 上运行、而 CC2640R2器件是在 SimpleLink CC2640R2 SDK 上运行的上一代器件。 这些器件之间的 SDK 和硬件有显著差异。
CC2340R5器件能够支持多角色操作。 您能否指定在设备不进行配对时出现的行为? 应用程序是否挂起或崩溃? 应用程序是否继续运行? 是否能够成功断开连接?
此致、
1月
大家好、Jan、
我们使用 SimpleLink 低功耗 F3 SDK (7.20) SDK、我们使用数据流示例代码是基本代码。 我们修改了多角色(外设+中央)和 UART 的一些配置。 此外、我们还启用了计时器。 我们将堆大小配置为 #define configTOTAL_HEAP_SIZE ((size_t)(0x5000))。 它将按预期工作、如广播、连接、配对和通信。 我们需要在应用中添加更多模块、如 ANC 和 TPMS。 添加这些模块后、我们在内存分配方面遇到了故障。
然后、我们降低了堆大小 #define configTOTAL_HEAP_SIZE ((size_t)(0x4000))。 但器件无法广播。 此应用是否需要20K 堆? 或者、是否有任何其他可能的方法来优化存储器?
我已随附了两个屏幕截图- 当我们仅使用 TI 示例时成功、当我们使用 TI 示例移植我们的应用时失败。
您好!
其中一个是使用 CC2640r2、
存储器配置
名称 源 长度 已使用 未使用 属性 填充
---------------- ---------------- ---------------- ---------------- ---------------- ----------------
闪存 00000000 0001f000 00015c08 000093f8 R X
FLASH_LAST_PAGE 0001f000 00001000 00000058 00000fa8 R X
SRAM 20000000 00004400 00002a05 000019fb RW X
与 CC2340R5中集成的应用相同、但存储器消耗
存储器配置
名称 源 长度 已使用 未使用 属性 填充
---------------- ---------------- ---------------- ---------------- ---------------- ----------------
闪存 00000000 0007c000 0002fd85 0004c27b R X
NVS_SLOT 0007c000 00004000 00004000 00000000 R X
SRAM 20000000 00009000 00008248 00000db8 RW X
CCFG 4e020000 00000800 00000800 00000000 RW
这36KB 有什么区别。 它比 cc2640r2高。 我们将使用10KB RAM。 但射频内核本身会在用户空间中占用更多的存储空间。 请加快至解决方案以进行下一步。 现在我们停止了。
谢谢。
大家好、Jan
我分享了配对设置和配对功能供您参考。 并共享了移动应用程序和监听器的广告和连接日志。
您好!
您能否确认调用 GATT 函数的上下文? 您是否属于低任务职能部门? 如果不是,那么您是否可以尝试使用 BLEAppUtil_invokeFunctionNoData ()来调用 GATT_WriteCharValue()函数? 这将确保在正确的上下文中调用该函数。 以下 E2E 主题显示了如何使用此函数的示例: https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1267648/cc2340r5-central-is-going-to-hang-when-invoke-function-is-given-to-the-gpio-callback
此致、
1月
大家好、Jan、
我已经尝试使用 BLEAppUtil_invokeFunctionNoData ()方法,但它从来没有帮助我。 发生 iCall_abort () 的原因是 GATT_WriteCharValue ( )中的函数 AMS_CCCDConfig (AMS_handleCache[AMS_REMOTE_CONTROL_HDL_CCCD],TRUE )。 它进入 ICall abort()或返回状态22而不是成功。 我已经在多个测试场景中对此进行了测试。
此外、我已经分析了2个 E2E 线程、但问题没有得到解决。
CC2340R5:CC2340卡在 iCall_abort 中-蓝牙论坛- Bluetooth︎- TI E2E 支持论坛
测试场景1:
我参考了简单的外设示例代码(外设+观测器角色)并移植了 AMS 和 ANCS 部分。 我在此使用 CC2640和 CC2642 (多角色示例代码作为基本代码)进行了测试、测试表明没有发生错误。
测试场景2:
我参考了基本 BLE 代码(仅使用外设角色)并移植了 AMS 部分、ICall 中止的发生方式与前面所述的方式相同。
我在调用 GATT_WriteCharValue ()函数之前也已验证了可用堆大小。堆大小接近8KB。 我附上了图像供您参考。 我已经使用 CC2340R5对此进行了测试。
测试场景3:
我在外设+中央角色中参考了数据流示例代码。 ANCS 部分所需的代码。 在这个函数中我有两个函数,一个是 ANCS_subsDataSrc(),另一个是 ANCS_subsNotifSrc()。我附加了图像供您参考。 两个函数都尝试使用 GATT_WriteCharValue()函数编写请求。 我在使用这些函数的同时收到 ICall 中止命令。 如果我使用任何一个订阅功能、我不会遇到任何错误、它会像我预期的那样正常工作。 我已经使用 CC2340R5对此进行了测试。
测试场景4:
我在外设中参考了数据流示例代码。 并且在该代码中启用了 ANC 部分、工作正常。 我已经使用 CC2340R5对此进行了测试。
请分析这些场景并阐明 CC2340R5中出现错误的原因。 我正处于此项目的最后阶段、请帮我解决此问题。 
您好!
堆栈大小看起来是正确的。
为了健全起见、能否确认问题发生后已收集堆和堆栈使用数量?
我还有一些其他的元素,我希望你检查健全性:
感谢您在我们试图解决问题时的耐心。
此致、
您好
感谢您的建议。 我们尝试了这些设置、但看起来没有改善。
我们需要通过基本的 BLE 示例了解 SDK 所需的最小 RAM 大小。 并且、我们在 CC2640R2中的 UART 应用建立了所有功能、例如多角色(中央+外设)、AMS 和 ANC。 但在 CC2340R5中、我们无法使用 AMS 功能实现基本外设。 我们提供了接近8K 的免费 SRAM 大小、但该功能仍然无法实现。 CC2340R5似乎不适合我们的应用。
和选择的这种方式进行比较。 但在这里、它会消耗更多 RAM。 因此、我们认为 CC2340不会替代 CC2640。
此致
K·布林达
大家好、Jan
您的
1.配对不成功
2.堆栈在特定的 GATT_WriteCharValue 处挂起
但是、 如果堆栈大小和/或堆大小未减小、 仍然存在问题。
我附上了 ANC_CCCDConfig 函数供您参考。 这两个函数均从 AMS + ANCS 中调用。 请确认我们在此函数中使用的内存分配和空闲是否正确。 是否有任何其他函数替代 ANCS_CCCDConfig 、请告知我们。
此致
K·布林达
您好、Brindha:
好的、我认为我们需要确保启用了 HALL 置位。 调试指南的 ICall Abort 部分和 HAL Assert Handling 部分提供了一些相关信息 。 您能否参考这些部分以了解我们是否能够以这种方式提取 ErrorNo?
此致、
1月
大家好、Jan
我们的结论是 CC2340R5不适合我们的应用。 我在随附的表格中分享了实现的功能及其在分步流程中的结果。 我们需要应用具备整个特性。 不过、我们不希望 CC2340R5不适合我们整个功能开发过程。
感谢您的支持。
| SL。 否 | 逐步实现的功能 | 结果 |
| 1 | 数据流示例(BLE 外设+ UART)+计时器 | 工作 |
| 2 | 数据流示例(BLE 外设+ UART) +计时器+我们的应用 | 工作 |
| 3 | 数据流示例(BLE 外设+ UART) +计时器+ ANC | 工作 |
| 4 | 数据流示例(BLE 外设+ UART) +计时器+ ANC +我们的应用 | 工作 |
| 5 | 数据流示例(BLE 外设+ UART) +计时器+ ANC +我们的应用+添加了多角色(中央+外设) | 编译工程时出现内存不足问题 |
| 6 | 数据流示例(BLE 外设+ UART) +计时器+最小化我们的应用(释放的 SRAM 存储器)+添加了多角色(中央+外设) | 工作 |
| 7 | 数据流示例(BLE 外设+ UART) +计时器+最小化我们的应用(释放的 SRAM 存储器)+添加了多角色(中央+外设)+ ANC | ICall 中止错误 |
| 8 | 数据流示例(BLE 外设+ UART) +计时器+最小化我们的应用(释放的 SRAM 存储器)+ ANCS + AMS | ICall 中止错误 |
| 9 | 数据流示例(BLE 外设+ UART) +计时器+ ANCS + AMS | ICall 中止错误 |
| 10 | 数据流示例(BLE 外设+ UART) +计时器+ AMS | ICall 中止错误 |
| 11 | 基本 BLE 示例(BLE 外设)+计时器+ ANC + AMS | ICall 中止错误 |
| 12 | 基本 BLE 示例(BLE 外设+ UART) +计时器+ AMS | ICall 中止错误 |
此致
K·布林达
大家好、Jan、
您只使用 Basic BLE 示例、在该代码中仅包含 AMS 功能。 "基本 BLE 示例(BLE 外设+ UART)+计时器+ AMS"、在此情况下、我们不添加我们的应用。 仅使用示例代码+ AMS 进行测试、我们得到了 iCall_abort。 请按照上述方式进行调试。 如果您没有遇到任何 iCall_abort 错误、请分享代码、这将对我们提供很大帮助。
此致
K·布林达