diff --git a/os/21_build_bootimg.sh b/os/21_build_bootimg.sh new file mode 100755 index 0000000..041116d --- /dev/null +++ b/os/21_build_bootimg.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -e + +. script_env + +mkdir -p boot_img + +cp fsbl/fsbl.elf "$BOOTIMG_DIR" +cp "$UBOOT_DIR/u-boot.elf" "$BOOTIMG_DIR" + +rm -f "$BOOTIMG_DIR/boot.bin" + +cat >"$BOOTIMG_DIR/boot.bif" <&2 + echo " Build U-Boot to prepare the mkimage tool" >&2 +fi + +mkdir -p "$SDCARD_DIR" + +# Copy Xilinx boot image (FSBL and U-Boot) +cp -a "$BOOTIMG_DIR/boot.bin" "$SDCARD_DIR" + +# Wrap Linux kernel in U-Boot image file +$MKIMAGE -A arm -O linux -C none -T kernel -a 0x8000 -e 0x8000 -n Linux -d "$LINUX_DIR/arch/arm/boot/zImage" "$SDCARD_DIR/uImage" + +# Copy device tree +cp -a devicetree/devicetree.dtb "$SDCARD_DIR" + +# Copy root fs image +cp -a "$BUILDROOT_DIR/output/images/rootfs.cpio.uboot" "$SDCARD_DIR" + +# Wrap U-Boot script in image file +$MKIMAGE -A arm -T script -d config/uboot_script.txt "$SDCARD_DIR/boot.scr" + diff --git a/os/config/uboot_script.txt b/os/config/uboot_script.txt new file mode 100644 index 0000000..045758c --- /dev/null +++ b/os/config/uboot_script.txt @@ -0,0 +1,8 @@ +echo boot.scr: Booting Linux +devicetree_load_address=0x1f00000 +kernel_load_address=0x2000000 +ramdisk_load_address=0x3100000 +load mmc 0 ${kernel_load_address} uImage +load mmc 0 ${devicetree_load_address} devicetree.dtb +load mmc 0 ${ramdisk_load_address} rootfs.cpio.uboot +bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}