Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

RepositoryDescriptionPatinaECSecurityToolingOther
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.
patinaThis maintains a library of crates that implement Patina UEFI code.
patina-dxe-core-qemuThis 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-qemuThis repository supplies a QEMU platform firmware that integrates .efi Patina firmware binaries.
patina-fw-patcherThis 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-mtrrThis repository provides a MTRR (Memory Type Range Register) library crate for managing MTRRs on x86_64 architecture.
patina-pagingCommon paging support for various architectures such as ARM64 and X64
embedded_servicesBusiness logic service definitions and code for wrapping and controlling HAL-level component definitions into a service context.
soc-embedded-controllerDemonstration of EC firmware built using ODP components
embedded-batteriesSmartBattery Specification support defining traits for HAL abstraction.
embedded-sensorsDefines the embedded sensors interface for HAL abstraction. Designed for use with embedded-services.
embedded-fansHAL definition for fan control. Designed for use with embedded-services.
embedded-power-sequenceAbstraction of SoC power on/off via firmware control.
embedded-cfuImplements commands and responses as structs per the Windows CFU spec.
embedded-usb-pdcommon types for usb pd. May be necessary as a dependency for several embedded-services builds.
embedded-mcuan agnostic set of MCU-related traits and libraries for manipulating hardware peripherals in a generic way.
hid-embedded-controllerEmbedded Controller HID library / HID over I2C demo
ec-test-appTest application to exercise EC functionality through ACPI from the OS
ffaFFA for Rust services running under Hafnium through FF-A
haf-ec-serviceRust services for Hafnium supported EC architectures.
rust_crate_auditsAggregated audits for Rust crates by the Open Device Partnership
uefi-bdsUEFI Boot Device Selection DXE driver
uefi-corosenseiUEFI fork of the corosensei crate
modern-payloadSlimmed down UEFI payload
slimloaderFirst stage boot loader for AArch64
ec-slimloaderA light-weight stage-one bootloader for loading an app image as configured by ec-slimloader-descriptors
ec-slimloader-descriptorsBoot-time application image management descriptors for enabling multi-image firmware boot scenarios, such as those provided by CFU
odp-utilitesA collection of Rust utilities focused on embedded systems development.
systemview-tracingSupport for adding Segger SystemView tracing to ODP projects
nxp-headerCLI utility to modify binary firmware image file to add NXP image header
bq24773Driver for TI BQ24773 battery charge controller
bq25713Driver for TI BQ25713 battery charge controller
bq25730Driver for TI BQ25730 battery charge controller
bq25770gDriver for TI BQ2577G battery charge controller
bq25773Driver for TI BQ25773 battery charge controller
bq40z50Driver for TI BQ40Z50 Li-ion battery pack manager
tmp108Driver for TI TMP108 digital temperature sensor
cec17-dataSingle meta-PAC supporting all variants within the MEC/CEC family of MCUs produced by Microchip
mec17xx-pacPeripheral Access Crate (PAC) for the Microchip MEC17xx family of MCUs
mimxrt633s-pacEmbedded PAC for NXP RT633s MCU
mimxrt685s-pacRust PAC created with svd2rust for MIMXRT685s family of MCUs
mimxrt685s-examplesCollection of examples demonstrating the use of the mimxrt685s-pac crate
npcx490m-pacEmbedded PAC for Nuvoton NPCX490M MCU
npcx490m-examplesExamples for Nuvoton NPCX490M Embedded PAC
embedded-regulatorEmbedded HAL for system voltage regulators
embedded-keyboard-rsDriver for embedded system matrix keyboards
rt4531Driver for Richtek RT4531 keyboard backlight controller
tps65994aeDriver for TI TPS65994AE USB-C power delivery controller
tps6699xDriver for TI TPS6699x USB-C power delivery controller
is31fl3743bDriver for Lumissil IS31FL3743B LED matrix controller
pcal6416aRust driver for IO Expander pcal6416a
embassy-imxrtEmbassy HAL for NXP IMXRT MCU family
embassy-microchipEmbassy HAL for Microchip MEC17xx and MEC16xx series MCUs
embassy-npcxEmbassy HAL for Nuvoton NPCX MCU family
lis2dw12-i2cRust driver for STMicroelectronics LIS2DW12 accelerometer
mimxrt600-fcbFlash Control Block for MIMXRT600 MCUs
MX25U1632FZUI02Rust based driver for flash part MACRONIX/MX25U1632FZUI02