linuxOS_AP06/device/rockchip/common/scripts/mk-firmware.sh
2025-06-03 12:28:32 +08:00

99 lines
2.0 KiB
Bash
Executable File

#!/bin/bash -e
link_image() {
SRC="$1"
DST="$2"
message "Linking $DST from $SRC..."
ln -rsf "$SRC" "$DST"
}
build_firmware()
{
mkdir -p "$RK_FIRMWARE_DIR"
# Legacy rockdev/
rm -rf "$RK_ROCKDEV_DIR"
ln -rsf "$RK_FIRMWARE_DIR" "$RK_ROCKDEV_DIR"
"$RK_SCRIPTS_DIR/check-grow-align.sh"
link_image "$RK_CHIP_DIR/$RK_PARAMETER" "$RK_FIRMWARE_DIR/parameter.txt"
"$RK_SCRIPTS_DIR/mk-extra-parts.sh"
# Make sure that the loader is ready
if [ ! -r "$RK_FIRMWARE_DIR/MiniLoaderAll.bin" ]; then
notice "Loader is not ready, building it..."
"$RK_SCRIPTS_DIR/mk-loader.sh"
fi
notice "Packed files:"
for f in "$RK_FIRMWARE_DIR"/*; do
NAME=$(basename "$f")
if [ ! -r "$f" ]; then
warning "$NAME($(readlink -f "$f")) is invalid!"
continue
fi
echo -n "$NAME"
if [ -L "$f" ]; then
echo -n "($(readlink -f "$f"))"
fi
FILE_SIZE=$(ls -lLh $f | xargs | cut -d' ' -f 5)
echo ": $FILE_SIZE"
echo "$NAME" | grep -q ".img$" || continue
# Assert the image's size smaller then the limit
PART_NAME="${NAME%.img}"
PART_SIZE_KB="$(rk_partition_size_kb "$PART_NAME")"
if [ "$PART_NAME" = rootfs -a "$PART_SIZE_KB" -eq 0 ]; then
PART_NAME=system
PART_SIZE_KB="$(rk_partition_size_kb "$PART_NAME")"
fi
[ ! "$PART_SIZE_KB" -eq 0 ] || continue
FILE_SIZE_KB="$(( $(stat -Lc "%s" "$f") / 1024 ))"
if [ "$PART_SIZE_KB" -lt "$FILE_SIZE_KB" ]; then
error "error: $NAME's size exceed parameter's $PART_NAME partition size limit!"
return 1
fi
done
[ -z "$RK_UPDATE" ] || "$RK_SCRIPTS_DIR/mk-updateimg.sh"
message "Images under $RK_FIRMWARE_DIR/ are ready!"
finish_build
}
# Hooks
usage_hook()
{
usage_oneline "firmware" "pack and check firmwares"
}
clean_hook()
{
rm -rf "$RK_FIRMWARE_DIR" "$RK_ROCKDEV_DIR"
}
POST_BUILD_CMDS="firmware"
post_build_hook()
{
message "=========================================="
message " Start packing firmwares"
message "=========================================="
build_firmware
}
source "${RK_BUILD_HELPER:-$(dirname "$(realpath "$0")")/build-helper}"
post_build_hook $@