[PATCH] binman: Support templating with multiple images
Simon Glass
sjg at chromium.org
Fri Jul 7 17:33:53 CEST 2023
Hi Jan,
On Fri, 7 Jul 2023 at 15:04, Jan Kiszka <jan.kiszka at siemens.com> wrote:
>
> On 07.07.23 14:40, Simon Glass wrote:
> > Allow a template to appear in the top level description when using
> > multiple images.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > tools/binman/control.py | 5 ++--
> > tools/binman/ftest.py | 12 ++++++++++
> > tools/binman/test/287_template_multi.dts | 29 ++++++++++++++++++++++++
> > 3 files changed, 44 insertions(+), 2 deletions(-)
> > create mode 100644 tools/binman/test/287_template_multi.dts
> >
> > diff --git a/tools/binman/control.py b/tools/binman/control.py
> > index 0f98e9904fb1..b334fbc8ac8f 100644
> > --- a/tools/binman/control.py
> > +++ b/tools/binman/control.py
> > @@ -57,8 +57,9 @@ def _ReadImageDesc(binman_node, use_expanded):
> > images = OrderedDict()
> > if 'multiple-images' in binman_node.props:
> > for node in binman_node.subnodes:
> > - images[node.name] = Image(node.name, node,
> > - use_expanded=use_expanded)
> > + if 'template' not in node.name:
> > + images[node.name] = Image(node.name, node,
> > + use_expanded=use_expanded)
> > else:
> > images['image'] = Image('image', binman_node, use_expanded=use_expanded)
> > return images
> > diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
> > index 389d3906371a..c783424c91da 100644
> > --- a/tools/binman/ftest.py
> > +++ b/tools/binman/ftest.py
> > @@ -6771,6 +6771,18 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
> > second = U_BOOT_DATA + b'#' + VGA_DATA + U_BOOT_DTB_DATA
> > self.assertEqual(U_BOOT_IMG_DATA + first + second, data)
> >
> > + def testEntryTemplateBlobMulti(self):
> > + """Test using a template with 'multiple-images' enabled"""
> > + TestFunctional._MakeInputFile('my-blob.bin', b'blob')
> > + TestFunctional._MakeInputFile('my-blob2.bin', b'other')
> > + retcode = self._DoTestFile('287_template_multi.dts')
> > +
> > + self.assertEqual(0, retcode)
> > + image = control.images['image']
> > + image_fname = tools.get_output_filename('my-image.bin')
> > + data = tools.read_file(image_fname)
> > + self.assertEqual(b'blob@@@@other', data)
> > +
> >
> > if __name__ == "__main__":
> > unittest.main()
> > diff --git a/tools/binman/test/287_template_multi.dts b/tools/binman/test/287_template_multi.dts
> > new file mode 100644
> > index 000000000000..15bd8701c671
> > --- /dev/null
> > +++ b/tools/binman/test/287_template_multi.dts
> > @@ -0,0 +1,29 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +
> > +/dts-v1/;
> > +
> > +/dts-v1/;
>
> Duplicate.
>
> > +/ {
> > + binman: binman {
> > + multiple-images;
> > +
> > + my_template: template {
> > + blob-ext at 0 {
> > + filename = "my-blob.bin";
> > + offset = <0>;
> > + };
> > + blob-ext at 8 {
> > + offset = <8>;
> > + };
> > + };
> > +
> > + image {
> > + pad-byte = <0x40>;
> > + filename = "my-image.bin";
> > + insert-template = <&my_template>;
> > + blob-ext at 8 {
> > + filename = "my-blob2.bin";
> > + };
> > + };
> > + };
> > +};
>
> For the sake of context:
>
> echo 1234 > my-blob.bin
> echo 5678 > my-blob2.bin
> dtc tools/binman/test/287_template_multi.dts -o binman-test.dtb
> tools/binman/binman build -d binman-test.dtb -O .
>
> binman: Node '/binman/image/blob-ext at 0': Offset 0x0 (0) overlaps with previous entry '/binman/image/blob-ext at 8' ending at 0xd (13)
Hi Jan,
I don't get that error when I try these exact commands:
(=88a31 moveconfig.failed) sglass at ELLESMERE ~/u> echo 1234 > my-blob.bin
(=88a31 moveconfig.failed) sglass at ELLESMERE ~/u> echo 5678 > my-blob2.bin
(=88a31 moveconfig.failed) sglass at ELLESMERE ~/u> dtc
tools/binman/test/287_template_multi.dts -o binman-test.dtb
tools/binman/test/287_template_multi.dts:11.15-14.6: Warning
(unit_address_vs_reg): /binman/template/blob-ext at 0: node has a unit
name, but no reg or ranges property
tools/binman/test/287_template_multi.dts:15.15-17.6: Warning
(unit_address_vs_reg): /binman/template/blob-ext at 8: node has a unit
name, but no reg or ranges property
tools/binman/test/287_template_multi.dts:24.15-26.6: Warning
(unit_address_vs_reg): /binman/image/blob-ext at 8: node has a unit name,
but no reg or ranges property
(=88a31 moveconfig.failed) sglass at ELLESMERE ~/u> tools/binman/binman
build -d binman-test.dtb -O .
(=88a31 moveconfig.failed) sglass at ELLESMERE ~/u> hd my-image.bin
00000000 31 32 33 34 0a 40 40 40 35 36 37 38 0a |1234.@@@5678.|
0000000d
(=88a31 moveconfig.failed) sglass at ELLESMERE ~/u>
Are you sure you are using all the patches? You can use
u-boot-dm/mkim-working as the tree if you are unsure.
Regards,
Simon
More information about the U-Boot
mailing list