doc: binman: Add guidance for determining ELF load addresses

Add documentation to help users understand how to determine where ELF
files will be loaded when using binman's 'fit,load' property. This
addresses the common confusion about how load addresses are determined
from ELF files.

The documentation explains three methods:
1. Using readelf to examine program headers
2. Checking the linker script (.lds file)
3. Using objdump to see section addresses

Also includes a specific example from binman tests showing how
elf_sections.lds sets ATF load address to 0x00000010 and
elf_sections_tee.lds sets TEE load address to 0x00100010 to avoid
memory overlap conflicts.

This helps users debug memory layout conflicts more efficiently when
working with FIT images containing multiple ELF components.

Signed-off-by: Aristo Chen <aristo.chen@canonical.com>
This commit is contained in:
Aristo Chen 2025-09-14 10:59:32 +00:00 committed by Tom Rini
parent 8f3d3510e3
commit 4907a920e8

View File

@ -1050,6 +1050,24 @@ split-elf
Generates a `load = <...>` property with the load address of the
segment
Note: The load address comes from the ELF file's program header or
linker script. To determine where an ELF file will be loaded, you can:
1. Use readelf to examine the program headers:
``readelf -l your_elf_file.elf``
Look for the LOAD segments and their VirtAddr (Virtual Address)
2. Check the linker script (.lds file) used to build the ELF:
Look for the `. = <address>;` statements which set the location
counter and determine load addresses for different sections
3. Use objdump to see section addresses:
``objdump -h your_elf_file.elf``
For example, in binman tests, elf_sections.lds sets ATF load address
to 0x00000010, while elf_sections_tee.lds sets TEE load address to
0x00100010 to avoid memory overlap conflicts.
fit,entry
Generates a `entry = <...>` property with the entry address of the
ELF. This is only produced for the first entry