diff options
author | Anup Patel <anup.patel@wdc.com> | 2018-12-20 15:53:52 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2018-12-21 04:58:33 +0300 |
commit | ef1f669cb7db5e3aebc390f5bd228cd88ed31a66 (patch) | |
tree | a9da8f79c624dd97adec410810c819e8c0bb8e0c /README.md | |
parent | f02926c8966c2d541c0f74f1e83e9fca6abbaf2c (diff) | |
download | opensbi-ef1f669cb7db5e3aebc390f5bd228cd88ed31a66.tar.xz |
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>
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 86 |
1 files changed, 65 insertions, 21 deletions
@@ -1,37 +1,81 @@ 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: -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 -RISC-V Foundation at https://github.com/riscv/riscv-sbi-doc +1. Platform specific firmware running in M-mode and + 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 -extensible implementation of the SBI spec. This project can be -easily extended by RISC-V platform or RISC-V System-on-Chip vendors. +The **RISC-V SBI specification** is maintained as independent project +by RISC-V Foundation on [Github](https://github.com/riscv/riscv-sbi-doc) +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? ------------- -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. + +The libplatsbi.a and blobs are optional and only built when +`PLAT=<platform_subdir>` parameter is specified to top-level make. +(**NOTE**: `<platform_subdir>` is sub-directory under plat/ directory) -1. Setup build environment -$ CROSS_COMPILE=riscv64-unknown-linux-gnu- +To build and install Generic OpenSBI library do the following: -2. Build sources -$ make PLAT=<platform_name> +1. Build **libsbi.a**: +`make` OR -$ make PLAT=<platform_name> O=<build_directory> +`make O=<build_directory>` +2. Install **libsbi.a and headers**: +`make install` +OR +`make I=<install_directory> install` + +To build and install platform specific OpenSBI library and blobs +do the following: -3. Install blobs -$ make PLAT=<platform_name> install +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_name> I=<install_directory> install +`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.
\ No newline at end of file |