用途
该技能用于在开发嵌入式或 no_std Rust 时提供领域约束与设计指导。关键词包括 embedded、no_std、microcontroller、MCU、ARM、RISC-V、bare metal、firmware、HAL、PAC、RTIC、embassy 等。
主要能力
技能围绕嵌入式领域的核心约束展开,说明每条领域规则对应的设计约束与 Rust 实现方式:
- 无堆:栈分配,使用 heapless,不使用 Box/Vec。
- 无 std:仅使用 core,采用 #![no_std]。
- 实时性:可预测时序,不使用动态分配。
- 资源受限:最小化内存,使用静态缓冲区。
- 硬件安全:安全的外设访问,采用 HAL 加所有权。
- 中断安全:ISR 中不阻塞,使用原子操作与临界区。
关键约束包括:
- 无动态分配:不能使用堆(无分配器),原因是确定性内存、避免 OOM,Rust 实现为 heapless::Vec<T, N> 与数组。
- 中断安全:共享状态必须中断安全,原因是 ISR 可随时抢占,Rust 实现为 Mutex<RefCell<T>> 加临界区。
- 硬件所有权:外设必须有明确所有权,原因是防止冲突访问,Rust 实现为 HAL 取得所有权、单例模式。
技能还给出从约束到设计的追踪路径,例如需要 no_std 兼容数据结构时使用 heapless 集合与静态尺寸;需要中断安全状态时使用 Mutex<RefCell<Option<T>>> 与临界区;需要外设所有权时使用单例模式与 RAII。
使用方式
技能包含项目上下文自动注入,会尝试读取 .cargo/config.toml 以获取目标配置。
技能梳理了分层结构:PAC(如 stm32f4、esp32c3)用于寄存器访问;HAL(如 stm32f4xx-hal)用于硬件抽象;框架(RTIC、Embassy)用于并发;Traits(embedded-hal)用于可移植驱动。
框架对比:RTIC 为优先级驱动,适合中断驱动应用;Embassy 为异步风格,适合复杂状态机;裸机为手动方式,适合简单应用。
常用 crate 包括:运行时(ARM)cortex-m-rt;panic 处理器 panic-halt、panic-probe;集合 heapless;HAL traits embedded-hal;日志 defmt;烧录/调试 probe-run。
设计模式包括:no_std 设置(#![no_std] + #![no_main]);入口点(#[entry] 或 embassy);静态状态(Mutex<RefCell<Option<T>>>);固定缓冲区(heapless::Vec<T, N>)。
技能提供了静态外设的代码模式,展示如何使用 cortex_m::interrupt::Mutex、core::cell::RefCell、静态 LED 状态、#[entry] 入口、外设 take、临界区中替换与访问外设。
常见错误与修正:使用 Vec 属于堆分配,应改用 heapless::Vec;缺少临界区会与 ISR 产生竞态,应使用 Mutex 加 interrupt::free;在 ISR 中阻塞会丢失中断,应推迟到主循环;不安全外设会导致硬件冲突,应使用 HAL 所有权。
适用场景
适用于开发嵌入式、no_std、微控制器、ARM、RISC-V、裸机、固件等 Rust 项目,尤其是需要处理无堆、无 std、实时性、资源受限、硬件安全与中断安全的场景。
限制
资料未提供该技能的具体安装命令、收费方式、价格、平台支持范围或实际效果说明,这些信息暂未提供。