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

タイプ 3 のイメージは、ロードビュー内の 2 つのロード領域と、実行ビュー内の 3 つの実行領域から構成されます。 このタイプのイメージはタイプ 2 のイメージと似ていますが、このイメージではタイプ 2 の 1 つのロード領域が 2 つのロード領域に分割されます。

ロード領域の再配置と分割を行うには、以下のリンカオプションを使用します。

--reloc

--reloc --split の組み合わせを使用すると、単純タイプ 3 に似たイメージが生成されますが、2 つのロード領域には RELOC 属性が設定されます。

--ro_base=address1

RO 出力セクションを含んでいる領域のロードアドレスと実行アドレスを指定します。

--rw_base=address2

RW 出力セクションを含んでいる領域のロードアドレスと実行アドレスを指定します。

--split

RO 出力セクションと RW 出力セクションを含んでいるデフォルトの 1 つのロード領域を 2 つのロード領域に分割します。 これにより、一方のロー領域には RO 出力セクションが含められ、もう一方のロード領域には RW 出力セクションが含められます。

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

Example 38. 複数のロード領域

LR_1 0x010000     ; 最初のロード領域を 0x010000 から開始する。
{    
    ER_RO +0      ; アドレスは 0x010000 になる。
    {
        * (+RO)
    }
}
LR_2 0x040000     ; 2 番目のロード領域を 0x040000 から開始する。
{
    ER_RW +0      ; アドレスは 0x040000 になる。
    {
        * (+RW)   ; すべての RW セクションはこの領域に連続して配置される。
    }
    ER_ZI +0      ; アドレスは 0x040000 + ER_RW 領域のサイズになる。
    {
        * (+ZI)   ; すべての ZI セクションはこの領域に連続して配置される	。
    }	
}

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

Show/hide再配置可能なロード領域の例

このタイプ 3 のイメージも、ロードビュー内の 2 つのロード領域と、実行ビュー内の 3 つの実行領域から構成されます。 ただし、ここでは 2 つのロード領域に RELOC 属性を設定するために、--reloc を使用します。

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

Example 39. 再配置可能なロード領域

LR_1 0x010000 RELOC
{
     ER_RO + 0
     {
         * (+RO)
     }
} 

LR2 0x040000 RELOC
{
     ER_RW + 0
     {
         * (+RW)
     }

     ER_ZI +0
     { 
         * (+ZI)
     }
}

Show/hide関連項目

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