FIXED 属性を使用したルート領域の作成

実行領域のスキャッタファイルで FIXED 属性を使用して、ロードアドレスと実行アドレスを固定したルート領域を作成できます。

FIXED 属性は、1 つのロード領域内に複数のルート領域を作成する場合に使用され、通常は 1 つの ROM デバイスに使用されます。 例えば、この属性を使して、関数または定数テーブルやチェックサムなどのデータブロックを ROM 内の固定アドレスに配置することで、ポインタを使用して容易にアクセスできます。

初期化コードを ROM の最初に配置し、チェックサムを ROM の最後に配置するような場合には、メモリの一部が使用されない可能性があります。 * または .ANY モジュールセレクタを使用することで、初期化ブロックの最後とデータブロックの最初の間にある領域を充填できます。

コードの保守とデバッグを容易にするには、スキャッタファイル内での配置に関する指定を最小限に抑え、関数とデータの詳細な配置はリンカに委ねることを推奨します。

部分的にリンクされたコンポーネントオブジェクトは指定できません。 例えば、obj1.oobj2.o、および obj3.o の 3 つのオブジェクトを部分的にリンクして obj_all.o を生成する場合、結果として得られたオブジェクト内ではコンポーネントオブジェクトの名前は破棄されます。 したがって、いずれのオブジェトも obj1.o などの名前で参照することはできません。 参照できるのは、結合されたオブジェクト obj_all.o のみです。

Note

FIXED 属性と 1 つのロード領域を使用することが適切ではない場合があります。 固定位置の指定に関しては以下のような方法もあります。

  • ローダで複数のロード領域を処理できる場合には、RO コードまたはデータを専用のロード領域内に配置します。

  • 関数またはデータを ROM 内の固定位置に配置する必要がない場合には、FIXED 属性の代わりに ABSOLUTE 属性を使用します。 この属性を使用すると、ローダはロード領域から RAM 内の指定されたアドレスにデータをコピーします。 ABSOLUTE がデフォルトの属性です。

  • メモリマップされた I/O の位置にデータ構造を配置するには、2 つのロード領域を使用して UNINIT 属性を指定します。 UNINIT を指定すると、そのメモリ位置はゼロで初期化されません。

Show/hide関連項目

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0474GJ
Non-ConfidentialID051612