主题中讨论的其他器件:C2000WARE、 UNIFLASH
我正在尝试使用 BINIT 表将.text 段加载到闪存、然后在 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.
我正在尝试使用 BINIT 表将.text 段加载到闪存、然后在 RAM 中运行。 在这样做的同时、我将面临这个问题。

您好 Rishitha:
正如您所说的、我尝试使用 memcpy ()将.text 从闪存移动到 RAM、而不是 binit 表。 在链接器命令文件中、我已经将此部分映射到闪存中加载并在 RAM 中运行。 但仍然面临这个问题。 CCS 在 codestart.asm 中的第82行获得断点,当我尝试恢复时,显示_system_post_cinit ()没有可用的源。 当我从闪存运行代码时、它工作正常。 只有当我尝试在运行时将整个.text 段从闪存移动到 RAM 时、我才会遇到这个问题。

感谢您发送编修。 这里需要说明一点:load=flash/run=RAM 仅用于初始化闪存的函数。 您的其余代码 只能从闪存运行。
但是你需要从你的代码调用 Flash_init_module()。 如果有一个初始化闪存的自定义函数、则必须声明#pragma code_section (myFlashInitFunc、".TI.ramfunc")、以便链接器将它放置在正确的段中。 如果您从 driverlib 调用 Flash_initModule(),此 pragma 已在库源代码中声明。
啊、我明白了。 您只需使用上述的#pragma 确保所有性能关键型代码函数均放置在.TI.ramfunc 中、这样就可以确保它们得到处理。
对于.TI.ramfunc 以外的任何内容、您可能需要 创建自己的复制表并使用 copy_in ()函数将它们从闪存复制到 RAM 中。 有关这方面的更多信息、请查看 www.ti.com/lit/spraa46 第4节(复制表)。