非機密扱い | ![]() | ARM DUI0474JJ | ||
| ||||
ホーム > イメージの構造と生成 > 入力セクション、出力セクション、領域、およびプログラムセグメント |
オブジェクトファイルまたはイメージファイルは、入力セクション、出力セクション、領域、およびプログラムセグメントの階層から構成されています。
入力セクションは、入力オブジェクトファイルの個々のセクションです。入力セクションには、コードや初期化されたデータが保持されていたり、初期化されていないメモリ部分やイメージ実行前にゼロにする必要のあるメモリ部分の情報が記述されていたりします。これらの属性は、RO、RW、XO、ZI などの属性によって表されます。これらの属性は 入力セクションを出力セクションや出力領域と呼ばれる大きな構成要素にグループ化するために、armlink によって使用されます。
出力セクションは、同じ RO、RW、XO、ZI 属性を持つ入力セクションのグループで、リンカによってメモリ内に連続して配置されます。出力セクションは、それを構成する入力セクションと同じ属性を持ちます。出力セクションでは、セクション配置規則に基づいて入力セクションがソートされます。
領域は、異なる属性を持つセクション数の内訳に応じて最高 4 つの出力セクションから構成されます。デフォルトでは、領域内の出力セクションは属性を基にソートされます。XO 出力セクション、RO 出力セクション、RW 出力セクション、最後に ZI 出力セクションの順にソートされます。通常、ROM、RAM、ペリフェラルなどの物理メモリデバイスにマップされます。出力セクションの順序はスキャッタロードを使用して変更できます。
プログラムセグメントはロード領域に対応し、実行領域で構成されます。プログラムセグメントには、テキスト、データなどの情報が保持されます。
armlink では、プログラムセグメントの最大サイズは 2GB です。
実行専用(XO)セクションが存在する時には、以下の点に注意して下さい。
同じ実行領域では、XO セクションと非 XO セクションを混在できます。ただし、RO セクションの出力となります。
入力ファイルに 1 つ以上の XO セクションがある場合は、リンカは個別の XO ELF セグメントを生成します。最終イメージでは、スキャッタファイルまたは --xo-base
オプションによって別途指定のない限り、RO セグメントの前に XO セグメントが付きます。