タイプ 2 のイメージ:1 つのロード領域と連続しない実行領域

このタイプのイメージは、ロードビュー内の 1 つのロード領域と、実行ビュー内の 3 つの実行領域から構成されます。 RW 実行領域が RO 実行領域隣接しないことを除いては、タイプ 1 のイメージと似ています。

--ro_base=address1 を使用すると、RO 出力セクションを含んでいる領域のロードアドレスと実行アドレスを指定できます。 --rw_base=address2 を使用すると、RW 実行領域の実行アドレスを指定できます。

以下の例では、--ro_base=0x010000 --rw_base=0x040000 を使用することと同じ意味を持つスキャッタロード記述を示しています。

Example 36. 1 つのロード領域と複数の実行領域

LR_1 0x010000        ; LR_1 という名前のロード領域を定義する。
{
    ER_RO +0         ; 最初の実行領域は ER_RO という名前で、前の領域の末尾から開始する。
                     ; 前の領域は存在しないため、アドレスは 0x010000 になる。
    {
        * (+RO)      ; すべての RO セクションはこの領域に連続して配置される。
    }
    ER_RW 0x040000   ; 2 番目の実行領域は ER_RW という名前で、0x040000 から開始する。
    {
        * (+RW)      ; すべての RW セクションはこの領域に連続して配置される。
    }
    ER_ZI +0         ; 最後の実行領域は ER_ZI という名前で、
                     ; アドレスは 0x040000 + ER_RW 領域のサイズになる。
    {
        * (+ZI)      ; すべての ZI セクションはここに連続して配置される。
    }
}

この例では、以下のようになります。

Show/hiderwpi の例

RW 実行領域と RO 実行領域が隣接していない点で、 --rw_base を指定して作成するタイプ 2 のイメージと似ています。 ただし、--rwpi を指定すると、RW 出力セクションを保持する実行領域が位置非依存としてマークされます。

以下の例では、--ro_base=0x010000 --rw_base=0x018000 --rwpi を使用することと同じ意味を持つスキャッタロード記述を示しています。

Example 37. 位置非依存データ

LR_1 0x010000           ; 最初のロード領域を 0x010000 から開始する。
{
    ER_RO +0            ; デフォルトの ABSOLUTE 属性が親から継承される。 実行アドレスは
                        ; 0x010000	 になる。 コードと RO データは移動できない。
    {
        * (+RO)         ; すべての RO セクションはここに配置される。
    }
    ER_RW 0x018000 PI   ; PI 属性によって ABSOLUTE がオーバーライドされる。
    {
        * (+RW)         ; RW セクションは 0x018000 に配置され、移動できる。
    }
    ER_ZI +0            ; ER_ZI 領域は ER_RW 領域の後に配置される。
    {
        * (+ZI)         ; すべての ZI セクションはここに連続して配置される。
    }
}

RO 実行領域である ER_RO は、ロード領域 LR_1 から ABSOLUTE 属性を継承します。 次の実行領域である ER_RW は、PI としてマークされます。 また、ER_ZI 領域のオフセットに +0 が設定されているため、この領域は ER_RW 領域の PI 属性を継承します。

タイプ 2 とタイプ 3 のイメージに、--ropi--rwpi の他の組み合わせを使用するスキャッタロードの記述も可能です。

Show/hide関連項目

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