引言

欢迎阅读《嵌入式 Rust 编程指南》:一本关于在“裸机”嵌入式系统(如微控制器)上使用 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,我们强烈建议阅读本书。
Rust,嵌入式探索之书如果您从未进行过任何嵌入式编程,这本书可能是一个更好的起点
Rust,嵌入式嵌入式 Rust 书架在这里,您可以找到 Rust 嵌入式工作组提供的其他资源。
Rust,嵌入式Embedonomicon在 Rust 中进行嵌入式编程的细节。
Rust,嵌入式嵌入式常见问题关于在嵌入式环境中 Rust 的常见问题。
Rust,嵌入式全面的 Rust 🦀:裸机关于裸机 Rust 开发的为期一天课程的教学材料
中断中断-
内存映射的 I/O/外设内存映射 I/O-
SPI、UART、RS232、USB、I2C、TTLStack Exchange 关于 SPI、UART 和其他接口-

翻译

本书由慷慨的志愿者翻译。如果您希望将您的翻译列在此处,请打开一个 PR 添加它。

如何使用本书

本书通常假设您从头到尾阅读它。后面的章节建立在前面章节的概念之上,前面的章节可能不会深入探讨某个主题的细节,而是在后面的章节中重新讨论该主题。

本书将使用意法半导体(STMicroelectronics)的 STM32F3DISCOVERY 开发板作为其中大多数示例的基础。该板基于 ARM Cortex-M 架构,虽然基本功能在基于此架构的大多数 CPU 上都是相同的,但是微控制器的外围设备和其他实现细节在不同的供应商之间,甚至在同一供应商的不同微控制器系列之间都是不同的。

因此,我们建议您购买 STM32F3DISCOVERY 开发板,以便遵循本书中的示例。

为本书做出贡献

本书的工作在 这个仓库 中协调,主要由 资源团队 开发。

如果您在遵循本书中的说明时遇到问题,或者发现本书的某些部分不够清晰或难以理解,那这是一个 bug,应该在本书的 问题跟踪器 中报告。

非常欢迎提交 pull request 来修复错别字和添加新内容!

重用此材料

本书在以下许可下分发

  • 本书中包含的代码示例和独立的 Cargo 项目均根据 MIT 许可证Apache 许可证 v2.0 的条款获得许可。
  • 本书中包含的书面文字、图片和图表均根据知识共享 CC-BY-SA v4.0 许可证的条款获得许可。

TL;DR:如果您想在您的作品中使用我们的文本或图像,您需要

  • 给出适当的致谢(例如,在您的幻灯片上提及本书,并提供指向相关页面的链接)
  • 提供指向 CC-BY-SA v4.0 许可证的链接
  • 指明您是否以任何方式更改了材料,并将对我们材料的任何更改根据相同的许可证提供

此外,如果您觉得这本书有用,请务必告诉我们!