Embedded Rust
Embedded Rust 表示 Rust 代码运行在 MCU、driver、firmware 或硬件 bring-up 环境中,通常涉及 no_std、Embassy、esp-hal、STM32/ESP32、probe-rs、espflash 或 embedded-hal。它不是所有 Rust 项目的泛化标签。
- 硬件
目录
Definition
Embedded Rust 表示 Rust 代码运行在 MCU、driver、firmware 或硬件 bring-up 环境中,通常涉及 no_std、Embassy、esp-hal、STM32/ESP32、probe-rs、espflash 或 embedded-hal。它不是所有 Rust 项目的泛化标签。
这个 Topic 要保留的是硬件运行环境对代码、工具链和验证方式的约束:target triple、HAL、probe/serial backend、flash artifact、board wiring、feature flags 和真实硬件缺口都比普通 Rust service 更重要。项目快照必须说明 Rust 是跑在 MCU/driver 侧,还是仅作为 host/backend 工具存在(projects/loadlynx.md、projects/gc9d01-rs.md)。
When to use
当 Cargo.toml、firmware 目录或 README 明确说明 MCU/driver/board 目标时使用。若 Rust 只是后端服务,应使用 Rust web service。
如果改动需要 probe-rs、espflash、Embassy executor、embedded-hal traits、no_std display/bus driver、board support package 或硬件在环验证,就应命中本 Topic。若证据只显示 Axum/Tokio/SQLx HTTP 服务,哪怕语言是 Rust,也应归入 Rust web service 而非 embedded(projects/codex-vibe-monitor.md)。
Habits / defaults
- 把 flashing/debug backend 的关键参数与项目配置或 manifest 一起维护,避免每次 Agent 猜命令。
- 双 MCU 项目要保留 target 边界;
projects/loadlynx.md区分 STM32G431 analog 和 ESP32-S3 digital。 - driver crate 要保留 embedded-hal/embedded-graphics feature 语义;
projects/gc9d01-rs.md是代表。 - 硬件项目的 CI build 不等价于硬件验证,snapshot 要保留证据缺口。
- 记录 toolchain 和 flashing path 时要引用配置或 manifest,避免 Agent 从主机环境猜命令。
Cargo.toml、.cargo/config*、README 的 board 说明都属于关键证据(projects/loadlynx.md、projects/pd-sink-stm32g431cbu6-rs.md)。 - driver crate 的 reusable decision 往往在 feature flags、trait bounds 和示例中,而不是在 UI 或 release workflow;写项目快照时要把
embedded-hal、embedded-graphics、I2C/SPI bus 语义单独提出来(projects/gc9d01-rs.md)。 - 涉及真实板子的结论默认标明验证层级:编译通过、成功 flash、串口日志正常、外设行为正确是四种不同证据,不能互相替代(
projects/loadlynx.md)。
Reference implementations
projects/loadlynx.md:STM32G431 + ESP32-S3 分体式电子负载,适合说明多 target 边界、各自 artifact 和板级验证证据不能混写。projects/flux-purr.md:ESP32-S3 firmware 与 host preview 共存,适合说明 firmware 编译、设备验证和 React console 验证是三条不同链路。projects/pd-sink-stm32g431cbu6-rs.md:USB PD sink / PowerVista firmware,适合说明 STM32 target、probe/backend 参数和硬件行为缺口如何进入项目快照。projects/gc9d01-rs.md:no_std display driver crate,适合说明 embedded-hal、feature flags、总线接口和 host-side 测试之间的边界。projects/mains-aegis.md:firmware、Web UI 与文档共存的设备项目,适合说明 Rust 固件知识不能被 Web 服务或管理界面知识覆盖。
Failure modes
- 把 embedded Rust 与 Rust web service 混淆,会让 Agent 跑错验证工具。
- 没有硬件证据却声称 feature 完成,会污染项目记忆。
- path/submodule 依赖升级可能破坏 toolchain。
- 只跑
cargo test或 host build 就声明硬件行为正确,是 embedded 项目最常见的虚假完成。项目快照应明确哪些结论来自编译,哪些仍需要板级验证(projects/loadlynx.md)。 - flash 命令散落在 README 或 shell history,会造成刷错芯片、串口冲突或 probe 争用;应把 backend、chip、artifact 和 selector 写进 checked-in project configuration,并与
MCU flashing integration一起维护(projects/loadlynx.md)。
Evidence index
projects/loadlynx.mdprojects/flux-purr.mdprojects/pd-sink-stm32g431cbu6-rs.mdprojects/gc9d01-rs.md
相关内容
bq25730-rs
项目实践Rust no_std driver crate for TI BQ25730 (battery/charger management), built on embedded-hal with async/sync support. Evidence: Cargo.toml, src/.
bq769x0-async-rs
项目实践Rust no_std driver crate for TI BQ769x0 battery monitor/management family, based on embedded-hal with async/sync support. Evidence: Cargo.toml, src/.
Codex Vibe Monitor
项目实践Codex Vibe Monitor 是面向自部署的 OpenAI 兼容代理观测工作台:它接入 /v1/* HTTP / WebSocket 流量,将调用留证、实时 SSE、历史统计、请求排障、上游账号池、forward proxy、价格目录和 SQLite 持久化收在同一套运营界面中。
display-ambient-light-board-rs
项目实践Rust firmware/support crate for an ambient-light controller board, with a plan doc and examples. Evidence: README.md, Cargo.toml, PLAN.md.
Flux Purr
项目实践Flux Purr 是 embedded firmware + React control console 的设备 mono-repo。README.md 将仓库组织为 firmware/、web/、tools/flux-purr-devd/、docs/specs/、docs/hardware/、.
ft6336u-async
项目实践Rust driver crate for the FT6336U touch controller, supporting both sync and async usage via feature/config gating. Evidence: Cargo.toml, src/.
FUSB302 Rust PHY Driver
项目实践fusb302 是面向 FUSB302B/FUSB302BMPX 的 no_std Rust USB Type-C 和 USB Power Delivery BMC PHY driver。它提供寄存器级控制、Type-C 电气控制、VBUS comparator、interrupt/FIFO 和 PD packet transport;README.
gc9307-async-rs
项目实践Rust no_std driver crate for GC9307 display controller, designed for embedded usage with async support. Evidence: Cargo.toml, src/.
GC9D01 Rust Driver
项目实践GC9D01 Rust Driver 是 no_std Rust LCD display controller driver,面向 GC9D01 面板并提供 embedded-graphics 支持。README.md 和 Cargo.toml 都把 crate 名确认为 gc9d01,仓库 slug gc9d01-rs 只是 GitHub 命名。
ina3221-async-rs
项目实践Rust no_std driver crate for TI INA3221 3-channel voltage/current monitor over I2C. Evidence: Cargo.toml, src/.
IsolaPurr USB Hub
项目实践IsolaPurr USB Hub 是带 USB-C 上行、USB-C 下行和 USB-A 下行的有源 USB 集线器/供电模块。README.md 记录 CH334P、URB2405S、CH224Q、TPS55288、SW2303/IP6557、DC5025 输入和理想二极管 OR-ing 等硬件方案,说明这是硬件/固件/Web/文档一体的 device mono-repo。
IsolaRail
项目实践IsolaRail 是当前 V3 四口 USB hub 的 owner-facing control plane 仓库。README.md 把它定义为 ESP32-S3 + CH335F + M24C64@0x50 + EN1..
LoadLynx
项目实践LoadLynx 是 STM32G431 + ESP32-S3 便携式电子负载。README.md 明确采用分体式架构:STM32G431 执行快速电流/功率闭环与保护,ESP32-S3 负责 UI/Wi-Fi/OTA/记录/标定及上位机桥接。这是典型 device mono-repo,不能只从一个 firmware 目录理解。
Mains Aegis
项目实践Mains Aegis 是 UPS / power-management 设备 mono-repo:它把硬件行为文档、ESP32-S3 固件、Web 管理界面、docs-site、前面板/音频预览工具和质量门禁放在同一个维护边界里。PRODUCT.md 明确把 Web 管理界面定义为面向多设备 UPS 的只读运维控制台,首要目标是让维护者快速判断设备健康、离线、后备供电和告警状态,而不是做可写控制台。
MCU Agentd
项目实践MCU Agentd 是可配置 MCU 管理工具,包含每项目 daemon/CLI mcu-agentd 和用户级辅助 daemon mcu-managerd。README.md 明确它通过 mcu-agentd.toml 定义多个 MCU target,并基于 espflash 与 probe-rs 执行操作,当前 v1 只支持 ELF artifact 和固定策略。
network-monitor-esp-rs-no-std
项目实践Rust no_std embedded firmware project for an ESP target, with a small display component and pinned toolchain. Evidence: Cargo.toml, rust-toolchain.toml, st7735/.
pca9546a-rs
项目实践Rust no_std driver crate for PCA9546A 4-channel I2C multiplexer, based on embedded-hal. Evidence: Cargo.toml, src/.
PowerVista PD Sink Firmware
项目实践PowerVista PD Sink Firmware 是 STM32G431CBU6 上的多功能实时电源监控与 USB PD sink 固件。README.md 的项目名是 PowerVista,功能清单包括电压/电流/功率实时显示、PPS request、保护策略、重力感应旋转和配置存储;catalog slug pd-sink-stm32g431cbu6-rs 只是仓库 ID,不应作为人类标题。
power-desk
项目实践Rust-based project for an ESP32-C3 power management device, with a web-based configuration tool and verification docs. Evidence: Cargo.toml, README_WIFI_CONFIG.md, web-config-tool/.
sc8815-rs
项目实践Rust driver crate for SC8815 power management IC, targeting embedded systems with no_std and embedded-hal integration. Evidence: Cargo.toml, src/.
sk150c-kit
项目实践Rust firmware project for controlling an adjustable power supply module (STM32G431CBU6), with developer guides (CN/EN), models, and scripts. Evidence: README.md, Cargo.toml, DEVELOPER_GUIDE.md.
stm32g4-flash-programmer
项目实践Tooling repo for programming/flashing STM32G4 devices; includes multiple Rust crates (firmware/host/protocol) plus examples and scripts. Evidence: README.md, firmware/Cargo.toml, host-tool/Cargo.toml, protocol/Cargo.
sw2303-rs
项目实践Rust embedded-hal driver for SW2303 USB PD controller, providing async/sync support for embedded firmware usage. Evidence: Cargo.toml, src/.
tca6424-rs
项目实践Rust no_std embedded-hal driver for TI TCA6424 I/O expander, supporting async and sync features. Evidence: Cargo.toml, src/.
tps55288-rs
项目实践Rust driver skeleton for TI TPS55288 buck-boost converter over I2C, intended for no_std embedded environments. Evidence: Cargo.toml, src/.
ups120
项目实践Rust embedded firmware + libraries for an “UPS120” device, with supporting docs, scripts, and structured submodules for chip drivers/components. Evidence: README.md, firmware/, libs/, rust-toolchain.toml.
xca9545a-async-rs
项目实践Rust embedded-hal driver for PCA9545A/TCA9545A I2C switch with optional async support (embedded-hal 1.0). Evidence: Cargo.toml, src/.