Files
opensbi/docs/platform_guide.md
Anup Patel 0723bab8fe 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>
2022-08-08 09:34:31 +05:30

2.2 KiB

OpenSBI Platform Support Guideline

The OpenSBI platform support allows an implementation to define a set of platform-specific hooks (hardware manipulation functions) in the form of a struct sbi_platform data structure instance. This instance is required by the platform-independent libsbi.a to execute platform-specific operations.

Each of the reference platform supports provided by OpenSBI defines an instance of the struct sbi_platform data structure. For each supported platform, libplatsbi.a integrates this instance with libsbi.a to create a platform-specific OpenSBI static library. This library is installed in <install_directory>/platform/<platform_subdir>/lib/libplatsbi.a

OpenSBI also provides implementation examples of bootable runtime firmwares for the supported platforms. These firmwares are linked against libplatsbi.a. Firmware binaries are installed in <install_directory>/platform/<platform_subdir>/bin. These firmwares can be used as executable runtime firmwares on the supported platforms as a replacement for the legacy riscv-pk boot loader (BBL).

A complete doxygen-style documentation of struct sbi_platform and related APIs is available in the file include/sbi/sbi_platform.h.

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 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.
  4. Create a platform/<xyz>/platform.c file providing a struct sbi_platform instance.

A platform support code template is available under the platform/template directory. Copying this directory and its content as a new directory named <xyz> under the platform/ directory will create all the files mentioned above.