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 platform independent libsbi.a to execute platform specific operations.
Each of the reference platform support provided by OpenSBI define 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 riskv-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.
Support for a new platform named can be added as follows:
A template platform support code is available under the platform/template directory. Copying this directory and its content as a new directory named under the platform/ directory will create all the files mentioned above.