diff options
author | Daniel Golle <daniel@makrotopia.org> | 2021-08-20 21:11:32 +0100 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2022-01-23 20:20:37 +0000 |
commit | 1ee75dd2906e15f874220151cdd4802d50e4a082 (patch) | |
tree | 9c9fb99a31fe6efd9d2a79fd10d34a14c186fa1f /target/linux/mediatek/image/mt7623.mk | |
parent | 213b406ae3364913ef73ea027a38605107fcf78d (diff) | |
download | upstream-1ee75dd2906e15f874220151cdd4802d50e4a082.tar.gz upstream-1ee75dd2906e15f874220151cdd4802d50e4a082.tar.bz2 upstream-1ee75dd2906e15f874220151cdd4802d50e4a082.zip |
mediatek: mt7623: rework images for U7623-02 board
Users of older OpenWrt versions need sysupgrade using the *emmc.img.gz
file once which will upgrade U-Boot and switch to the new image layout.
Users of the vendor firmware need to first flash the legacy image to
then sunsequently carry out a full-flash upgrade.
Alternatively the board can also be flashed using MediaTek's
proprietary SP Flash Tool.
Configuration as well as persistent MAC address will be lost once at
this point and you will have to redo (or restore) all configuration
manually. To restore the previous persistent MAC address users may set
it manually using
fw_setenv ethaddr 00:11:22:33:44:55
For future upgrades once running OpenWrt past this commit, the usual
*sysupgrade.itb file can be used.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'target/linux/mediatek/image/mt7623.mk')
-rw-r--r-- | target/linux/mediatek/image/mt7623.mk | 110 |
1 files changed, 52 insertions, 58 deletions
diff --git a/target/linux/mediatek/image/mt7623.mk b/target/linux/mediatek/image/mt7623.mk index 1d7745f1d6..cad3dd2b93 100644 --- a/target/linux/mediatek/image/mt7623.mk +++ b/target/linux/mediatek/image/mt7623.mk @@ -1,5 +1,5 @@ KERNEL_LOADADDR := 0x80008000 -DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_ENVSIZE +DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_IMAGE # The bootrom of MT7623 expects legacy MediaTek headers present in # exactly the location also used for the primary GPT partition table. @@ -55,7 +55,7 @@ DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_ENVSIZE define Build/mt7623-mbr cp $@ $@.tmp 2>/dev/null || true ptgen -o $@.tmp -h 4 -s 63 -a 0 -l 1024 \ - -t 0x41 -N uboot -p 3584k@320k \ + -t 0x41 -N uboot -p 1M@$(UBOOT_OFFSET) \ -t 0xea -N recovery -p 40M@4M \ $(if $(findstring sdmmc,$1), \ -t 0x2e -N production -p $(CONFIG_TARGET_ROOTFS_PARTSIZE)M@48M \ @@ -81,7 +81,12 @@ define Build/append-preloader endef define Build/append-bootloader - cat $(STAGING_DIR_IMAGE)/$1-u-boot.bin >> $@ + cat $(STAGING_DIR_IMAGE)/$1-$(UBOOT_IMAGE) >> $@ +endef + +define Build/scatterfile + ./gen_scatterfile.sh $(subst mt,MT,$(SUBTARGET)) "$1" \ + $(subst -scatter.txt,,$(notdir $@)) "$(DEVICE_TITLE)" > $@ endef define Device/bananapi_bpi-r2 @@ -89,84 +94,69 @@ define Device/bananapi_bpi-r2 DEVICE_MODEL := BPi-R2 DEVICE_DTS := mt7623n-bananapi-bpi-r2 DEVICE_PACKAGES := mkf2fs e2fsprogs kmod-usb3 kmod-ata-ahci - UBOOT_ENVSIZE := 0x10000 UBOOT_OFFSET := 320k UBOOT_TARGET := mt7623n_bpir2 - UBOOT_PATH := $(STAGING_DIR_IMAGE)/mt7623n_bpir2-u-boot.bin + UBOOT_IMAGE := u-boot.bin + UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE) IMAGES := sysupgrade.itb KERNEL := kernel-bin | gzip KERNEL_INITRAMFS_SUFFIX := -recovery.itb KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb with-initrd IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(DTS_DIR)/$$(DEVICE_DTS).dtb external-static-with-rootfs | append-metadata - ARTIFACT/preloader.bin := append-preloader $$(UBOOT_TARGET) + ARTIFACT/preloader.bin := mt7623-mbr emmc |\ + pad-to 2k | append-preloader $$(UBOOT_TARGET) ARTIFACT/u-boot.bin := append-uboot ARTIFACT/sdcard.img.gz := mt7623-mbr sdmmc |\ pad-to 2k | append-preloader $$(UBOOT_TARGET) |\ - pad-to 320k | append-bootloader $$(UBOOT_TARGET) |\ + pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\ pad-to 4092k | mt7623-mbr emmc |\ pad-to 4M | append-image-stage initramfs-recovery.itb |\ pad-to 48M | append-image squashfs-sysupgrade.itb |\ gzip - ARTIFACTS = u-boot.bin preloader.bin scatter.txt sdcard.img.gz + ARTIFACTS := u-boot.bin preloader.bin sdcard.img.gz SUPPORTED_DEVICES := bananapi,bpi-r2 endef TARGET_DEVICES += bananapi_bpi-r2 - -ifneq ($(CONFIG_MTK_BOOT_PARTSIZE),) -BOOTFS_BLOCK_SIZE := 1024 -BOOTFS_BLOCKS := $(shell echo $$(($(CONFIG_MTK_BOOT_PARTSIZE)*1024*1024/$(BOOTFS_BLOCK_SIZE)))) -endif - -define Build/mtk-mmc-img - rm -f $@.boot - mkfs.fat -C $@.boot $(BOOTFS_BLOCKS) - - if [ -r $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin ]; then \ - ./gen_mtk_mmc_img.sh emmc $@.emmc \ - $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin; \ - mcopy -i $@.boot $@.emmc ::eMMCboot.bin; \ - fi - mkenvimage -s $(UBOOT_ENVSIZE) -o $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env $(UBOOT_TARGET)-uEnv.txt - mcopy -i $@.boot $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env ::uboot.env - mcopy -i $@.boot $(IMAGE_KERNEL) ::uImage - ./gen_mtk_mmc_img.sh sd $@ \ - $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin \ - $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-u-boot*.bin \ - $(UBOOT_OFFSET) \ - $@.boot \ - $(IMAGE_ROOTFS) \ - $(CONFIG_MTK_BOOT_PARTSIZE) \ - 104 -endef - -define Build/scatterfile - ./gen_scatterfile.sh $(subst mt,MT,$(SUBTARGET)) "$1" \ - $(subst -scatter.txt,,$(notdir $@)) "$(DEVICE_TITLE)" > $@ -endef - - -# Full eMMC image including U-Boot and partition table -define Device/unielec_u7623-emmc +define Device/unielec_u7623-02 DEVICE_VENDOR := UniElec - DEVICE_MODEL := U7623 - DEVICE_VARIANT := eMMC + DEVICE_MODEL := U7623-02 # When we use FIT images, U-Boot will populate the /memory node with the correct # memory size discovered from the preloader, so we don't need separate builds. - DEVICE_DTS := mt7623a-unielec-u7623-02-emmc-512m + DEVICE_DTS := mt7623a-unielec-u7623-02 DEVICE_DTS_DIR := ../dts - SUPPORTED_DEVICES := unielec,u7623-02-emmc-512m - UBOOT_ENVSIZE := 0x1000 + DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \ + mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci UBOOT_OFFSET := 256k UBOOT_TARGET := mt7623a_unielec_u7623 - IMAGES := img.gz - IMAGE/img.gz := mtk-mmc-img | gzip | append-metadata - DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \ - mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk - ARTIFACT/scatter.txt := scatterfile $$(firstword $$(FILESYSTEMS))-$$(firstword $$(IMAGES)) - ARTIFACTS := scatter.txt + UBOOT_IMAGE := u-boot-mtk.bin + UBOOT_PATH := $(STAGING_DIR_IMAGE)/$$(UBOOT_TARGET)-$$(UBOOT_IMAGE) + IMAGES := sysupgrade.itb + KERNEL := kernel-bin | gzip + KERNEL_INITRAMFS_SUFFIX := -recovery.itb + KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd + IMAGE/sysupgrade.itb := append-kernel | fit gzip $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb external-static-with-rootfs | append-metadata + ARTIFACT/u-boot.bin := append-uboot +# vendor Preloader seems not to care about SDMMC_BOOT/EMMC_BOOT header, +# but OpenWrt expects 'SDMM' magic for sysupgrade. + ARTIFACT/emmc.img.gz := mt7623-mbr sdmmc |\ + pad-to $$(UBOOT_OFFSET) | append-bootloader $$(UBOOT_TARGET) |\ + pad-to 4M | append-image-stage initramfs-recovery.itb |\ + pad-to 48M | append-image squashfs-sysupgrade.itb |\ + gzip | append-metadata + ARTIFACT/scatter.txt := scatterfile emmc.img.gz + ARTIFACTS := u-boot.bin scatter.txt emmc.img.gz + SUPPORTED_DEVICES += unielec,u7623-02-emmc-512m +endef +TARGET_DEVICES += unielec_u7623-02 + + +# Legacy helper for U7623 board +define Build/fat-recovery-fs + rm -f $@.recovery + mkfs.fat -C $@.recovery 3070 + cat $@.recovery >> $@ endef -TARGET_DEVICES += unielec_u7623-emmc # Legacy partial image for U7623 # This preserves the vendor U-Boot and starts with a uImage at 0xA00 @@ -180,9 +170,13 @@ define Device/unielec_u7623-02-emmc-512m-legacy KERNEL := kernel-bin | append-dtb | uImage none KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none DEVICE_PACKAGES := kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc \ - mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk + mkf2fs e2fsprogs kmod-usb-ohci kmod-usb2 kmod-usb3 kmod-ata-ahci-mtk \ + partx-utils IMAGES := sysupgrade-emmc.bin.gz - IMAGE/sysupgrade-emmc.bin.gz := sysupgrade-emmc | gzip | append-metadata + IMAGE/sysupgrade-emmc.bin.gz := append-kernel |\ + pad-to 4864k | fat-recovery-fs |\ + pad-to 7936k | append-rootfs |\ + gzip | append-metadata SUPPORTED_DEVICES := unielec,u7623-02-emmc-512m endef TARGET_DEVICES += unielec_u7623-02-emmc-512m-legacy |