我正在编写一个更新闪存的程序。当我擦除/写入闪存时,我想从 RAM 中执行。理想情况下,我会将我的代码链接到存储在闪存中的执行区域,在启动时我会复制到它所链接的 RAM 位置。
我不包含任何正常生成的 C/C++ 初始化代码,所以我不能只将我的函数标记为 __ram。
如果我可以执行上述操作,那么调试器符号将与复制到 RAM 代码相关,并且我可以像往常一样调试业务。
我认为类似于 OVERLAY/RELOC 的东西可能会有所帮助,但我不确定。
谢谢,
也许您的应用程序代码可以手动完成。就像是
pSourceAddr = &FunctionInFlash;
pDestAddr = &RamReservedForFunction;
while(pSourceAddr <= (&FunctionInFlash+FunctionSize))
{ *pDestAddr++ = *pSourceAddr++;
};
typedef int (*RamFuncPtr)(int arg1); //or whatever the signature is..
result = ((RamFuncPtr)&RamReservedForFunction)(argument1);
您应该能够获取链接器定义文件以导出FunctionInFlash
和RamReservedForFunction
地址的符号。