From c4cf9254547ce4fc1d49c0802c152262a26de2ab Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Tue, 9 Jul 2019 14:19:20 +0200 Subject: u-boot-distro-boot: add inital distro boot script This creates a distro boot script boot.scr and deploys it into the ${DEPLOYDIR}. Moved here from meta-toradex-torizon u-boot-distro-boot-ostree. Signed-off-by: Max Krummenacher --- recipes-bsp/u-boot/u-boot-distro-boot.bb | 35 ++++++++++++++++++ recipes-bsp/u-boot/u-boot-distro-boot/boot.cmd.in | 28 +++++++++++++++ .../u-boot/u-boot-distro-boot/sota/boot.cmd.in | 41 ++++++++++++++++++++++ 3 files changed, 104 insertions(+) create mode 100644 recipes-bsp/u-boot/u-boot-distro-boot.bb create mode 100644 recipes-bsp/u-boot/u-boot-distro-boot/boot.cmd.in create mode 100644 recipes-bsp/u-boot/u-boot-distro-boot/sota/boot.cmd.in diff --git a/recipes-bsp/u-boot/u-boot-distro-boot.bb b/recipes-bsp/u-boot/u-boot-distro-boot.bb new file mode 100644 index 0000000..474ec66 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-distro-boot.bb @@ -0,0 +1,35 @@ +DESCRIPTION = "Boot script for launching images with U-Boot distro boot" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +INHIBIT_DEFAULT_DEPS = "1" +DEPENDS = "u-boot-mkimage-native" + +SRC_URI = " \ + file://boot.cmd.in \ +" + +KERNEL_BOOTCMD ??= "bootz" +KERNEL_BOOTCMD_aarch64 ?= "booti" + +S = "${WORKDIR}" + +inherit deploy + +do_compile() { + sed -e 's/@@KERNEL_BOOTCMD@@/${KERNEL_BOOTCMD}/' \ + "${WORKDIR}/boot.cmd.in" > boot.cmd + mkimage -T script -C none -n "Distro boot script" -d "${WORKDIR}/boot.cmd" boot.scr +} + +do_deploy() { + install -d ${DEPLOYDIR} + install -m 0644 boot.scr ${DEPLOYDIR} +} + +addtask deploy after do_install before do_build + +do_install[noexec] = "1" +do_populate_sysroot[noexec] = "1" + +PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/recipes-bsp/u-boot/u-boot-distro-boot/boot.cmd.in b/recipes-bsp/u-boot/u-boot-distro-boot/boot.cmd.in new file mode 100644 index 0000000..606ffc2 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-distro-boot/boot.cmd.in @@ -0,0 +1,28 @@ +if test ${devtype} = "ubi" +then + echo "This script is not meant to distro boot from raw NAND flash. + exit +fi + +if test ${distro_bootpart} != 1 +then + echo "Boot partition needs to be the first partition" + exit +fi + +if test -n ${setup} +then + run setup +else + env set setupargs 'console=tty1 consoleblank=0' +fi +test -n ${m4boot} || env set m4boot ';' +test -n ${fdtfile} || env set fdtfile $fdt_file +test -n ${kernel_image} || env set kernel_image ${boot_file} + +env set bootcmd_args 'env set bootargs ${bootargs} ${defargs} ${emmcargs} ${setupargs} ${vidargs} ${tdxargs}' +env set bootcmd_kernel 'load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${kernel_image}' +env set bootcmd_dtb 'load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${fdtfile}' +env set bootcmd_run '@@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr_r}' +env set bootcmd 'run m4boot; run bootcmd_dtb && run bootcmd_args && run bootcmd_kernel && run bootcmd_run' +run bootcmd diff --git a/recipes-bsp/u-boot/u-boot-distro-boot/sota/boot.cmd.in b/recipes-bsp/u-boot/u-boot-distro-boot/sota/boot.cmd.in new file mode 100644 index 0000000..ca06f1d --- /dev/null +++ b/recipes-bsp/u-boot/u-boot-distro-boot/sota/boot.cmd.in @@ -0,0 +1,41 @@ +if test ${distro_bootpart} != 1 && test ${devtype} != "ubi" +then + echo "Boot partition needs to be the first partition" + exit +fi + +env set overlays_file "overlays.txt" +env set load_overlay 'load ${devtype} ${devnum}:1 ${loadaddr} ${overlays_file}; env import -t ${loadaddr} ${filesize}' +env set apply_overlays 'fdt addr ${fdt_addr_r} && fdt resize 0x20000 && for overlay_file in ${fdt_overlays}; do echo "Applying Overlay: ${overlay_file}" +&& load ${devtype} ${devnum}:1 ${loadaddr} ${overlay_file} && fdt apply ${loadaddr}; done;' + + +env set bootcmd_load_k 'load ${devtype} ${devnum}:2 ${kernel_addr_r} "/boot"${kernel_image}' +env set bootcmd_load_r 'load ${devtype} ${devnum}:2 ${ramdisk_addr_r} "/boot"${ramdisk_image}; env set ramdisk_size ${filesize}' + +if test ${devtype} != ubi +then +# Load commands for regular block devices +env set bootcmd_otenv 'ext4load ${devtype} ${devnum}:2 ${loadaddr} /boot/loader/uEnv.txt; env import -t ${loadaddr} ${filesize}' +env set bootcmd_args 'env set bootargs root=LABEL=otaroot rootfstype=ext4 ${bootargs} ${tdxargs}' +else +# Load commands for raw NAND devices +env set bootcmd_otenv 'ubifsmount ubi${devnum}:rootfs && load ${devtype} ${devnum}:2 ${loadaddr} /boot/loader/uEnv.txt; env import -t ${loadaddr} ${filesize}' +env set bootcmd_args 'env set bootargs ubi.mtd=UBI root=/dev/ubi0_1 rootfstype=ubifs ubi.fm_autoconvert=1 ${bootargs} ${tdxargs}' +fi + +run bootcmd_otenv + +if test -n ${rollback} && test ${rollback} = 1 +then + echo "Roolback enabled. Booting old version." + env set kernel_image ${kernel_image2} + env set ramdisk_image ${ramdisk_image2} + env set bootargs ${bootargs2} + env set fdt_path ${fdt_path2} +fi + +env set bootcmd_dtb 'load ${devtype} ${devnum}:2 ${fdt_addr_r} "/boot"${fdt_path}devicetree-${fdtfile}; if test -e ${devtype} ${devnum}:1 ${overlays_file}; then run load_overlay && run apply_overlays || true;fi || true' +env set bootcmd_run '@@KERNEL_BOOTCMD@@ ${kernel_addr_r} ${ramdisk_addr_r}:${ramdisk_size} ${fdt_addr_r}' +env set bootcmd 'run bootcmd_dtb && run bootcmd_args && run bootcmd_load_k && run bootcmd_load_r && run bootcmd_run' +run bootcmd -- cgit v1.2.3