From d30e103916dc5608bcbc351369946313ae17423c Mon Sep 17 00:00:00 2001 From: hmz007 Date: Sat, 26 Aug 2023 15:54:03 +0800 Subject: [PATCH] device: add OTA and virtual A/B support for nanopi5/6 Signed-off-by: hmz007 Change-Id: Ia7d730d54efff17291433dbadd58169e025f93c1 --- build.sh | 23 +- device/friendlyelec/nanopi3/build.sh | 23 +- device/friendlyelec/nanopi3/config.cfg_ab | Bin 7959 -> 7959 bytes device/friendlyelec/nanopi3/gen_ota_json.sh | 65 +++++ device/friendlyelec/nanopi3/mkimage.sh | 272 ++++++++++++++++++ .../common/build/rockchip/Partitions.mk | 2 +- .../common/build/rockchip/RebuildParameter.mk | 14 +- device/rockchip/rk356x/nanopi5/BoardConfig.mk | 20 +- device/rockchip/rk356x/nanopi5/fstab.in | 2 +- .../rk356x/nanopi5_box/BoardConfig.mk | 19 +- .../rockchip/rk356x/nanopi5_box/fstab_box.in | 2 +- device/rockchip/rk3588/nanopi6/BoardConfig.mk | 20 +- device/rockchip/rk3588/nanopi6/fstab.in | 2 +- .../rk3588/nanopi6_box/BoardConfig.mk | 19 +- .../rockchip/rk3588/nanopi6_box/fstab_box.in | 2 +- mkimage.sh | 2 +- mkimage_ab.sh | 1 - 17 files changed, 443 insertions(+), 45 deletions(-) create mode 100755 device/friendlyelec/nanopi3/gen_ota_json.sh create mode 100755 device/friendlyelec/nanopi3/mkimage.sh delete mode 120000 mkimage_ab.sh diff --git a/build.sh b/build.sh index eed469b15fc..2733f044d59 100755 --- a/build.sh +++ b/build.sh @@ -222,21 +222,30 @@ function make_rockdev_img() { function build_ota() { echo "generate ota package" - local OTA_OBJ=obj/PACKAGING/target_files_intermediates/$TARGET_PRODUCT-target_files-*.zip - local OTA_PACKAGE_TARGET=$TARGET_PRODUCT-ota-*.zip + local OTA_FULL=$TARGET_PRODUCT-ota-${BUILD_NUMBER}.zip local OTA_PATH=rockdev/otapackage local ota_build_number=$(cat $OTA_PATH/build_number.txt 2>/dev/null) + local ota_target_start=$TARGET_PRODUCT-target_files-${ota_build_number}.zip + local ota_target_build=$TARGET_PRODUCT-target_files-${BUILD_NUMBER}.zip build_android dist ret=$? mkdir -p $OTA_PATH - FA_RunCmd "cp $OUT/${OTA_OBJ} $OTA_PATH/ -f" - FA_RunCmd "cp $OUT/${OTA_PACKAGE_TARGET} $OTA_PATH/ -f" - - # TODO: generate ota-update-${BUILD_NUMBER}.zip + FA_RunCmd "cp out/dist/${ota_target_build} $OTA_PATH/ -f" + FA_RunCmd "cp out/dist/${OTA_FULL} $OTA_PATH/ -f" + + if [ "$BUILD_NUMBER" != "$ota_build_number" ] && + [ -f $OTA_PATH/${ota_target_start} ] && + [ -f $OTA_PATH/${ota_target_build} ]; then + ota_from_target_files -v \ + -i $OTA_PATH/${ota_target_start} \ + $OTA_PATH/${ota_target_build} \ + $OTA_PATH/ota-update-${BUILD_NUMBER}.zip + cp device/friendlyelec/nanopi3/gen_ota_json.sh $OTA_PATH/ -f + fi - FA_RunCmd "cp out/build_number.txt $OTA_PATH/ -f" + FA_RunCmd "cp ./out/soong/build_number.txt $OTA_PATH/ -f" FA_ShowTime $ret } diff --git a/device/friendlyelec/nanopi3/build.sh b/device/friendlyelec/nanopi3/build.sh index eed469b15fc..2733f044d59 100755 --- a/device/friendlyelec/nanopi3/build.sh +++ b/device/friendlyelec/nanopi3/build.sh @@ -222,21 +222,30 @@ function make_rockdev_img() { function build_ota() { echo "generate ota package" - local OTA_OBJ=obj/PACKAGING/target_files_intermediates/$TARGET_PRODUCT-target_files-*.zip - local OTA_PACKAGE_TARGET=$TARGET_PRODUCT-ota-*.zip + local OTA_FULL=$TARGET_PRODUCT-ota-${BUILD_NUMBER}.zip local OTA_PATH=rockdev/otapackage local ota_build_number=$(cat $OTA_PATH/build_number.txt 2>/dev/null) + local ota_target_start=$TARGET_PRODUCT-target_files-${ota_build_number}.zip + local ota_target_build=$TARGET_PRODUCT-target_files-${BUILD_NUMBER}.zip build_android dist ret=$? mkdir -p $OTA_PATH - FA_RunCmd "cp $OUT/${OTA_OBJ} $OTA_PATH/ -f" - FA_RunCmd "cp $OUT/${OTA_PACKAGE_TARGET} $OTA_PATH/ -f" - - # TODO: generate ota-update-${BUILD_NUMBER}.zip + FA_RunCmd "cp out/dist/${ota_target_build} $OTA_PATH/ -f" + FA_RunCmd "cp out/dist/${OTA_FULL} $OTA_PATH/ -f" + + if [ "$BUILD_NUMBER" != "$ota_build_number" ] && + [ -f $OTA_PATH/${ota_target_start} ] && + [ -f $OTA_PATH/${ota_target_build} ]; then + ota_from_target_files -v \ + -i $OTA_PATH/${ota_target_start} \ + $OTA_PATH/${ota_target_build} \ + $OTA_PATH/ota-update-${BUILD_NUMBER}.zip + cp device/friendlyelec/nanopi3/gen_ota_json.sh $OTA_PATH/ -f + fi - FA_RunCmd "cp out/build_number.txt $OTA_PATH/ -f" + FA_RunCmd "cp ./out/soong/build_number.txt $OTA_PATH/ -f" FA_ShowTime $ret } diff --git a/device/friendlyelec/nanopi3/config.cfg_ab b/device/friendlyelec/nanopi3/config.cfg_ab index 3b1d46cfa8ef0d80d322dab6e4014c49af3f0256..ef1bb08466542f886cd520fb73b527a49097dacc 100644 GIT binary patch literal 7959 zcmeHMJ!lj`6#jN^H8E(RC|ncVMzC=!Ik1Z;NeTl28@tP`Sw!%R{IfB)UqEbJBj8m>HlEz z!0a~Lt+3q^?Kt@*#)Hyo?N)nZd9%~$gx{OBhu@ktr5&(clGgb?CdHp)Y?j_pN8Y6l zrGtuV>K9or*n%dn~D!Tx1_uA0+ikL|NlUl-OeL>dM$lsTW05x3eUPkad=vFbtD*(+n;Xad#M2P4H3=W__59 zSMJtfb;Gbp&S5f7>NzsI4>Nd{VL4yvH+mT+bEIXMoh4;IC``z>ms~OoyGakG_mP#Z zAIq}R--?&|F}s({-7MMKo?+ULS%%qoSY{u#W*GKotRg$Z3|{KLBwk^CSnhlnDqM` zZd{2_DM~4#LcyKe>Y@ubf~br90^@gXay!*_RYEfZ_YO02A9K$+_nwb)&fGIKeGOyy zelUy>4&x|}Ac8X(90QQCGS*ELkwy;lD6yx}x{gNeQjJw?4o$eNQQQ4?;sD0kmUjqY zOU85=N}-|aGska-fcv6IbL(BmF1|&;Ici7 z0>696)>)1%;sUP;UP(;uGW(X|w1DmFm?Zx^V#ug5EnlkIS(mI)%F+O^`m>38)OMfS zP09|8TA$Qg9@4kOFMfCB0`)hn4JFW5QEteSW#NDYP{0tDJk9Yk0hTY*qTDt=BdEZev~MNWbjI zN%GXZMG%KK*{L#6wq2R``o#@YresvU%vcF(v&6eVjaIri3lhSd9rDMxjyi9y&LFId zB++-j5LTrgio7by!hmQ4f`l+n{uuF8pzVV}m>+CdT-z{DLrG%IAk28l9(l=>MwrAg zWn_u1U?Qy0mEW^q#)kPK4*RGPmZMJ*KPgeTl%RP@Ex$pS-y;1`H`3P{>R2#?FykeA z#p(%&w>XUELHWZzFK;=3bEV*OzKOB#fU#(a1lHlq>t?^#9g z5T@n#?3bKZ7#r4i8v0=7c#H2?qr diff --git a/device/friendlyelec/nanopi3/gen_ota_json.sh b/device/friendlyelec/nanopi3/gen_ota_json.sh new file mode 100755 index 00000000000..4529dbf7568 --- /dev/null +++ b/device/friendlyelec/nanopi3/gen_ota_json.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +ota_file=$1 +ota_json=$2 +url_base=$3 + +# adb shell getprop ro.product.releasetype +romtype="stable" + +# adb shell getprop ro.product.version +version="12.1.0" + +#---------------------------------------------------------- + +function generate_ota_json() { + local time=$(stat -c "%Y" "$1") + local size=$(stat -c "%s" "$1") + local zip_name=$(basename "$1") + local id=$(echo "$zip_name" | sha1sum | cut -d' ' -f1) + local build_id=$(cat build_number.txt) + + cat > $2 <<- EOF + { + "response": [ + { + "datetime": $time, + "filename": "$zip_name", + "id": "$id", + "romtype": "$romtype", + "size": $size, + "url": "$url_base/$zip_name", + "version": "$version", + "buildid": "$build_id" + } + ] + } + EOF +} + +#---------------------------------------------------------- + +true ${ota_json:="$ota_file.json"} +true ${url_base:="http://127.0.0.1/ota"} + +echo "OTA file: $ota_file" +echo "OTA json: $ota_json" + +if [ "$ota_file" = "empty" ]; then + cat > $ota_json <<- EOF + { + "response": [ ] + } + EOF + +elif [ ! -f "$ota_file" ]; then + echo "Error: '$ota_file': No such file" + exit 1 + +else + generate_ota_json $ota_file $ota_json +fi + +echo "-----------------------------------------------------" +cat $ota_json + diff --git a/device/friendlyelec/nanopi3/mkimage.sh b/device/friendlyelec/nanopi3/mkimage.sh new file mode 100755 index 00000000000..00482cb7b81 --- /dev/null +++ b/device/friendlyelec/nanopi3/mkimage.sh @@ -0,0 +1,272 @@ +#!/bin/bash +set -e + +. build/envsetup.sh >/dev/null + +export PATH=$ANDROID_BUILD_PATHS:$PATH +TARGET_PRODUCT=`get_build_var TARGET_PRODUCT` +TARGET_DEVICE_DIR=`get_build_var TARGET_DEVICE_DIR` +TARGET_BASE_PARAMETER_IMAGE=`get_build_var TARGET_BASE_PARAMETER_IMAGE` +TARGET_AUTO_PQ_IMAGE=`get_build_var TARGET_AUTO_PQ_IMAGE` +HIGH_RELIABLE_RECOVERY_OTA=`get_build_var HIGH_RELIABLE_RECOVERY_OTA` +BOARD_AVB_ENABLE=`get_build_var BOARD_AVB_ENABLE` +BOARD_USES_AB_IMAGE=`get_build_var BOARD_USES_AB_IMAGE` +PRODUCT_USE_DYNAMIC_PARTITIONS=`get_build_var PRODUCT_USE_DYNAMIC_PARTITIONS` +KERNEL_SRC_PATH=`get_build_var TARGET_PREBUILT_KERNEL` +KERNEL_PATH=`get_build_var PRODUCT_KERNEL_PATH` +BUILD_GKI=`get_build_var BOARD_BUILD_GKI` + +echo TARGET_PRODUCT=$TARGET_PRODUCT +echo BOARD_AVB_ENABLE=$BOARD_AVB_ENABLE +echo BOARD_USES_AB_IMAGE=$BOARD_USES_AB_IMAGE +echo HIGH_RELIABLE_RECOVERY_OTA=$HIGH_RELIABLE_RECOVERY_OTA +echo ---------------------------------- + +IMAGE_PATH=rockdev/Image-$TARGET_PRODUCT +UBOOT_PATH=u-boot +rm -rf $IMAGE_PATH +mkdir -p $IMAGE_PATH + +PARAMETER=${TARGET_DEVICE_DIR}/parameter.txt +FLASH_CONFIG_FILE=${TARGET_DEVICE_DIR}/config.cfg +if [ "$BUILD_GKI" = "true" ]; then + FLASH_CONFIG_FILE=${TARGET_DEVICE_DIR}/config.cfg_gki +elif [ "$BOARD_USES_AB_IMAGE" = "true" ]; then + FLASH_CONFIG_FILE=${TARGET_DEVICE_DIR}/config.cfg_ab +fi + +[ $(id -u) -eq 0 ] || FAKEROOT=fakeroot + +BOOT_OTA="ota" +TARGET="withoutkernel" +[ -z "$1" ] || TARGET=$1 +[ $TARGET != $BOOT_OTA -a $TARGET != "withoutkernel" ] && echo "unknow target[${TARGET}],exit!" && exit 0 + +if [ ! -f $OUT/kernel ]; then + echo "kernel image not fount! [$OUT/kernel]" + BOARD_CONFIG=device/rockchip/common/device.mk + read -p "copy kernel from TARGET_PREBUILT_KERNEL[$KERNEL_SRC_PATH] (y/n) n to exit?" + if [ "$REPLY" == "y" ]; then + [ -f $KERNEL_SRC_PATH ] || \ + echo -n "fatal! TARGET_PREBUILT_KERNEL not eixit! " || \ + echo -n "check you configuration in [${BOARD_CONFIG}] " || exit 0 + + cp ${KERNEL_SRC_PATH} $OUT/kernel + else + exit 0 + fi +fi + +copy_images() { + if [ ! -f "$1" ]; then + echo "skip copy images: ${1#$(pwd)/}" + else + echo "create $2..." + cp -a $1 $2 + echo "done." + fi +} + +copy_images_from_out() { + copy_images $OUT/$1 $IMAGE_PATH/$1 +} + +echo "create dtbo.img..." +if [ ! -f "$OUT/dtbo.img" ]; then + BOARD_DTBO_IMG=$OUT/rebuild-dtbo.img +else + BOARD_DTBO_IMG=$OUT/dtbo.img +fi +cp -a $BOARD_DTBO_IMG $IMAGE_PATH/dtbo.img +echo "done." + +copy_images $KERNEL_PATH/resource.img $IMAGE_PATH/resource.img +copy_images_from_out boot.img +copy_images_from_out boot-debug.img +copy_images_from_out vendor_boot.img +copy_images_from_out vendor_boot-debug.img +copy_images_from_out recovery.img +copy_images_from_out super.img +copy_images $OUT/userdata.img $IMAGE_PATH/data.img + +if [ "$BUILD_GKI" = "true" ]; then + copy_images_from_out init_boot.img + copy_images_from_out pvmfw.img +fi +if [ "$PRODUCT_USE_DYNAMIC_PARTITIONS" != "true" ]; then + copy_images_from_out system.img + copy_images_from_out system_ext.img + copy_images_from_out vendor.img + copy_images_from_out odm.img + copy_images_from_out product.img +fi + +echo "create vbmeta.img..." +if [ "$BOARD_AVB_ENABLE" = "true" ]; then + cp -a $OUT/vbmeta.img $IMAGE_PATH/vbmeta.img +else + echo "BOARD_AVB_ENABLE is false, use default vbmeta.img" + cp -a device/rockchip/common/vbmeta.img $IMAGE_PATH/vbmeta.img +fi + +echo -n "create misc.img.... " +cp -a rkst/Image/misc.img $IMAGE_PATH/misc.img +cp -a rkst/Image/pcba_small_misc.img $IMAGE_PATH/pcba_small_misc.img +cp -a rkst/Image/pcba_whole_misc.img $IMAGE_PATH/pcba_whole_misc.img +echo "done." + +if [ -f $UBOOT_PATH/uboot.img ]; then + echo "create uboot.img..." + cp -a $UBOOT_PATH/uboot.img $IMAGE_PATH/uboot.img +else + echo "$UBOOT_PATH/uboot.img not fount! Please make it from $UBOOT_PATH first!" +fi + +if [ -f $UBOOT_PATH/trust_nand.img ]; then + echo "create trust.img..." + cp -a $UBOOT_PATH/trust_nand.img $IMAGE_PATH/trust.img +elif [ -f $UBOOT_PATH/trust_with_ta.img ]; then + echo "create trust.img..." + cp -a $UBOOT_PATH/trust_with_ta.img $IMAGE_PATH/trust.img +elif [ -f $UBOOT_PATH/trust.img ]; then + echo "create trust.img..." + cp -a $UBOOT_PATH/trust.img $IMAGE_PATH/trust.img +else + echo "skip copy images: $UBOOT_PATH/trust.img" +fi + +if [ "$HIGH_RELIABLE_RECOVERY_OTA" = "true" ]; then + if [ -f $UBOOT_PATH/uboot_ro.img ]; then + echo -n "HIGH_RELIABLE_RECOVERY_OTA is true. create uboot_ro.img..." + cp -a $UBOOT_PATH/uboot_ro.img $IMAGE_PATH/uboot_ro.img + cp -a $IMAGE_PATH/trust.img $IMAGE_PATH/trust_ro.img + echo "done." + else + echo "$UBOOT_PATH/uboot_ro.img not fount! Please make it from $UBOOT_PATH first!" + fi +fi + +if [ -f $UBOOT_PATH/*_loader_*.bin ]; then + echo "create loader..." + cp -a $UBOOT_PATH/*_loader_*.bin $IMAGE_PATH/MiniLoaderAll.bin +else + if [ -f $UBOOT_PATH/*loader*.bin ]; then + echo "create loader..." + cp -a $UBOOT_PATH/*loader*.bin $IMAGE_PATH/MiniLoaderAll.bin + elif [ "$TARGET_PRODUCT" == "px3" -a -f $UBOOT_PATH/RKPX3Loader_miniall.bin ]; then + echo "create loader..." + cp -a $UBOOT_PATH/RKPX3Loader_miniall.bin $IMAGE_PATH/MiniLoaderAll.bin + else + echo "$UBOOT_PATH/*MiniLoaderAll_*.bin not fount! Please make it from $UBOOT_PATH first!" + fi +fi + +if [ -f $FLASH_CONFIG_FILE ]; then + echo "create config.cfg..." + cp -a $FLASH_CONFIG_FILE $IMAGE_PATH/config.cfg +else + echo "$FLASH_CONFIG_FILE not fount!" +fi + +if [ -f $PARAMETER ]; then + if [ "$HIGH_RELIABLE_RECOVERY_OTA" = "true" ]; then + echo -n "create parameter...HIGH_RELIABLE_RECOVERY_OTA is ture. " + echo -n "create parameter from hrr..." + if [ -f $PARAMETER ]; then + cp -a ${TARGET_DEVICE_DIR}/parameter_hrr.txt $IMAGE_PATH/parameter.txt + echo "done." + else + echo "${TARGET_DEVICE_DIR}/parameter_hrr.txt not fount! Please make it from ${TARGET_DEVICE_DIR} first!" + fi + else + echo -n "create parameter..." + cp -a $PARAMETER $IMAGE_PATH/parameter.txt + echo "done." + fi +else + if [ -f $OUT/parameter.txt ]; then + cp -a $OUT/parameter.txt $IMAGE_PATH/parameter.txt + else + echo "$PARAMETER not fount!" + fi +fi + +SHARED_LIBRARIES_DIR=out/host/linux-x86/lib64 +JAVA_LIBRARIES_DIR=out/host/linux-x86/framework +OTA_KEY_DIR=build/target/product/security + +if [ $TARGET == $BOOT_OTA ]; then + echo "create update_loader.zip.." + python build/tools/releasetools/package_loader_zip.py $IMAGE_PATH/MiniLoaderAll.bin $IMAGE_PATH/update_loader_unsigned.zip + java -Djava.library.path=$SHARED_LIBRARIES_DIR -jar $JAVA_LIBRARIES_DIR/signapk.jar -w $OTA_KEY_DIR/testkey.x509.pem $OTA_KEY_DIR/testkey.pk8 $IMAGE_PATH/update_loader_unsigned.zip $IMAGE_PATH/update_loader.zip + rm $IMAGE_PATH/update_loader_unsigned.zip + echo "done." +fi + +if [ "$TARGET_BASE_PARAMETER_IMAGE"x != ""x ]; then + if [ -f $TARGET_BASE_PARAMETER_IMAGE ]; then + echo -n "create baseparameter..." + cp -a $TARGET_BASE_PARAMETER_IMAGE $IMAGE_PATH/baseparameter.img + echo "done." + else + echo "$TARGET_BASE_PARAMETER_IMAGE not fount!" + fi +fi + +if [ "$TARGET_AUTO_PQ_IMAGE"x != ""x ]; then + if [ -f $TARGET_AUTO_PQ_IMAGE ]; then + echo -n "create auto pq..." + cp -a $TARGET_AUTO_PQ_IMAGE $IMAGE_PATH/autopq.img + echo "done." + else + echo "$TARGET_AUTO_PQ_IMAGE not fount!" + fi +fi + +if [ $TARGET == $BOOT_OTA ]; then + if [ "$PRODUCT_USE_DYNAMIC_PARTITIONS" = "true" ]; then + cp -rf $OUT/obj/PACKAGING/super.img_intermediates/super.img $IMAGE_PATH/ + fi + echo -n "create system.img boot.img oem.img vendor.img dtbo.img vbmeta.img for OTA..." + cp -rf $OUT/obj/PACKAGING/target_files_intermediates/*-target_files*/IMAGES/*.img $IMAGE_PATH/ + rm -rf $IMAGE_PATH/cache.img + rm -rf $IMAGE_PATH/recovery-two-step.img + if [ "$PRODUCT_USE_DYNAMIC_PARTITIONS" = "true" ]; then + rm -rf $IMAGE_PATH/super_empty.img + fi + if [ "$BOARD_AVB_ENABLE" = "true" ]; then + echo "AVB Enable" + cp -rf $OUT/obj/PACKAGING/target_files_intermediates/*-target_files*/VENDOR/etc/recovery.img $IMAGE_PATH/ + fi + echo "done." +fi + +IS_EBOOK=`get_build_var BUILD_WITH_RK_EBOOK` +ebook_logo_tool=rkbin/tools/bmp2gray16 +if [ $IS_EBOOK == "true" ]; then + if [ -f ${TARGET_DEVICE_DIR}/waveform.img ]; then + cp ${TARGET_DEVICE_DIR}/waveform.img $IMAGE_PATH/ + fi + if [ -f $ebook_logo_tool ]; then + EINK_LOGO_PATH=${TARGET_DEVICE_DIR}/eink_logo/ + echo -n "create logo.img for uboot/charging/kernel logo" + $ebook_logo_tool --uboot-logo $EINK_LOGO_PATH/uboot_logo/uboot.bmp --kernel-logo $EINK_LOGO_PATH/kernel_logo/kernel.bmp --charge-logo $EINK_LOGO_PATH/uboot_logo/battery_0.bmp $EINK_LOGO_PATH/uboot_logo/battery_1.bmp $EINK_LOGO_PATH/uboot_logo/battery_2.bmp $EINK_LOGO_PATH/uboot_logo/battery_3.bmp $EINK_LOGO_PATH/uboot_logo/battery_4.bmp $EINK_LOGO_PATH/uboot_logo/battery_5.bmp $EINK_LOGO_PATH/uboot_logo/battery_fail.bmp --poweroff-logo $EINK_LOGO_PATH/uboot_logo/poweroff.bmp --output $IMAGE_PATH/logo.img + fi +fi + +IS_SUPPORT_LOGO_OTA=`get_build_var BOARD_SUPPORT_LOGO_OTA` +if [ "$IS_SUPPORT_LOGO_OTA" = "true" ]; then + echo "Logo OTA Support Enable" + cp -rf $IMAGE_PATH/logo.img ${TARGET_DEVICE_DIR}/ota/logo.img +fi + +IS_SUPPORT_WAVEFORM_OTA=`get_build_var BOARD_SUPPORT_WAVEFORM_OTA` +if [ "$IS_SUPPORT_WAVEFORM_OTA" = "true" ]; then + echo "Waveform OTA Support Enable" + cp -rf $IMAGE_PATH/waveform.img ${TARGET_DEVICE_DIR}/ota/waveform.img +fi + +echo ---------------------------------- +echo IMAGE_PATH: $IMAGE_PATH +chmod a+r -R $IMAGE_PATH/ + diff --git a/device/rockchip/common/build/rockchip/Partitions.mk b/device/rockchip/common/build/rockchip/Partitions.mk index a8d428ec2e6..05b7b9ca2a6 100644 --- a/device/rockchip/common/build/rockchip/Partitions.mk +++ b/device/rockchip/common/build/rockchip/Partitions.mk @@ -62,7 +62,7 @@ else ifeq ($(BUILD_WITH_GO_OPT), true) BOARD_SUPER_PARTITION_SIZE ?= 2516582400 else - BOARD_SUPER_PARTITION_SIZE ?= 3263168512 + BOARD_SUPER_PARTITION_SIZE ?= 3263168512 endif BOARD_ROCKCHIP_DYNAMIC_PARTITIONS_SIZE ?= $(shell expr $(BOARD_SUPER_PARTITION_SIZE) - 4194304) else diff --git a/device/rockchip/common/build/rockchip/RebuildParameter.mk b/device/rockchip/common/build/rockchip/RebuildParameter.mk index 03994fd8e41..c0c510b8e89 100644 --- a/device/rockchip/common/build/rockchip/RebuildParameter.mk +++ b/device/rockchip/common/build/rockchip/RebuildParameter.mk @@ -8,6 +8,10 @@ else partition_list := security:4M,uboot:4M,trust:4M,misc:4M endif # BOARD_USES_AB_IMAGE +ifneq ($(strip $(BOARD_ROCKCHIP_BASE_PARTITION)),) +partition_list := $(BOARD_ROCKCHIP_BASE_PARTITION) +endif + ifeq ($(strip $(BOARD_USES_AB_IMAGE)), true) # Header V3, add vendor_boot and resource. ifeq (1,$(strip $(shell expr $(BOARD_BOOT_HEADER_VERSION) \>= 3))) @@ -25,7 +29,13 @@ else # None-A/B partition_list := $(partition_list),dtbo:$(BOARD_DTBOIMG_PARTITION_SIZE),vbmeta:4M,boot:$(BOARD_BOOTIMAGE_PARTITION_SIZE),recovery:$(BOARD_RECOVERYIMAGE_PARTITION_SIZE) endif # BOARD_USES_AB_IMAGE -partition_list := $(partition_list),backup:384M,cache:$(BOARD_CACHEIMAGE_PARTITION_SIZE) +ifneq ($(strip $(BOARD_WITH_BACKUP_PARTITION)),) +partition_list := $(partition_list),$(BOARD_WITH_BACKUP_PARTITION) +else +partition_list := $(partition_list),backup:384M +endif + +partition_list := $(partition_list),cache:$(BOARD_CACHEIMAGE_PARTITION_SIZE) ifeq ($(call math_gt_or_eq,$(ROCKCHIP_LUNCHING_API_LEVEL),34),true) partition_list := $(partition_list),metadata:64M else @@ -36,7 +46,7 @@ ifeq ($(strip $(BUILD_WITH_GOOGLE_FRP)), true) partition_list := $(partition_list),frp:512K endif -ifneq ($(strip $(BOARD_WITH_SPECIAL_PARTITIONS)), ) +ifneq ($(strip $(BOARD_WITH_SPECIAL_PARTITIONS)),) partition_list := $(partition_list),$(BOARD_WITH_SPECIAL_PARTITIONS) endif diff --git a/device/rockchip/rk356x/nanopi5/BoardConfig.mk b/device/rockchip/rk356x/nanopi5/BoardConfig.mk index 183e17e103b..8968704bff1 100644 --- a/device/rockchip/rk356x/nanopi5/BoardConfig.mk +++ b/device/rockchip/rk356x/nanopi5/BoardConfig.mk @@ -42,19 +42,27 @@ BOARD_INCLUDE_RECOVERY_DTBO := BOARD_PREBUILT_DTBOIMAGE := device/rockchip/rk356x/nanopi5/dtbo.img TARGET_RECOVERY_FSTAB := device/rockchip/rk356x/nanopi5/recovery.fstab -BOARD_CACHEIMAGE_PARTITION_SIZE := 134217728 +BOARD_CACHEIMAGE_PARTITION_SIZE := 281018368 BOARD_SUPER_PARTITION_SIZE := 2684354560 BOARD_WITH_BACKUP_PARTITION := backup:128M BOARD_WITH_SPECIAL_PARTITIONS := baseparameter:4M # AB image definition -BOARD_USES_AB_IMAGE := false -BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := false +BOARD_USES_AB_IMAGE ?= true +BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := true ifeq ($(strip $(BOARD_USES_AB_IMAGE)), true) - TARGET_ROCKCHIP_PCBATEST := false + PRODUCT_UBOOT_CONFIG := nanopi5_ab + + AB_OTA_UPDATER := true + BOARD_USES_RECOVERY_AS_BOOT := true BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 - BOARD_SUPER_PARTITION_SIZE := 4294967296 - include device/rockchip/common/BoardConfig_AB.mk + BOARD_SUPER_PARTITION_SIZE := 3355443200 + BOARD_ROCKCHIP_BASE_PARTITION := security:4M,uboot_a:4M,misc:4M + BOARD_ROCKCHIP_DYNAMIC_PARTITIONS_SIZE := $(shell expr $(BOARD_SUPER_PARTITION_SIZE) - 4194304) + + TARGET_NO_RECOVERY := true + TARGET_ROCKCHIP_PCBATEST := false + TARGET_RECOVERY_FSTAB := device/rockchip/rk356x/nanopi5/recovery.fstab_AB endif diff --git a/device/rockchip/rk356x/nanopi5/fstab.in b/device/rockchip/rk356x/nanopi5/fstab.in index 50336ff40ee..f8a367cb9b1 100644 --- a/device/rockchip/rk356x/nanopi5/fstab.in +++ b/device/rockchip/rk356x/nanopi5/fstab.in @@ -24,4 +24,4 @@ ${_block_prefix}odm /odm ext4 ro,barrier=1 ${_flags} # Full disk encryption has less effect on rk3588, so default to enable this. #/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065 latemount,wait,check,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,formattable,reservedsize=128M,checkpoint=fs # for ext4 -/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,data=ordered,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=software,quota,reservedsize=128M,checkpoint=block +/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=::inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,reservedsize=128M,checkpoint=fs diff --git a/device/rockchip/rk356x/nanopi5_box/BoardConfig.mk b/device/rockchip/rk356x/nanopi5_box/BoardConfig.mk index 534dffecf10..f8db81129a0 100644 --- a/device/rockchip/rk356x/nanopi5_box/BoardConfig.mk +++ b/device/rockchip/rk356x/nanopi5_box/BoardConfig.mk @@ -45,18 +45,27 @@ BOARD_INCLUDE_RECOVERY_DTBO := BOARD_PREBUILT_DTBOIMAGE := device/rockchip/rk356x/nanopi5_box/dtbo.img TARGET_RECOVERY_FSTAB := device/rockchip/rk356x/nanopi5_box/recovery.fstab -BOARD_CACHEIMAGE_PARTITION_SIZE := 134217728 +BOARD_CACHEIMAGE_PARTITION_SIZE := 281018368 BOARD_SUPER_PARTITION_SIZE := 2684354560 BOARD_WITH_BACKUP_PARTITION := backup:128M BOARD_WITH_SPECIAL_PARTITIONS := baseparameter:4M # AB image definition -BOARD_USES_AB_IMAGE := false -BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := false +BOARD_USES_AB_IMAGE ?= true +BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := true ifeq ($(strip $(BOARD_USES_AB_IMAGE)), true) + PRODUCT_UBOOT_CONFIG := nanopi5_ab + + AB_OTA_UPDATER := true + BOARD_USES_RECOVERY_AS_BOOT := true BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 - BOARD_SUPER_PARTITION_SIZE := 4294967296 - include device/rockchip/common/BoardConfig_AB.mk + BOARD_SUPER_PARTITION_SIZE := 3355443200 + BOARD_ROCKCHIP_BASE_PARTITION := security:4M,uboot_a:4M,misc:4M + BOARD_ROCKCHIP_DYNAMIC_PARTITIONS_SIZE := $(shell expr $(BOARD_SUPER_PARTITION_SIZE) - 4194304) + + TARGET_NO_RECOVERY := true + TARGET_ROCKCHIP_PCBATEST := false + TARGET_RECOVERY_FSTAB := device/rockchip/rk356x/nanopi5_box/recovery.fstab_AB endif diff --git a/device/rockchip/rk356x/nanopi5_box/fstab_box.in b/device/rockchip/rk356x/nanopi5_box/fstab_box.in index 50336ff40ee..f8a367cb9b1 100644 --- a/device/rockchip/rk356x/nanopi5_box/fstab_box.in +++ b/device/rockchip/rk356x/nanopi5_box/fstab_box.in @@ -24,4 +24,4 @@ ${_block_prefix}odm /odm ext4 ro,barrier=1 ${_flags} # Full disk encryption has less effect on rk3588, so default to enable this. #/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065 latemount,wait,check,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,formattable,reservedsize=128M,checkpoint=fs # for ext4 -/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,data=ordered,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=software,quota,reservedsize=128M,checkpoint=block +/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=::inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,reservedsize=128M,checkpoint=fs diff --git a/device/rockchip/rk3588/nanopi6/BoardConfig.mk b/device/rockchip/rk3588/nanopi6/BoardConfig.mk index f4cd4ad673f..6d302756b77 100644 --- a/device/rockchip/rk3588/nanopi6/BoardConfig.mk +++ b/device/rockchip/rk3588/nanopi6/BoardConfig.mk @@ -43,19 +43,27 @@ BOARD_INCLUDE_RECOVERY_DTBO := BOARD_PREBUILT_DTBOIMAGE := device/rockchip/rk3588/nanopi6/dtbo.img TARGET_RECOVERY_FSTAB := device/rockchip/rk3588/nanopi6/recovery.fstab -BOARD_CACHEIMAGE_PARTITION_SIZE := 134217728 +BOARD_CACHEIMAGE_PARTITION_SIZE := 281018368 BOARD_SUPER_PARTITION_SIZE := 2684354560 BOARD_WITH_BACKUP_PARTITION := backup:128M BOARD_WITH_SPECIAL_PARTITIONS := baseparameter:4M # AB image definition -BOARD_USES_AB_IMAGE := false -BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := false +BOARD_USES_AB_IMAGE ?= true +BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := true ifeq ($(strip $(BOARD_USES_AB_IMAGE)), true) - TARGET_ROCKCHIP_PCBATEST := false + PRODUCT_UBOOT_CONFIG := nanopi6_ab + + AB_OTA_UPDATER := true + BOARD_USES_RECOVERY_AS_BOOT := true BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 - BOARD_SUPER_PARTITION_SIZE := 4294967296 - include device/rockchip/common/BoardConfig_AB.mk + BOARD_SUPER_PARTITION_SIZE := 3355443200 + BOARD_ROCKCHIP_BASE_PARTITION := security:4M,uboot_a:4M,misc:4M + BOARD_ROCKCHIP_DYNAMIC_PARTITIONS_SIZE := $(shell expr $(BOARD_SUPER_PARTITION_SIZE) - 4194304) + + TARGET_NO_RECOVERY := true + TARGET_ROCKCHIP_PCBATEST := false + TARGET_RECOVERY_FSTAB := device/rockchip/rk3588/nanopi6/recovery.fstab_AB endif diff --git a/device/rockchip/rk3588/nanopi6/fstab.in b/device/rockchip/rk3588/nanopi6/fstab.in index 50336ff40ee..f8a367cb9b1 100644 --- a/device/rockchip/rk3588/nanopi6/fstab.in +++ b/device/rockchip/rk3588/nanopi6/fstab.in @@ -24,4 +24,4 @@ ${_block_prefix}odm /odm ext4 ro,barrier=1 ${_flags} # Full disk encryption has less effect on rk3588, so default to enable this. #/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065 latemount,wait,check,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,formattable,reservedsize=128M,checkpoint=fs # for ext4 -/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,data=ordered,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=software,quota,reservedsize=128M,checkpoint=block +/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=::inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,reservedsize=128M,checkpoint=fs diff --git a/device/rockchip/rk3588/nanopi6_box/BoardConfig.mk b/device/rockchip/rk3588/nanopi6_box/BoardConfig.mk index 7f30b351707..9470e1c7b95 100644 --- a/device/rockchip/rk3588/nanopi6_box/BoardConfig.mk +++ b/device/rockchip/rk3588/nanopi6_box/BoardConfig.mk @@ -45,18 +45,27 @@ BOARD_INCLUDE_RECOVERY_DTBO := BOARD_PREBUILT_DTBOIMAGE := device/rockchip/rk3588/nanopi6_box/dtbo.img TARGET_RECOVERY_FSTAB := device/rockchip/rk3588/nanopi6_box/recovery.fstab -BOARD_CACHEIMAGE_PARTITION_SIZE := 134217728 +BOARD_CACHEIMAGE_PARTITION_SIZE := 281018368 BOARD_SUPER_PARTITION_SIZE := 2684354560 BOARD_WITH_BACKUP_PARTITION := backup:128M BOARD_WITH_SPECIAL_PARTITIONS := baseparameter:4M # AB image definition -BOARD_USES_AB_IMAGE := false -BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := false +BOARD_USES_AB_IMAGE ?= true +BOARD_ROCKCHIP_VIRTUAL_AB_ENABLE := true ifeq ($(strip $(BOARD_USES_AB_IMAGE)), true) + PRODUCT_UBOOT_CONFIG := nanopi6_ab + + AB_OTA_UPDATER := true + BOARD_USES_RECOVERY_AS_BOOT := true BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 - BOARD_SUPER_PARTITION_SIZE := 4294967296 - include device/rockchip/common/BoardConfig_AB.mk + BOARD_SUPER_PARTITION_SIZE := 3355443200 + BOARD_ROCKCHIP_BASE_PARTITION := security:4M,uboot_a:4M,misc:4M + BOARD_ROCKCHIP_DYNAMIC_PARTITIONS_SIZE := $(shell expr $(BOARD_SUPER_PARTITION_SIZE) - 4194304) + + TARGET_NO_RECOVERY := true + TARGET_ROCKCHIP_PCBATEST := false + TARGET_RECOVERY_FSTAB := device/rockchip/rk3588/nanopi6_box/recovery.fstab_AB endif diff --git a/device/rockchip/rk3588/nanopi6_box/fstab_box.in b/device/rockchip/rk3588/nanopi6_box/fstab_box.in index 50336ff40ee..f8a367cb9b1 100644 --- a/device/rockchip/rk3588/nanopi6_box/fstab_box.in +++ b/device/rockchip/rk3588/nanopi6_box/fstab_box.in @@ -24,4 +24,4 @@ ${_block_prefix}odm /odm ext4 ro,barrier=1 ${_flags} # Full disk encryption has less effect on rk3588, so default to enable this. #/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065 latemount,wait,check,fileencryption=aes-256-xts:aes-256-cts:v2+inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,formattable,reservedsize=128M,checkpoint=fs # for ext4 -/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,data=ordered,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=software,quota,reservedsize=128M,checkpoint=block +/dev/block/by-name/userdata /data ext4 discard,noatime,nosuid,nodev,noauto_da_alloc,user_xattr,barrier=1 latemount,wait,formattable,check,fileencryption=::inlinecrypt_optimized,keydirectory=/metadata/vold/metadata_encryption,quota,reservedsize=128M,checkpoint=fs diff --git a/mkimage.sh b/mkimage.sh index acd8e01dfb8..4ba9931453f 120000 --- a/mkimage.sh +++ b/mkimage.sh @@ -1 +1 @@ -device/rockchip/common/mkimage.sh \ No newline at end of file +device/friendlyelec/nanopi3/mkimage.sh \ No newline at end of file diff --git a/mkimage_ab.sh b/mkimage_ab.sh deleted file mode 120000 index fc5e7bda0da..00000000000 --- a/mkimage_ab.sh +++ /dev/null @@ -1 +0,0 @@ -device/rockchip/common/mkimage_ab.sh \ No newline at end of file