mirror of
https://github.com/Fishwaldo/opensbi.git
synced 2025-06-19 20:59:03 +00:00
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:
parent
eccb9df5cf
commit
0723bab8fe
6 changed files with 36 additions and 14 deletions
25
README.md
25
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
|
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -28,11 +28,12 @@ Adding support for a new platform
|
||||||
Support for a new platform named *<xyz>* can be added as follows:
|
Support for a new platform named *<xyz>* can be added as follows:
|
||||||
|
|
||||||
1. Create a directory named *<xyz>* under the *platform/* directory.
|
1. Create a directory named *<xyz>* 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/<xyz>/* directory. This configuration file will provide
|
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.
|
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
|
4. Create a *platform/<xyz>/platform.c* file providing a
|
||||||
*struct sbi_platform* instance.
|
*struct sbi_platform* instance.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue