extensions: gxlimg: Add new function to repack FIP with u-boot.bin

This commit is contained in:
retro98boy 2025-10-06 19:38:40 +08:00 committed by Igor
parent 8b0f9ad1ef
commit 6fcbc04929
2 changed files with 90 additions and 37 deletions

View File

@ -25,42 +25,7 @@ function post_family_config__use_repacked_fip() {
}
function post_uboot_custom_postprocess__repack_vendor_fip_with_mainline_uboot() {
display_alert "${BOARD}" "Repacking vendor FIP with mainline u-boot.bin" "info"
BLOBS_DIR="${SRC}/cache/sources/amlogic-fip-blobs/cainiao-cniot-core"
EXTRACT_DIR="${BLOBS_DIR}/extract"
rm -rf "$EXTRACT_DIR"
mkdir "$EXTRACT_DIR"
run_host_command_logged gxlimg -e "${BLOBS_DIR}/DDR.USB" "$EXTRACT_DIR"
mv u-boot.bin raw-u-boot.bin
rm -f "${EXTRACT_DIR}/bl33.enc"
run_host_command_logged gxlimg \
-t bl3x \
-s raw-u-boot.bin \
"${EXTRACT_DIR}/bl33.enc"
run_host_command_logged gxlimg \
-t fip \
--bl2 "${EXTRACT_DIR}/bl2.sign" \
--ddrfw "${EXTRACT_DIR}/ddr4_1d.fw" \
--ddrfw "${EXTRACT_DIR}/ddr4_2d.fw" \
--ddrfw "${EXTRACT_DIR}/ddr3_1d.fw" \
--ddrfw "${EXTRACT_DIR}/piei.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr4_1d.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr4_2d.fw" \
--ddrfw "${EXTRACT_DIR}/diag_lpddr4.fw" \
--ddrfw "${EXTRACT_DIR}/aml_ddr.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr3_1d.fw" \
--bl30 "${EXTRACT_DIR}/bl30.enc" \
--bl31 "${EXTRACT_DIR}/bl31.enc" \
--bl33 "${EXTRACT_DIR}/bl33.enc" \
--rev v3 u-boot.bin
if [ ! -s u-boot.bin ]; then
display_alert "${BOARD}" "FIP repack produced empty u-boot.bin" "err"
exit 1
fi
gxlimg_repack_fip_with_new_uboot "${SRC}/cache/sources/amlogic-fip-blobs/cainiao-cniot-core/DDR.USB" g12b
}
function post_family_tweaks_bsp__cainiao-cniot-core() {

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
function fetch_sources_tools__gxlimg() {
fetch_from_repo "https://github.com/retro98boy/gxlimg" "gxlimg" "commit:fde6a3dd0e13875a5b219389c0a6137616eaebdb"
fetch_from_repo "${GITHUB_SOURCE}/retro98boy/gxlimg" "gxlimg" "commit:fde6a3dd0e13875a5b219389c0a6137616eaebdb"
}
function build_host_tools__compile_gxlimg() {
@ -16,3 +16,91 @@ function build_host_tools__compile_gxlimg() {
git rev-parse @ 2> /dev/null > .commit_id
fi
}
# This function extracts bl2 and bl3x from the old FIP and repackages them with the new u-boot.bin into a FIP
# $1 path to old FIP file
# $2 SoC family
function gxlimg_repack_fip_with_new_uboot() {
display_alert "${BOARD}" "Repacking FIP with new u-boot.bin" "info"
if [[ ! -f "$1" ]]; then
exit_with_error "FIP file $1 does not exist"
fi
if [[ ! -f u-boot.bin ]]; then
exit_with_error "u-boot.bin not found under $(pwd)"
fi
mv u-boot.bin raw-u-boot.bin
EXTRACT_DIR=$(mktemp -d)
trap 'rm -rf "$EXTRACT_DIR"' EXIT
run_host_command_logged gxlimg -e "$1" "$EXTRACT_DIR"
rm -f "${EXTRACT_DIR}/bl33.enc"
case $2 in
gxl)
run_host_command_logged gxlimg \
-t bl3x \
-c raw-u-boot.bin \
"${EXTRACT_DIR}/bl33.enc"
run_host_command_logged gxlimg \
-t fip \
--bl2 "${EXTRACT_DIR}/bl2.sign" \
--bl30 "${EXTRACT_DIR}/bl30.enc" \
--bl301 "${EXTRACT_DIR}/bl301.enc" \
--bl31 "${EXTRACT_DIR}/bl31.enc" \
--bl33 "${EXTRACT_DIR}/bl33.enc" \
u-boot.bin
;;
g12a | g12b)
run_host_command_logged gxlimg \
-t bl3x \
-s raw-u-boot.bin \
"${EXTRACT_DIR}/bl33.enc"
if [ -e "${EXTRACT_DIR}/lpddr3_1d.fw" ]; then
run_host_command_logged gxlimg \
-t fip \
--bl2 "${EXTRACT_DIR}/bl2.sign" \
--ddrfw "${EXTRACT_DIR}/ddr4_1d.fw" \
--ddrfw "${EXTRACT_DIR}/ddr4_2d.fw" \
--ddrfw "${EXTRACT_DIR}/ddr3_1d.fw" \
--ddrfw "${EXTRACT_DIR}/piei.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr4_1d.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr4_2d.fw" \
--ddrfw "${EXTRACT_DIR}/diag_lpddr4.fw" \
--ddrfw "${EXTRACT_DIR}/aml_ddr.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr3_1d.fw" \
--bl30 "${EXTRACT_DIR}/bl30.enc" \
--bl31 "${EXTRACT_DIR}/bl31.enc" \
--bl33 "${EXTRACT_DIR}/bl33.enc" \
--rev v3 u-boot.bin
else
run_host_command_logged gxlimg \
-t fip \
--bl2 "${EXTRACT_DIR}/bl2.sign" \
--ddrfw "${EXTRACT_DIR}/ddr4_1d.fw" \
--ddrfw "${EXTRACT_DIR}/ddr4_2d.fw" \
--ddrfw "${EXTRACT_DIR}/ddr3_1d.fw" \
--ddrfw "${EXTRACT_DIR}/piei.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr4_1d.fw" \
--ddrfw "${EXTRACT_DIR}/lpddr4_2d.fw" \
--ddrfw "${EXTRACT_DIR}/diag_lpddr4.fw" \
--ddrfw "${EXTRACT_DIR}/aml_ddr.fw" \
--bl30 "${EXTRACT_DIR}/bl30.enc" \
--bl31 "${EXTRACT_DIR}/bl31.enc" \
--bl33 "${EXTRACT_DIR}/bl33.enc" \
--rev v3 u-boot.bin
fi
;;
*)
exit_with_error "Unsupported SoC family: $2"
;;
esac
if [ ! -s u-boot.bin ]; then
exit_with_error "FIP repack produced empty u-boot.bin"
fi
}