public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Marcel Ziswiler <marcel.ziswiler@toradex.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 00/11] binman: A tool for creating firmware images
Date: Tue, 1 Nov 2016 22:19:26 +0000	[thread overview]
Message-ID: <1478038766.30828.10.camel@toradex.com> (raw)
In-Reply-To: <1475787582-32106-1-git-send-email-sjg@chromium.org>

Hi Simon

That sounds somewhat similar to the new OpenEmbedded Image Creator tool
called WIC (e.g. see slide 27ff here?https://www.yoctoproject.org/sites
/default/files/yocto_devday_advanced_class_berlin_1.pdf).

Cheers

Marcel

On Thu, 2016-10-06 at 14:59 -0600, Simon Glass wrote:
> This series introduces binman, a tool designed to create firmware
> images.
> It provides a way to bring together various binaries and place them
> in an
> image, at particular positions and with configurable alignment.
> 
> Packaging of firmware is quite a different task from building the
> various
> parts. In many cases the various binaries which go into the image
> come from
> separate build systems. For example, ARM Trusted Firmware is used on
> ARMv8
> devices but is not built in the U-Boot tree. If a Linux kernel is
> included
> in the firmware image, it is built elsewhere.
> 
> It is of course possible to add more and more build rules to the U-
> Boot
> build system to cover these cases. It can shell out to other
> Makefiles and
> build scripts. But it seems better to create a clear divide between
> building
> software and packaging it.
> 
> U-Boot supports a very large number of boards. Many of these have
> their own
> specific rules for how an image should be put together so that it
> boots
> correctly. At present these rules are described by manual
> instructions,
> different for each board. By turning these instructions into a
> standard
> format, we can support making valid images for any board without
> manual
> effort, lots of READMEs, etc.
> 
> Images consist of a number of entries which are combined to make up
> the
> final image. The image is described in the device tree for the board,
> meaning
> that it can be accessed at run-time if desired.
> 
> Binman is an extensible tool. A set of standard entries is provides,
> but
> new entries can be created fairly easily. Entries can be as simple as
> providing the name of a file to include. They can also handle more
> complex
> requirements, such as adjusting the input file or reading header
> information
> from one entry to control the position of another.
> 
> U-Boot's mkimage builds FIT images and various other binaries. Binman
> augments this by allowing these binaries to be packed together. While
> FIT
> should be used where possible, it cannot be used everywhere. For
> example,
> many devices require executable code at a particular offset in the
> image.
> X86 machines require lots of binary blobs at particular places, and a
> microcode collection easily accessible at boot.
> 
> So far binman has enough functionality to be useful, so sunxi and x86
> boards
> are switched over to use it, as examples.
> 
> The series is available at u-boot-dm/binman-working
> 
> Future work and missing features are documented in the README.
> 
> Changes in v4:
> - Add an option to bring in an soc .dtsi file also
> - Add new patch to support building x86 images with FSP/CMC
> - Fix incorrect comments at the top of intel_*.py
> - Fix up rule to #include on "/ {" rather than "/dts-v1/;"
> - Remove RFC tag
> - Rename binman_dtsi variable to u-boot-dtsi
> - Update sunxi rule to depend on u-boot.dtb
> - Use binman for all sunxi boards
> - Use binman for all x86 boards
> 
> Changes in v3:
> - Add a new patch to automatically include a U-Boot .dtsi file
> - Put the binman definition in u-boot.dtsi
> - Use a <dts>-u-boot.dtsi file for the binman changes
> 
> Changes in v2:
> - Add automated test coverage
> - Add test for code coverage
> - Fix the -b option
> - Put the binman definition in a common file for x86
> - Various changes and improvements based on using this tool for a
> while
> - drop the unused __len__() method
> 
> Simon Glass (11):
> ? binman: Introduce binman, a tool for building binary images
> ? binman: Add basic entry types for U-Boot
> ? binman: Add support for building x86 ROMs
> ? binman: Add support for u-boot.img as an input binary
> ? binman: Add support for building x86 ROMs with SPL
> ? binman: Add support for building x86 images with FSP/CMC
> ? binman: Add a build rule for binman
> ? binman: Allow configuration options to be used in .dts files
> ? binman: Automatically include a U-Boot .dtsi file
> ? sunxi: Use binman for sunxi boards
> ? x86: Use binman all x86 boards
> 
> ?Makefile???????????????????????????????????????????|??57 +-
> ?arch/arm/dts/sunxi-u-boot.dtsi?????????????????????|??14 +
> ?arch/x86/dts/u-boot.dtsi???????????????????????????|??62 ++
> ?scripts/Makefile.lib???????????????????????????????|??22 +-
> ?tools/binman/.gitignore????????????????????????????|???1 +
> ?tools/binman/README????????????????????????????????| 491
> +++++++++++++
> ?tools/binman/binman????????????????????????????????|???1 +
> ?tools/binman/binman.py?????????????????????????????| 116 +++
> ?tools/binman/cmdline.py????????????????????????????|??53 ++
> ?tools/binman/control.py????????????????????????????| 118 ++++
> ?tools/binman/entry_test.py?????????????????????????|??27 +
> ?tools/binman/etype/_testing.py?????????????????????|??26 +
> ?tools/binman/etype/blob.py?????????????????????????|??37 +
> ?tools/binman/etype/entry.py????????????????????????| 190 +++++
> ?tools/binman/etype/intel_cmc.py????????????????????|??17 +
> ?tools/binman/etype/intel_descriptor.py?????????????|??55 ++
> ?tools/binman/etype/intel_fsp.py????????????????????|??17 +
> ?tools/binman/etype/intel_me.py?????????????????????|??17 +
> ?tools/binman/etype/intel_mrc.py????????????????????|??17 +
> ?tools/binman/etype/intel_vga.py????????????????????|??17 +
> ?tools/binman/etype/u_boot.py???????????????????????|??17 +
> ?tools/binman/etype/u_boot_dtb.py???????????????????|??17 +
> ?tools/binman/etype/u_boot_dtb_with_ucode.py????????|??72 ++
> ?tools/binman/etype/u_boot_img.py???????????????????|??17 +
> ?tools/binman/etype/u_boot_nodtb.py?????????????????|??17 +
> ?tools/binman/etype/u_boot_spl.py???????????????????|??17 +
> ?tools/binman/etype/u_boot_spl_bss_pad.py???????????|??26 +
> ?tools/binman/etype/u_boot_spl_with_ucode_ptr.py????|??28 +
> ?tools/binman/etype/u_boot_ucode.py?????????????????|??77 ++
> ?tools/binman/etype/u_boot_with_ucode_ptr.py????????|??73 ++
> ?tools/binman/etype/x86_start16.py??????????????????|??17 +
> ?tools/binman/etype/x86_start16_spl.py??????????????|??17 +
> ?tools/binman/fdt_test.py???????????????????????????|??48 ++
> ?tools/binman/func_test.py??????????????????????????| 777
> +++++++++++++++++++++
> ?tools/binman/image.py??????????????????????????????| 229 ++++++
> ?tools/binman/test/01_invalid.dts???????????????????|???5 +
> ?tools/binman/test/02_missing_node.dts??????????????|???6 +
> ?tools/binman/test/03_empty.dts?????????????????????|???9 +
> ?tools/binman/test/04_invalid_entry.dts?????????????|??11 +
> ?tools/binman/test/05_simple.dts????????????????????|??11 +
> ?tools/binman/test/06_dual_image.dts????????????????|??22 +
> ?tools/binman/test/07_bad_align.dts?????????????????|??12 +
> ?tools/binman/test/08_pack.dts??????????????????????|??30 +
> ?tools/binman/test/09_pack_extra.dts????????????????|??35 +
> ?tools/binman/test/10_pack_align_power2.dts?????????|??12 +
> ?tools/binman/test/11_pack_align_size_power2.dts????|??12 +
> ?tools/binman/test/12_pack_inv_align.dts????????????|??13 +
> ?tools/binman/test/13_pack_inv_size_align.dts???????|??13 +
> ?tools/binman/test/14_pack_overlap.dts??????????????|??16 +
> ?tools/binman/test/15_pack_overflow.dts?????????????|??12 +
> ?tools/binman/test/16_pack_image_overflow.dts???????|??13 +
> ?tools/binman/test/17_pack_image_size.dts???????????|??13 +
> ?tools/binman/test/18_pack_image_align.dts??????????|??13 +
> ?tools/binman/test/19_pack_inv_image_align.dts??????|??14 +
> ?.../binman/test/20_pack_inv_image_align_power2.dts |??13 +
> ?tools/binman/test/21_image_pad.dts?????????????????|??16 +
> ?tools/binman/test/22_image_name.dts????????????????|??21 +
> ?tools/binman/test/23_blob.dts??????????????????????|??12 +
> ?tools/binman/test/24_sorted.dts????????????????????|??17 +
> ?tools/binman/test/25_pack_zero_size.dts????????????|??15 +
> ?tools/binman/test/26_pack_u_boot_dtb.dts???????????|??14 +
> ?tools/binman/test/27_pack_4gb_no_size.dts??????????|??18 +
> ?tools/binman/test/28_pack_4gb_outside.dts??????????|??19 +
> ?tools/binman/test/29_x86-rom.dts???????????????????|??19 +
> ?tools/binman/test/30_x86-rom-me-no-desc.dts????????|??15 +
> ?tools/binman/test/31_x86-rom-me.dts????????????????|??18 +
> ?tools/binman/test/32_intel-vga.dts?????????????????|??13 +
> ?tools/binman/test/33_x86-start16.dts???????????????|??13 +
> ?tools/binman/test/34_x86_ucode.dts?????????????????|??29 +
> ?tools/binman/test/35_x86_single_ucode.dts??????????|??26 +
> ?tools/binman/test/36_u_boot_img.dts????????????????|??11 +
> ?tools/binman/test/37_x86_no_ucode.dts??????????????|??20 +
> ?tools/binman/test/38_x86_ucode_missing_node.dts????|??26 +
> ?tools/binman/test/39_x86_ucode_missing_node2.dts???|??23 +
> ?tools/binman/test/40_x86_ucode_not_in_image.dts????|??28 +
> ?tools/binman/test/41_unknown_pos_size.dts??????????|??11 +
> ?tools/binman/test/42_intel-fsp.dts?????????????????|??13 +
> ?tools/binman/test/43_intel-cmc.dts?????????????????|??13 +
> ?tools/binman/test/u_boot_no_ucode_ptr??????????????| Bin 0 -> 4182
> bytes
> ?tools/binman/test/u_boot_no_ucode_ptr.c????????????|??15 +
> ?tools/binman/test/u_boot_ucode_ptr?????????????????| Bin 0 -> 4175
> bytes
> ?tools/binman/test/u_boot_ucode_ptr.c???????????????|??15 +
> ?tools/binman/test/u_boot_ucode_ptr.lds?????????????|??18 +
> ?83 files changed, 3500 insertions(+), 47 deletions(-)
> ?create mode 100644 arch/arm/dts/sunxi-u-boot.dtsi
> ?create mode 100644 arch/x86/dts/u-boot.dtsi
> ?create mode 100644 tools/binman/.gitignore
> ?create mode 100644 tools/binman/README
> ?create mode 120000 tools/binman/binman
> ?create mode 100755 tools/binman/binman.py
> ?create mode 100644 tools/binman/cmdline.py
> ?create mode 100644 tools/binman/control.py
> ?create mode 100644 tools/binman/entry_test.py
> ?create mode 100644 tools/binman/etype/_testing.py
> ?create mode 100644 tools/binman/etype/blob.py
> ?create mode 100644 tools/binman/etype/entry.py
> ?create mode 100644 tools/binman/etype/intel_cmc.py
> ?create mode 100644 tools/binman/etype/intel_descriptor.py
> ?create mode 100644 tools/binman/etype/intel_fsp.py
> ?create mode 100644 tools/binman/etype/intel_me.py
> ?create mode 100644 tools/binman/etype/intel_mrc.py
> ?create mode 100644 tools/binman/etype/intel_vga.py
> ?create mode 100644 tools/binman/etype/u_boot.py
> ?create mode 100644 tools/binman/etype/u_boot_dtb.py
> ?create mode 100644 tools/binman/etype/u_boot_dtb_with_ucode.py
> ?create mode 100644 tools/binman/etype/u_boot_img.py
> ?create mode 100644 tools/binman/etype/u_boot_nodtb.py
> ?create mode 100644 tools/binman/etype/u_boot_spl.py
> ?create mode 100644 tools/binman/etype/u_boot_spl_bss_pad.py
> ?create mode 100644 tools/binman/etype/u_boot_spl_with_ucode_ptr.py
> ?create mode 100644 tools/binman/etype/u_boot_ucode.py
> ?create mode 100644 tools/binman/etype/u_boot_with_ucode_ptr.py
> ?create mode 100644 tools/binman/etype/x86_start16.py
> ?create mode 100644 tools/binman/etype/x86_start16_spl.py
> ?create mode 100644 tools/binman/fdt_test.py
> ?create mode 100644 tools/binman/func_test.py
> ?create mode 100644 tools/binman/image.py
> ?create mode 100644 tools/binman/test/01_invalid.dts
> ?create mode 100644 tools/binman/test/02_missing_node.dts
> ?create mode 100644 tools/binman/test/03_empty.dts
> ?create mode 100644 tools/binman/test/04_invalid_entry.dts
> ?create mode 100644 tools/binman/test/05_simple.dts
> ?create mode 100644 tools/binman/test/06_dual_image.dts
> ?create mode 100644 tools/binman/test/07_bad_align.dts
> ?create mode 100644 tools/binman/test/08_pack.dts
> ?create mode 100644 tools/binman/test/09_pack_extra.dts
> ?create mode 100644 tools/binman/test/10_pack_align_power2.dts
> ?create mode 100644 tools/binman/test/11_pack_align_size_power2.dts
> ?create mode 100644 tools/binman/test/12_pack_inv_align.dts
> ?create mode 100644 tools/binman/test/13_pack_inv_size_align.dts
> ?create mode 100644 tools/binman/test/14_pack_overlap.dts
> ?create mode 100644 tools/binman/test/15_pack_overflow.dts
> ?create mode 100644 tools/binman/test/16_pack_image_overflow.dts
> ?create mode 100644 tools/binman/test/17_pack_image_size.dts
> ?create mode 100644 tools/binman/test/18_pack_image_align.dts
> ?create mode 100644 tools/binman/test/19_pack_inv_image_align.dts
> ?create mode 100644
> tools/binman/test/20_pack_inv_image_align_power2.dts
> ?create mode 100644 tools/binman/test/21_image_pad.dts
> ?create mode 100644 tools/binman/test/22_image_name.dts
> ?create mode 100644 tools/binman/test/23_blob.dts
> ?create mode 100644 tools/binman/test/24_sorted.dts
> ?create mode 100644 tools/binman/test/25_pack_zero_size.dts
> ?create mode 100644 tools/binman/test/26_pack_u_boot_dtb.dts
> ?create mode 100644 tools/binman/test/27_pack_4gb_no_size.dts
> ?create mode 100644 tools/binman/test/28_pack_4gb_outside.dts
> ?create mode 100644 tools/binman/test/29_x86-rom.dts
> ?create mode 100644 tools/binman/test/30_x86-rom-me-no-desc.dts
> ?create mode 100644 tools/binman/test/31_x86-rom-me.dts
> ?create mode 100644 tools/binman/test/32_intel-vga.dts
> ?create mode 100644 tools/binman/test/33_x86-start16.dts
> ?create mode 100644 tools/binman/test/34_x86_ucode.dts
> ?create mode 100644 tools/binman/test/35_x86_single_ucode.dts
> ?create mode 100644 tools/binman/test/36_u_boot_img.dts
> ?create mode 100644 tools/binman/test/37_x86_no_ucode.dts
> ?create mode 100644 tools/binman/test/38_x86_ucode_missing_node.dts
> ?create mode 100644 tools/binman/test/39_x86_ucode_missing_node2.dts
> ?create mode 100644 tools/binman/test/40_x86_ucode_not_in_image.dts
> ?create mode 100644 tools/binman/test/41_unknown_pos_size.dts
> ?create mode 100644 tools/binman/test/42_intel-fsp.dts
> ?create mode 100644 tools/binman/test/43_intel-cmc.dts
> ?create mode 100755 tools/binman/test/u_boot_no_ucode_ptr
> ?create mode 100644 tools/binman/test/u_boot_no_ucode_ptr.c
> ?create mode 100755 tools/binman/test/u_boot_ucode_ptr
> ?create mode 100644 tools/binman/test/u_boot_ucode_ptr.c
> ?create mode 100644 tools/binman/test/u_boot_ucode_ptr.lds

  parent reply	other threads:[~2016-11-01 22:19 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-06 20:59 [U-Boot] [PATCH v4 00/11] binman: A tool for creating firmware images Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 01/11] binman: Introduce binman, a tool for building binary images Simon Glass
2016-10-17  9:48   ` Bin Meng
2016-10-06 20:59 ` [U-Boot] [PATCH v4 02/11] binman: Add basic entry types for U-Boot Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 03/11] binman: Add support for building x86 ROMs Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 04/11] binman: Add support for u-boot.img as an input binary Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 05/11] binman: Add support for building x86 ROMs with SPL Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 06/11] binman: Add support for building x86 images with FSP/CMC Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 07/11] binman: Add a build rule for binman Simon Glass
2016-11-03  4:11   ` Bin Meng
2016-10-06 20:59 ` [U-Boot] [PATCH v4 08/11] binman: Allow configuration options to be used in .dts files Simon Glass
2016-11-03  4:11   ` Bin Meng
2016-11-16  0:19     ` Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 09/11] binman: Automatically include a U-Boot .dtsi file Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 10/11] sunxi: Use binman for sunxi boards Simon Glass
2016-10-06 20:59 ` [U-Boot] [PATCH v4 11/11] x86: Use binman all x86 boards Simon Glass
2016-10-13  0:04   ` Simon Glass
2016-10-13  0:56     ` Bin Meng
2016-10-28  2:41       ` Simon Glass
2016-11-01 10:07         ` Bin Meng
2016-11-02 14:07           ` Simon Glass
2016-11-03  3:23             ` Bin Meng
2016-11-03  4:11   ` Bin Meng
2016-11-16  0:18     ` Simon Glass
2016-11-01 22:19 ` Marcel Ziswiler [this message]
2016-11-16  0:18   ` [U-Boot] [PATCH v4 00/11] binman: A tool for creating firmware images Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1478038766.30828.10.camel@toradex.com \
    --to=marcel.ziswiler@toradex.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox