binman warning/failure when blobs are missing

Tim Harvey tharvey at gateworks.com
Thu Aug 11 18:27:44 CEST 2022


Greetings,

After a couple of hours troubleshooting a bad boot image today I
realized the issue was that I had some 0 byte files for the lpddr4
training blobs that are part of the imx8mp binman created image.

Digging in I found that if a blob referenced in the binman node is
missing a warning will be output but the missing files will be
'created' as 0 byte files such that the next time you build you will
get no warning (but will have a non-working image). Additionally the
error does not cause a non-zero exit code.

I'm not that fluent in python these days, and don't have the time for
a while to try and fix this but I figured I would at least send this
email in case someone else does.

Example:
# rm *lpddr4*.bin # make sure lpddr4*.bin files referenced in binman
nodes are missing
# make distclean imx8mp_venice_defconfig flash.bin && echo "build ok"
...
  BINMAN  flash.bin
Image 'main-section' is missing external blobs and is non-functional: ddr-1d-ime
m-fw ddr-1d-dmem-fw ddr-2d-imem-fw ddr-2d-dmem-fw
Image 'main-section' has faked external blobs and is non-functional: lpddr4_pmu_
train_1d_imem_202006.bin lpddr4_pmu_train_1d_dmem_202006.bin lpddr4_pmu_train_2d
_imem_202006.bin lpddr4_pmu_train_2d_dmem_202006.bin

Some images are invalid
^^^ excellent warning
build ok
^^^ not so great that there is a successful exit code
# make flash.bin && echo "build ok"
...
  BINMAN  flash.bin
build ok
^^^ absolutely horrible that 0 byte files were created and thus
everything looks good this time around!
# stat -c "%s %n" lpddr4*.bin
0 lpddr4_pmu_train_1d_dmem_202006.bin
0 lpddr4_pmu_train_1d_imem_202006.bin
0 lpddr4_pmu_train_2d_dmem_202006.bin
0 lpddr4_pmu_train_2d_imem_202006.bin

Best Regards,

Tim


More information about the U-Boot mailing list