boot/opensbi: new package

OpenSBI is a much improved alternative to BBL (riscv-pk). Add OpenSBI
support to buildroot.

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
[Thomas:
 - disable target installation, as we install nothing
 - enable staging installation
 - enable images installation only when needed
 - improve the comment about the staging installation]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Alistair Francis 2019-03-20 23:05:21 +00:00 committed by Thomas Petazzoni
parent 4359e877d3
commit cbce379faf
4 changed files with 68 additions and 0 deletions

View File

@ -122,6 +122,7 @@ F: package/kvazaar/
F: package/v4l2loopback/
N: Alistair Francis <alistair@alistair23.me>
F: boot/opensbi/
F: package/xen/
N: Alvaro G. M <alvaro.gamez@hazent.com>

View File

@ -14,6 +14,7 @@ source "boot/lpc32xxcdl/Config.in"
source "boot/mv-ddr-marvell/Config.in"
source "boot/mxs-bootlets/Config.in"
source "boot/optee-os/Config.in"
source "boot/opensbi/Config.in"
source "boot/riscv-pk/Config.in"
source "boot/s500-bootloader/Config.in"
source "boot/shim/Config.in"

25
boot/opensbi/Config.in Normal file
View File

@ -0,0 +1,25 @@
config BR2_TARGET_OPENSBI
bool "opensbi"
depends on BR2_riscv
help
OpenSBI aims to provide an open-source and extensible
implementation of the RISC-V SBI specification for a platform
specific firmware (M-mode) and a general purpose OS,
hypervisor or bootloader (S-mode or HS-mode). OpenSBI
implementation can be easily extended by RISC-V platform or
System-on-Chip vendors to fit a particular hadware
configuration.
https://github.com/riscv/opensbi.git
if BR2_TARGET_OPENSBI
config BR2_TARGET_OPENSBI_PLAT
string "OpenSBI Platform"
default ""
help
Specifies the OpenSBI platform to build. If no platform is
specified only the OpenSBI platform independent static
library libsbi.a is built. If a platform is specified then
the platform specific static library libplatsbi.a and firmware
examples are built.
endif

41
boot/opensbi/opensbi.mk Normal file
View File

@ -0,0 +1,41 @@
################################################################################
#
# opensbi
#
################################################################################
OPENSBI_VERSION = v0.3
OPENSBI_SITE = $(call github,riscv,opensbi,$(OPENSBI_VERSION))
OPENSBI_LICENSE = BSD-2-Clause
OPENSBI_LICENSE_FILES = COPYING.BSD
OPENSBI_INSTALL_TARGET = NO
OPENSBI_INSTALL_STAGING = YES
OPENSBI_MAKE_ENV = \
CROSS_COMPILE=$(TARGET_CROSS)
OPENSBI_PLAT = $(call qstrip,$(BR2_TARGET_OPENSBI_PLAT))
ifneq ($(OPENSBI_PLAT),)
OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT)
endif
define OPENSBI_BUILD_CMDS
$(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D)
endef
ifneq ($(OPENSBI_PLAT),)
OPENSBI_INSTALL_IMAGES = YES
define OPENSBI_INSTALL_IMAGES_CMDS
$(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.bin $(BINARIES_DIR)/fw_jump.bin
$(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.elf $(BINARIES_DIR)/fw_jump.elf
endef
endif
# libsbi.a is not a library meant to be linked in user-space code, but
# with bare metal code, which is why we don't install it in
# $(STAGING_DIR)/usr/lib
define OPENSBI_INSTALL_STAGING_CMDS
$(INSTALL) -m 0644 -D $(@D)/build/lib/libsbi.a $(STAGING_DIR)/usr/share/opensbi/libsbi.a
endef
$(eval $(generic-package))