From: David Woodhouse Date: Tue, 21 Jul 2020 18:14:18 +0000 (+0100) Subject: mediatek: mt7623: rename gen_banana_pi_img.sh → gen_mtk_mmc_img.sh X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=1113dcab05de31d52a91e99f7a63d0099415edad;p=openwrt%2Fstaging%2Flinusw.git mediatek: mt7623: rename gen_banana_pi_img.sh → gen_mtk_mmc_img.sh As I buy more hardware and continue to work on consolidation, This will apply to a lot of MediaTek platforms; rename it accordingly. Signed-off-by: David Woodhouse --- diff --git a/target/linux/mediatek/image/Config.in b/target/linux/mediatek/image/Config.in index 0e5449e2f9..12d47d77b9 100644 --- a/target/linux/mediatek/image/Config.in +++ b/target/linux/mediatek/image/Config.in @@ -1,4 +1,4 @@ -config BANANA_PI_BOOT_PARTSIZE - int "Boot (SD Card) filesystem partition size (in MiB)" +config MTK_BOOT_PARTSIZE + int "Boot (SD Card/eMMC) filesystem partition size (in MiB)" depends on TARGET_mediatek_mt7623_DEVICE_bpi_bananapi-r2 || TARGET_DEVICE_mediatek_mt7623_DEVICE_bpi_bananapi-r2 default 32 diff --git a/target/linux/mediatek/image/gen_banana_pi_img.sh b/target/linux/mediatek/image/gen_banana_pi_img.sh deleted file mode 100755 index 611a17edff..0000000000 --- a/target/linux/mediatek/image/gen_banana_pi_img.sh +++ /dev/null @@ -1,150 +0,0 @@ -#!/bin/sh -# -# Copyright © 2019 Alexey Loukianov -# Copyright © 2020 David Woodhouse -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -# Generates a bootable SD card image for Banana Pi R2 (and probably -# other similar boards) as documented at -# http://www.fw-web.de/dokuwiki/doku.php?id=en:bpi-r2:storage -# -# The first sector must contain the SDMMC_BOOT header shown -# below, and also contains the MBR partition table in the end -# of the sector. The partition table must contain no active -# partitions. -# -# The second sector must contain the BRLYT header, and the -# special preloader image goes in sector 4; 2KiB into the image. -# -# The preloader loads U-Boot from sector 640; 320KiB into the image. -# The location and the size (512KiB) are fixed and not read from -# the partition table. We set up a partition for it merely for -# our own convenience for upgrades, etc. -# -# The second partition is a FAT file system containing the kernel -# image and a uboot.env file, which is provided to this script as -# $4 (bootfs image). Its size is configurable with the -# CONFIG_BANANA_PI_BOOT_PARTSIZE option; by default 32MiB. -# -# The root filesystem comes next in the third partition. -# -# -# ------------------------ Sector Offset -# | MBR + SDMMC_BOOT | 0 0x0 -# |----------------------| -# | BRLYT header | 1 0x200 -# |----------------------| -# . . -# . . -# |----------------------| -# | | 4 0x800 -# | | -# | Preloader | -# . . -# . . -# | | 639 -# |----------------------| -# | MBR partition #1 | 640 0x50000 -# | | -# | U-Boot | -# . . -# . . -# | | 1663 -# |----------------------| -# | MBR partition #2 | -# | | -# | FAT partition | ( BANANA_PI_BOOT_PARTSIZE -# . . default 32MiB ) -# . (kernel, uEnv) . -# | | -# |----------------------| -# | MBR partition #3 | -# | | -# | Root partition | -# | | ( TARGET_ROOTFS_PARTSIZE -# | (squashfs+overlay | default 104MiB ) -# . or ext4, etc.) . -# . . -# | | -# ------------------------ -# -# For eMMC boot, everything up to and including the preloader must be -# written to /dev/mmcblk0boot0, with the SDMMC_BOOT header changed to -# read EMMC_BOOT\0 instead. -# -# The contents of the main eMMC are identical to the SD card layout, -# with the preloader loading 512KiB of U-Boot starting at 0x50000. - -usage() { - echo "SYNTAX: $0 sd " - echo " OR: $0 emmc " - exit 1 -} - -set -e - -PRELOADER_OFFSET=2 # 2KiB - -SDMMC_BOOT="SDMMC_BOOT\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00" -EMMC_BOOT="EMMC_BOOT\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00" -BRLYT="BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\ -\x00\x08\x00\x00\x42\x42\x42\x42\x08\x00\x01\x00\x00\x08\x00\x00\ -\x00\x08\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" - -case $1 in - sd) - [ $# -eq 9 ] || usage - OUTPUT="$2" - PRELOADER="$3" - UBOOT="$4" - 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@${UBOOTOFS} \ - -t c -p ${BOOTFSSIZE}M \ - -t 83 -p ${ROOTFSSIZE}M ) - - UBOOT_OFFSET="$(($1 / 512))" - UBOOT_SIZE="$(($2 / 512))" - BOOTFS_OFFSET="$(($3 / 512))" - BOOTFS_SIZE="$(($4 / 512))" - ROOTFS_OFFSET="$(($5 / 512))" - ROOTFS_SIZE="$(($6 / 512))" - - 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 - - # 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 - dd bs=128k if=/dev/zero of="${OUTPUT}" count=1 oflag=append conv=notrunc - ;; - emmc) - [ $# -eq 3 ] || usage - OUTPUT="$2" - PRELOADER="$3" - - echo -en "${EMMC_BOOT}" | dd bs=1 of="${OUTPUT}" seek=0 - echo -en "${BRLYT}" | dd bs=1 of="${OUTPUT}" seek=512 conv=notrunc - - dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc - ;; - *) - usage - ;; -esac diff --git a/target/linux/mediatek/image/gen_mtk_mmc_img.sh b/target/linux/mediatek/image/gen_mtk_mmc_img.sh new file mode 100755 index 0000000000..ea8a9c63a1 --- /dev/null +++ b/target/linux/mediatek/image/gen_mtk_mmc_img.sh @@ -0,0 +1,150 @@ +#!/bin/sh +# +# Copyright © 2019 Alexey Loukianov +# Copyright © 2020 David Woodhouse +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +# Generates a bootable SD card image for Banana Pi R2 (and probably +# other similar boards) as documented at +# http://www.fw-web.de/dokuwiki/doku.php?id=en:bpi-r2:storage +# +# The first sector must contain the SDMMC_BOOT header shown +# below, and also contains the MBR partition table in the end +# of the sector. The partition table must contain no active +# partitions. +# +# The second sector must contain the BRLYT header, and the +# special preloader image goes in sector 4; 2KiB into the image. +# +# The preloader loads U-Boot from sector 640; 320KiB into the image. +# The location and the size (512KiB) are fixed and not read from +# the partition table. We set up a partition for it merely for +# our own convenience for upgrades, etc. +# +# The second partition is a FAT file system containing the kernel +# image and a uboot.env file, which is provided to this script as +# $4 (bootfs image). Its size is configurable with the +# CONFIG_MTK_BOOT_PARTSIZE option; by default 32MiB. +# +# The root filesystem comes next in the third partition. +# +# +# ------------------------ Sector Offset +# | MBR + SDMMC_BOOT | 0 0x0 +# |----------------------| +# | BRLYT header | 1 0x200 +# |----------------------| +# . . +# . . +# |----------------------| +# | | 4 0x800 +# | | +# | Preloader | +# . . +# . . +# | | 639 +# |----------------------| +# | MBR partition #1 | 640 0x50000 +# | | +# | U-Boot | +# . . +# . . +# | | 1663 +# |----------------------| +# | MBR partition #2 | +# | | +# | FAT partition | ( MTK_BOOT_PARTSIZE +# . . default 32MiB ) +# . (kernel, uEnv) . +# | | +# |----------------------| +# | MBR partition #3 | +# | | +# | Root partition | +# | | ( TARGET_ROOTFS_PARTSIZE +# | (squashfs+overlay | default 104MiB ) +# . or ext4, etc.) . +# . . +# | | +# ------------------------ +# +# For eMMC boot, everything up to and including the preloader must be +# written to /dev/mmcblk0boot0, with the SDMMC_BOOT header changed to +# read EMMC_BOOT\0 instead. +# +# The contents of the main eMMC are identical to the SD card layout, +# with the preloader loading 512KiB of U-Boot starting at 0x50000. + +usage() { + echo "SYNTAX: $0 sd " + echo " OR: $0 emmc " + exit 1 +} + +set -e + +PRELOADER_OFFSET=2 # 2KiB + +SDMMC_BOOT="SDMMC_BOOT\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00" +EMMC_BOOT="EMMC_BOOT\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00" +BRLYT="BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\ +\x00\x08\x00\x00\x42\x42\x42\x42\x08\x00\x01\x00\x00\x08\x00\x00\ +\x00\x08\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + +case $1 in + sd) + [ $# -eq 9 ] || usage + OUTPUT="$2" + PRELOADER="$3" + UBOOT="$4" + 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@${UBOOTOFS} \ + -t c -p ${BOOTFSSIZE}M \ + -t 83 -p ${ROOTFSSIZE}M ) + + UBOOT_OFFSET="$(($1 / 512))" + UBOOT_SIZE="$(($2 / 512))" + BOOTFS_OFFSET="$(($3 / 512))" + BOOTFS_SIZE="$(($4 / 512))" + ROOTFS_OFFSET="$(($5 / 512))" + ROOTFS_SIZE="$(($6 / 512))" + + 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 + + # 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 + dd bs=128k if=/dev/zero of="${OUTPUT}" count=1 oflag=append conv=notrunc + ;; + emmc) + [ $# -eq 3 ] || usage + OUTPUT="$2" + PRELOADER="$3" + + echo -en "${EMMC_BOOT}" | dd bs=1 of="${OUTPUT}" seek=0 + echo -en "${BRLYT}" | dd bs=1 of="${OUTPUT}" seek=512 conv=notrunc + + dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc + ;; + *) + usage + ;; +esac diff --git a/target/linux/mediatek/image/mt7623.mk b/target/linux/mediatek/image/mt7623.mk index 1061a0d281..881092f478 100644 --- a/target/linux/mediatek/image/mt7623.mk +++ b/target/linux/mediatek/image/mt7623.mk @@ -1,30 +1,30 @@ KERNEL_LOADADDR := 0x80008000 DEVICE_VARS += UBOOT_TARGET UBOOT_OFFSET UBOOT_ENVSIZE -ifneq ($(CONFIG_BANANA_PI_BOOT_PARTSIZE),) +ifneq ($(CONFIG_MTK_BOOT_PARTSIZE),) BOOTFS_BLOCK_SIZE := 1024 -BOOTFS_BLOCKS := $(shell echo $$(($(CONFIG_BANANA_PI_BOOT_PARTSIZE)*1024*1024/$(BOOTFS_BLOCK_SIZE)))) +BOOTFS_BLOCKS := $(shell echo $$(($(CONFIG_MTK_BOOT_PARTSIZE)*1024*1024/$(BOOTFS_BLOCK_SIZE)))) endif -define Build/banana-pi-sdcard +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_banana_pi_img.sh emmc $@.emmc \ + ./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_banana_pi_img.sh sd $@ \ + ./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_BANANA_PI_BOOT_PARTSIZE) \ + $(CONFIG_MTK_BOOT_PARTSIZE) \ $(CONFIG_TARGET_ROOTFS_PARTSIZE) endef @@ -47,7 +47,7 @@ define Device/bpi_bananapi-r2 UBOOT_OFFSET := 320k UBOOT_TARGET := mt7623n_bpir2 IMAGES := img.gz - IMAGE/img.gz := banana-pi-sdcard | gzip | append-metadata + IMAGE/img.gz := mtk-mmc-img | gzip | append-metadata ARTIFACT/preloader.bin := preloader $$(UBOOT_TARGET) ARTIFACT/scatter.txt := scatterfile $$(firstword $$(FILESYSTEMS))-$$(firstword $$(IMAGES)) ARTIFACTS = preloader.bin scatter.txt