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.

[参考译文] TMS320F28388D:有关如何管理 C28x 和 CM 的存储器的文档?

Guru**** 2553260 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1285724/tms320f28388d-documentation-on-how-to-manage-memory-for-c28x-and-cm

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARE

您好!

问题1:
是否有任何有关如何管理 C28x 和 CM 的内存的文档?

问题2.
我认为有必要分配 RAM 来高速运行程序、但 RAM 不足以临时存储数据。 此外,在频繁跳过功能的程序中,会出现一个警报,指示堆栈内存不足。 有什么对策吗? 例如、可以通过将三角函数运算重写到专用指令来改进这一点吗?

谢谢。

科诺

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

    您好 Conor:

    Unknown 说:
    是否有任何关于如何管理 C28x 和 CM 的内存的文档?

    若要管理程序的存储器、您应使用链接器命令(.cmd)文件。 您可以在 IPC_ex1_BASIC 示例(C2000Ware_5_00_00_00\driverlib\f2838x\examples\C28x_cm\IPC)中找到 C28x 和 CM 的相关示例。 C28x 和 CM 分别进行编程、因此每个都有单独的链接器命令文件。

    我认为有必要分配 RAM 来高速运行程序,但没有足够的 RAM 来临时存储数据。 此外,在频繁跳过功能的程序中,会出现一个警报,指示堆栈内存不足。 是否有任何对策?

    如果您发现无法从 RAM 运行所有程序、您可以改为将其编程到闪存、并根据需要使用 memcpy 从 RAM 运行相关函数。 C2000Ware_5_00_00_00\driverlib\f2838x\examples\C28x\flash )中有一个名为 flash_ex3_flash_to_ram 的示例

    例如,可以通过将三角函数操作重写为专用指令来改进这一点吗?

    该器件确实有一个 TMU、因此如果您愿意、可以通过手动在代码中编写一些汇编代码来利用该三角加速器。 有关这些指令的详细信息、请参阅 C28x 扩展指令集 文档。

    此致、

    阿米尔·奥马尔

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

    您好、Omer:

    感谢您的回答。

    如果您发现无法从 RAM 运行所有程序,则可以根据需要使用 memcpy 将其编程到闪存并从 RAM 运行相关函数。 [/报价]

    我将使用 memcopy 来节省 RAM 空间、但仍需要更多 RAM 空间。 对于如何创造性地编程和如何节省存储器空间、您有什么建议吗? 此外、使用专用指令是否会节省 RAM 容量?

    谢谢。

    科诺

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在使用 memcopy 来节省 RAM 空间,但我仍然需要更多 RAM 空间。 对于如何在编程中发挥创意以及如何节省内存空间,您有什么建议吗?

    这更多地是基于应用程序的基本任务;您可以查看所有函数并大概了解它们需要多少存储器。 根据 它们的大小要求以及 正在使用哪些函数、您可以根据需要覆盖 RAM。 例如、如果您有许多从 RAM 运行的初始化函数、 但是永远不会被再次使用、你可以用你想要使用的新函数来写覆盖它们的地址(在执行这个操作时要小心、你所写覆盖的函数将不会从程序中的任何其它位置被调用)。

    此外、如果您有任何静态函数、您可以将这些函数替换为实际的函数/函数调用(这样会牺牲堆栈使用来获得更多的程序存储器)。

    此外,使用专用指令是否可以节省 RAM 容量?

    您能解释一下专门的指令是什么意思吗? 您是否在谈论装配说明?

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

    您好、Omer:

    感谢您的回答。

    您能解释一下专门的指示是什么意思吗? 您在谈论汇编指令吗?

    专用指令意味着扩展指令集、例如浮点单元(FPU64或 FPU32)和三角单元(TMU)。

    谢谢。

    科诺

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

    可以、使用 FPU 和 TMU 等加速器的专用指令可以节省一些程序存储器、尽管其重要性取决于您的代码利用了此类计算的多少。 启用 FPU/TMU 后、编译器可以自动使用这些功能、但您可以在调试会话期间检查反汇编以验证这一点。