What is in ODP?
There are over 60 repositories that make up the whole of the ODP umbrella. Many of these are simply HAL definitions for particular hardware, but others define the critical business logic and data traits that comprise the portable and modular framework ODP provides. Many of the crates defined by these repositories may be interdependent. Other repositories represented here define tools and tests that are useful in development.
Repository | Description | Patina | EC | Security | Tooling | Other |
---|---|---|---|---|---|---|
Developing UEFI with Rust | (Document) An overview of using ODP Patina and Rust, how to contribute to ODP, and how to setup and build DXE Core components. | ✅ | ✅ | |||
patina | This maintains a library of crates that implement Patina UEFI code. | ✅ | ||||
patina-dxe-core-qemu | This repository holds the code responsible for pulling in reusable Rust DXE Core components from Patina libraries, combining these with locally defined custom components, and building the resulting .efi image that may be loaded into the QEMU emulator. | ✅ | ||||
patina-qemu | This repository supplies a QEMU platform firmware that integrates .efi Patina firmware binaries. | ✅ | ||||
patina-fw-patcher | This repository simplifies the iterative turnaround for incremental builds in a workflow, once one has been established, able to forego the full stuart_build process for each code update. | ✅ | ✅ | |||
patina-mtrr | This repository provides a MTRR (Memory Type Range Register) library crate for managing MTRRs on x86_64 architecture. | ✅ | ||||
patina-paging | Common paging support for various architectures such as ARM64 and X64 | ✅ | ||||
embedded_services | Business logic service definitions and code for wrapping and controlling HAL-level component definitions into a service context. | ✅ | ||||
soc-embedded-controller | Demonstration of EC firmware built using ODP components | ✅ | ||||
embedded-batteries | SmartBattery Specification support defining traits for HAL abstraction. | ✅ | ||||
embedded-sensors | Defines the embedded sensors interface for HAL abstraction. Designed for use with embedded-services . | ✅ | ||||
embedded-fans | HAL definition for fan control. Designed for use with embedded-services . | ✅ | ||||
embedded-power-sequence | Abstraction of SoC power on/off via firmware control. | ✅ | ||||
embedded-cfu | Implements commands and responses as structs per the Windows CFU spec. | ✅ | ||||
embedded-usb-pd | common types for usb pd. May be necessary as a dependency for several embedded-services builds. | ✅ | ||||
embedded-mcu | an agnostic set of MCU-related traits and libraries for manipulating hardware peripherals in a generic way. | ✅ | ||||
hid-embedded-controller | Embedded Controller HID library / HID over I2C demo | ✅ | ||||
ec-test-app | Test application to exercise EC functionality through ACPI from the OS | ✅ | ✅ | |||
ffa | FFA for Rust services running under Hafnium through FF-A | ✅ | ✅ | |||
haf-ec-service | Rust services for Hafnium supported EC architectures. | ✅ | ✅ | |||
rust_crate_audits | Aggregated audits for Rust crates by the Open Device Partnership | ✅ | ✅ | |||
uefi-bds | UEFI Boot Device Selection DXE driver | ✅ | ✅ | |||
uefi-corosensei | UEFI fork of the corosensei crate | ✅ | ✅ | |||
modern-payload | Slimmed down UEFI payload | ✅ | ✅ | |||
slimloader | First stage boot loader for AArch64 | ✅ | ✅ | |||
ec-slimloader | A light-weight stage-one bootloader for loading an app image as configured by ec-slimloader-descriptors | ✅ | ✅ | ✅ | ||
ec-slimloader-descriptors | Boot-time application image management descriptors for enabling multi-image firmware boot scenarios, such as those provided by CFU | ✅ | ✅ | ✅ | ||
odp-utilites | A collection of Rust utilities focused on embedded systems development. | ✅ | ✅ | |||
systemview-tracing | Support for adding Segger SystemView tracing to ODP projects | ✅ | ✅ | |||
nxp-header | CLI utility to modify binary firmware image file to add NXP image header | ✅ | ✅ | |||
bq24773 | Driver for TI BQ24773 battery charge controller | ✅ | ✅ | |||
bq25713 | Driver for TI BQ25713 battery charge controller | ✅ | ✅ | |||
bq25730 | Driver for TI BQ25730 battery charge controller | ✅ | ✅ | |||
bq25770g | Driver for TI BQ2577G battery charge controller | ✅ | ✅ | |||
bq25773 | Driver for TI BQ25773 battery charge controller | ✅ | ✅ | |||
bq40z50 | Driver for TI BQ40Z50 Li-ion battery pack manager | ✅ | ✅ | |||
tmp108 | Driver for TI TMP108 digital temperature sensor | ✅ | ✅ | |||
cec17-data | Single meta-PAC supporting all variants within the MEC/CEC family of MCUs produced by Microchip | ✅ | ✅ | |||
mec17xx-pac | Peripheral Access Crate (PAC) for the Microchip MEC17xx family of MCUs | ✅ | ✅ | |||
mimxrt633s-pac | Embedded PAC for NXP RT633s MCU | ✅ | ✅ | |||
mimxrt685s-pac | Rust PAC created with svd2rust for MIMXRT685s family of MCUs | ✅ | ✅ | |||
mimxrt685s-examples | Collection of examples demonstrating the use of the mimxrt685s-pac crate | ✅ | ✅ | |||
npcx490m-pac | Embedded PAC for Nuvoton NPCX490M MCU | ✅ | ✅ | |||
npcx490m-examples | Examples for Nuvoton NPCX490M Embedded PAC | ✅ | ✅ | |||
embedded-regulator | Embedded HAL for system voltage regulators | ✅ | ✅ | |||
embedded-keyboard-rs | Driver for embedded system matrix keyboards | ✅ | ✅ | |||
rt4531 | Driver for Richtek RT4531 keyboard backlight controller | ✅ | ✅ | |||
tps65994ae | Driver for TI TPS65994AE USB-C power delivery controller | ✅ | ✅ | |||
tps6699x | Driver for TI TPS6699x USB-C power delivery controller | ✅ | ✅ | |||
is31fl3743b | Driver for Lumissil IS31FL3743B LED matrix controller | ✅ | ✅ | |||
pcal6416a | Rust driver for IO Expander pcal6416a | ✅ | ✅ | |||
embassy-imxrt | Embassy HAL for NXP IMXRT MCU family | ✅ | ✅ | |||
embassy-microchip | Embassy HAL for Microchip MEC17xx and MEC16xx series MCUs | ✅ | ✅ | |||
embassy-npcx | Embassy HAL for Nuvoton NPCX MCU family | ✅ | ✅ | |||
lis2dw12-i2c | Rust driver for STMicroelectronics LIS2DW12 accelerometer | ✅ | ✅ | |||
mimxrt600-fcb | Flash Control Block for MIMXRT600 MCUs | ✅ | ✅ | |||
MX25U1632FZUI02 | Rust based driver for flash part MACRONIX/MX25U1632FZUI02 | ✅ | ✅ |