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 <apatel@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Tested-by: Andrew Jones <ajones@ventanamicro.com>
Acked-by: Atish Patra <atishp@rivosinc.com>
Tested-by: Atish Patra <atishp@rivosinc.com>
This commit is contained in:
Anup Patel 2022-08-08 09:34:31 +05:30 committed by Anup Patel
parent eccb9df5cf
commit 0723bab8fe
6 changed files with 36 additions and 14 deletions

View file

@ -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 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. 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 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 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 Please note that only a 64-bit version of the toolchain is available in
the Bootlin toolchain repository for now. 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 Building and Installing the OpenSBI Platform-Independent Library
---------------------------------------------------------------- ----------------------------------------------------------------
@ -196,6 +204,19 @@ top-level make command line. These options, such as *PLATFORM_<xyz>* or
*docs/platform/<platform_name>.md* files and *docs/platform/<platform_name>.md* files and
*docs/firmware/<firmware_name>.md* files. *docs/firmware/<firmware_name>.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=<platform_subdir> menuconfig
```
Alternately, an OpenSBI platform can have multiple default configurations
and users can select a custom default configuration as follows:
```
make PLATFORM=<platform_subdir> PLATFORM_DEFCONFIG=<platform_custom_defconfig>
```
Building 32-bit / 64-bit OpenSBI Images Building 32-bit / 64-bit OpenSBI Images
--------------------------------------- ---------------------------------------
By default, building OpenSBI generates 32-bit or 64-bit images based on the By default, building OpenSBI generates 32-bit or 64-bit images based on the

View file

@ -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. 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. 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. file.
The compiled *FW_DYNAMIC* firmware ELF file is named *fw_dynamic.elf*. It's The compiled *FW_DYNAMIC* firmware ELF file is named *fw_dynamic.elf*. It's

View file

@ -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: 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. 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 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 image file is *fw_jump.bin*. Both files are created in the platform-specific
@ -26,7 +26,7 @@ build directory under the *build/platform/<platform_subdir>/firmware* directory.
To operate correctly, a *FW_JUMP* firmware requires some configuration To operate correctly, a *FW_JUMP* firmware requires some configuration
parameters to be defined using either the top level `make` command line or the 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: follows:
* **FW_JUMP_ADDR** - Address of the entry point of the booting stage to be * **FW_JUMP_ADDR** - Address of the entry point of the booting stage to be

View file

@ -20,7 +20,7 @@ Enabling *FW_PAYLOAD* compilation
The *FW_PAYLOAD* firmware can be enabled by any of the following methods: 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. 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. file.
The compiled *FW_PAYLOAD* firmware ELF file is named *fw_jump.elf*. Its 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 A *FW_PAYLOAD* firmware is built according to configuration parameters and
options. These configuration parameters can be defined using either the top 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: file. The parameters currently defined are as follows:
* **FW_PAYLOAD_OFFSET** - Offset from *FW_TEXT_BASE* where the payload binary * **FW_PAYLOAD_OFFSET** - Offset from *FW_TEXT_BASE* where the payload binary

View file

@ -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 The code for these supported platforms can be used as example to implement
support for other platforms. The *platform/template* directory also provides support for other platforms. The *platform/template* directory also provides
template files for implementing support for a new platform. The *object.mk*, template files for implementing support for a new platform. The *objects.mk*,
*config.mk* and *platform.c* template files provides enough comments to *Kconfig*, *configs/defconfig* and *platform.c* template files provides enough
facilitate the implementation. comments to facilitate the implementation.
[generic.md]: generic.md [generic.md]: generic.md
[qemu_virt.md]: qemu_virt.md [qemu_virt.md]: qemu_virt.md

View file

@ -28,11 +28,12 @@ Adding support for a new platform
Support for a new platform named *&lt;xyz&gt;* can be added as follows: Support for a new platform named *&lt;xyz&gt;* can be added as follows:
1. Create a directory named *&lt;xyz&gt;* under the *platform/* directory. 1. Create a directory named *&lt;xyz&gt;* under the *platform/* directory.
2. Create a platform configuration file named *config.mk* under the 2. Create platform configuration files named *Kconfig* and *configs/defconfig*
*platform/&lt;xyz&gt;/* directory. This configuration file will provide under the *platform/&lt;xyz&gt;/* directory. These configuration files will
provide the build time configuration for the sources to be compiled.
3. Create a *platform/&lt;xyz&gt;/objects.mk* file for listing the platform
object files to be compiled. This file also provides platform-specific
compiler flags, and select firmware options. compiler flags, and select firmware options.
3. Create a *platform/&lt;xyz&gt;/objects.mk* file for listing the
platform-specific object files to be compiled.
4. Create a *platform/&lt;xyz&gt;/platform.c* file providing a 4. Create a *platform/&lt;xyz&gt;/platform.c* file providing a
*struct sbi_platform* instance. *struct sbi_platform* instance.