pw_hal#
Experimental
Pigweed HAL (pw_hal) is a unified Hardware Abstraction Layer providing
clean, modern C++ interfaces and driver abstractions for microcontroller
peripherals.
It builds upon the previous efforts in pw_i2c, pw_spi, etc., by unifying
HAL design across peripherals, adding native support for pw_async2, and
focusing on enabling agentic development of low-level drivers in order to speed
up hardware bring-up and broaden support across many silicon vendors.
Dashboard#
The dashboard below tracks the current status of Pigweed HAL peripheral APIs and driver implementations across roadmap phases.
Peripheral Domain |
Investigation |
Prototype |
API Definition |
First Platform |
Multiple Platforms |
|---|---|---|---|---|---|
GPIO: Pinmux |
|||||
GPIO: Digital IO |
|||||
UART: Buffered |
✔ |
✔ |
✔ |
⛏ |
|
UART: Zero Copy |
✔ |
⛏ |
|||
I2C: Initiator |
✔ |
✔ |
⛏ |
⏱ |
|
I2C: Responder |
⏱ |
||||
I3C: Controller |
|||||
I3C: Target |
|||||
SPI: Controller |
⛏ |
||||
SPI: Target |
|||||
ADC |
|||||
DAC |
|||||
Timer |
|||||
PWM |
Note
✔ - Phase completed.
⛏ - Work is actively underway for this phase.
⏱ - Work is planned but not yet started.
(blank) - Not yet started or planned.
Roadmap phases#
Investigation: Researching requirements, hardware peripheral capabilities, and cross-platform abstraction patterns.
Prototype: Developing experimental interfaces, proof-of-concept drivers, and test harnesses.
API Definition: Standardizing and reviewing abstract driver and controller interfaces in Pigweed HAL.
First Platform: Implementing and validating a complete driver on an initial hardware target with automated testing.
Multiple Platforms: Extending verified driver implementations across multiple distinct silicon architectures and vendor SDKs.
Peripherals under consideration#
These peripherals require additional investigation before including them as
part of the planned pw_hal interface.
Clock Tree
Power Tree
Flash / EEPROM / NVM
QSPI
xSPI / mSPI
DMA
Display
Graphics Acceleration
I2S
Watchdog Timer