主题中讨论的其他器件:C2000WARE
您好!
问题1:
是否有任何有关如何管理 C28x 和 CM 的内存的文档?
问题2.
我认为有必要分配 RAM 来高速运行程序、但 RAM 不足以临时存储数据。 此外,在频繁跳过功能的程序中,会出现一个警报,指示堆栈内存不足。 有什么对策吗? 例如、可以通过将三角函数运算重写到专用指令来改进这一点吗?
谢谢。
科诺
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.
您好!
问题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)。
谢谢。
科诺