Embedded 如何让Keil RealView MDK-ARM工具链将一个区域链接到内存中的一个区域中执行,但将其存储在另一个区域中?

Embedded 如何让Keil RealView MDK-ARM工具链将一个区域链接到内存中的一个区域中执行,但将其存储在另一个区域中?,embedded,keil,Embedded,Keil,我正在写一个更新闪存的程序。当我擦除/写入闪存时,我希望从RAM执行。理想情况下,我会将代码链接到存储在闪存中的执行区域,在启动时,我会将其复制到链接到的RAM位置 我没有包含任何正常生成的C/C++初始化代码,因此我不能只将我的函数标记为_uRAM 如果我能做到以上,那么调试器符号将与复制到RAM的代码相关,我将能够像往常一样调试业务 我在想,一些类似于OVERLAY/RELOC的东西可能会有所帮助,但我不确定 谢谢,也许您的应用程序代码可以手动完成。差不多 pSourceAddr = &

我正在写一个更新闪存的程序。当我擦除/写入闪存时,我希望从RAM执行。理想情况下,我会将代码链接到存储在闪存中的执行区域,在启动时,我会将其复制到链接到的RAM位置

我没有包含任何正常生成的C/C++初始化代码,因此我不能只将我的函数标记为_uRAM

如果我能做到以上,那么调试器符号将与复制到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);
psourceadr=&FunctionInFlash;
pDestAddr=&RamReservedForFunction;
while(psourceadr