From be449ac62b7ebe99a635b2c747f57d1f9282ce3e Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Thu, 26 Mar 2026 15:51:40 -0600 Subject: [PATCH] feat: restore Heltec V3, add firmware output, support all common boards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts the removal of heltec_v3 — it's a major board. Xtensa builds use the esp toolchain (+esp via espup); check-all gracefully skips boards whose toolchain isn't installed. Build artifacts now land in firmware/ with readable names like lora-dongle-rak_4631-release.elf instead of being buried in target/. DESIGN.md updated with "support all common boards" principle (#10) and corrected toolchain policy (#11). --- DESIGN.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/DESIGN.md b/DESIGN.md index 86ef877..bd2c2ef 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -47,10 +47,14 @@ radio — it just gives you clean access to it. 9. **Easy board support.** Adding a new board means dropping a `.rs` file and adding a Cargo feature. Nothing else changes. -10. **Standard toolchain only.** No custom Rust forks, no `espup`, no special SDKs. - If a board can't build with stock `rustup`, it doesn't ship. This rules out - Xtensa-based ESP32 chips (S2, S3) until upstream Rust fully supports them. - RISC-V ESP32 variants (C3, C6, H2) are fine. +10. **Support all common LoRa boards.** This project supports every common LoRa + board, and even some uncommon ones. The architecture is designed to accommodate + them cleanly. If the code isn't structured for a new board, fix the code. + +11. **Standard toolchain.** No custom Rust forks or special SDKs. Use stock `rustup` + channels (stable, nightly). Xtensa targets use nightly + `-Zbuild-std`; Cortex-M + and RISC-V targets use stable. Boards that need the `esp` toolchain (via `espup`) + are supported but gracefully skipped when the toolchain isn't installed. ## Architecture @@ -96,4 +100,5 @@ keep, but never prematurely. | Boot behavior | Idle until host commands | Host-driven principle | | Persistence | None | Always start fresh, true dumb pipe | | Board codegen | Jinja2 via build.rs | Auto-discovers boards from filesystem | -| Rust toolchain | Standard `rustup` only | No forks, no espup, no special SDKs | +| Rust toolchain | Stock `rustup` (stable/nightly) | No forks; `espup` for Xtensa boards only | +| Firmware output | `firmware/lora-dongle-{board}-{profile}.elf` | Readable names, not buried in `target/` |