介绍

欢迎阅读《嵌入式 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、串行等。

其他资源

如果您对上面提到的任何内容不熟悉,或者想了解本书中提到的某个特定主题的更多信息,您可能会发现这些资源中的一些很有帮助。

主题资源描述
RustRust 书籍如果您还不熟悉 Rust,我们强烈建议您阅读本书。
Rust,嵌入式探索之书如果您从未进行过任何嵌入式编程,本书可能是一个更好的起点
Rust,嵌入式嵌入式 Rust 书架在您可以在这里找到 Rust 嵌入式工作组提供的其他几个资源。
Rust,嵌入式Embedonomicon使用 Rust 进行嵌入式编程时的核心细节。
Rust,嵌入式嵌入式 FAQ关于在嵌入式环境中使用 Rust 的常见问题。
Rust,嵌入式综合 Rust 🦀:裸机关于裸机 Rust 开发的 1 天课程教学材料
中断中断-
内存映射 IO/外设内存映射 I/O-
SPI、UART、RS232、USB、I2C、TTLStack Exchange 关于 SPI、UART 和其他接口的问答-

翻译

本书由慷慨的志愿者翻译。如果您希望您的译本列在这里,请提交 PR 添加。

如何使用本书

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

本书的大部分示例将使用 STMicroelectronics 的 STM32F3DISCOVERY 开发板。该开发板基于 ARM Cortex-M 架构,虽然大多数基于该架构的 CPU 的基本功能相同,但不同厂商,甚至同一厂商不同微控制器家族的微控制器的外设和其他实现细节是不同的。

因此,我们建议购买 STM32F3DISCOVERY 开发板,以便跟随本书中的示例进行实践。

贡献本书

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

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

修复拼写错误和添加新内容的 Pull requests 非常受欢迎!

重用本材料

本书根据以下许可分发

TL;DR(太长不看):如果您想在您的作品中使用我们的文字或图片,您需要

  • 给出适当的署名(即,在您的幻灯片中提及本书,并提供相关页面的链接)
  • 提供 CC-BY-SA v4.0 许可的链接
  • 指明您是否以任何方式更改了材料,并将对我们材料所做的任何更改在相同许可下提供

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