diff --git a/target/linux/mediatek/image/gen_banana_pi_img.sh b/target/linux/mediatek/image/gen_banana_pi_img.sh index d46e92fa42..611a17edff 100755 --- a/target/linux/mediatek/image/gen_banana_pi_img.sh +++ b/target/linux/mediatek/image/gen_banana_pi_img.sh @@ -79,7 +79,7 @@ # with the preloader loading 512KiB of U-Boot starting at 0x50000. usage() { - echo "SYNTAX: $0 sd " + echo "SYNTAX: $0 sd " echo " OR: $0 emmc " exit 1 } @@ -96,20 +96,21 @@ BRLYT="BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\ case $1 in sd) - [ $# -eq 8 ] || usage + [ $# -eq 9 ] || usage OUTPUT="$2" PRELOADER="$3" UBOOT="$4" - BOOTFS="$5" - ROOTFS="$6" - BOOTFSSIZE="$7" - ROOTFSSIZE="$8" + UBOOTOFS="$5" + BOOTFS="$6" + ROOTFS="$7" + BOOTFSSIZE="$8" + ROOTFSSIZE="$9" head=4 sect=63 set $(ptgen -o $OUTPUT -h $head -s $sect -a 0 -l 1024 \ - -t 41 -p 512k@320k \ + -t 41 -p 512k@${UBOOTOFS} \ -t c -p ${BOOTFSSIZE}M \ -t 83 -p ${ROOTFSSIZE}M ) @@ -123,7 +124,11 @@ case $1 in echo -en "${SDMMC_BOOT}" | dd bs=1 of="${OUTPUT}" seek=0 conv=notrunc echo -en "${BRLYT}" | dd bs=1 of="${OUTPUT}" seek=512 conv=notrunc - dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc + # For eMMC-only boards like U7623 the preloader doesn't need to be included in the + # main image as it's only ever needed in the eMMC boot partition. + if [ -r ${PRELOADER} ]; then + dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc + fi dd bs=512 if="${UBOOT}" of="${OUTPUT}" seek="${UBOOT_OFFSET}" conv=notrunc dd bs=512 if="${BOOTFS}" of="${OUTPUT}" seek="${BOOTFS_OFFSET}" conv=notrunc dd bs=512 if="${ROOTFS}" of="${OUTPUT}" seek="${ROOTFS_OFFSET}" conv=notrunc diff --git a/target/linux/mediatek/image/mt7623.mk b/target/linux/mediatek/image/mt7623.mk index ef14969029..1061a0d281 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 +DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_ENVSIZE ifneq ($(CONFIG_BANANA_PI_BOOT_PARTSIZE),) BOOTFS_BLOCK_SIZE := 1024 @@ -10,16 +10,18 @@ define Build/banana-pi-sdcard rm -f $@.boot mkfs.fat -C $@.boot $(BOOTFS_BLOCKS) - ./gen_banana_pi_img.sh emmc $@.emmc \ - $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin - - mkenvimage -s 0x2000 -o $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-uboot.env $(UBOOT_TARGET)-uEnv.txt + if [ -r $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin ]; then \ + ./gen_banana_pi_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 - mcopy -i $@.boot $@.emmc ::eMMCboot.bin ./gen_banana_pi_img.sh sd $@ \ $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-preloader.bin \ - $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-u-boot.bin \ + $(STAGING_DIR_IMAGE)/$(UBOOT_TARGET)-u-boot*.bin \ + $(UBOOT_OFFSET) \ $@.boot \ $(IMAGE_ROOTFS) \ $(CONFIG_BANANA_PI_BOOT_PARTSIZE) \ @@ -41,6 +43,8 @@ define Device/bpi_bananapi-r2 DEVICE_DTS := mt7623n-bananapi-bpi-r2 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 + UBOOT_ENVSIZE := 0x2000 + UBOOT_OFFSET := 320k UBOOT_TARGET := mt7623n_bpir2 IMAGES := img.gz IMAGE/img.gz := banana-pi-sdcard | gzip | append-metadata