Как получить набор инструментов Keil RealView MDK-ARM, чтобы связать регион для выполнения в одной области памяти, но сохранить ли он в другой? - PullRequest
0 голосов
/ 10 августа 2010

Я пишу программу, которая обновляет флэш-память.В то время как я стираю / пишу флэш-память, я хотел бы выполнять ее из ОЗУ.В идеале я бы связал свой код с областью выполнения, которая хранится во флэш-памяти, и при запуске я бы скопировал в область ОЗУ, с которой он связан.код инициализации, поэтому я не могу просто пометить свою функцию как __ram.

Если бы я мог сделать выше, то символы отладчиков были бы актуальны для скопированного в RAM-код, и я смог бы отлаживать бизнес как обычно.

Я думаю, что что-то вроде OVERLAY / RELOC могло бы помочь, но я не уверен.

Спасибо,

1 Ответ

0 голосов
/ 11 августа 2010

Может быть, ваш код приложения может сделать это вручную. Что-то вроде

  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.

...