u-boot-brain/tools/binman/test
Simon Glass 1979063264 binman: Support accessing binman tables at run time
Binman construct images consisting of multiple binary files. These files
sometimes need to know (at run timme) where their peers are located. For
example, SPL may want to know where U-Boot is located in the image, so
that it can jump to U-Boot correctly on boot.

In general the positions where the binaries end up after binman has
finished packing them cannot be known at compile time. One reason for
this is that binman does not know the size of the binaries until
everything is compiled, linked and converted to binaries with objcopy.

To make this work, we add a feature to binman which checks each binary
for symbol names starting with '_binman'. These are then decoded to figure
out which entry and property they refer to. Then binman writes the value
of this symbol into the appropriate binary. With this, the symbol will
have the correct value at run time.

Macros are used to make this easier to use. As an example, this declares
a symbol that will access the 'u-boot-spl' entry to find the 'pos' value
(i.e. the position of SPL in the image):

   binman_sym_declare(unsigned long, u_boot_spl, pos);

This converts to a symbol called '_binman_u_boot_spl_prop_pos' in any
binary that includes it. Binman then updates the value in that binary,
ensuring that it can be accessed at runtime with:

   ulong u_boot_pos = binman_sym(ulong, u_boot_spl, pos);

This assigns the variable u_boot_pos to the position of SPL in the image.

Signed-off-by: Simon Glass <sjg@chromium.org>
2017-12-12 19:53:45 -07:00
..
01_invalid.dts
02_missing_node.dts
03_empty.dts
04_invalid_entry.dts
05_simple.dts
06_dual_image.dts
07_bad_align.dts
08_pack.dts
09_pack_extra.dts
10_pack_align_power2.dts
11_pack_align_size_power2.dts
12_pack_inv_align.dts
13_pack_inv_size_align.dts
14_pack_overlap.dts
15_pack_overflow.dts
16_pack_image_overflow.dts
17_pack_image_size.dts
18_pack_image_align.dts
19_pack_inv_image_align.dts
20_pack_inv_image_align_power2.dts
21_image_pad.dts binman: Adjust size of test SPL binary 2017-12-12 19:53:45 -07:00
22_image_name.dts
23_blob.dts
24_sorted.dts binman: Adjust size of test SPL binary 2017-12-12 19:53:45 -07:00
25_pack_zero_size.dts
26_pack_u_boot_dtb.dts
27_pack_4gb_no_size.dts
28_pack_4gb_outside.dts binman: Adjust size of test SPL binary 2017-12-12 19:53:45 -07:00
29_x86-rom.dts binman: Adjust size of test SPL binary 2017-12-12 19:53:45 -07:00
30_x86-rom-me-no-desc.dts
31_x86-rom-me.dts
32_intel-vga.dts
33_x86-start16.dts
34_x86_ucode.dts
35_x86_single_ucode.dts
36_u_boot_img.dts
37_x86_no_ucode.dts
38_x86_ucode_missing_node.dts
39_x86_ucode_missing_node2.dts
40_x86_ucode_not_in_image.dts
41_unknown_pos_size.dts
42_intel-fsp.dts
43_intel-cmc.dts
44_x86_optional_ucode.dts
45_prop_test.dts
46_intel-vbt.dts tools: binman: Add a new entry type for Intel VBT 2017-09-16 14:57:44 +08:00
47_spl_bss_pad.dts binman: Add test for u-boot-spl-bss-pad 2017-11-22 18:05:38 -07:00
48_x86-start16-spl.dts binman: Add a test for x86-start16-spl 2017-11-22 18:05:38 -07:00
49_x86_ucode_spl.dts binman: Add add test for SPL with a microcode pointer 2017-11-22 18:05:38 -07:00
50_intel_mrc.dts binman: Add add test for using an Intel MRC binary 2017-11-22 18:05:38 -07:00
51_u_boot_spl_dtb.dts binman: Add support for including spl/u-boot-spl.dtb 2017-12-12 19:53:45 -07:00
52_u_boot_spl_nodtb.dts binman: Add support for including spl/u-boot-spl-nodtb.bin 2017-12-12 19:53:45 -07:00
53_symbols.dts binman: Support accessing binman tables at run time 2017-12-12 19:53:45 -07:00
bss_data binman: Add test for u-boot-spl-bss-pad 2017-11-22 18:05:38 -07:00
bss_data.c binman: Add a function to read ELF symbols 2017-12-12 19:53:45 -07:00
bss_data.lds binman: Add test for u-boot-spl-bss-pad 2017-11-22 18:05:38 -07:00
descriptor.bin
Makefile binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms_bad binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms_bad.c binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms_bad.lds binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms_size binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms_size.c binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms.c binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_binman_syms.lds binman: Add tests binaries with binman symbols 2017-12-12 19:53:45 -07:00
u_boot_no_ucode_ptr
u_boot_no_ucode_ptr.c binman: Add a Makefile for test-program compilation 2017-11-22 18:05:38 -07:00
u_boot_ucode_ptr
u_boot_ucode_ptr.c binman: Add a function to read ELF symbols 2017-12-12 19:53:45 -07:00
u_boot_ucode_ptr.lds