fromELF ユーティリィティを使用する時、scatter ファイルで指定した異なるロード領域に対してバイナリファイルがそれぞれ生成されます。
ただ 1 つのバイナリファイルを生成するには、scatter ファイル内で"FIXED"をお使いください。"FIXED"は ADS1.1 から導入されました。
"FIXED"はロードアドレスと実行アドレスを同じにします。
"FIXED"を用いることで、複数のロード領域を 1 つにまとめることができます。
例えば、
ROM_1 0x0 0x10000
{
ER_1 0x0
{
init.o (+RO, +FIRST)
* (+RO)
}
RAM 0x20000
{
* (+RW, +ZI)
}
}
ROM_2 0x10000 0x10000
{
ER_2 0x10000
{
app.o (+RO)
}
}
この例では、ROM_1、ROM_2 の2つのロード領域があり、2つのバイナリファイルが生成されることになります。 上記の scatter記述は、下記に変更することができます。
ROM_1 0x0 0x20000
{
ER_1 0x0
{
init.o (+RO, +FIRST)
* (+RO)
}
ER_2 0x10000 FIXED
{
app.o (+RO)
}
RAM 0x20000
{
* (+RW, +ZI)
}
}
"FIXED"の使用により、ER_2 の実行領域は 0x10000 がロードアドレスとなりますので、ロード領域を1つに記述することができます。従って、このように fromELF による出力ファイルを1つにすることができます。
SDTおよびADSv1.0.1では、これらをfromelfの段階で1つのイメージにまとめることはできません。
fromelfが生成した複数のバイナリイメージの結合を行うには以下のFAQのエントリを参照してください。
- Merging load regions to obtain a single binary output
http://www.arm.com/support/faqdev/1246.html - Effect of the FIXED attribute on a root region