ロードアドレスから実行アドレスにコピーを行う 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)はリンカによって生成されますので、 対応するオブジェクトファイルを持たないことにご注意下さい(従いまして、* が使用されなければなりません)。
この解答はお客様のお役に立てましたでしょうか?