メモリマップが複雑なイメージ

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

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

Figure 7. 複雑なメモリマップ

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.


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

Example 11. スキャッタファイルにおける複雑なメモリマップ

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 データをこの実行領域に配置する
    }
}

Caution

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

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

Show/hide関連項目

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