文章摘要
Embassy是一个基于Rust语言和异步编程的现代嵌入式开发框架,专注于为嵌入式系统提供高效的开发工具和解决方案。该项目托管在GitHub上,旨在简化嵌入式软件开发流程。
文章总结
Embassy - 现代嵌入式框架
Embassy是一个基于Rust编程语言和异步特性的下一代嵌入式应用开发框架,旨在帮助开发者更快地编写安全、正确且节能的嵌入式代码。
核心特性
- Rust + 异步:利用Rust的内存安全和线程安全特性,结合异步/await实现高效的多任务处理
- 时间管理:提供全局可用的Instant、Duration和Timer类型
- 实时支持:支持多优先级任务调度
- 低功耗设计:空闲时自动休眠CPU
- 丰富组件:
- 硬件抽象层(HAL):支持STM32、Nordic nRF系列、RP2040等
- 网络协议栈:支持TCP/IP、UDP、DHCP等
- 蓝牙支持:BLE 4.x/5.x
- USB协议栈:支持设备端实现
- 引导加载程序:支持固件安全升级
开发资源
- 文档:https://embassy.dev/book/
- API参考:https://docs.embassy.dev/
- 社区聊天:Matrix #embassy-rs:matrix.org
示例代码
```rust
[embassy_executor::task]
async fn blink(pin: Peri<'static, AnyPin>) { let mut led = Output::new(pin, Level::Low, OutputDrive::Standard); loop { led.sethigh(); Timer::aftermillis(150).await; led.setlow(); Timer::aftermillis(150).await; } } ```
项目状态
- 许可证:Apache-2.0/MIT/CC-BY-SA-4.0
- GitHub星标:8.2k
- 贡献者:634人
- 最低Rust版本:1.75
项目名称"Embassy"源自"EMBedded ASYnc"的缩写。
评论总结
以下是评论内容的总结:
正面评价
使用体验良好
- mentar:用于构建LoRa中继非常流畅,问题主要来自Nordic的SoftDevice而非Embassy代码。
"it's actually very smooth for the most part... panics are from the Nordic's SoftDevice" - hannesfur:赞赏Embassy展示了异步Rust的优势,无需堆分配,适合单核芯片并发。
"a great example of why async Rust is so great... works without a heap"
- mentar:用于构建LoRa中继非常流畅,问题主要来自Nordic的SoftDevice而非Embassy代码。
硬件支持与生态系统
- the__alchemist:统一了不同MCU的硬件访问,STM32支持优于早期基于Trait的HAL。
"unified hardware access... step up from initial Trait-based HALs" - bfrog:微软已将其用于嵌入式控制器开发。
"used by Microsoft for EC"
- the__alchemist:统一了不同MCU的硬件访问,STM32支持优于早期基于Trait的HAL。
学习资源与社区
- Svoka:推荐YouTube教程,从基础到使用Embassy的完整学习路径。
"videos of journey... to using Embassy" - n8henrie:初学者通过esp32c3和Embassy成功完成MQTT项目。
"enjoyed learning... with esp-rs and embassy"
- Svoka:推荐YouTube教程,从基础到使用Embassy的完整学习路径。
争议与批评
异步编程的争议
- the__alchemist:异步模式导致生态系统分裂,可能不适合所有嵌入式场景。
"splitting the ecosystem along Async is not ideal... not my cup of tea" - adastra22:质疑异步是否能提供硬实时保证。
"what does async have to do with hard real-time guarantees?"
- the__alchemist:异步模式导致生态系统分裂,可能不适合所有嵌入式场景。
早期阶段的不稳定性
- rhinoceraptor:BLE功能API变动频繁,需固定Git版本。
"APIs were changing... required pinning git revisions"
- rhinoceraptor:BLE功能API变动频繁,需固定Git版本。
其他相关推荐
- kaspar030:提及基于Embassy的Ariel OS。
- mrdataesq:推荐异步Rust的RTIC框架。
- brcmthrowaway:询问ESP8266支持(未直接回应)。
新手疑问
- stack_framer:寻求嵌入式开发入门建议(非Embassy直接相关)。
总结:Embassy因其异步设计、硬件抽象和低资源占用受到多数开发者认可,但异步模式是否适合所有嵌入式场景存在分歧。早期项目的不稳定性和学习曲线也被提及。