
Hi Jan,
On Mon, 10 Jul 2023 at 15:38, Simon Glass sjg@chromium.org wrote:
Hi Jan,
On Mon, 10 Jul 2023 at 12:40, Jan Kiszka jan.kiszka@siemens.com wrote:
On 10.07.23 18:00, Simon Glass wrote:
Hi Jan,
On Sun, 9 Jul 2023 at 23:21, Jan Kiszka jan.kiszka@siemens.com wrote:
On 10.07.23 04:40, Simon Glass wrote:
This series converts the mkimage entry type to be a section, i.e. based on the entry_Section class. This makes it more consistent in its behaviour, e.g. allowing symbol writing and expanded entries.
A simple templating feature is also introduced, to reduce duplication when a set of entries must be used in multiple images.
In this version the nodes from the template are placed before any other nodes, meaning that the template sets the node order. This seems more consistent than other mechanisms.
Changes in v3:
- Add new patch for elf to return number of written symbols
- Add new patch with more detail on how ObtainContents() works
- Fix up some tests which now need SPL and TPL
- Avoid calling ObtainContents() when not needed
- Fix 'specific' typo
- Add a new devicetree file especially for node copying
- Correct logic for merging nodes in order
- Tidy up some comments
- Adjust to use the new example file
- Drop duplicate dts-v1 header
- Add new test case for templating in a FIT
- Add new patch to support writing symbols inside a mkimage image
Changes in v2:
- Drop now-unnecessary methods in mkimage etype
- Correct ordering of template nodes
- Fix 'preseverd' and 'inserter' typos
Marek Vasut (1): binman: Convert mkimage to Entry_section
Simon Glass (18): binman: Correct coverage gap in control binman: Init align_default in entry_Section binman: Use GetEntries() to obtain section contents binman: Read _multiple_data_files in the correct place binman: Allow disabling symbol writing stm32mp15: Avoid writing symbols in SPL binman: Update elf to return number of written symbols binman: Add more detail on how ObtainContents() works binman: Provide a way to specify the fdt-list directly binman: Drop __bss_size variable in bss_data.c binman: Correct handling of zero bss size dtoc: Support copying the contents of a node into another dtoc: Allow inserting a list of nodes into another binman: Support simple templates binman: Support templating with multiple images binman: Add a test for templating in a FIT binman: Support templates at any level binman: Support writing symbols inside a mkimage image
arch/arm/dts/stm32mp15-u-boot.dtsi | 1 + tools/binman/binman.rst | 89 +++++++++ tools/binman/control.py | 34 +++- tools/binman/elf.py | 13 +- tools/binman/elf_test.py | 13 +- tools/binman/entries.rst | 6 + tools/binman/entry.py | 11 +- tools/binman/etype/blob_phase.py | 5 + tools/binman/etype/fit.py | 9 + tools/binman/etype/mkimage.py | 110 ++++++++--- tools/binman/etype/section.py | 54 +++-- tools/binman/etype/u_boot_spl_bss_pad.py | 2 +- tools/binman/etype/u_boot_tpl_bss_pad.py | 2 +- tools/binman/etype/u_boot_vpl_bss_pad.py | 2 +- tools/binman/ftest.py | 218 ++++++++++++++++++++- tools/binman/test/282_symbols_disable.dts | 25 +++ tools/binman/test/283_mkimage_special.dts | 24 +++ tools/binman/test/284_fit_fdt_list.dts | 58 ++++++ tools/binman/test/285_spl_expand.dts | 13 ++ tools/binman/test/286_template.dts | 42 ++++ tools/binman/test/287_template_multi.dts | 27 +++ tools/binman/test/288_template_fit.dts | 37 ++++ tools/binman/test/289_template_section.dts | 52 +++++ tools/binman/test/290_mkimage_sym.dts | 27 +++ tools/binman/test/Makefile | 5 +- tools/binman/test/bss_data.c | 3 +- tools/binman/test/bss_data_zero.c | 16 ++ tools/binman/test/bss_data_zero.lds | 15 ++ tools/binman/test/embed_data.lds | 1 + tools/dtoc/fdt.py | 122 +++++++++++- tools/dtoc/test/dtoc_test_copy.dts | 86 ++++++++ tools/dtoc/test_fdt.py | 93 +++++++++ 32 files changed, 1147 insertions(+), 68 deletions(-) create mode 100644 tools/binman/test/282_symbols_disable.dts create mode 100644 tools/binman/test/283_mkimage_special.dts create mode 100644 tools/binman/test/284_fit_fdt_list.dts create mode 100644 tools/binman/test/285_spl_expand.dts create mode 100644 tools/binman/test/286_template.dts create mode 100644 tools/binman/test/287_template_multi.dts create mode 100644 tools/binman/test/288_template_fit.dts create mode 100644 tools/binman/test/289_template_section.dts create mode 100644 tools/binman/test/290_mkimage_sym.dts create mode 100644 tools/binman/test/bss_data_zero.c create mode 100644 tools/binman/test/bss_data_zero.lds create mode 100644 tools/dtoc/test/dtoc_test_copy.dts
Works much better!
What does not work yet:
/dts-v1/;
/ { binman: binman { multiple-images;
my_template: template { size = <0x100>; pad-byte = <0xff>; blob@0 { filename = "my-blob.bin"; }; }; image { filename = "my-image.bin"; insert-template = <&my_template>; }; };
};
The properties size and pad-byte get lost in this case.
Yes it does not copy the properties, only the subnodes. It could certainly be implemented...is that needed?
I can duplicate the entries into the images, works but not nice. Or is it possible to pull them as defaults onto the binman level?
Well it shouldn't be hard to implement this. I'll take a look in the morning.
I sent v4 which includes support for that, so far as I understand the use case.
It is at u-boot-dm/mkim-working as well.
Regards, Simon