简介
欢迎来到嵌入式 Rust Book:一本关于在“裸机”嵌入式系统(如微控制器)上使用 Rust 编程语言的入门书籍。
嵌入式 Rust 适合哪些人
嵌入式 Rust 适合所有希望进行嵌入式编程,同时利用 Rust 语言提供的高级概念和安全保证的人。(另请参阅 Rust 适合哪些人)
范围
本书的目标是:
-
使开发人员快速掌握嵌入式 Rust 开发。即,如何设置开发环境。
-
分享关于使用 Rust 进行嵌入式开发的当前最佳实践。即,如何最好地利用 Rust 语言特性来编写更正确的嵌入式软件。
-
在某些情况下作为一本菜谱。例如,如何在单个项目中混合使用 C 和 Rust?
本书力求尽可能地通用,但为了使读者和作者更容易理解,所有示例都使用了 ARM Cortex-M 架构。但是,本书并不假设读者熟悉这种特定架构,并在需要时解释此架构特有的细节。
本书适合哪些人
本书面向具有一些嵌入式背景或一些 Rust 背景的人,但我们相信每个对嵌入式 Rust 编程好奇的人都可以从本书中获得一些收获。对于没有任何先验知识的人,我们建议您阅读“假设和先决条件”部分,并弥补缺失的知识,以便从本书中获得更多收益并改善您的阅读体验。您可以查看“其他资源”部分,以查找有关您可能想要弥补的主题的资源。
假设和先决条件
- 您可以熟练使用 Rust 编程语言,并且已经在桌面环境中编写、运行和调试了 Rust 应用程序。您还应该熟悉 2018 版本 的习惯用法,因为本书的目标是 Rust 2018。
- 您熟悉使用其他语言(如 C、C++ 或 Ada)开发和调试嵌入式系统,并且熟悉以下概念:
- 交叉编译
- 内存映射外设
- 中断
- 常见的接口,如 I2C、SPI、串行等。
其他资源
如果您不熟悉上述任何内容,或者如果您想了解本书中提到的特定主题的更多信息,您可能会发现以下这些资源很有帮助。
主题 | 资源 | 描述 |
---|---|---|
Rust | Rust Book | 如果您还不熟悉 Rust,我们强烈建议您阅读本书。 |
Rust, 嵌入式 | Discovery Book | 如果您从未进行过任何嵌入式编程,那么本书可能是一个更好的起点。 |
Rust, 嵌入式 | 嵌入式 Rust 书架 | 在这里您可以找到 Rust 嵌入式工作组提供的其他一些资源。 |
Rust, 嵌入式 | Embedonomicon | 在 Rust 中进行嵌入式编程时的详细细节。 |
Rust, 嵌入式 | 嵌入式 FAQ | 关于嵌入式环境中 Rust 的常见问题。 |
Rust, 嵌入式 | 全面的 Rust 🦀: 裸机 | 关于裸机 Rust 开发的为期一天的课程的教学材料。 |
中断 | 中断 | - |
内存映射 IO/外设 | 内存映射 I/O | - |
SPI、UART、RS232、USB、I2C、TTL | Stack Exchange 关于 SPI、UART 和其他接口 | - |
翻译
本书由慷慨的志愿者翻译。如果您想在此处列出您的翻译,请打开一个 PR 添加它。
如何使用本书
本书通常假设您正在从头到尾阅读它。后面的章节基于前面章节中的概念,而前面的章节可能不会深入探讨某个主题的细节,而是在后面的章节中重新讨论该主题。
本书将在大多数示例中使用 STMicroelectronics 的 STM32F3DISCOVERY 开发板。该板基于 ARM Cortex-M 架构,虽然基于此架构的大多数 CPU 的基本功能相同,但不同供应商之间,甚至同一供应商的不同微控制器系列之间的外围设备和其他微控制器实现细节也不同。
因此,我们建议您购买 STM32F3DISCOVERY 开发板,以便遵循本书中的示例。
为本书做贡献
本书的工作在 此仓库 中进行协调,并且主要由 资源团队 开发。
如果您在遵循本书中的说明时遇到问题,或者发现本书的某些部分不够清晰或难以理解,那么这是一个错误,应该在本书的 问题跟踪器 中报告。
非常欢迎您提交修复拼写错误和添加新内容的 pull request!
重用此材料
本书根据以下许可发布:
- 本书中包含的代码示例和独立的 Cargo 项目均根据 MIT 许可证和 Apache 许可证 v2.0 的条款获得许可。
- 本书中包含的书面文字、图片和图表均根据 Creative Commons CC-BY-SA v4.0 许可证的条款获得许可。
TL;DR:如果您想在您的工作中使用我们的文本或图像,您需要:
- 给予适当的署名(即在您的幻灯片上提及本书,并提供相关页面的链接)
- 提供 CC-BY-SA v4.0 许可证的链接
- 说明您是否以任何方式更改了材料,并根据相同的许可证提供对我们材料的任何更改
此外,如果您发现本书有用,请务必告知我们!