
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.
So far the only user of this feature is a new 'list' command, which allows listing the entries in an image.
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
Future work will allow reading files from the image, but I've decided to put that in the next series.
Simon Glass (26): binman: Simplify the entry test binman: Update future features binman: Update help for new features binman: Add an FDT map binman: Add an image header binman: Allow cbfstool to be optional with tests 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: Add a comment about CBFS test structure binman: Support FDT update for CBFS binman: Detect bad CBFS file types binman: Allow listing the entries in an image binman: Support reading in firmware images binman: Support locating an image header binman: Support reading an image into an Image object binman: Support listing an image
.travis.yml | 3 +- test/run | 5 +- tools/binman/README | 62 ++- tools/binman/README.entries | 57 +++ tools/binman/binman.py | 43 +- tools/binman/bsection.py | 27 +- tools/binman/cbfs_util.py | 42 +- tools/binman/cbfs_util_test.py | 49 ++- tools/binman/cmdline.py | 90 ++-- tools/binman/control.py | 159 +++++-- tools/binman/entry.py | 115 ++++- tools/binman/entry_test.py | 32 +- tools/binman/etype/__init__.py | 0 tools/binman/etype/_testing.py | 14 +- tools/binman/etype/blob.py | 40 +- tools/binman/etype/blob_dtb.py | 10 +- tools/binman/etype/cbfs.py | 57 ++- tools/binman/etype/fdtmap.py | 129 ++++++ tools/binman/etype/fmap.py | 2 +- tools/binman/etype/image_header.py | 99 +++++ tools/binman/etype/section.py | 14 +- tools/binman/etype/u_boot_with_ucode_ptr.py | 8 +- tools/binman/ftest.py | 407 ++++++++++++++++-- tools/binman/image.py | 59 ++- 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/128_decode_image_no_hdr.dts | 33 ++ tools/binman/test/129_list_fdtmap.dts | 36 ++ tools/patman/test_util.py | 6 +- 42 files changed, 1672 insertions(+), 236 deletions(-) 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/128_decode_image_no_hdr.dts create mode 100644 tools/binman/test/129_list_fdtmap.dts