For simple images, ELF executable files contain segments:
a load region is represented by an ELF Program Segment with type PT_LOAD
an execution region is represented by up to three ELF Sections:
one for RO
one for RW
one for ZI.
For example, you might have a scatter file similar to the following:
This scatter file creates a single Program Segment with type
PT_LOAD for the load region with address
A single Output Section with type SHT_PROGBITS is created to represent the contents of EXEC_ROM. Two Output Sections are created to represent RAM. The first has a type SHT_PROGBITS and contains the initialized read/write data. The second has a type of SHT_NOBITS and describes the zero-initialized data.
The heap and stack are described in the ELF file by SHT_NOBITS sections.
Enter the following fromelf command to see the scatter-loaded sections in the image:
fromelf --text -v my_image.axf
To display the symbol table, enter the command:
fromelf --text -s -v my_image.axf
The following is an example of the fromelf output
... ======================================================================== ** 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) ...