7.1.6 メモリマップが単純なスキャッタロードイメージ

メモリマップが単純なイメージの場合は、リンカコマンドラインオプションのみを使用するか、またはスキャッタファイルによって、メモリマップを指定できます。

イメージのメモリマップが単純な場合には、以下のいずれかの方法を使用できます。
  • スキャッタファイルを使用します。
  • リンカコマンドラインオプションのみを使用して、メモリマップを指定します。
以下の図には、単純なメモリマップを示しています。
図 7-1 スキャッタロードを行った単純メモリマップ
この図を表示するには、ご使用のブラウザが SVG 形式をサポートしている必要があります。ネイティブでサポートしているブラウザをインストールするか、次のような適切なプラグインをインストールします。Adobe SVG Viewer。.

以下の例では、セグメントをオブジェクトファイルからメモリにロードする、対応するスキャッタロード記述を示しています。
LOAD_ROM 0x0000 0x8000       ; ロード領域の名前(LOAD_ROM)、
                             ; ロード領域の開始アドレス(0x0000)、
                             ; ロード領域の最大サイズ(0x8000)
{
    EXEC_ROM 0x0000 0x8000   ; 最初の実行領域の名前(EXEC_ROM)、
                             ; 実行領域の開始アドレス(0x0000)、
                             ; 最初の実行領域の最大サイズ(0x8000)
    {
        * (+RO)              ; すべてのコードと RO データを
                             ; この実行領域に配置する
    }
    SRAM 0x10000 0x6000      ; 2 番目の実行領域の名前(SRAM)、
                             ; 2 番目の実行領域の開始アドレス(0x10000)、
                             ; 2 番目の実行領域の最大サイズ(0x6000)
    {
        * (+RW, +ZI)         ; すべての RW データと ZI データを
                             ; この実行領域に配置する
    }
}
領域の最大サイズを指定するかどうかは任意です。ただし、指定することによって、その領域が境界からオーバーフローしないかどうかをチェックできます。
制限のチェック以外は、以下のリンカコマンドラインを使用することにより、同じ結果を得ることができます。
armlink --ro_base 0x0 --rw_base 0x10000
関連する概念
7.16 スキャッタファイルを使用した ELF のマッピング
7.1 スキャッタロードメカニズム
7.1.2 スキャッタロードが使用される状況
関連する参考文書
12.118 --ro_base=address
12.122 --rw_base=address
12.170 --xo_base=address
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.