ロードアドレスから実行アドレスにコピーを行う C ライブラリ内の初期化コード/データは、それ自体ではコピーを行いません。
scatter 記述は、少なくとも1つの root region (ロードアドレス=実行アドレスである領域)を持たなければなりません。

root region には下記を含む必要があります。

つまり、このエラーが出る scatter ファイルでは、これらがワイルドカード指定 * (+RO) による root region ではない領域にあるということです。

このコードおよびテーブルを配置する scatterファイル例を下記に示します。

LOAD_FLASH 0x04000000 0x80000 ; 開始アドレスと長さ 
{ 
 EXEC_FLASH 0x04000000 0x80000 
 { 
   init.o (Init,+FIRST)        ; リマップおよび初期化コード 
   __main.o (+RO)          ; コピーコード 
   * (Region$$Table)        ; コピーする RO/RW アドレス 
   * (ZISection$$Table)      ; ゼロ初期化する ZI アドレス 
 } 
   ; .... 他の実行領域 .... 

これらのセクション(Region$$Table および ZISection$$Table)はリンカによって生成されますので、 対応するオブジェクトファイルを持たないことにご注意下さい(従いまして、* が使用されなければなりません)。

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

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

 

           

検索に戻る