Skip to content

Commit

Permalink
rpi-cmdline, rpi-u-boot-src: Support USB boot
Browse files Browse the repository at this point in the history
The Raspberry Pi 4 board can boot the image from USB memory.
But current meta-raspberrypi supports only SD boot.

This commit allows switching SD boot to other device.
For example, if you want to use USB boot, please define
the following parameters in your conf/local.conf file.
CMDLINE_ROOT_PARTITION = "/dev/sda2"
BOOT_MEDIA = "usb"

v3: Changed variable name to "BOOT_MEDIA" (was "BOOT_DEVTIPE").

v2: Set existing microSD parameter as default. User can overwrite
some parameters.

Signed-off-by: Harunobu Kurokawa <[email protected]>
  • Loading branch information
harunobukurokawa committed Aug 20, 2023
1 parent 8e07f0d commit fedae88
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 3 deletions.
14 changes: 14 additions & 0 deletions docs/extra-build-config.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,20 @@ To remove (or adjust) this delay set these variables in local.conf:
BOOT_DELAY = "0"
BOOT_DELAY_MS = "0"

## Boot media

The Raspberry Pi 4 board can load the boot image files from SD card and USB memory.
By default SD card media is used as boot media.

To switch the boot media from SD card the following variables are supported
in local.conf: `CMDLINE_ROOT_PARTITION` and `BOOT_MEDIA`.

For example, if you want to use USB boot, please define
the following parameters in your local.conf file.

CMDLINE_ROOT_PARTITION = "/dev/sda2"
BOOT_MEDIA = "usb"

## Set overclocking options

The Raspberry Pi can be overclocked. As of now overclocking up to the "Turbo
Expand Down
4 changes: 3 additions & 1 deletion recipes-bsp/bootfiles/rpi-cmdline.bb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ inherit deploy nopackages
CMDLINE_DWC_OTG ?= "dwc_otg.lpm_enable=0"

CMDLINE_ROOT_FSTYPE ?= "rootfstype=ext4"
CMDLINE_ROOTFS ?= "root=/dev/mmcblk0p2 ${CMDLINE_ROOT_FSTYPE} rootwait"
CMDLINE_ROOT_PARTITION ?= "/dev/mmcblk0p2"

CMDLINE_ROOTFS ?= "root=${CMDLINE_ROOT_PARTITION} ${CMDLINE_ROOT_FSTYPE} rootwait"

CMDLINE_SERIAL ?= "${@oe.utils.conditional("ENABLE_UART", "1", "console=serial0,115200", "", d)}"

Expand Down
4 changes: 2 additions & 2 deletions recipes-bsp/rpi-u-boot-scr/files/boot.cmd.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
fdt addr ${fdt_addr} && fdt get value bootargs /chosen bootargs
fatload mmc 0:1 ${kernel_addr_r} @@KERNEL_IMAGETYPE@@
if test ! -e mmc 0:1 uboot.env; then saveenv; fi;
fatload @@BOOT_MEDIA@@ 0:1 ${kernel_addr_r} @@KERNEL_IMAGETYPE@@
if test ! -e @@BOOT_MEDIA@@ 0:1 uboot.env; then saveenv; fi;
@@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr}
3 changes: 3 additions & 0 deletions recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bb
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@ INHIBIT_DEFAULT_DEPS = "1"

SRC_URI = "file://boot.cmd.in"

BOOT_MEDIA ?= "mmc"

do_compile() {
sed -e 's/@@KERNEL_IMAGETYPE@@/${KERNEL_IMAGETYPE}/' \
-e 's/@@KERNEL_BOOTCMD@@/${KERNEL_BOOTCMD}/' \
-e 's/@@BOOT_MEDIA@@/${BOOT_MEDIA}/' \
"${WORKDIR}/boot.cmd.in" > "${WORKDIR}/boot.cmd"
mkimage -A ${UBOOT_ARCH} -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr
}
Expand Down

0 comments on commit fedae88

Please sign in to comment.