diff --git a/config/boards/cainiao-cniot-core.csc b/config/boards/cainiao-cniot-core.csc index 92ede08502..fca37e62a4 100644 --- a/config/boards/cainiao-cniot-core.csc +++ b/config/boards/cainiao-cniot-core.csc @@ -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() { diff --git a/extensions/gxlimg.sh b/extensions/gxlimg.sh index 7342e92fee..0ef21cd2f6 100644 --- a/extensions/gxlimg.sh +++ b/extensions/gxlimg.sh @@ -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 +}