mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
mediatek: mt7622: bpi-r64: rewrite MMC uImage.FIT sysupgrade
Similar to mt7623, also no longer use 'blockdev' and stop relying on in-kernel partition parsers. Instead, strip off all metadata using 'fwtool' while writing the firmware image and scrape the number of blocks written from 'dd', then use that block offset to stash the configuration backup. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
parent
c3c67fe7b1
commit
8fd0268b5f
@ -1,5 +1,5 @@
|
||||
REQUIRE_IMAGE_METADATA=1
|
||||
RAMFS_COPY_BIN='fw_printenv fw_setenv blockdev'
|
||||
RAMFS_COPY_BIN='fw_printenv fw_setenv fwtool'
|
||||
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
||||
|
||||
platform_do_upgrade() {
|
||||
@ -12,17 +12,12 @@ platform_do_upgrade() {
|
||||
export_partdevice rootdev 0
|
||||
case "$rootdev" in
|
||||
mmc*)
|
||||
blockdev --rereadpt /dev/$rootdev || return 1
|
||||
local fitpart=$(find_mmc_part "production" $rootdev)
|
||||
[ "$fitpart" ] || return 1
|
||||
dd if=/dev/zero of=$fitpart bs=4096 count=1 2>/dev/null
|
||||
blockdev --rereadpt /dev/$rootdev
|
||||
get_image "$1" | dd of=$fitpart
|
||||
blockdev --rereadpt /dev/$rootdev
|
||||
local datapart=$(find_mmc_part "rootfs_data" $rootdev)
|
||||
[ "$datapart" ] || return 0
|
||||
dd if=/dev/zero of=$datapart bs=4096 count=1 2>/dev/null
|
||||
echo $datapart > /tmp/sysupgrade.datapart
|
||||
sync
|
||||
export UPGRADE_MMC_PARTDEV=$(find_mmc_part "production" $rootdev)
|
||||
[ "$UPGRADE_MMC_PARTDEV" ] || return 1
|
||||
export UPGRADE_MMC_IMAGE_BLOCKS=$(($(get_image "$1" | fwtool -i /dev/null -T - | dd of=$UPGRADE_MMC_PARTDEV bs=512 2>&1 | grep "records out" | cut -d' ' -f1)))
|
||||
[ "$UPGRADE_MMC_IMAGE_BLOCKS" ] || return 0
|
||||
dd if=/dev/zero of=$UPGRADE_MMC_PARTDEV bs=512 seek=$UPGRADE_MMC_IMAGE_BLOCKS count=8
|
||||
;;
|
||||
*)
|
||||
CI_KERNPART="fit"
|
||||
@ -92,10 +87,12 @@ platform_check_image() {
|
||||
}
|
||||
|
||||
platform_copy_config_mmc() {
|
||||
[ -e "$UPGRADE_BACKUP" ] || return
|
||||
local datapart=$(cat /tmp/sysupgrade.datapart)
|
||||
[ "$datapart" ] || echo "no rootfs_data partition, cannot keep configuration." >&2
|
||||
dd if="$UPGRADE_BACKUP" of=$datapart
|
||||
if [ ! -e "$UPGRADE_BACKUP" ] ||
|
||||
[ ! -e "$UPGRADE_MMC_PARTDEV" ] ||
|
||||
[ ! "$UPGRADE_MMC_IMAGE_BLOCKS" ]; then
|
||||
return
|
||||
fi
|
||||
dd if="$UPGRADE_BACKUP" of="$UPGRADE_MMC_PARTDEV" bs=512 seek=$UPGRADE_MMC_IMAGE_BLOCKS
|
||||
sync
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ ARCH:=aarch64
|
||||
SUBTARGET:=mt7622
|
||||
BOARDNAME:=MT7622
|
||||
CPU_TYPE:=cortex-a53
|
||||
DEFAULT_PACKAGES += kmod-mt7615e kmod-mt7615-firmware wpad-basic-wolfssl blockdev uboot-envtools
|
||||
DEFAULT_PACKAGES += kmod-mt7615e kmod-mt7615-firmware wpad-basic-wolfssl uboot-envtools
|
||||
KERNELNAME:=Image dtbs
|
||||
|
||||
define Target/Description
|
||||
|
Loading…
Reference in New Issue
Block a user