1. 29 7月, 2019 6 次提交
    • S
      binman: Add more tests for image header position · eba1f0cc
      Simon Glass 提交于
      The positioning does not currently work correctly if at the end of an
      image with no fixed size. Also if the header is in the middle of an image
      it can cause a gap in the image since the header position is normally at
      the image end, so entries after it are placed after the end of the image.
      
      Fix these problems and add more tests to cover these cases.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      eba1f0cc
    • S
      binman: Add info to allow safely repacking an image later · 12bb1a99
      Simon Glass 提交于
      At present it is not possible to discover the contraints to repacking an
      image (e.g. maximum section size) since this information is not preserved
      from the original image description.
      
      Add new 'orig-offset' and 'orig-size' properties to hold this. Add them to
      the main device tree in the image.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      12bb1a99
    • S
      binman: Support updating entries in an existing image · 10f9d006
      Simon Glass 提交于
      While it is useful and efficient to build images in a single pass from a
      unified description, it is sometimes desirable to update the image later.
      
      Add support for replace an existing file with one of the same size. This
      avoids needing to repack the file. Support for more advanced updates will
      come in future patches.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      10f9d006
    • S
      binman: Tidy up _SetupDtb() to use its own temporary file · a004f294
      Simon Glass 提交于
      At present EnsureCompiled() uses an file from the 'output' directory (in
      the tools module) when compiling the device tree. This is fine in most
      cases, allowing useful inspection of the output files from binman.
      
      However in functional tests, _SetupDtb() creates an output directory and
      immediately removes it afterwards. This serves no benefit and just
      confuses things, since the 'official' output directory is supposed to be
      created and destroyed in control.Binman().
      
      Add a new parameter for the optional temporary directory to use, and use a
      separate temporary directory in _SetupDtb().
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      a004f294
    • S
      binman: Add a constant for common entry properties · 6ccbfcdd
      Simon Glass 提交于
      We use this same combination of properties several times in tests. Add a
      constant for it to avoid typos, etc.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      6ccbfcdd
    • S
      binman: Add an image name into the fdtmap · 1411ac8d
      Simon Glass 提交于
      Since binman supports multiple images it is useful to know which one
      created the image that has been read. Then it is possible to look up that
      name in the 'master' device tree (containing the description of all
      images).
      
      Add a property for this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      1411ac8d
  2. 25 7月, 2019 22 次提交
    • S
      binman: Add a test for nested and aligned sections · e2705fa9
      Simon Glass 提交于
      Current test coverage is likely sufficient for the logic used to place
      sections in the image. However it seems useful to add a test specifically
      for nested sections, since these could have some unusual interactions.
      
      Add a new test for this and aligned sections. This test failed before the
      refactor to drop the bsection.py file (Section class), but passes now.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      e2705fa9
    • S
      binman: Add an 'extract' command · 71ce0ba2
      Simon Glass 提交于
      It is useful to be able to extract all binaries from the image, or a
      subset of them. Add a new 'extract' command to handle this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      71ce0ba2
    • S
      binman: Allow reading an entry from an image · f667e45b
      Simon Glass 提交于
      It is useful to be able to extract entry contents from an image to see
      what is inside. Add a simple function to read the contents of an entry,
      decompressing it by default.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      f667e45b
    • S
      binman: Support listing an image · 61f564d1
      Simon Glass 提交于
      Add support for listing the entries in an image. This relies on the image
      having an FDT map.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      61f564d1
    • S
      binman: Convert Image to a subclass of Entry · 8beb11ea
      Simon Glass 提交于
      When support for sections (and thus hierarchical images) was added to
      binman, the decision was made to create a new Section class which could
      be used by both Image and an Entry_section class. The decision between
      using inheritance and composition was tricky to make, but in the end it
      was decided that Image was different enough from Entry that it made sense
      to put the implementation of sections in an entirely separate class. It
      also has the advantage that core Image code does have to rely on an entry
      class in the etype directory.
      
      This work was mostly completed in commit:
      
         8f1da50c "binman: Refactor much of the image code into 'section'
      
      As a result of this, the Section class has its own version of things like
      offset and size and these must be kept in sync with the parent
      Entry_section class in some cases.
      
      In the last year it has become apparent that the cost of keeping things in
      sync is larger than expected, since more and more code wants to access
      these properties.
      
      An alternative approach, previously considered and rejected, now seems
      better.
      
      Adjust Image to be a subclass of Entry_section. Move the code from Section
      (in bsection.py) to Entry_section and delete Section. Update all tests
      accordingly.
      
      This requires substantial changes to Image. Overall the changes reduce
      code size by about 240 lines. While much of that is just boilerplate from
      Section, there are quite a few functions in Entry_section which now do not
      need to be overiden from Entry. This suggests the change is beneficial
      even without further functionality being added.
      
      A side benefit is that the properties of sections are now consistent with
      other entries. This fixes a problem in testListCmd() where some properties
      are missing for sections.
      
      Unfortunately this is a very large commit since it is not feasible to do
      the migration piecemeal. Given the substantial tests available and the
      100% code coverage of binman, we should be able to do this safely.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      8beb11ea
    • S
      binman: Support reading an image into an Image object · ffded752
      Simon Glass 提交于
      It is possible to read an Image, locate its FDT map and then read it into
      the binman data structures. This allows full access to the entries that
      were written to the image. Add support for this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      ffded752
    • S
      binman: Support locating an image header · 2d26003d
      Simon Glass 提交于
      Add support for locating an image header in an image.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      2d26003d
    • S
      binman: Support locating an FDT map · e1925fa5
      Simon Glass 提交于
      Add support for locating an image's Fdt map which is used to determine
      the contents and structure of the image.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      e1925fa5
    • S
      binman: Allow listing the entries in an image · 41b8ba09
      Simon Glass 提交于
      It is useful to be able to summarise all the entries in an image, e.g. to
      display this to this user. Add a new ListEntries() method to Entry, and
      set up a way to call it through the Image class.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      41b8ba09
    • S
      binman: Detect bad CBFS file types · 8a1ad068
      Simon Glass 提交于
      Detect when an unknown or unsupported file type is specified and report
      an error.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      8a1ad068
    • S
      binman: Support FDT update for CBFS · 69f7cb31
      Simon Glass 提交于
      It is useful to add the CBFS file information (offset, size, etc.) into
      the FDT so that the layout is complete. Add support for this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      69f7cb31
    • S
      binman: Allow device-tree entries to be compressed · 6c223fda
      Simon Glass 提交于
      At present the logic skips the blob class' handling of compression, so
      this is not supported with device tree entries. Fix this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      6c223fda
    • S
      binman: Allow entries to expand after packing · c52c9e7d
      Simon Glass 提交于
      Add support for detecting entries that change size after they have already
      been packed, and re-running packing when it happens.
      
      This removes the limitation that entry size cannot change after
      PackEntries() is called.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      c52c9e7d
    • S
      binman: Fix up ProcessUpdateContents error and comments · 5b463fc2
      Simon Glass 提交于
      This function raises an exception with its arguments around the wrong way
      so the message is incorrect. Fix this as well as a few minor comment
      problems.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      5b463fc2
    • S
      binman: Convert to use ArgumentParser · 53cd5d92
      Simon Glass 提交于
      This class is the new way to handle arguments in Python. Convert binman
      over to use it. At the same time, introduce commands so that we can
      separate out the different parts of binman functionality.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      53cd5d92
    • S
      binman: Add an image header · cf228943
      Simon Glass 提交于
      It is useful to be able to quickly locate the FDT map in the image. An
      easy way to do this is with a pointer at the start or end of the image.
      
      Add an 'image header' entry, which places a magic number followed by a
      pointer to the FDT map. This can be located at the start or end of the
      image, or at a chosen location.
      
      As part of this, update GetSiblingImagePos() to detect missing siblings.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      cf228943
    • S
      binman: Add an FDT map · 086cec9f
      Simon Glass 提交于
      An FDT map is an entry which holds a full description of the image
      entries, in FDT format. It can be discovered using the magic string at
      its start. Tools can locate and read this entry to find out what entries
      are in the image and where each entry is located.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      086cec9f
    • S
      binman: Add a convenience functions for real-DTB tests · 3c081311
      Simon Glass 提交于
      Quite a few tests will use a real device tree and need it updated with the
      binman metadata. Add a helper function for this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      3c081311
    • S
      binman: Add support for fixed-offset files in CBFS · e073d4e1
      Simon Glass 提交于
      A feature of CBFS is that it allows files to be positioned at particular
      offset (as with binman in general). This is useful to support
      execute-in-place (XIP) code, since this may not be relocatable.
      
      Add a new cbfs-offset property to control this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      e073d4e1
    • S
      binman: Add support for Intel IFWI entries · c5ac1388
      Simon Glass 提交于
      An Integrated Firmware Image is used to hold various binaries used for
      booting with Apollolake and some later devices. Add support for this.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      c5ac1388
    • S
      binman: Add support for CBFS entries · ac62fba4
      Simon Glass 提交于
      Add support for putting CBFSs (Coreboot Filesystems) in an image. This
      allows binman to produce firmware images used by coreboot to boot.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      ac62fba4
    • S
      binman: Pass the toolpath to tests · 8acce60b
      Simon Glass 提交于
      Tools like ifwitool may not be available in the PATH, but are available in
      the build. These tools may be needed by tests, so allow tests to use the
      --toolpath flag.
      
      Also use this flag with travis.
      Signed-off-by: NSimon Glass <sjg@chromium.org>
      8acce60b
  3. 24 7月, 2019 8 次提交
  4. 11 7月, 2019 4 次提交