-
Notifications
You must be signed in to change notification settings - Fork 31
Description
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?