# with the preloader loading 512KiB of U-Boot starting at 0x50000.
usage() {
- echo "SYNTAX: $0 sd <file> <preloader image> <u-boot image> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
+ echo "SYNTAX: $0 sd <file> <preloader image> <u-boot image> <u-boot offset> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
echo " OR: $0 emmc <file> <preloader image>"
exit 1
}
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 )
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
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
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) \
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