0

フラッシュメモリを更新するプログラムを書いています。フラッシュを消去/書き込みしている間、RAMから実行したいと思います。理想的には、コードをフラッシュに保存されている実行領域にリンクし、起動時にリンク先の RAM の場所にコピーします。

通常生成された C/C++ 初期化コードを含めないので、関数を __ram としてタグ付けすることはできません。

上記を実行できれば、デバッガーのシンボルは RAM にコピーされたコードに関連し、通常どおりデバッグを行うことができます。

OVERLAY/RELOC に沿った何かが役立つかもしれないと考えていますが、よくわかりません。

ありがとう、

4

1 に答える 1

0

おそらく、アプリケーション コードで手動で実行できます。何かのようなもの

  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アドレスのシンボルをエクスポートできるはずです。

于 2010-08-11T17:47:48.763 に答える