Hacker News 中文摘要

RSS订阅

使馆:基于Rust与异步的现代嵌入式框架 -- Embassy: Modern embedded framework, using Rust and async

文章摘要

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"的缩写。

评论总结

以下是评论内容的总结:

正面评价

  1. 使用体验良好

    • 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"
  2. 硬件支持与生态系统

    • the__alchemist:统一了不同MCU的硬件访问,STM32支持优于早期基于Trait的HAL。
      "unified hardware access... step up from initial Trait-based HALs"
    • bfrog:微软已将其用于嵌入式控制器开发。
      "used by Microsoft for EC"
  3. 学习资源与社区

    • Svoka:推荐YouTube教程,从基础到使用Embassy的完整学习路径。
      "videos of journey... to using Embassy"
    • n8henrie:初学者通过esp32c3和Embassy成功完成MQTT项目。
      "enjoyed learning... with esp-rs and embassy"

争议与批评

  1. 异步编程的争议

    • 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?"
  2. 早期阶段的不稳定性

    • rhinoceraptor:BLE功能API变动频繁,需固定Git版本。
      "APIs were changing... required pinning git revisions"

其他相关推荐

  • kaspar030:提及基于Embassy的Ariel OS。
  • mrdataesq:推荐异步Rust的RTIC框架。
  • brcmthrowaway:询问ESP8266支持(未直接回应)。

新手疑问

  • stack_framer:寻求嵌入式开发入门建议(非Embassy直接相关)。

总结:Embassy因其异步设计、硬件抽象和低资源占用受到多数开发者认可,但异步模式是否适合所有嵌入式场景存在分歧。早期项目的不稳定性和学习曲线也被提及。