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