スキャッタファイルを使用した ELF のマッピング

単純イメージの場合、ELF 形式の実行可能なファイルには、以下のセグメントが含まれます。

例えば、以下のようなスキャッタファイルがあるとします。

Example 40. スキャッタファイル

LOAD 0x8000
{
    EXEC_ROM +0
    {
        *(+RO)
    }
    RAM +0
    {
        *(+RW,+ZI)
    }
    HEAP +0x100 EMPTY 0x100
    {
    }
    STACK +0 EMPTY 0x400
    {
    }
}

このスキャッタファイルでは、ロード領域のアドレスが 0x8000 である、PT_LOAD タイプの 1 つのプログラムセグメントが作成されます。

EXEC_ROM の内容を表す SHT_PROGBITS タイプの 1 つの出力セクションが作成されます。 RAM を表す 2 つの出力セクションが作成されます。 1 つは SHT_PROGBITS タイプで、初期化された読み出し/書き込みデータを含みます。 もう 1 つは SHT_NOBITS タイプで、ゼロで初期化されたデータについての記述を含みます。

ヒープとスタックは、ELF ファイルの SHT_NOBITS セクションに記述されます。

イメージ内のスキャッタロードが行われたセクションを確認するには、以下の fromelf コマンドを入力します。

fromelf --text -v my_image.axf

シンボルテーブルを表示するには、以下のコマンドを入力します。

fromelf --text -s -v my_image.axf

以下は fromelf の出力例で、LOADEXEC_ROMRAMHEAP、および STACK の各セクションが示されています。

Example 41. ELF イメージ内のスキャッタロードが行われたセクション

...
========================================================================

** Program header #0

    Type          : PT_LOAD (1)
    File Offset   : 52 (0x34)
    Virtual Addr  : 0x00008000
    Physical Addr : 0x00008000
    Size in file  : 764 bytes (0x2fc)
    Size in memory: 2140 bytes (0x85c)
    Flags         : PF_X + PF_W + PF_R + PF_ARM_ENTRY (0x80000007)
    Alignment     : 4
========================================================================

** Section #1

    Name        : EXEC_ROM
...
    Addr        : 0x00008000
    File Offset : 52 (0x34)
    Size        : 740 bytes (0x2e4)
...
====================================

** Section #2

    Name        : RAM
...
    Addr        : 0x000082e4
    File Offset : 792 (0x318)
    Size        : 20 bytes (0x14)
...
====================================

** Section #3

    Name        : RAM
...
    Addr        : 0x000082f8
    File Offset : 812 (0x32c)
    Size        : 96 bytes (0x60)
...
====================================

** Section #4

    Name        : HEAP
...
    Addr        : 0x00008458
    File Offset : 812 (0x32c)
    Size        : 256 bytes (0x100)
...
====================================

** Section #5

    Name        : STACK
...
    Addr        : 0x00008558
    File Offset : 812 (0x32c)
    Size        : 1024 bytes (0x400)
...

Show/hide関連項目

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