From 0723bab8fe073ccbbb45e85e0d50ec1d2055d34a Mon Sep 17 00:00:00 2001 From: Anup Patel Date: Mon, 8 Aug 2022 09:34:31 +0530 Subject: [PATCH] docs: Update documentation for kconfig support We update all documentation files to: 1) Remove references to platform specific config.mk file since it is has been removed. 2) Add details about platform specific configs/defconfig and Kconfig files mandatory for each platform. 3) Add required packages in top-level README.md 4) Fix typo releated to object.mk in docs/platform/platform.md Signed-off-by: Anup Patel Reviewed-by: Andrew Jones Tested-by: Andrew Jones Acked-by: Atish Patra Tested-by: Atish Patra --- README.md | 25 +++++++++++++++++++++++-- docs/firmware/fw_dynamic.md | 2 +- docs/firmware/fw_jump.md | 4 ++-- docs/firmware/fw_payload.md | 4 ++-- docs/platform/platform.md | 6 +++--- docs/platform_guide.md | 9 +++++---- 6 files changed, 36 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 54fabe4..895bbf2 100644 --- a/README.md +++ b/README.md @@ -92,8 +92,8 @@ N.B. Any S-mode boot loader (i.e. U-Boot) doesn't need to support HSM extension, as it doesn't need to boot all the harts. The operating system should be capable enough to bring up all other non-booting harts using HSM extension. -Required Toolchain ------------------- +Required Toolchain and Packages +------------------------------- OpenSBI can be compiled natively or cross-compiled on a x86 host. For cross-compilation, you can build your own toolchain, download a prebuilt one @@ -115,6 +115,14 @@ triple is used (e.g. *-target riscv64-unknown-elf*). Please note that only a 64-bit version of the toolchain is available in the Bootlin toolchain repository for now. +In addition to a toolchain, OpenSBI also requires the following packages on +the host: + +1. device-tree-compiler: The device tree compiler for compiling device + tree sources (DTS files). +2. python3: The python 3.0 (or compatible) language support for various + scripts. + Building and Installing the OpenSBI Platform-Independent Library ---------------------------------------------------------------- @@ -196,6 +204,19 @@ top-level make command line. These options, such as *PLATFORM_* or *docs/platform/.md* files and *docs/firmware/.md* files. +All OpenSBI platforms support Kconfig style build-time configuration. Users +can change the build-time configuration of a platform using a graphical +interface as follows: +``` +make PLATFORM= menuconfig +``` + +Alternately, an OpenSBI platform can have multiple default configurations +and users can select a custom default configuration as follows: +``` +make PLATFORM= PLATFORM_DEFCONFIG= +``` + Building 32-bit / 64-bit OpenSBI Images --------------------------------------- By default, building OpenSBI generates 32-bit or 64-bit images based on the diff --git a/docs/firmware/fw_dynamic.md b/docs/firmware/fw_dynamic.md index 7b9b192..e251488 100644 --- a/docs/firmware/fw_dynamic.md +++ b/docs/firmware/fw_dynamic.md @@ -20,7 +20,7 @@ the booting stage binary to follow OpenSBI firmware. A platform can enable *FW_DYNAMIC* firmware using any of the following methods. 1. Specifying `FW_DYNAMIC=y` on the top level `make` command line. -2. Specifying `FW_DYNAMIC=y` in the target platform *config.mk* configuration +2. Specifying `FW_DYNAMIC=y` in the target platform *objects.mk* configuration file. The compiled *FW_DYNAMIC* firmware ELF file is named *fw_dynamic.elf*. It's diff --git a/docs/firmware/fw_jump.md b/docs/firmware/fw_jump.md index eea3013..35a4301 100644 --- a/docs/firmware/fw_jump.md +++ b/docs/firmware/fw_jump.md @@ -15,7 +15,7 @@ and the booting stage binary to follow the OpenSBI firmware. A platform *FW_JUMP* firmware can be enabled by any of the following methods: 1. Specifying `FW_JUMP=y` on the top level `make` command line. -2. Specifying `FW_JUMP=y` in the target platform *config.mk* configuration file. +2. Specifying `FW_JUMP=y` in the target platform *objects.mk* configuration file. The compiled *FW_JUMP* firmware ELF file is named *fw_jump.elf*. Its expanded image file is *fw_jump.bin*. Both files are created in the platform-specific @@ -26,7 +26,7 @@ build directory under the *build/platform//firmware* directory. To operate correctly, a *FW_JUMP* firmware requires some configuration parameters to be defined using either the top level `make` command line or the -target platform *config.mk* configuration file. The possible parameters are as +target platform *objects.mk* configuration file. The possible parameters are as follows: * **FW_JUMP_ADDR** - Address of the entry point of the booting stage to be diff --git a/docs/firmware/fw_payload.md b/docs/firmware/fw_payload.md index 0947448..3bb918f 100644 --- a/docs/firmware/fw_payload.md +++ b/docs/firmware/fw_payload.md @@ -20,7 +20,7 @@ Enabling *FW_PAYLOAD* compilation The *FW_PAYLOAD* firmware can be enabled by any of the following methods: 1. Specifying `FW_PAYLOAD=y` on the top level `make` command line. -2. Specifying `FW_PAYLOAD=y` in the target platform *config.mk* configuration +2. Specifying `FW_PAYLOAD=y` in the target platform *objects.mk* configuration file. The compiled *FW_PAYLOAD* firmware ELF file is named *fw_jump.elf*. Its @@ -33,7 +33,7 @@ Configuration Options A *FW_PAYLOAD* firmware is built according to configuration parameters and options. These configuration parameters can be defined using either the top -level `make` command line or the target platform *config.mk* configuration +level `make` command line or the target platform *objects.mk* configuration file. The parameters currently defined are as follows: * **FW_PAYLOAD_OFFSET** - Offset from *FW_TEXT_BASE* where the payload binary diff --git a/docs/platform/platform.md b/docs/platform/platform.md index cb4bec6..f291931 100644 --- a/docs/platform/platform.md +++ b/docs/platform/platform.md @@ -41,9 +41,9 @@ OpenSBI currently supports the following virtual and hardware platforms: The code for these supported platforms can be used as example to implement support for other platforms. The *platform/template* directory also provides -template files for implementing support for a new platform. The *object.mk*, -*config.mk* and *platform.c* template files provides enough comments to -facilitate the implementation. +template files for implementing support for a new platform. The *objects.mk*, +*Kconfig*, *configs/defconfig* and *platform.c* template files provides enough +comments to facilitate the implementation. [generic.md]: generic.md [qemu_virt.md]: qemu_virt.md diff --git a/docs/platform_guide.md b/docs/platform_guide.md index b6c2c2e..38fd516 100644 --- a/docs/platform_guide.md +++ b/docs/platform_guide.md @@ -28,11 +28,12 @@ Adding support for a new platform Support for a new platform named *<xyz>* can be added as follows: 1. Create a directory named *<xyz>* under the *platform/* directory. -2. Create a platform configuration file named *config.mk* under the - *platform/<xyz>/* directory. This configuration file will provide +2. Create platform configuration files named *Kconfig* and *configs/defconfig* + under the *platform/<xyz>/* directory. These configuration files will + provide the build time configuration for the sources to be compiled. +3. Create a *platform/<xyz>/objects.mk* file for listing the platform + object files to be compiled. This file also provides platform-specific compiler flags, and select firmware options. -3. Create a *platform/<xyz>/objects.mk* file for listing the - platform-specific object files to be compiled. 4. Create a *platform/<xyz>/platform.c* file providing a *struct sbi_platform* instance. -- 2.7.4