Hi, this looks great! I've got a HardKernel N2 here with a S922X chip, packaging the boot image is terrible, and aml_encrypt_g12b being only available as a x86_64 binary blob doesn't make it much better.
Here's what the somewhat loosely available only documentation provides for building the images
wget https://github.com/BayLibre/u-boot/releases/download/v2017.11-libretech-cc/blx_fix_g12a.sh -O fip/blx_fix.sh
cp -v $UBOOTDIR/build/scp_task/bl301.bin fip/
cp -v $UBOOTDIR/build/board/hardkernel/odroidn2/firmware/acs.bin fip/
cp -v $UBOOTDIR/fip/g12b/bl2.bin fip/
cp -v $UBOOTDIR/fip/g12b/bl30.bin fip/
cp -v $UBOOTDIR/fip/g12b/bl31.img fip/
cp -v $UBOOTDIR/fip/g12b/ddr3_1d.fw fip/
cp -v $UBOOTDIR/fip/g12b/ddr4_1d.fw fip/
cp -v $UBOOTDIR/fip/g12b/ddr4_2d.fw fip/
cp -v $UBOOTDIR/fip/g12b/diag_lpddr4.fw fip/
cp -v $UBOOTDIR/fip/g12b/lpddr4_1d.fw fip2/
cp -v $UBOOTDIR/fip/g12b/lpddr4_2d.fw fip/
cp -v $UBOOTDIR/fip/g12b/piei.fw fip/
cp -v $UBOOTDIR/fip/g12b/aml_ddr.fw fip/
cp -v u-boot.bin fip/bl33.bin
bash fip/blx_fix.sh \
fip/bl30.bin \
fip/zero_tmp \
fip/bl30_zero.bin \
fip/bl301.bin \
fip/bl301_zero.bin \
fip/bl30_new.bin \
bl30
bash fip/blx_fix.sh \
fip/bl2.bin \
fip/zero_tmp \
fip/bl2_zero.bin \
fip/acs.bin \
fip/bl21_zero.bin \
fip/bl2_new.bin \
bl2
$UBOOTDIR/fip/g12b/aml_encrypt_g12b --bl30sig --input fip/bl30_new.bin \
--output fip/bl30_new.bin.g12a.enc \
--level v3
$UBOOTDIR/fip/g12b/aml_encrypt_g12b --bl3sig --input fip/bl30_new.bin.g12a.enc \
--output fip/bl30_new.bin.enc \
--level v3 --type bl30
$UBOOTDIR/fip/g12b/aml_encrypt_g12b --bl3sig --input fip/bl31.img \
--output fip/bl31.img.enc \
--level v3 --type bl31
$UBOOTDIR/fip/g12b/aml_encrypt_g12b --bl3sig --input fip/bl33.bin --compress lz4 \
--output fip/bl33.bin.enc \
--level v3 --type bl33 --compress lz4
$UBOOTDIR/fip/g12b/aml_encrypt_g12b --bl2sig --input fip/bl2_new.bin \
--output fip/bl2.n.bin.sig
$UBOOTDIR/fip/g12b/aml_encrypt_g12b --bootmk \
--output fip/u-boot.bin \
--bl2 fip/bl2.n.bin.sig \
--bl30 fip/bl30_new.bin.enc \
--bl31 fip/bl31.img.enc \
--bl33 fip/bl33.bin.enc \
--ddrfw1 fip/ddr4_1d.fw \
--ddrfw2 fip/ddr4_2d.fw \
--ddrfw3 fip/ddr3_1d.fw \
--ddrfw4 fip/piei.fw \
--ddrfw5 fip/lpddr4_1d.fw \
--ddrfw6 fip/lpddr4_2d.fw \
--ddrfw7 fip/diag_lpddr4.fw \
--ddrfw8 fip/aml_ddr.fw \
--level v3
Looking at the README.g12b, gxlimg should be suitable to get most of this done. Assuming we have the bl30_new.bin and bl2_new.bin constructed with the blx_fip.sh, these gxlimg commands should yield the same results
gxlimg -t bl30 -s bl30_new.bin bl30_new.bin.g12.enc
gxlimg -t bl3x -s bl30_new.bin.g12.enc bl30_new.bin.enc
gxlimg -t bl3x -s bl31.img bl31.img.sig.enc
gxlimg -t bl3x -s bl32.img bl32.img.enc
gxlimg -t bl3x -s u-boot.bin bl33.bin.enc
gxlimg -t bl2 -s bl2_new.bin bl2.n.bin.sig
Of course the bl33.bin.enc won't be lz4 compressed, but the --bootmk step is missing. I believe this is the -t fib instruction, however we are missing all the ddr arguments? This leaves me with some questions:
(a) the --level 3 argument seems mostly unused?
(b) does not compressing bl33 pose an issue? Do we know if the compression is run before or after the signing?
(c) would it be hard to add the -ddrXXX flags? I see gi_fip_create just learned about bl301.
(d) with respect to (c), does that mean we can sign bl30 and bl301 separately and ignore the first blx_fip.sh step?
Hi, this looks great! I've got a HardKernel N2 here with a S922X chip, packaging the boot image is terrible, and
aml_encrypt_g12bbeing only available as ax86_64binary blob doesn't make it much better.Here's what the somewhat loosely available only documentation provides for building the images
Looking at the README.g12b,
gxlimgshould be suitable to get most of this done. Assuming we have thebl30_new.binandbl2_new.binconstructed with theblx_fip.sh, thesegxlimgcommands should yield the same resultsOf course the
bl33.bin.encwon't belz4compressed, but the--bootmkstep is missing. I believe this is the-t fibinstruction, however we are missing all theddrarguments? This leaves me with some questions:(a) the
--level 3argument seems mostly unused?(b) does not compressing
bl33pose an issue? Do we know if the compression is run before or after the signing?(c) would it be hard to add the
-ddrXXXflags? I seegi_fip_createjust learned aboutbl301.(d) with respect to (c), does that mean we can sign
bl30andbl301separately and ignore the firstblx_fip.shstep?