工具/软件:TI C/C++编译器
我想将一些代码放置到 RAM 中、因为它从闪存中以更快的速度工作。
我在中断中使用此代码。
void target_func __attribute__((ramfunc))(void);工作正常、但它仅为 RAMLS0的2k、如果我有更多的代码链接器说:
"./lnk.cmd"、第48行:错误#10099-D:程序将无法放入可用内存中。 “.text”大小为0x2b12的定位失败。 可用存储器范围:闪存大小:0x1000未使用:0xe56最大空洞:0xe56
即使我有"run = RAMLS0 | RAMLS1 | RAMLS3"
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
.TI.ramfunc:{}负载= FLASHD,
运行= RAMLS0 | RAMLS1 | RAMLS3、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、align (4)
#else
ramfuncs :LOAD = FLASHD,
运行= RAMLS0 | RAMLS1 | RAMLS3、
load_start (_RamfuncsLoadStart)、
load_size (_RamfuncsLoadSize)、
load_end (_RamfuncsLoadEnd)、
run_start (_RamfuncsRunStart)、
run_size (_RamfuncsRunSize)、
run_end (_RamfuncsRunEnd)、
PAGE = 0、ALIGN (4)
#endif
因此、我想做自己的部分:
coderam: load = FLASHE,
运行= RAMLS2、
load_start (_codeRamLoadStart)、
load_size (_codeRamLoadSize)、
load_end (_codeRamLoadEnd)、
run_start (_codeRamRunStart)、
run_size (_codeRamRunSize)、
run_end (_codeRamRunEnd)、
PAGE = 0、ALIGN (4)
并与 void target_func __attribute__((section(".coderam"))一起使用(void);
但它在执行时会清空并进入 ILLEGAL_ISR()