1#!/bin/bash -e 2 3RK_PACK_TOOL_DIR="$SDK_DIR/tools/linux/Linux_Pack_Firmware/rockdev" 4 5gen_package_file() 6{ 7 TYPE="${1:-update}" 8 9 if [ ! -r parameter.txt ]; then 10 echo -e "\e[31mparameter.txt is missing\e[0m" >&2 11 exit 1 12 fi 13 14 echo -e "# NAME\tPATH" 15 echo -e "package-file\tpackage-file" 16 echo -e "parameter\tparameter.txt" 17 18 [ ! -r MiniLoaderAll.bin ] || echo -e "bootloader\tMiniLoaderAll.bin" 19 20 for part in $(rk_partition_parse_names parameter.txt); do 21 if echo $part | grep -q "_b$"; then 22 # Not packing *_b partition for ota|sdcard 23 case $TYPE in 24 ota|sdcard) continue ;; 25 esac 26 fi 27 28 case $part in 29 backup) echo -e "backup\tRESERVED"; continue ;; 30 system|system_[ab]) IMAGE=rootfs.img ;; 31 *_a) IMAGE="${part%_a}.img" ;; 32 *_b) IMAGE="${part%_b}.img" ;; 33 *) IMAGE="$part.img" ;; 34 esac 35 36 [ ! -r "$IMAGE" ] || echo -e "$part\t$IMAGE" 37 done 38} 39 40build_updateimg() 41{ 42 check_config RK_UPDATE || return 0 43 44 TARGET="${1:-$RK_FIRMWARE_DIR/update.img}" 45 TYPE="${2:-update}" 46 PKG_FILE="${3:-$RK_PACKAGE_FILE}" 47 OUT_DIR="$RK_OUTDIR/$TYPE" 48 IMAGE_DIR="$OUT_DIR/Image" 49 50 echo "==========================================" 51 echo " Start packing $2 update image" 52 echo "==========================================" 53 54 rm -rf "$TARGET" "$OUT_DIR" 55 mkdir -p "$IMAGE_DIR" 56 cd "$IMAGE_DIR" 57 58 # Prepare images 59 ln -rsf "$RK_ROCKDEV_DIR"/* . 60 rm -f update.img 61 if [ "$TYPE" = sdcard ]; then 62 ln -rsf "$RK_IMAGE_DIR/sdupdate-ab-misc.img" misc.img 63 ln -rsf "$RK_DATA_DIR/parameter-sdupdate.txt" \ 64 parameter.txt 65 66 # Not packing rootfs partition for sdcard 67 rm -f rootfs.img 68 fi 69 70 # Prepare package-file 71 if [ "$PKG_FILE" ]; then 72 PKG_FILE="$CHIP_DIR/$PKG_FILE" 73 if [ ! -r "$PKG_FILE" ]; then 74 echo "$PKG_FILE not exists!" 75 exit 1 76 fi 77 ln -rsf "$PKG_FILE" package-file 78 else 79 echo "Generating package-file for $TYPE :" 80 gen_package_file $TYPE > package-file 81 cat package-file 82 fi 83 84 echo "Packing $TARGET for $TYPE..." 85 86 if [ ! -r MiniLoaderAll.bin ]; then 87 echo -e "\e[31mMiniLoaderAll.bin is missing\e[0m" 88 exit 1 89 fi 90 91 TAG=RK$(hexdump -s 21 -n 4 -e '4 "%c"' MiniLoaderAll.bin | rev) 92 "$RK_PACK_TOOL_DIR/afptool" -pack ./ update.raw.img 93 "$RK_PACK_TOOL_DIR/rkImageMaker" -$TAG MiniLoaderAll.bin \ 94 update.raw.img update.img -os_type:androidos 95 96 ln -rsf "$IMAGE_DIR/package-file" "$OUT_DIR" 97 ln -rsf "$IMAGE_DIR/update.img" "$OUT_DIR" 98 ln -rsf "$IMAGE_DIR/update.img" "$TARGET" 99 100 finish_build build_updateimg $@ 101} 102 103build_ota_updateimg() 104{ 105 check_config RK_AB_UPDATE || return 0 106 107 echo "Make A/B update image for OTA" 108 109 build_updateimg "$RK_FIRMWARE_DIR/update_ota.img" ota \ 110 $RK_OTA_PACKAGE_FILE 111 112 finish_build 113} 114 115build_sdcard_updateimg() 116{ 117 check_config RK_AB_UPDATE RK_AB_UPDATE_SDCARD || return 0 118 119 echo "Make A/B update image for SDcard" 120 121 build_updateimg "$RK_FIRMWARE_DIR/update_sdcard.img" sdcard 122 123 finish_build 124} 125 126build_ab_updateimg() 127{ 128 check_config RK_AB_UPDATE || return 0 129 130 build_ota_updateimg 131 build_sdcard_updateimg 132 133 echo "Make A/B update image" 134 135 build_updateimg "$RK_FIRMWARE_DIR/update_ab.img" ab 136 137 finish_build 138} 139 140# Hooks 141 142usage_hook() 143{ 144 echo -e "updateimg \tbuild update image" 145 echo -e "otapackage \tbuild A/B OTA update image" 146 echo -e "sdpackage \tbuild A/B SDcard update image" 147} 148 149clean_hook() 150{ 151 rm -rf "$RK_OUTDIR/update" 152 rm -rf "$RK_OUTDIR/ota" 153 rm -rf "$RK_OUTDIR/sdcard" 154 rm -rf "$RK_OUTDIR/ab" 155 rm -rf "$RK_FIRMWARE_DIR/*update.img" 156} 157 158POST_BUILD_CMDS="updateimg otapackage sdpackage" 159post_build_hook() 160{ 161 case "$1" in 162 updateimg) 163 if [ "$RK_AB_UPDATE" ]; then 164 build_ab_updateimg 165 else 166 build_updateimg 167 fi 168 ;; 169 otapackage) build_ota_updateimg ;; 170 sdpackage) build_sdcard_updateimg ;; 171 *) usage ;; 172 esac 173} 174 175source "${BUILD_HELPER:-$(dirname "$(realpath "$0")")/../build-hooks/build-helper}" 176 177post_build_hook ${@:-updateimg} 178