我正在写一个更新闪存的程序。当我擦除/写入闪存时,我想从RAM执行。理想情况下,我会将我的代码链接到一个存储在闪存中的执行区域,在启动时,我会将它复制到它链接到的RAM位置。
我没有包含任何正常生成的C/C++初始化代码,所以我不能只将我的函数标记为__ram。
如果我可以这样做,那么调试器符号将与复制到RAM的代码相关,我将能够像往常一样调试业务。
我认为OVERLAY/RELOC之类的东西可能会有所帮助,但我不确定。
谢谢,
发布于 2010-08-12 01:47:49
也许您的应用程序代码可以手动完成此操作。就像这样
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地址导出符号。
https://stackoverflow.com/questions/3446010
复制相似问题