工具/软件:Code Composer Studio
我一直在调试一些运行在 RAM 之外的时间关键型代码、现在当我耗尽闪存时、我会有一些性能下降(SYSCLK= 150MHz、闪存等待状态= 2)。 因此、我一直在使用#pragma CODE_SECTION ( ,".TI.ramfunc");
在我这么做时、链接器会通知我、我没有一个足够大的连续存储器块、可以容纳我尝试使用此指令放入 RAM 中的所有内容。
"C:/Users/sbeiter/workspace_v7/my_project/2837xD_FLASH_lnk_cpu1.cmd "、第93行:错误#10099-D:程序不能放入可用内存中。 对".TI.ramfunc"大小为0x108f 页0的运行定位/分块失败。 可用存储器范围:
RAMLS0大小:0x800未使用:0x800最大孔:0x800
RAMLS1大小:0x800未使用:0x800最大孔:0x800
RAMLS2大小:0x800未使用:0x800最大孔:0x800
RAMLS3大小:0x800未使用:0x800最大孔:0x800
RAMGS14大小:0x1000未使用:0x1000最大孔:0x1000
RAMGS15大小:0x1000未使用:0x1000最大孔:0x1000
返回0x0800时、我已经通过将 GS14和 GS15包含在可用 RAM 空间中来修改了提供的链接器命令文件:
.TI.ramfunc:{}负载= FLASHD,
RUN = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3|RAMGS14|RAMGS15、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (4)
我想我不确定链接器为什么要寻找一个连续块、以及它为什么不能识别 LS0到 LS3的邻接关系、这实际上代表了0x800 x 4? 是否有将这些块串联在一起的语法? 我想我可以使 RAMLS0看起来像一个4 x 0x800的连续块、但是否有一 种首选或推荐的方法、而不是这种方法、或者为程序获取更大的 RAM 块? 我还可以声明第二个.TI.ramfunc2段或其他内容、但我想尽可能按照 TI 建议的方式来执行此操作。 显然、这里有大量的内存、只需确保我正确使用了链接器命令文件功能。 谢谢!