Public reference and demo firmware for Embedded Controllers (EC) built on Open Device Partnership components. This repository contains development targets suitable for experimentation, integration testing, and as a starting point for downstream EC projects.
This repository hosts the three public dev-* development targets and their
shared platform-common library. Vendor- and silicon-specific production
platforms are maintained separately and are not in scope here.
| Crate | Role | Target |
|---|---|---|
platform-common |
Shared no_std library crate — HAL traits, board abstractions, common services |
(library, no build target) |
dev-imxrt |
Development target on NXP i.MXRT685S (Cortex-M33) | thumbv8m.main-none-eabihf |
dev-npcx |
Development target on Nuvoton NPCX498M (Cortex-M4F) | thumbv7em-none-eabihf |
dev-qemu |
Development target under QEMU virt machine (RISC-V 32-bit) |
riscv32imac-unknown-none-elf |
platform-common is consumed by each dev-* crate and contains no platform-specific code.
Toolchain channel and targets are pinned in rust-toolchain.toml:
- Channel:
stable - Pre-installed targets:
thumbv8m.main-none-eabihf,thumbv7em-none-eabihf,riscv32imac-unknown-none-elf - Components:
rust-src,rustfmt,llvm-tools-preview,clippy
All three dev-* targets are installed automatically the first time cargo is
invoked inside this repo; no manual rustup target add is required.
dev-imxrt and dev-npcx link via flip-link
for stack-overflow protection. Install it once:
cargo install flip-link --locked
Build and lint a single platform:
cd platform/<name>
cargo build --locked
cargo clippy --locked -- -D warnings
For example, to build dev-qemu:
cd platform/dev-qemu
cargo build --locked
Format checks are run per crate:
cd platform/<name>
cargo fmt --check
Dependency policy (licenses, sources, advisories) is enforced by
cargo-deny using deny.toml:
cd platform/<name>
cargo deny --locked check
scripts/check-all.sh runs every gate (fmt + build + clippy -D warnings +
cargo-deny) across all three dev-* platforms — the same checks CI runs:
bash scripts/check-all.sh
It installs flip-link on demand and skips cargo-deny gracefully if it
isn't installed. Run it before opening a PR to reproduce CI locally.
linker 'flip-link' not found— buildingdev-imxrtordev-npcxrequiresflip-link. Install withcargo install flip-link --locked.unsupported targetfromsemihosting— make sure you're runningcargofrom inside aplatform/<name>/directory so.cargo/config.tomlis picked up (it sets the build target). Building with--manifest-pathfrom the repo root bypasses the per-platform target config and will fail fordev-qemu.can't find crate for 'core'— the toolchain file targets didn't install. Runrustup showfrom the repo root to force installation, orrustup target add <target>explicitly.
CI lives under .github/workflows/:
check.yml— per-platform fmt, clippy, build, doc, cargo-hack, cargo-deny, cargo-machete, and msrv across the public matrix (dev-imxrt,dev-npcx,dev-qemu).nostd.yml— verifiesplatform-commonanddev-*remainno_std-clean.benchmark.yml,rolling.yml— secondary lanes (binsize tracking ondev-imxrt/dev-npcx; nightly dep update verification).
Code review ownership is defined in CODEOWNERS. Please open issues and PRs
against main.
Licensed under the MIT License. See LICENSE.