https://github.com/riscv-software-src/librpmi
Reference implementation of RPMI specification as a library.
https://github.com/riscv-software-src/librpmi
Last synced: about 2 months ago
JSON representation
Reference implementation of RPMI specification as a library.
- Host: GitHub
- URL: https://github.com/riscv-software-src/librpmi
- Owner: riscv-software-src
- License: other
- Created: 2024-06-11T11:16:27.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-02-28T03:41:32.000Z (3 months ago)
- Last Synced: 2025-04-01T11:50:33.745Z (2 months ago)
- Language: C
- Size: 423 KB
- Stars: 9
- Watchers: 5
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: COPYING.BSD
Awesome Lists containing this project
README
## librpmi - RPMI Protocol Implementation
## Introduction
The librpmi is an implementation of [RISC-V Platform Management Interface](https://github.com/riscv-non-isa/riscv-rpmi).The librpmi implements RPMI shared memory transport, RPMI message protocol and
various Service groups and Services as defined in the RPMI specification.
The librpmi can be used by -
1. RISC-V platform vendors to implement RPMI services in their
platform microcontroller firmware.2. System-level partitions to implement RPMI services running as
separate OpenSBI domain3. Hypervisors/emulators/simulators to emulate RPMI services for the Guest/VM
### Features
- RPMI Transport (shared memory)
- Multiple RPMI shared memory based transports capability.
- Configurable transport where service groups can be enabled or disabled
for specific transport (except Base group).
- RPMI Service Groups
- [x] Base
- [x] System Reset
- [x] System Suspend
- [x] Hart State Management
- [x] Clock
- [x] CPPC
- Platform HAL interface.
- Test framework to test librpmi which is easy to extend and add more service
group test cases.
- HTML and PDF documentation generated by doxygen.> The librpmi is a new project and is in development. More capabilities and
service groups will be added soon.## Development
The librpmi supports GNU Make and comes with a simple Makefile generates
`librpmi.a` under `build` directory and test applications in `build\test`
directory.### librpmi.a
```
// defaut without debug logs and tests, compiler optimizations are on
make// Enable debug logs and build tests, compiler optimizations are off
make LIBRPMI_TEST=y LIBRPMI_DEBUG=y// Cross compilation
make CROSS_COMPILE=
```
The platform vendors may also integrate librpmi sources directly into the
platform microcontroller firmware and extend firmware build system to
build the librpmi sources rather than using `librpmi.a`.## Documentation
The librpmi supports doxygen which can generate both html and pdf
documentation under `build\docs` directory.
```
make docs
```This generates pdf file `build/docs/latex/refman.pdf` and html documentation
at `build/docs/html`.## Test
Build test binaries -
```
make LIBRPMI_TEST=y
```
Refer: [README in test folder](test/README.md)## License
The librpmi is provided under [2-Clause BSD License](COPYING.BSD)