リンカでイメージのメモリマップを指定する方法

1 つのイメージを構成する領域の数と出力セクションの数に制限はありません。 領域には、異なるロードアドレスと実行アドレスを割り当てることができます。 イメージのメモリマップを作成するには、以下に関する情報を armlink に渡す必要があります。

イメージのメモリマップの複雑度に応じて、この情報は以下の 2 つの方法で armlink に渡すことができます。

コマンドラインオプションの使用

イメージ内のロード領域が 1 つか 2 つで、実行領域が最高でも 3 つしかないような単純な場合は、以下のオプションを使用できます。

  • --first

  • --last

  • --ro_base

  • --rw_base

  • --ropi

  • --rwpi

  • --split

  • --rosplit

  • --zi_base

単純イメージについては、これらのオプションを使用した簡単な表記によって、スキャッタロード記述と同じ設定が可能です。

スキャッタファイルの使用

スキャッタファイルは、メモリレイアウトおよびコードとデータの配置を記述したテキストです。 イメージコンポーネントのグループ化と位置を厳密に制御する必要がある複雑な場合に、スキャッタファイルを使用します。 スキャッタファイルを使用するには、コマンドラインで --scatter=filename と指定します。

Note

--scatter は、他のメモリマップ関連のコマンドラインオプションと共に使用することはできません。

Table 2. スキャッタファイルおよび対応するコマンドラインオプションの比較

スキャッタファイル対応するコマンドラインオプション
LR1 0x0000 0x20000
{
    ER1 0x0 0x2000
    {
        init.o (INIT, +FIRST)
        *(+RO)
    }
    RAM 0x400000
    { 
        *(+RW)
    }
    RAM 0x405000
    {
        *(+ZI)
    }
}


--ro_base=0x0

--first=init.o(init)


--rw_base=0x400000



--zi_base=0x405000

Show/hide関連項目

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