From 3b38be8a9caa6af232c7c2a9cd51836eae1aab3d Mon Sep 17 00:00:00 2001 From: Derek Date: Sat, 7 May 2022 09:50:53 -0400 Subject: [PATCH] Espressobin u boot fit image (#3766) * add the image tree source for building FIT images for ebin * add FIT image generation to BSP files * Change to using FIT image to boot * make fit-image script executable * add the ability to choose board dtb in armbianEnv.txt --- config/bootenv/mvebu64.txt | 1 + config/bootscripts/boot-espressobin.cmd | 6 +- config/its/README | 2 + config/its/marvell/a37xx/espressobin.its | 78 ++++++++++++++++ config/sources/families/mvebu64.conf | 6 +- packages/bsp/mvebu64/initramfs/99-uboot-fit | 90 +++++++++++++++++++ .../bsp/mvebu64/{ => networkd}/10-br0.netdev | 0 .../bsp/mvebu64/{ => networkd}/10-br0.network | 0 .../mvebu64/{ => networkd}/10-eth0.network | 0 .../mvebu64/{ => networkd}/10-lan0.network | 0 .../mvebu64/{ => networkd}/10-lan1.network | 0 .../bsp/mvebu64/{ => networkd}/10-wan.network | 0 12 files changed, 178 insertions(+), 5 deletions(-) create mode 100644 config/its/README create mode 100644 config/its/marvell/a37xx/espressobin.its create mode 100755 packages/bsp/mvebu64/initramfs/99-uboot-fit rename packages/bsp/mvebu64/{ => networkd}/10-br0.netdev (100%) rename packages/bsp/mvebu64/{ => networkd}/10-br0.network (100%) rename packages/bsp/mvebu64/{ => networkd}/10-eth0.network (100%) rename packages/bsp/mvebu64/{ => networkd}/10-lan0.network (100%) rename packages/bsp/mvebu64/{ => networkd}/10-lan1.network (100%) rename packages/bsp/mvebu64/{ => networkd}/10-wan.network (100%) diff --git a/config/bootenv/mvebu64.txt b/config/bootenv/mvebu64.txt index b9bafac33..5a5c0b84e 100644 --- a/config/bootenv/mvebu64.txt +++ b/config/bootenv/mvebu64.txt @@ -1 +1,2 @@ +board_version=v5 verbosity=1 diff --git a/config/bootscripts/boot-espressobin.cmd b/config/bootscripts/boot-espressobin.cmd index b1034fd58..f467d7800 100644 --- a/config/bootscripts/boot-espressobin.cmd +++ b/config/bootscripts/boot-espressobin.cmd @@ -8,10 +8,8 @@ env import -t ${scriptaddr} ${filesize} setenv bootargs "$console root=${rootdev} rootfstype=${rootfstype} rootwait loglevel=${verbosity} usb-storage.quirks=${usbstoragequirks} ${extraargs}" -load $devtype ${devnum}:${distro_bootpart} $kernel_addr_r ${prefix}Image -load $devtype ${devnum}:${distro_bootpart} $ramdisk_addr_r ${prefix}uInitrd -load $devtype ${devnum}:${distro_bootpart} $fdt_addr_r ${prefix}dtb/$fdtfile +load $devtype ${devnum}:${distro_bootpart} $ramdisk_addr_r ${prefix}espressobin.itb -booti $kernel_addr_r $ramdisk_addr_r $fdt_addr_r +bootm ${ramdisk_addr_r}#$board_version # mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr.uimg diff --git a/config/its/README b/config/its/README new file mode 100644 index 000000000..02da403d3 --- /dev/null +++ b/config/its/README @@ -0,0 +1,2 @@ +This directory holds Image Tree Source (its) files +These files are used by the device tree builder to create image tree binaries diff --git a/config/its/marvell/a37xx/espressobin.its b/config/its/marvell/a37xx/espressobin.its new file mode 100644 index 000000000..956bea1e1 --- /dev/null +++ b/config/its/marvell/a37xx/espressobin.its @@ -0,0 +1,78 @@ +/dts-v1/; + +/ { + description = "EspressoBIN 3720 FIT Image"; + #address-cells = <1>; + + images { + kernel { + description = "Vanilla Linux kernel"; + data = /incbin/("/boot/vmlinuz-$(uname -r)"); + type = "kernel"; + arch = "arm64"; + os = "linux"; + compression = "lzma"; + load = <0x07000000>; + entry = <0x07000000>; + hash { + algo = "sha1"; + }; + }; + ramdisk { + description = "Boot ramdisk"; + data = /incbin/("/boot/initrd.img-$(uname -r)"); + type = "ramdisk"; + arch = "arm64"; + os = "linux"; + hash { + algo = "sha1"; + }; + }; + fdtv5 { + description = "Flattened Device Tree ebinv5"; + data = /incbin/("/boot/dtb/marvell/armada-3720-espressobin.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x06f00000>; + entry = <0x06f00000>; + hash { + algo = "sha1"; + }; + }; + fdtv7 { + description = "Flattened Device Tree ebinv7"; + data = /incbin/("/boot/dtb/marvell/armada-3720-espressobin-v7.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x06f00000>; + entry = <0x06f00000>; + hash { + algo = "sha1"; + }; + }; + }; + + configurations { + default = "v5"; + v5 { + description = "Standard Boot ebinv5"; + kernel = "kernel"; + ramdisk = "ramdisk"; + fdt = "fdtv5"; + hash { + algo = "sha1"; + }; + }; + v7 { + description = "Standard Boot ebinv7"; + kernel = "kernel"; + ramdisk = "ramdisk"; + fdt = "fdtv7"; + hash { + algo = "sha1"; + }; + }; + }; +}; diff --git a/config/sources/families/mvebu64.conf b/config/sources/families/mvebu64.conf index d8081e626..f388b60e6 100644 --- a/config/sources/families/mvebu64.conf +++ b/config/sources/families/mvebu64.conf @@ -75,11 +75,15 @@ family_tweaks() { chroot $SDCARD /bin/bash -c "apt-get -y -qq remove --auto-remove linux-sound-base alsa-base alsa-utils bluez>/dev/null 2>&1" [[ -f $SDCARD/etc/netplan/armbian-default.yaml ]] && sed -i "s/^ renderer.*/ renderer: networkd/" $SDCARD/etc/netplan/armbian-default.yaml - cp $SRC/packages/bsp/mvebu64/10* $SDCARD/etc/systemd/network/ + cp $SRC/packages/bsp/mvebu64/networkd/10* $SDCARD/etc/systemd/network/ echo "#Marvell Espressobin Console" >> $SDCARD/etc/securetty echo "ttyMV0" >> $SDCARD/etc/securetty } +family_tweaks_bsp() { + cp "$SRC/packages/bsp/mvebu64/initramfs/99-uboot-fit" "$destination/etc/initramfs/post-update.d/" +} + atf_custom_postprocess() { # prepare compilers for postprocess diff --git a/packages/bsp/mvebu64/initramfs/99-uboot-fit b/packages/bsp/mvebu64/initramfs/99-uboot-fit new file mode 100755 index 000000000..4ec4b7234 --- /dev/null +++ b/packages/bsp/mvebu64/initramfs/99-uboot-fit @@ -0,0 +1,90 @@ +#!/bin/sh + +. /etc/armbian-release + +echo "update-initramfs: Converting to u-boot FIT image" >&2 +kernel_f=$(mktemp) +initrd_f="/boot/initrd.img-$1" + +lzma -c -9e /boot/vmlinuz-$1 > $kernel_f + +mkimage -f - /boot/espressobin.itb <; + + images { + kernel { + description = "Vanilla Linux kernel"; + data = /incbin/("$kernel_f"); + type = "kernel"; + arch = "arm64"; + os = "linux"; + compression = "lzma"; + load = <0x07000000>; + entry = <0x07000000>; + hash { + algo = "sha1"; + }; + }; + ramdisk { + description = "Boot ramdisk"; + data = /incbin/("$initrd_f"); + type = "ramdisk"; + arch = "arm64"; + os = "linux"; + hash { + algo = "sha1"; + }; + }; + fdtv5 { + description = "Flattened Device Tree ebinv5"; + data = /incbin/("/boot/dtb/marvell/armada-3720-espressobin.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x06f00000>; + entry = <0x06f00000>; + hash { + algo = "sha1"; + }; + }; + fdtv7 { + description = "Flattened Device Tree ebinv7"; + data = /incbin/("/boot/dtb/marvell/armada-3720-espressobin-v7.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + load = <0x06f00000>; + entry = <0x06f00000>; + hash { + algo = "sha1"; + }; + }; + }; + + configurations { + default = "v5"; + v5 { + description = "Standard Boot ebinv5"; + kernel = "kernel"; + ramdisk = "ramdisk"; + fdt = "fdtv5"; + hash { + algo = "sha1"; + }; + }; + v7 { + description = "Standard Boot ebinv7"; + kernel = "kernel"; + ramdisk = "ramdisk"; + fdt = "fdtv7"; + hash { + algo = "sha1"; + }; + }; + }; +}; +EOF diff --git a/packages/bsp/mvebu64/10-br0.netdev b/packages/bsp/mvebu64/networkd/10-br0.netdev similarity index 100% rename from packages/bsp/mvebu64/10-br0.netdev rename to packages/bsp/mvebu64/networkd/10-br0.netdev diff --git a/packages/bsp/mvebu64/10-br0.network b/packages/bsp/mvebu64/networkd/10-br0.network similarity index 100% rename from packages/bsp/mvebu64/10-br0.network rename to packages/bsp/mvebu64/networkd/10-br0.network diff --git a/packages/bsp/mvebu64/10-eth0.network b/packages/bsp/mvebu64/networkd/10-eth0.network similarity index 100% rename from packages/bsp/mvebu64/10-eth0.network rename to packages/bsp/mvebu64/networkd/10-eth0.network diff --git a/packages/bsp/mvebu64/10-lan0.network b/packages/bsp/mvebu64/networkd/10-lan0.network similarity index 100% rename from packages/bsp/mvebu64/10-lan0.network rename to packages/bsp/mvebu64/networkd/10-lan0.network diff --git a/packages/bsp/mvebu64/10-lan1.network b/packages/bsp/mvebu64/networkd/10-lan1.network similarity index 100% rename from packages/bsp/mvebu64/10-lan1.network rename to packages/bsp/mvebu64/networkd/10-lan1.network diff --git a/packages/bsp/mvebu64/10-wan.network b/packages/bsp/mvebu64/networkd/10-wan.network similarity index 100% rename from packages/bsp/mvebu64/10-wan.network rename to packages/bsp/mvebu64/networkd/10-wan.network