Rust¶
OpenSiFli 正在 OpenSiFli/sifli-rs 开展 Rust 相关工作,仓库包含 HAL、PAC、Flash Table crate、示例以及烧录/调试说明。
维护者说明该项目仍在开发中,尚不适合用于量产。除非团队能够贴近硬件开发,并准备好向上游贡献修复,否则应将 Rust 在 SF32 上的使用限定在探索阶段。
如需搭建初始工具链、原样构建 Blinky 示例并配置烧录 runner,请参阅 Rust 快速开始。本页用于评估当前支持范围,并判断是否在该基线之上继续采用 Rust。
OpenSiFli 提及的 crate¶
表:OpenSiFli 提及的 crate
| Crate | 用途 |
|---|---|
sifli-hal |
硬件抽象层。 |
sifli-pac |
外设访问 crate。 |
sifli-flash-table |
Flash Table 支持。 |
适合使用 Rust 的情况¶
如果你有以下目标,可以考虑使用 Rust:
- 尝试嵌入式 Rust 开发。
- 在底层固件代码中使用强类型。
- 为将来采用
embedded-hal风格的驱动打基础。 - 为 SF32 Rust 生态作出贡献。
当前量产固件应使用 SiFli-SDK。
评估检查点¶
开始产品移植前,先确认用于初次上手的基线配置能在目标开发板上正常运行。随后,针对每个所需外设、Flash 布局、调试路径和运行时功能分别进行验证。每项结果都应记录上游 commit、Rust target、Cargo 配置、开发板修订版和恢复流程。
仓库使用 sifli-hal、sifli-pac、Flash Table 工具以及 Embassy 风格的异步示例,因此应用能否正常运行,不仅取决于某个 crate 能否编译,也取决于这些组件能否协同工作。排查功能缺口时,应尽量保留最小的复现示例。
风险检查表¶
- crate 是否支持具体的目标芯片型号?
- HAL 是否覆盖所需外设?
- Flash 布局是否与开发板兼容?
- 文档是否说明了适用于所用探针/工具的调试流程?
- 能否使用 SiFli-SDK 或
sftool恢复同一块开发板? - 团队是否具备贡献修复的能力和意愿?
适合与不适合的场景¶
表:适合与不适合的场景
| 适合 | 不适合 |
|---|---|
| 实验和驱动探索。 | 量产进度紧迫且需要厂商支持的项目。 |
| 已经使用嵌入式 Rust 的团队。 | 当前就需要完整蓝牙(Bluetooth)、显示或音频栈的产品。 |
| 为提高 HAL/PAC 成熟度作出贡献。 | 使用 Arduino 或 SDK 示例可以更快完成的一次性原型。 |
最后更新: