[U-Boot] [PATCH v2 7/8] board: Add new slimbootloader board

Park, Aiden aiden.park at intel.com
Tue Jun 25 23:21:55 UTC 2019


- Add new board/slimbootloader directory with minimum codes
- Add slimbootloader configuration files
- Add README in board/slimbootloader/slimbootloader/

Signed-off-by: Aiden Park <aiden.park at intel.com>
---
 arch/x86/Kconfig                              |  4 ++
 board/slimbootloader/Kconfig                  | 25 ++++++++
 board/slimbootloader/slimbootloader/Kconfig   | 51 +++++++++++++++
 board/slimbootloader/slimbootloader/Makefile  |  5 ++
 board/slimbootloader/slimbootloader/README    | 58 +++++++++++++++++
 .../slimbootloader/slimbootloader.c           | 17 +++++
 board/slimbootloader/slimbootloader/start.S   |  9 +++
 configs/slimbootloader_defconfig              | 64 +++++++++++++++++++
 include/configs/slimbootloader.h              | 54 ++++++++++++++++
 9 files changed, 287 insertions(+)
 create mode 100644 board/slimbootloader/Kconfig
 create mode 100644 board/slimbootloader/slimbootloader/Kconfig
 create mode 100644 board/slimbootloader/slimbootloader/Makefile
 create mode 100644 board/slimbootloader/slimbootloader/README
 create mode 100644 board/slimbootloader/slimbootloader/slimbootloader.c
 create mode 100644 board/slimbootloader/slimbootloader/start.S
 create mode 100644 configs/slimbootloader_defconfig
 create mode 100644 include/configs/slimbootloader.h

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 1612246dfc..3d57466a63 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -77,6 +77,9 @@ config VENDOR_GOOGLE
 config VENDOR_INTEL
 	bool "Intel"
 
+config VENDOR_SLIMBOOTLOADER
+	bool "slimbootloader"
+
 endchoice
 
 # subarchitectures-specific options below
@@ -104,6 +107,7 @@ source "board/efi/Kconfig"
 source "board/emulation/Kconfig"
 source "board/google/Kconfig"
 source "board/intel/Kconfig"
+source "board/slimbootloader/Kconfig"
 
 # platform-specific options below
 source "arch/x86/cpu/baytrail/Kconfig"
diff --git a/board/slimbootloader/Kconfig b/board/slimbootloader/Kconfig
new file mode 100644
index 0000000000..33c6fdf0aa
--- /dev/null
+++ b/board/slimbootloader/Kconfig
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2019 Intel Corporation <www.intel.com>
+
+if VENDOR_SLIMBOOTLOADER
+
+choice
+	prompt "Select a board"
+	optional
+
+config TARGET_SLIMBOOTLOADER
+	bool "slimbootloader"
+	help
+	  This target is used for running U-Boot on top of Slim Bootloader
+	  boot firmware as a payload. Slim Bootloader does memory initialization
+	  and silicon initialization, and it passes necessary information in
+	  HOB(Hand Off Block) to a payload. The payload is responsible for OS
+	  load from media and booting OS.
+	  Refer to board/slimbootloader/slimbootloader/README for the details.
+
+endchoice
+
+source "board/slimbootloader/slimbootloader/Kconfig"
+
+endif
diff --git a/board/slimbootloader/slimbootloader/Kconfig b/board/slimbootloader/slimbootloader/Kconfig
new file mode 100644
index 0000000000..7262f2bf1b
--- /dev/null
+++ b/board/slimbootloader/slimbootloader/Kconfig
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2019 Intel Corporation <www.intel.com>
+
+if TARGET_SLIMBOOTLOADER
+
+config SYS_BOARD
+	default "slimbootloader"
+
+config SYS_VENDOR
+	default "slimbootloader"
+
+config SYS_SOC
+	default "slimbootloader"
+
+config SYS_TEXT_BASE
+	default 0x00100000
+
+comment "slimbootloader-specific options"
+
+config SYS_CONFIG_NAME
+	string "Board configuration file"
+	default "slimbootloader"
+	help
+	  This option selects the board configuration file in include/configs/
+	  directory to be used to build U-Boot for Slim Bootloader.
+
+config DEFAULT_DEVICE_TREE
+	string "Board Device Tree Source (dts) file"
+	default "slimbootloader"
+	help
+	  This option selects the board Device Tree Source (dts) file in
+	  arch/x86/dts/ directory to be used to build U-Boot for Slim Bootloader.
+
+config SYS_CAR_ADDR
+	hex "Board specific Cache-As-RAM (CAR) address"
+	default 0x00000000
+	help
+	  This option specifies the board specific Cache-As-RAM (CAR) address.
+	  But, CAR is not required for Slim Bootloader environment since it
+	  has already initialized memory and launched u-boot as a payload.
+
+config SYS_CAR_SIZE
+	hex "Board specific Cache-As-RAM (CAR) size"
+	default 0x0000
+	help
+	  This option specifies the board specific Cache-As-RAM (CAR) size.
+	  But, CAR is not required for Slim Bootloader environment since it
+	  has already initialized memory and launched u-boot as a payload.
+
+endif
diff --git a/board/slimbootloader/slimbootloader/Makefile b/board/slimbootloader/slimbootloader/Makefile
new file mode 100644
index 0000000000..fd8fa98a8d
--- /dev/null
+++ b/board/slimbootloader/slimbootloader/Makefile
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2019 Intel Corporation <www.intel.com>
+
+obj-y	+= start.o slimbootloader.o
diff --git a/board/slimbootloader/slimbootloader/README b/board/slimbootloader/slimbootloader/README
new file mode 100644
index 0000000000..5492dc8883
--- /dev/null
+++ b/board/slimbootloader/slimbootloader/README
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2019 Intel Corporation <www.intel.com>
+
+Introduction
+============
+This target is to enable U-Boot as a payload of Slim Bootloader(a.k.a SBL)
+boot firmware(https://github.com/slimbootloader/slimbootloader) which currently
+supports QEMU, Apollolake, Whiskeylake, Coffeelake-Refresh platforms.
+
+The Slim Bootloader is designed with multi-stages(Stage1A/B, Stage2, Payload)
+architecture to cover from reset vector to OS booting and it consumes Intel FSP
+(https://github.com/IntelFsp/FSP) for silicon initialization.
+* Stage1A: Reset vector, CAR init with FSP-T
+* Stage1B: Memory init with FSP-M, CAR teardown, Continue execution in memory
+* Stage2 : Rest of Silicon init with FSP-S, Create HOB, Hand-off to Payload
+* Payload: Load OS from media, Booting OS
+
+
+Here is the step-by-step to launch U-Boot on Slim Bootloader.
+
+Compile U-Boot
+==============
+
+  > make slimbootloader_defconfig all
+  > strip u-boot (To make it smaller size by removing debug symbols)
+
+
+Compile Slim Bootloader with U-Boot
+===================================
+
+For build environment:
+  https://slimbootloader.github.io/getting-started/build-host-setup.html
+
+Get source code:
+  > git clone https://github.com/slimbootloader/slimbootloader.git
+
+Copy the built u-boot elf to Slim Bootloader source tree:
+  > mkdir -p <slimbootloader_home>/PayloadPkg/PayloadBins/
+  > cp <u-boot_home>/u-boot <slimbootloader_home>/PayloadPkg/PayloadBins/
+
+Update default payload to U-Boot (PayloadId is 4 Bytes):
+  > vi Platform/QemuBoardPkg/CfgData/CfgDataExt_Brd1.dlt
+    -GEN_CFG_DATA.PayloadId                     | 'AUTO'
+    +GEN_CFG_DATA.PayloadId                     | 'U-BT'
+
+Compile for QEMU target:
+  The output is Outputs/qemu/SlimBootloader.bin
+  > python BuildLoader.py build qemu -p "OsLoader.efi:LLDR:Lz4;u-boot:U-BT:Lzma"
+
+
+Launch Slim Bootloader on QEMU
+==============================
+
+  > qemu-system-x86_64 -machine q35 -m 256 -nographic -serial mon:stdio
+                       -pflash Outputs/qemu/SlimBootloader.bin
+
+Now, you should reach at U-Boot serial console.
\ No newline at end of file
diff --git a/board/slimbootloader/slimbootloader/slimbootloader.c b/board/slimbootloader/slimbootloader/slimbootloader.c
new file mode 100644
index 0000000000..d88aa622a0
--- /dev/null
+++ b/board/slimbootloader/slimbootloader/slimbootloader.c
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2019 Intel Corporation <www.intel.com>
+ */
+
+#include <common.h>
+
+int board_early_init_r(void)
+{
+	/*
+	 * Make sure PCI bus is enumerated so that peripherals on the PCI bus
+	 * can be discovered by their drivers
+	 */
+	pci_init();
+
+	return 0;
+}
diff --git a/board/slimbootloader/slimbootloader/start.S b/board/slimbootloader/slimbootloader/start.S
new file mode 100644
index 0000000000..5c3f3df09e
--- /dev/null
+++ b/board/slimbootloader/slimbootloader/start.S
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2019 Intel Corporation <www.intel.com>
+ */
+
+/* board early initialization */
+.globl early_board_init
+early_board_init:
+	jmp	early_board_init_ret
diff --git a/configs/slimbootloader_defconfig b/configs/slimbootloader_defconfig
new file mode 100644
index 0000000000..77ff3257b6
--- /dev/null
+++ b/configs/slimbootloader_defconfig
@@ -0,0 +1,64 @@
+CONFIG_X86=y
+CONFIG_VENDOR_SLIMBOOTLOADER=y
+CONFIG_TARGET_SLIMBOOTLOADER=y
+CONFIG_X86_LOAD_FROM_32_BIT=y
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_BOARD_EARLY_INIT_R=y
+CONFIG_LAST_STAGE_INIT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_USB=y
+CONFIG_DOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+CONFIG_OF_CONTROL=y
+CONFIG_OF_EMBED=y
+CONFIG_BOOTSTAGE=y
+CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_BOOTDELAY=10
+CONFIG_CONSOLE_SCROLL_LINES=5
+# CONFIG_PCI_PNP is not set
+# CONFIG_I8259_PIC is not set
+# CONFIG_APIC is not set
+# CONFIG_CMD_EXT4_WRITE is not set
+# CONFIG_CMD_FS_GENERIC is not set
+# CONFIG_CMD_PART is not set
+# CONFIG_CMD_TIME is not set
+# CONFIG_CMD_BOOTSTAGE is not set
+# CONFIG_CMD_DM is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_LOADB is not set
+# CONFIG_CMD_LOADS is not set
+# CONFIG_CMD_SF_TEST is not set
+# CONFIG_CMD_ECHO is not set
+# CONFIG_CMD_ITEST is not set
+# CONFIG_CMD_SETEXPR is not set
+# CONFIG_CMD_NET is not set
+# CONFIG_CMD_BOOTP is not set
+# CONFIG_CMD_BLOCK_CACHE is not set
+# CONFIG_CMD_DATE is not set
+# CONFIG_CMD_GETTIME is not set
+# CONFIG_CMD_MISC is not set
+# CONFIG_CMD_IRQ is not set
+# CONFIG_CMD_ELF is not set
+# CONFIG_CMD_IMI is not set
+# CONFIG_CMD_XIMG is not set
+# CONFIG_CMD_EXPORTENV is not set
+# CONFIG_CMD_IMPORTENV is not set
+# CONFIG_CMD_FDT is not set
+# CONFIG_CMD_GO is not set
+# CONFIG_CMD_SAVEENV is not set
+# CONFIG_CMD_SOURCE is not set
+# CONFIG_DM_KEYBOARD is not set
+# CONFIG_DM_VIDEO is not set
+# CONFIG_DM_GPIO is not set
+# CONFIG_MMC_VERBOSE is not set
+# CONFIG_GZIP is not set
+# CONFIG_HEXDUMP is not set
+# CONFIG_EFI_LOADER is not set
+# CONFIG_GENERATE_SMBIOS_TABLE is not set
+# CONFIG_IMAGE_FORMAT_LEGACY is not set
+# CONFIG_FIT is not set
diff --git a/include/configs/slimbootloader.h b/include/configs/slimbootloader.h
new file mode 100644
index 0000000000..bfd188de2c
--- /dev/null
+++ b/include/configs/slimbootloader.h
@@ -0,0 +1,54 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2019 Intel Corporation <www.intel.com>
+ */
+
+#ifndef __SLIMBOOTLOADER_CONFIG_H__
+#define __SLIMBOOTLOADER_CONFIG_H__
+
+#include <configs/x86-common.h>
+
+#undef CONFIG_NFSBOOTCOMMAND
+#undef CONFIG_RAMBOOTCOMMAND
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#undef CONFIG_BOOTCOMMAND
+
+/*-----------------------------------------------------------------------
+ * For MEM32 uart
+ */
+/*#define CONFIG_SYS_NS16550_MEM32*/
+#ifdef CONFIG_SYS_NS16550_MEM32
+#undef CONFIG_SYS_NS16550_PORT_MAPPED
+#endif
+
+#define CONFIG_STD_DEVICES_SETTINGS		\
+	"stdin=serial,i8042-kbd,usbkbd\0"	\
+	"stdout=serial\0"			\
+	"stderr=serial\0"
+
+#define CONFIG_EXTRA_ENV_SETTINGS		\
+	CONFIG_STD_DEVICES_SETTINGS		\
+	"netdev=eth0\0"				\
+	"consoledev=ttyS0\0"			\
+	"ramdiskaddr=0x4000000\0"		\
+	"ramdiskfile=initrd\0"			\
+	"bootdev=usb\0"				\
+	"bootdevnum=0\0"			\
+	"bootdevpart=0\0"			\
+	"bootfsload=fatload\0"			\
+	"bootusb=setenv bootdev usb; boot\0"	\
+	"bootscsi=setenv bootdev scsi; boot\0"	\
+	"bootmmc=setenv bootdev mmc; boot\0"	\
+	"bootargs=console=ttyS0,115200 console=tty0\0"
+
+#define CONFIG_BOOTCOMMAND						\
+	"if test ${bootdev} = \"usb\"; then ${bootdev} start; fi; "	\
+	"if test ${bootdev} = \"scsi\"; then ${bootdev} scan; fi; "	\
+	"${bootdev} info; "						\
+	"${bootfsload} ${bootdev} ${bootdevnum}:${bootdevpart} "	\
+	"${loadaddr} ${bootfile}; "					\
+	"${bootfsload} ${bootdev} ${bootdevnum}:${bootdevpart} "	\
+	"${ramdiskaddr} ${ramdiskfile}; "				\
+	"zboot ${loadaddr} 0 ${ramdiskaddr} ${filesize}"
+
+#endif /* __SLIMBOOTLOADER_CONFIG_H__ */
-- 
2.20.1



More information about the U-Boot mailing list