main() 関数を使う前提で、以下にお答え致します。尚、main() 関数を使わない場合は、 RDS-H-10 を参考にして、RAM 領域にコピーするプログラムをユーザが書く必要があります。

初期化変数(実体)は、RW セクションに配置され、初期値はルートリージョンに配置されます。
もし、ルートリージョンを0x0 からの ROM 領域に配置し、実行時に0x050000 からのRAM 領域にコピーされるようにするなら、scatterファイルのこの部分は次のように記述することができます。

LOAD_REGION 0x00000
{
 ROOT_REGION 0x00000 0x10000
 {
   init.o (+RO)
   __main.o (+RO)
   * (Region$$Table)
   * (ZISection$$Table)
 }
 PRG1 0x10000
 {
   * (+RO)
 }
 RAM1 0x050000
 {
   file1.o(+RW)
   * (+RW,+ZI)
 }
}

file1.o 中の初期化されたグローバル変数はすべて、0x0のROOT_REGION (ROM領域)にそれらの初期値が格納され、実行時に 0x050000のRAM1 領域にコピーされます。

アンケートにご協力お願いします

この解答はお客様のお役に立てましたでしょうか?

 

           

検索に戻る