[U-Boot] [PATCH v2 00/31] binman: Allow reading of images to list contents

Simon Glass sjg at chromium.org
Mon Jul 8 20:25:22 UTC 2019


This series adds features to allow binman to read its own images. Using
an 'FDT map' inside the image (basically a cut-down copy of the input
config with some pieces added) it can reverse-engineer the image and
figure out what is where.

Uses of this feature are

- a new 'ls' command, which allows listing the entries in an image
- a new 'extract' command, which allows entry contents to be extracted and
    written to one or more files

Other improvements along the way include:
- Support for FDT map
- Support for an image header, which points to the FDT map
- Ability to deal with entries which change size after packing
- Additional error checking and FDT features for CBFS
- Convert from OptionParser to ArgumentParser
- Refactor to reduce code differences between entries and sections

Future work will allow reading files from the image, but I've decided to
put that in the next series.

Changes in v2:
- Add patches to enhance the 'ls' command to filter which entries are shown
- Add patches to implement the 'extract' command
- Add the Entry object to EntryInfo as well
- Adjust LocateFdtmap() to return the position of the header
- Adjust the test to not rely on lz4 compression version
- Allow listing subsets of the image
- Avoid dual assignment in ResetForPack()
- Change Image.ListEntries() to BuildEntryList() since signature differs
- Change list command from 'list' to 'ls'
- Deal with travis's old lz4 version by skipping tests as necessary
- Don't allow global arguments after the command
- Fix up arguments in main Makefile
- Move 129_list_fdtmap.dts into the next commit
- Move patch 'Add a comment about CBFS test structure' to earlier series
- Move patch 'Allow cbfstool to be optional with tests' to earlier series
- Pass verbosity to tests via the setup_test_args() method
- Put --toolpath in the right place in functional tests
- Rename 128_decode_image_no_hdr.dts to 129_decode_image_nohdr.dts
- Show a message when a section's size changes
- Update Image for LocateFdtmap() returning the position of the header
- Update commit subject to more accurately describe this patch
- Update output from 'list' command
- Update test to use _DoReadFileRealDtb() helper
- Use 3 packing passes instead of two, and add a comment
- Use bytearray for Python 3

Simon Glass (31):
  binman: Simplify the entry test
  binman: Update future features
  binman: Update help for new features
  binman: Add a convenience functions for real-DTB tests
  binman: Add an FDT map
  binman: Add an image header
  binman: Convert to use ArgumentParser
  binman: Move compression into the Entry base class
  binman: Drop an unused arg in Entry.Lookup()
  binman: Allow easy importing of entry modules
  binman: Fix up ProcessUpdateContents error and comments
  binman: Call ProcessUpdateContents() consistently
  binman: Add a return value to ProcessContentsUpdate()
  binman: Add a control for post-pack entry expansion
  binman: Allow entries to expand after packing
  binman: Allow device-tree entries to be compressed
  binman: Provide the actual data address for cbfs files
  binman: Use the cbfs memlen field only for uncompressed length
  binman: Support FDT update for CBFS
  binman: Detect bad CBFS file types
  binman: Allow listing the entries in an image
  binman: Support locating an FDT map
  binman: Support locating an image header
  binman: Support reading an image into an Image object
  binman: Convert Image to a subclass of Entry
  binman: Support listing an image
  binman: Allow for logging information to be displayed
  binman: Allow reading an entry from an image
  binman: Support reading from CBFS entries
  binman: Add an 'extract' command
  binman: Add a test for nested and aligned sections

 .travis.yml                                   |   2 +-
 Makefile                                      |   4 +-
 test/run                                      |   4 +-
 tools/binman/README                           | 129 ++-
 tools/binman/README.entries                   |  78 +-
 tools/binman/binman.py                        |  47 +-
 tools/binman/bsection.py                      | 496 -----------
 tools/binman/cbfs_util.py                     |  56 +-
 tools/binman/cmdline.py                       | 101 ++-
 tools/binman/control.py                       | 213 ++++-
 tools/binman/entry.py                         | 149 +++-
 tools/binman/entry_test.py                    |  32 +-
 tools/binman/etype/__init__.py                |   0
 tools/binman/etype/_testing.py                |  14 +-
 tools/binman/etype/blob.py                    |  51 +-
 tools/binman/etype/blob_dtb.py                |  10 +-
 tools/binman/etype/cbfs.py                    |  64 +-
 tools/binman/etype/fdtmap.py                  | 130 +++
 tools/binman/etype/files.py                   |   3 +-
 tools/binman/etype/fmap.py                    |   4 +-
 tools/binman/etype/image_header.py            |  99 +++
 tools/binman/etype/section.py                 | 439 +++++++++-
 tools/binman/etype/u_boot_with_ucode_ptr.py   |   8 +-
 tools/binman/ftest.py                         | 811 ++++++++++++++++--
 tools/binman/image.py                         | 315 +++++--
 tools/binman/image_test.py                    |  18 +-
 tools/binman/state.py                         |  26 +-
 tools/binman/test/115_fdtmap.dts              |  13 +
 tools/binman/test/116_fdtmap_hdr.dts          |  17 +
 tools/binman/test/117_fdtmap_hdr_start.dts    |  19 +
 tools/binman/test/118_fdtmap_hdr_pos.dts      |  19 +
 tools/binman/test/119_fdtmap_hdr_missing.dts  |  16 +
 tools/binman/test/120_hdr_no_location.dts     |  16 +
 tools/binman/test/121_entry_expand.dts        |  20 +
 tools/binman/test/122_entry_expand_twice.dts  |  21 +
 .../binman/test/123_entry_expand_section.dts  |  22 +
 tools/binman/test/124_compress_dtb.dts        |  14 +
 tools/binman/test/125_cbfs_update.dts         |  21 +
 tools/binman/test/126_cbfs_bad_type.dts       |  17 +
 tools/binman/test/127_list.dts                |  33 +
 tools/binman/test/128_decode_image.dts        |  36 +
 tools/binman/test/129_decode_image_nohdr.dts  |  33 +
 tools/binman/test/130_list_fdtmap.dts         |  36 +
 tools/binman/test/131_pack_align_section.dts  |  28 +
 tools/patman/test_util.py                     |   6 +-
 tools/patman/tout.py                          |  10 +-
 46 files changed, 2787 insertions(+), 913 deletions(-)
 delete mode 100644 tools/binman/bsection.py
 create mode 100644 tools/binman/etype/__init__.py
 create mode 100644 tools/binman/etype/fdtmap.py
 create mode 100644 tools/binman/etype/image_header.py
 create mode 100644 tools/binman/test/115_fdtmap.dts
 create mode 100644 tools/binman/test/116_fdtmap_hdr.dts
 create mode 100644 tools/binman/test/117_fdtmap_hdr_start.dts
 create mode 100644 tools/binman/test/118_fdtmap_hdr_pos.dts
 create mode 100644 tools/binman/test/119_fdtmap_hdr_missing.dts
 create mode 100644 tools/binman/test/120_hdr_no_location.dts
 create mode 100644 tools/binman/test/121_entry_expand.dts
 create mode 100644 tools/binman/test/122_entry_expand_twice.dts
 create mode 100644 tools/binman/test/123_entry_expand_section.dts
 create mode 100644 tools/binman/test/124_compress_dtb.dts
 create mode 100644 tools/binman/test/125_cbfs_update.dts
 create mode 100644 tools/binman/test/126_cbfs_bad_type.dts
 create mode 100644 tools/binman/test/127_list.dts
 create mode 100644 tools/binman/test/128_decode_image.dts
 create mode 100644 tools/binman/test/129_decode_image_nohdr.dts
 create mode 100644 tools/binman/test/130_list_fdtmap.dts
 create mode 100644 tools/binman/test/131_pack_align_section.dts

-- 
2.22.0.410.gd8fdbe21b5-goog



More information about the U-Boot mailing list