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:.cfg 文件中的内存分配

Guru**** 2587365 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/593421/rtos-memory-allocation-in-cfg-file

工具/软件:TI-RTOS

尊敬的 TI 教授:

  现在、我想让8个内核在 c6678evm 中使用同一程序、这意味着只有一个.cfg 文件。 如何在 .cfg 文件中实现 MSM 分配? 例如、core0使用0xC0000000到0xc0000FFFF、core1使用0xc00010000到0xc00020000。

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

    1.在运行时动态创建堆:您可以使用 DNUM 寄存器来确定您所使用的内核、然后相应地占用共享存储器。 创建的堆句柄可以在 Memory_alloc (createdHeapHandle、...)中使用 然后。 在这种情况下,仍有一个默认堆 Memory_alloc (NULL,...) 和 malloc 使用。 这个堆应该只在本地存储器上运行。

    2.提供默认堆:您可以在.cfg 文件中创建一个 HeapCallback 堆并将其分配给默认 BIOS 堆。 使用 HeapCallback、您可以提供 alloc、free 等函数。 当 Memory_alloc_(NULL、...)时 或者调用 malloc、最终调用您的 alloc 函数。 在函数中、可以使用 DNUM 从所需的存储器获取存储器。 如果您真的想变得复杂、您的启动功能您为 HeapCallback 提供的电源可以在每个内核上创建一个 HeapMem 实例。 您根据 DNUM 提供存储器。 每个内核都有自己的堆来管理不同的存储器、并且您提供的 alloc 调用非常简单。

    注意:抬头... 当对象/堆位于单个映像中的共享存储器中时、请确保相应地使用 NoLoad 和 NOINIT。。。。否则被载入的第二个内核可能会擦除第一个内核的值。

    Todd