From bd7e2f40ec7594905aab7f83b515a37492356c21 Mon Sep 17 00:00:00 2001 From: Arturo Buzarra Date: Tue, 9 Dec 2025 12:56:09 +0100 Subject: [PATCH] swupdate: mmc uboot: improve MMC write flow Add a check to avoid disabling read-only protection on partitions that don't support it, and refine logging to print the specific bootloader partition being flashed (instead of the generic "U-Boot" label). Signed-off-by: Arturo Buzarra --- .../swu-images/files/swupdate_uboot_mmc.sh | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/meta-digi-dey/recipes-digi/swu-images/files/swupdate_uboot_mmc.sh b/meta-digi-dey/recipes-digi/swu-images/files/swupdate_uboot_mmc.sh index 8904c0ebf..91b1155f6 100755 --- a/meta-digi-dey/recipes-digi/swu-images/files/swupdate_uboot_mmc.sh +++ b/meta-digi-dey/recipes-digi/swu-images/files/swupdate_uboot_mmc.sh @@ -25,6 +25,7 @@ UBOOT_BLOCK_REDUNDANT="mmcblk0boot1" UBOOT_MMC_DEV_MAIN="/dev/${UBOOT_BLOCK_MAIN}" UBOOT_MMC_DUMP="/tmp/u-boot-dump.hex" UBOOT_ENCRYPTED_DEK="/tmp/u-boot-encrypted-with-dek.imx" +UBOOT_PARTNAME="U-Boot" DEK_FILE="/tmp/dek.bin" DEK_KEY_SIZE="32" @@ -241,19 +242,28 @@ write_artifact_emmc () { local BLOCK_TO_WRITE="$1" local FILE_TO_WRITE="$2" + local PARTNAME_TO_WRITE="$3" + local FORCE_RO_PATH="/sys/block/${BLOCK_TO_WRITE}/force_ro" # Enable write access in the partition. - echo 0 > "/sys/block/${BLOCK_TO_WRITE}/force_ro" + if [ -e "${FORCE_RO_PATH}" ]; then + echo 0 > "${FORCE_RO_PATH}" + fi + # Write the file into the eMMC. dd if="${FILE_TO_WRITE}" of="/dev/${BLOCK_TO_WRITE}" seek="${UBOOT_SEEK_KB}" bs=1K 2>/dev/null local rc=$? + # Disable write access in partition. - echo 1 > "/sys/block/${BLOCK_TO_WRITE}/force_ro" + if [ -e "${FORCE_RO_PATH}" ]; then + echo 1 > "${FORCE_RO_PATH}" + fi + # Check update operation result. if [ "${rc}" -ne 0 ]; then exit_error "## ERROR: failed to write file ${FILE_TO_WRITE} to /dev/${BLOCK_TO_WRITE}" "${rc}" fi - echo "U-Boot successfully writen to /dev/${BLOCK_TO_WRITE}" + echo "${PARTNAME_TO_WRITE} successfully writen to /dev/${BLOCK_TO_WRITE}" } # If U-Boot is encrypted, the DEK key blob needs to be extracted from existing U-Boot @@ -264,19 +274,20 @@ fi # Write TFA. if expr "${PLATFORM}" : "ccmp2.*" >/dev/null; then # Write TFA artifact into eMMC BOOT1 and BOOT2 partitions. - write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_TFA_FILE} + write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_TFA_FILE} "TF-A" if [ "${UBOOT_REDUNDANT}" = "redundant" ]; then - write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_TFA_FILE} + write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_TFA_FILE} "TF-A" fi # Redefine block devices to write FIP artifact into 'fip-a' and 'fip-b' partitions. UBOOT_BLOCK_MAIN="mmcblk0p3" UBOOT_BLOCK_REDUNDANT="mmcblk0p4" + UBOOT_PARTNAME="FIP" fi # Write U-Boot -write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_FILE} +write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_FILE} ${UBOOT_PARTNAME} # Check if redundant U-Boot update is requested. if [ "${UBOOT_REDUNDANT}" = "redundant" ]; then - write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_FILE} + write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_FILE} ${UBOOT_PARTNAME} fi # Clean intermediate artifacts. clean_artifacts