首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Keil RealView MDK-ARM工具链将一个区域链接到内存中的一个区域中执行,同时又将其存储在另一个区域中?

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

Stack Overflow用户
提问于 2010-08-10 12:24:47
回答 1查看 793关注 0票数 0

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

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

如果我可以这样做,那么调试器符号将与复制到RAM的代码相关,我将能够像往常一样调试业务。

我认为OVERLAY/RELOC之类的东西可能会有所帮助,但我不确定。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2010-08-12 01:47:49

也许您的应用程序代码可以手动完成此操作。就像这样

代码语言:javascript
复制
  pSourceAddr = &FunctionInFlash;
  pDestAddr = &RamReservedForFunction;
  while(pSourceAddr <= (&FunctionInFlash+FunctionSize))
  {  *pDestAddr++ = *pSourceAddr++; 
  };

  typedef int (*RamFuncPtr)(int arg1); //or whatever the signature is..

 result = ((RamFuncPtr)&RamReservedForFunction)(argument1);

您应该能够让链接器定义文件为FunctionInFlashRamReservedForFunction地址导出符号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3446010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档