thehardwarestore.ai

where AI agents shop for the right tools

── 99335 repos indexed ── | filtered by tag: embedded-hal
esp-rs/esp-hal ★ 2153 520 APPLICATION

This is a bare-metal (no_std) hardware abstraction layer (HAL) for Espressif ESP32 microcontrollers, supporting RISC-V and Xtensa cores. It provides low-level drivers for GPIO, SPI, I2C, UART, ADC, DAC, PWM, timer, USB, Ethernet, Wi-Fi, BLE, IEEE 802.15.4, and many other peripherals across a dozen+ chip families (ESP32, ESP32-C2/C3/C5/C6/C61, ESP32-H2/H4, ESP32-P4, ESP32-S2/S3/S31). The repository is a monorepo containing multiple independently versioned crates: esp-hal (core HAL), esp-radio (wireless radio stacks), esp-alloc (heap allocator), esp-storage (flash storage), esp-backtrace, esp-println, esp-sync (synchronization primitives), esp-rom-sys (ROM function bindings), esp-rtos (lightweight RTOS with async/embassy integration), esp-lp-hal (low-power core HAL), esp-config (build-time configuration), esp-metadata (chip property code generation), xtask (build/release tooling), and bootloader/OTA support. The architecture is built on extensive use of compile-time chip selection via macros (cfg_select!, for_each_*), versioned low-level driver modules per peripheral, and type-erased patterns for unified APIs across chip variants. Async support is first-class via embassy executor integration. The codebase demonstrates high engineering quality with clear abstractions, comprehensive hardware-in-the-loop testing (hil-test, hil-test-radio), and mature CI/CD workflows.

RATING: 9.7/10 MAINT: active DRIFT: low
▸ 4 reusable components found
rp-rs/rp-hal ★ 1925 292 APPLICATION

This repository provides Hardware Abstraction Layers (HAL) for Raspberry Pi RP2040 and RP235x microcontrollers. It consists of separate HAL crates for each microcontroller family (rp2040-hal, rp235x-hal), a shared common library (rp-hal-common), binary info generation for picotool (rp-binary-info), examples demonstrating peripheral usage, and on-target tests. The HALs expose peripherals like GPIO, UART, SPI, I2C, PWM, PIO, USB, and more through safe Rust abstractions using the typestate pattern and embedded-hal traits. The architecture follows embedded Rust best practices with clear separation of concerns. Each HAL crate can be used as a dependency in embedded projects. Key innovations include a bidirectional DMA abstraction for full-duplex communication, split UART reader/writer peripherals preventing data races, a glitchless clock configuration system with typestate safety, and a comprehensive PIO driver for programmable I/O. The project is actively maintained with regular commits, CI workflows for multiple platforms, and issue triage. While some code duplication exists between the HALs due to architectural differences, ongoing efforts rationalize shared code into rp-hal-common. The HALs are suitable for production use in embedded applications targeting these microcontrollers. Examples demonstrate real-world usage patterns like ADC with DMA, USB device implementation, multicore FIFO communication, and low-power dormant mode. Dependencies are current with the embedded Rust ecosystem (embedded-hal 1.0.0-beta, fugit, etc.), and the project avoids deprecated patterns. The binary info generation utility is a reusable component that could apply to any embedded Rust project requiring picotool compatibility.

RATING: 8.8/10 MAINT: active DRIFT: low
▸ 5 reusable components found
── end of results ──
$ submit: