7.5 メモリマップが複雑なスキャッタロードイメージ

メモリマップが複雑なイメージの場合、リンカコマンドラインオプションのみでは、メモリマップを指定できません。そうしたイメージには、スキャッタファイルを使用する必要があります。

以下の図には、複雑なメモリマップを示しています。

図 7-2 複雑なメモリマップ
この図を表示するには、ご使用のブラウザが SVG 形式をサポートしている必要があります。ネイティブでサポートしているブラウザをインストールするか、次のような適切なプラグインをインストールします。Adobe SVG Viewer。.

以下の例では、セグメントを program1.o ファイルおよび program2.o ファイルからメモリにロードする、対応するスキャッタロード記述を示しています。

LOAD_ROM_1 0x0000              ; 最初のロード領域の開始アドレス (0x0000) {     EXEC_ROM_1 0x0000          ; 最初の実行領域の開始アドレス (0x0000)     {         program1.o (+RO)       ; program1.o のすべてのコードと                                ; RO データをこの実行領域に配置する     }     DRAM 0x18000 0x8000        ; この実行領域の開始アドレス (0x18000),                                ; この実行領域の最大サイズ (0x8000)     {         program1.o (+RW, +ZI)  ; program1.o のすべての RW データと                                ; ZI データをこの実行領域に配置する     } } LOAD_ROM_2 0x4000              ; 2 番目のロード領域の開始アドレス (0x4000) {     EXEC_ROM_2 0x4000     {         program2.o (+RO)       ; program2.o のすべてのコードと                                ; RO データをこの実行領域に配置する     }     SRAM 0x8000 0x8000     {         program2.o (+RW, +ZI)  ; program2.o のすべての RW データと                                ; ZI データをこの実行領域に配置する     } }

注意

この例に示すスキャッタロード記述では、program1.oprogram2.o のみのコードおよびデータの位置を指定しています。したがって、例えば program3.o という別のモジュールをリンクさせるときにこの記述ファイルを使用しても、program3.o のコードとデータの位置は指定されません。

コードとデータの配置をかなり厳密に指定する必要がある箇所を除き、* または .ANY 指定子を使用して残りのコードとデータを配置することを推奨します。

関連する概念
7.1 スキャッタロードについて
7.9 ルート実行領域と ABSOLUTE 属性
7.10 ルート実行領域と FIXED 属性
8.24 相対ベースアドレスのロード領域と ZI 実行領域を含むスキャッタファイル
7.41 スキャッタファイルを使用した ELF のマッピング
7.2 スキャッタロードが使用される状況
非機密扱いPDF file icon PDF 版ARM DUI0474JJ
Copyright © 2010-2013 ARM.All rights reserved.