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:CC2340R5存储器消耗

Guru**** 2560390 points
Other Parts Discussed in Thread: CC2340R5, SYSCONFIG, CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1331926/cc2340r5-cc2340r5-memory-consumption

器件型号:CC2340R5
主题中讨论的其他器件: SysConfigCC2640

您好!

我们正在使用 CC2340R5器件型号、其在 RAM 中的堆区消耗20KB。 如果我们减少它所广播的堆内存,但它不与任何移动的配对。 外设+观测器角色中进行配置。

同一应用在 CC2640R2上正常运行、不会出现任何问题。 请说明两个器件型号的记忆之间有何差异。 以及如何  在 CC2340R5中使用外设+中央角色。

谢谢  

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

    您好!

    感谢您的联系! 我们将对此进行深入探讨、并尽快与您联系。 您能否分享您正在使用的项目以及已安装的 SDK 版本?

    此致、

    卢克

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

    您好!

    我正在使用"SimpleLink 低功耗 F3 SDK (7.40.00.64)"  

    谢谢

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

    您好!

    感谢您与我们联系。 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。 但射频内核本身会在用户空间中占用更多的存储空间。  请加快至解决方案以进行下一步。 现在我们停止了。

    谢谢。

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

    您好!

    明白了。 我认为 RAM 空间的不足可以通过减少堆来解决。 你是否能够尝试减少堆并验证项目是否能够连接?

    此致、

    1月

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

    您好!  

    我最初在中提到过、如果我减少堆内存、它会被编译但无法正常工作、无法配对 UART 回调未发生。 那么为什么射频内核会占用更多存储空间。 请大家加快此项目的最后阶段。

    谢谢。

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

    您好!

    明白了。 我对这种困惑深表歉意。 为了澄清、连接仍在进行、但配对未在进行? 您能否共享 SysConfig 中使用的配对设置? 是否调用了任何配对函数? 如果是、那么您能否共享返回代码? 您是否具有蓝牙监听器的访问权限? 如果是、那么您能否通过监听器记录器件广播、连接和尝试配对?

    此致、

    1月

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

    大家好、Jan

    我分享了配对设置和配对功能供您参考。 并共享了移动应用程序和监听器的广告和连接日志。  

      e2e.ti.com/.../NRF-Log.txte2e.ti.com/.../Log1.psd

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

    您好!

    鉴于"GATT CONN 终止本地主机"的原因、似乎是电话因某种原因而断开。 其他电话(不同的操作系统和/或型号)是否会出现这种情况? 另外、该应用程序在断开连接后是挂起还是可以在不进行复位的情况下重新连接?

    此致、

    1月

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

    您好!

    所有型号和手机也是如此。

    复位后、只会广播。

    谢谢

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

    您好!

    我懂了。  设备似乎在某处挂起。 如果您暂停执行、您能分享程序暂停的位置吗?

    此致、

    1月

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

    您好

    我已经暂停执行。 它由于函数 GATT_WriteCharValue 中的 iCall_abort ()而卡住。 我附上了供 您参考的图片。

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

    您好!

    您能否确认调用 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 中-蓝牙论坛- BluetoothRegistered︎- TI E2E 支持论坛

    https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1284206/cc2340r5-cc2340-ported-ancs-but-the-module-can-t-receive-cell-phone-data

    测试场景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中出现错误的原因。 我正处于此项目的最后阶段、请帮我解决此问题。

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

    您好!

    明白了。 感谢您提供更多信息。 返回代码22 (0x16)映射到 blePending、当堆栈仍在处理之前排队的事件并且队列已满时、便会发生这种情况。 您是否可以尝试增加 PDU 大小和量,以查看这是否会对行为产生影响? 这可以在 SysConfig 的蓝牙模块中通过。 尝试将这些设置为最大值、并查看是否存在机会。

    此致、

    1月

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

    大家好、Jan

    我已经配置了 MAX_PDU_SIZE 255。 但问题仍然存在。

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

    您好!

    感谢您的确认。 我想看看 ble5-stack 本身是否正在用尽堆。  用户指南的调试常见堆问题部分介绍了如何在运行时测量堆。 在执行这些步骤时、您能否检查 ROV 中报告的堆大小? 了解在行为发生之前和发生之后堆的情况会有所帮助。

    此致、

    1月

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

    大家好、Jan  

    我在上一个聊天中分享了堆信息。 我将再次在 ROV 中共享堆大小。 请检查一下,我们迫切需要完成这项工作。 是否有任何可能的方法可以与您联系以解决此问题? 请帮助我们尽快解决这个问题。

    谢谢

    K·布林达

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

    您好!

    堆看起来对我来说是正确的。

    您能否同时介绍一下每个任务的堆栈? 这可以像你对堆所做的那样、选择"task"模块(并确保你使用"detailed"视图)。

    此致、

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

    您好  

    我附上了任务堆栈 ROV 供您参考。 请检查并分享您的反馈。

    此致

    K·布林达

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

    您好!

    堆栈大小看起来是正确的。

    为了健全起见、能否确认问题发生后已收集堆和堆栈使用数量?

    我还有一些其他的元素,我希望你检查健全性:

    • 在 SysConfig > BLE > Profile Configuration > Maximum Number of Prepare Writing 中、您是否可以将设置的值加倍?
    • 在 SysConfig > BLE > General Configuration > Max Number of PDU 中、您是否可以将设置的值加倍?
    • 在 SysConfig > BLE > General Configuration > Max Number of Connections 中、您是否可以设置"1"?

    感谢您在我们试图解决问题时的耐心。

    此致、

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

    您好

    感谢您的建议。 我们尝试了这些设置、但看起来没有改善。  

    我们需要通过基本的 BLE 示例了解 SDK 所需的最小 RAM 大小。 并且、我们在 CC2640R2中的 UART 应用建立了所有功能、例如多角色(中央+外设)、AMS 和 ANC。 但在 CC2340R5中、我们无法使用 AMS 功能实现基本外设。 我们提供了接近8K 的免费 SRAM 大小、但该功能仍然无法实现。 CC2340R5似乎不适合我们的应用。

    和选择的这种方式进行比较。 但在这里、它会消耗更多 RAM。 因此、我们认为 CC2340不会替代 CC2640。

    此致

    K·布林达

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

    您好、Brindha

    您的项目是全部在单个任务上运行、还是对于每个功能都有单独的任务? 您是否可以尝试增加/减少为每个任务分配的任务堆栈大小? 例如、对于 appMain 任务、任务堆栈大小可在此处修改:

    此致、

    1月

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

    大家好、Jan、

    这已经做了非常初始本身,你知道这个问题吗?. 这里关心的是 RAM 内存、TI 射频堆栈所需的确切 RAM 内存是多少。

    请提供确切的详细信息。

    谢谢,

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

    您好!

    我的道歉,你是对的,我错过了,我以前要求你改变这个。 为了确保我了解您所经历的行为、我将在下面进行总结。 如果我漏掉了任何内容、请告诉我

    当栈大小和/或堆大小出现时、会观察到意外的 BLE 行为。

    1.配对不成功  

    2.堆栈在特定的  GATT_WriteCharValue 处挂起

    但是、如果堆栈大小和/或堆大小未减小、则不会出现问题。

    是这样吗?

    此致、

    1月

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

    大家好、Jan

    您的

    1.配对不成功  

    2.堆栈在特定的  GATT_WriteCharValue 处挂起

    但是、 如果堆栈大小和/或堆大小未减小、  仍然存在问题。

    我附上了 ANC_CCCDConfig 函数供您参考。 这两个函数均从 AMS + ANCS 中调用。 请确认我们在此函数中使用的内存分配和空闲是否正确。 是否有任何其他函数替代  ANCS_CCCDConfig 、请告知我们。

    此致

    K·布林达

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

    您好、Brindha:

    乍一看、内存分配和释放似乎很好。 您是否可以尝试改用 GATT_WriteNoRsp ()而不是使用 GATT_WriteCharValue? 在我们的一些示例项目中、我们在修改 CCCD 时使用它。 可表示为:

    此致、

    1月

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

    大家好、Jan

    我已经 使用您所说的 CCCD 中的修改尝试了 GATT_WriteNoRsp。 但是该问题仍未解决、ICall_abort 会发生。

    我附上了图像供您参考。

    此致

    K·布林达

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

    您好、Brindha:

    很好理解、让我们尝试深入了解为什么可能发生 ICall_abort。 在达到中止时、您能否为我提供 ErrorNo 变量的值?

    此致、

    1月

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

    大家好、Jan

    我无法获取 ErrorNo 的值。 在达到中止函数后、我卡在了 while 循环中。 变量 j 始终保持为1。

    此致

    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·布林达

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

    您好、Brindha:

    感谢您的参与。 很抱歉、您在评估过程中遇到了这些开发问题。 关于 ICall abort 错误、我认为这些错误可能是由某个应用程序代码错误导致的。 为了解决这些问题、我将使用显示该 ICall 中止的最小项目并对其进行调试。 如果您在此处分享该项目、我很乐意进一步了解。

    此致、

    1月

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

    大家好、Jan、

    您只使用 Basic BLE 示例、在该代码中仅包含 AMS 功能。 "基本 BLE 示例(BLE 外设+ UART)+计时器+ AMS"、在此情况下、我们不添加我们的应用。 仅使用示例代码+ AMS 进行测试、我们得到了 iCall_abort。 请按照上述方式进行调试。 如果您没有遇到任何 iCall_abort 错误、请分享代码、这将对我们提供很大帮助。

    此致

    K·布林达

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

    您好、Brindha:

    明白了。 遗憾的是、我旁边没有 AMS 项目。 您是否能够将最小化的 AMS 项目与该问题共享? 我应该能够对其进行调试、并弄清楚什么可能会触发中止。

    此致、

    1月