riscv: add firmware partitions to GENERICSD.conf

Create two partitions in the existing space at the beginning of the
image (8MB). These are intended to hold u-boot SPL and u-boot proper.

The partition types selected are compatible with SiFive boards, e.g. the
HiFive Unmatched. They can easily be overridden for a platform that uses
the same scheme but different partition types, e.g. the StarFive
VisionFive v2. Firmware is not actually installed, this too is left for
the user.

It is not as simple to create the firmware partitions after the fact,
e.g. with partition indices 3 and 4. It is a shortcoming of current day
u-boot that the SPL loader looks for a specific partition index, rather
than the partition type, meaning that we will fail to boot if partition
2 doesn't contain u-boot.

Thus, our GENERICSD images become more generically usable with current
RISC-V hardware/firmware platforms.

Reviewed by:	manu, karels, imp
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D43849
This commit is contained in:
Mitchell Horne 2024-02-14 11:12:57 -04:00
parent 2af03ebfb8
commit 3fb8f1272b

View File

@ -1,6 +1,4 @@
#!/bin/sh
#
#
EMBEDDED_TARGET_ARCH="riscv64"
EMBEDDED_TARGET="riscv"
@ -11,4 +9,18 @@ IMAGE_SIZE="6144M"
KERNEL="GENERIC"
MD_ARGS="-x 63 -y 255"
PART_SCHEME="GPT"
EFIPART_SUFFIX=p3
ROOTFSPART_SUFFIX=p4
export BOARDNAME="GENERICSD"
arm_create_partitions() {
# Create two partitions for firmware, preceding EFI and ROOTFS:
# 1. u-boot SPL
# 2. u-boot loader
#
# The exact partition types can be rewritten by the user, but they should
# be reserved now.
chroot ${CHROOTDIR} gpart add -t hifive-fsbl -l spl -a 512k -b 2m -s 2m ${mddev}
chroot ${CHROOTDIR} gpart add -t hifive-bbl -l uboot -a 512k -b 4m -s 4m ${mddev}
}