mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-25 15:51:41 +01:00
top: More detailed top-level README.md
This patch adds more details to top-level README.md based on current state of OpenSBI. Signed-off-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
88
README.md
88
README.md
@@ -1,37 +1,81 @@
|
|||||||
RISC-V Open Source Supervisor Binary Interface (OpenSBI)
|
RISC-V Open Source Supervisor Binary Interface (OpenSBI)
|
||||||
========================================================
|
========================================================
|
||||||
|
|
||||||
The RISC-V Supervisor Binary Interface (SBI) is a recommended
|
The **RISC-V Supervisor Binary Interface (SBI)** is a recommended
|
||||||
interface between:
|
interface between:
|
||||||
1. platform specific firmware running in M-mode and bootloader
|
|
||||||
running in S-mode
|
|
||||||
2. platform specific firmware running in M-mode and general
|
|
||||||
purpose operating system running in S-mode
|
|
||||||
3. hypervisor runnng in HS-mode and general purpose operating
|
|
||||||
system running in VS-mode.
|
|
||||||
|
|
||||||
The RISC-V SBI spec is maintained as independent project by
|
1. Platform specific firmware running in M-mode and
|
||||||
RISC-V Foundation at https://github.com/riscv/riscv-sbi-doc
|
general-purpose-os/hypervisor/bootloader running in S-mode/HS-mode
|
||||||
|
2. Hypervisor runnng in HS-mode and general-purpose-os/bootloader
|
||||||
|
running in VS-mode
|
||||||
|
|
||||||
The RISC-V OpenSBI project aims to provides an open-source and
|
The **RISC-V SBI specification** is maintained as independent project
|
||||||
extensible implementation of the SBI spec. This project can be
|
by RISC-V Foundation on [Github](https://github.com/riscv/riscv-sbi-doc)
|
||||||
easily extended by RISC-V platform or RISC-V System-on-Chip vendors.
|
|
||||||
|
|
||||||
|
The **RISC-V OpenSBI project** aims to provides an open-source and
|
||||||
|
extensible implementation of the **RISC-V SBI specification** for
|
||||||
|
point 1) mentioned above. It can be easily extended by RISC-V platform
|
||||||
|
or RISC-V System-on-Chip vendors.
|
||||||
|
|
||||||
|
We can create three things using the RISC-V OpenSBI project:
|
||||||
|
|
||||||
|
1. **libsbi.a** - Generic OpenSBI static library
|
||||||
|
2. **libplatsbi.a** - Platform specific OpenSBI static library
|
||||||
|
(It is libsbi.a plus platform specific hooks represented
|
||||||
|
by "platform" symbol)
|
||||||
|
3. **blobs** - Platform specific firware blobs
|
||||||
|
|
||||||
How to Build?
|
How to Build?
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
Below are the steps to cross-compile and install RISC-V OpenSBI:
|
For cross-compiling, please ensure that CROSS_COMPILE environment
|
||||||
|
variable is set before starting build system.
|
||||||
|
|
||||||
1. Setup build environment
|
The libplatsbi.a and blobs are optional and only built when
|
||||||
$ CROSS_COMPILE=riscv64-unknown-linux-gnu-
|
`PLAT=<platform_subdir>` parameter is specified to top-level make.
|
||||||
|
(**NOTE**: `<platform_subdir>` is sub-directory under plat/ directory)
|
||||||
|
|
||||||
2. Build sources
|
To build and install Generic OpenSBI library do the following:
|
||||||
$ make PLAT=<platform_name>
|
|
||||||
|
1. Build **libsbi.a**:
|
||||||
|
`make`
|
||||||
OR
|
OR
|
||||||
$ make PLAT=<platform_name> O=<build_directory>
|
`make O=<build_directory>`
|
||||||
|
2. Install **libsbi.a and headers**:
|
||||||
3. Install blobs
|
`make install`
|
||||||
$ make PLAT=<platform_name> install
|
|
||||||
OR
|
OR
|
||||||
$ make PLAT=<platform_name> I=<install_directory> install
|
`make I=<install_directory> install`
|
||||||
|
|
||||||
|
To build and install platform specific OpenSBI library and blobs
|
||||||
|
do the following:
|
||||||
|
|
||||||
|
1. Build **libsbi, libplatsbi, and blobs**:
|
||||||
|
`make PLAT=<platform_subdir>`
|
||||||
|
OR
|
||||||
|
`make PLAT=<platform_subdir> O=<build_directory>`
|
||||||
|
2. Install **libsbi, headers, libplatsbi, and blobs**:
|
||||||
|
`make PLAT=<platform_subdir> install`
|
||||||
|
OR
|
||||||
|
`make PLAT=<platform_subdir> I=<install_directory> install`
|
||||||
|
|
||||||
|
In addition, we can also specify platform specific command-line
|
||||||
|
options to top-level make (such as `PLAT_<xyz>` or `FW_<abc>`)
|
||||||
|
which are described under `docs/plat/<platform_name>.md` OR
|
||||||
|
`docs/blob/<blob_name>.md`.
|
||||||
|
|
||||||
|
Documentation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
All our documenation is under `docs` directory organized in following
|
||||||
|
manner:
|
||||||
|
|
||||||
|
* `docs/platform_guide.md` - Guidelines for adding new platform support
|
||||||
|
* `docs/library_usage.md` - Guidelines for using static library
|
||||||
|
* `docs/plat/<platform_name>.md` - Documentation for `<platform_name>` platform
|
||||||
|
* `docs/blob/<blob_name>.md` - Documentation for firmware blob `<blob_name>`
|
||||||
|
|
||||||
|
We also prefer source level documentation, so wherever possible we describe
|
||||||
|
stuff directly in the source code. This helps us maintain source and its
|
||||||
|
documentation at the same place. For source level documentation we strictly
|
||||||
|
follow Doxygen style. Please refer [Doxygen manual]
|
||||||
|
(http://www.stack.nl/~dimitri/doxygen/manual.html) for details.
|
Reference in New Issue
Block a user