
Hi Alper,
On Sun, 6 Feb 2022 at 14:03, Alper Nebi Yasak alpernebiyasak@gmail.com wrote:
Binman keeps track of positions of each entry in the final image, but currently this data is wrong for things included in FIT entries, especially since a previous patch makes FIT a subclass of Section and inherit its implementation.
There are three ways to put data into a FIT image. It can be directly included as a "data" property, or it can be external to the FIT image represented by an offset-size pair of properties. This external offset is either "data-position" from the start of the FIT or "data-offset" from the end of the FIT, and the size is "data-size" for both. However, binman doesn't use the "data-offset" method while building FIT entries.
According to the Section docstring, its subclasses should calculate and set the correct offsets and sizes in SetImagePos() method. Do this for FIT subentries for the three ways mentioned above, and add tests for the two ways binman can pack them in.
Signed-off-by: Alper Nebi Yasak alpernebiyasak@gmail.com
tools/binman/etype/fit.py | 51 +++++++++++++++++ tools/binman/ftest.py | 112 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+)
Reviewed-by: Simon Glass sjg@chromium.org
But please see below
diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py index 0f8c88a9720e..a66ddce095e1 100644 --- a/tools/binman/etype/fit.py +++ b/tools/binman/etype/fit.py @@ -291,6 +291,57 @@ def _BuildInput(self, fdt): data = fdt.GetContents() return data
- def SetImagePos(self, image_pos):
"""Set the position in the image
This sets each subentry's offsets, sizes and positions-in-image
according to where they ended up in the packed FIT file.
Args:
image_pos: Position of this entry in the image
"""
super().SetImagePos(image_pos)
try:
fdt = Fdt.FromData(self.GetData())
fdt.Scan()
except libfdt.FdtException:
# If mkimage is missing we'll have empty data,
# which will cause a FDT_ERR_BADMAGIC error
return
Is it possible to check the 'missing' or missing_bintools properties to see whether mkimage is missing?
I don't like the idea of returning here for what looks like an unrelated exception.
Regards, Simon