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.

[参考译文] LP-CC2651R3SIPA:修改 BLE5Stack 中的 ICALL_TASK_STACK_SIZE 和内存优化

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1503627/lp-cc2651r3sipa-modifying-icall_task_stack_sizes-and-memory-optimization-in-ble5stack

器件型号:LP-CC2651R3SIPA
主题中讨论的其他器件:CC2651R3SIPA

工具/软件:

您好、

我目前正在根据 simple_peripheral 示例使用以下设置开发一个工程:

  • SDK 中找到 :simplelink_cc13xx_cc26xx_sdk_7_41_00_17

  • IDE :CCS Theia v1.5.1

  • 微控制器 : CC2651R3SIPA

我正在使用的器件 iCall_task_stack_sizes 定义为{ 4096 }、我遇到内存限制。 我想减少堆栈大小、但我不确定如何安全地这样做。

我有以下问题:

  1. 如何安全地修改ICALL_TASK_STACK_SIZES、而不会导致 BLE 栈不稳定或出现问题?

  2. 如果建议的最小值为ICALL_TASK_STACK_SIZES、能否分享该值? 我想知道最小的价值,不会造成任何问题。

  3. 是否有任何其他方法可以缩减 BLE5Stack 中的存储器使用量(例如减小其他存储器缓冲区或栈大小)?

感谢您的支持!

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

    您好:

    感谢您联系我们、很抱歉耽误您的时间! 我们将查看您的问题、尽快回复您!

    此致、

    Tarek

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

    您好、

    感谢您联系我们。 关于您的问题、我的想法如下:

    Unknown 说:
    如何安全地修改、ICALL_TASK_STACK_SIZES而不会导致 BLE 栈不稳定或出现问题?

    我建议在调试期间对您的应用程序执行最坏情况下的压力测试、同时监控 iCall 任务大小。 这样您就可以找到在最坏情况用例中任务得到的最大大小。 之后、我强烈建议在此中添加一些缓冲区、以防万一。

    如果有建议的最小值ICALL_TASK_STACK_SIZES、请分享该值吗? 我想知道最小的值,不会造成任何问题.[/报价]

    我们在默认值下对 SDK 进行了广泛的测试、但不会探索最小值是多少。 这是因为最小值在很大程度上取决于应用程序正在执行的操作和角色。

    Unknown 说:
    是否有任何其他方法可以缩小 BLE5Stack 中的内存使用量(例如减少其他内存缓冲区或堆栈大小)?

    我建议使用尽可能多的变量常量(使用 const)、因为这会将它们从 RAM 卸载到闪存。 重复使用缓冲器而不使用唯一的缓冲器也会有所帮助。

    此致、

    1月

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

    您好、Jan、

    非常感谢您的答复。
    相关 BLE5Stack 内存优化 ,我希望得到更具体的指导。

    您之前提到过 const和缓冲器重用 ,这是有帮助的,但我想问是否有 BLE5Stack 特定的配置选项或内部缓冲器 是的 降低或禁用 可进一步缩小 RAM 使用情况

    例如、在我的 BLE 实现中、我称之为 ICall_createRemoteTasks()以创建与 BLE 相关的任务。
    我已确认此函数使用创建任务 栈大小为4096字节

    根据我的理解、此堆栈大小由确定 ICALL_TASK_STACK_SIZE在中定义的宏 icall_addrs.h、它是提供的 SDK 源代码的一部分。
    因为此文件是 SDK 和的一部分 不会直接修改 是的,我想是 不建议直接覆盖或更改宏

    期间 最坏情况应力测试 我看了一下 已达到最大栈使用量 0xBBC、而 分配的总大小为 0x1000
    尽管这表明当前的大小0x1000仍然合理 、由于 严格的内存限制 ,我正在考虑 从而减少堆栈大小

    如果有 指导或建议的方法 指定 安全收缩 BLE5Stack 任务使用的栈大小、非常感谢您提出建议。

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

    您好、Jan、

    再次感谢您的支持。

    我想更正之前有关堆栈使用情况的消息。
    似乎我在解释中有一个错误: 实际的栈使用量约为0x444字节 ,而不是像我最初所说的0xBBC。
    因此、 未使用的栈空间约为0xBBC 字节 、并且当前的堆栈大小0x1000 (4096字节)似乎是 已超过必要

    鉴于此、我现在更有信心 可以安全地减小堆栈大小
    如果有任何最佳实践或支持的方法可以覆盖默认值或ICALL_TASK_STACK_SIZE以其他方式以安全和推荐的方式调整 BLE 任务栈大小、我将非常感谢您的建议。

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

    您好、

    您可以修改 icall_addrs.h、方法是将其复制到您的工程中并将其作为本地副本放置。 这将确保您的 SDK 副本未修改、但您的工程可以更改文件的值。 很高兴我能提供帮助! 您应该能够根据您的应用来降低这种损耗。 鉴于您当时分享的数字、将堆栈大小缩减到较低的数字似乎是合理的。 确保您进行广泛的测试、并使用这一新的数据对系统施加压力、以防万一。

    此致、

    1月

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

    您好、Jan、

    非常感谢您提供的有用建议!
    通过icall_addrs.h在本地放置在项目中,我能够减少在 iCall 内创建的任务的堆栈大小。
    我将在运行应力测试后确定最终堆叠大小。

    非常感谢您的支持!

    此致、

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

    您好、

    没问题! 我很高兴我能提供帮助!

    此致、

    1月