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.

[参考译文] RTOS/CC2640:CC2640上 Memory_alloc 和 iCall_malloc 之间的差异

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/655262/rtos-cc2640-the-difference-between-memory_alloc-and-icall_malloc-on-cc2640

器件型号:CC2640

工具/软件:TI-RTOS

您好!

在许多 BLE 示例中,经常使用 iCall_malloc()。
这些 API 之间有何差异?
特别是、我想了解对齐检查和任务安全程序。

此致、
Nomo

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

    器件型号:CC2640

    工具/软件:TI-RTOS

    您好!

    HeapBuf 任务安全 API 吗?

    在以下文档中、HeapMem 是互斥和保护、而 HeapBuf 是非阻塞的。
    www.ti.com/.../spruex3t.pdf

    但是、在下面的线程中、这些 API 似乎是任务安全的。
    e2e.ti.com/.../265793

    哪一项是正确的?

    我的客户希望实现以下过程。
    -动态 分配 GAP 事件(从 BLE Stack 调用)上的堆内存。
    将扫描的数据存储到堆内存中。
    然后、将数据传输到另一个任务。

    此致、
    Nomo

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

    我已经合并了您的线程、因为它们非常密切相关。
    对于 CC2640、我建议查看软件开发人员指南的3.11 (RAM)部分、以查看器件的堆架构。

    总之,TI-RTOS 堆函数仅由 TI-RTOS _create()函数使用,因此使用了一个小堆。 相反、建议使用 ICall 堆。 参考部分对此进行了详细讨论。

    ICall 堆是线程安全的,使用 iCall_enterCSImpl ()和 iCall_leaveCSImpl ()来确保线程安全。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sean - San、

    感谢你的答复。

    此致、
    Nomo