想学怎么用 Rust 来打造既安全又现代化的嵌入式系统吗?我们会带你从零开始,通过实际动手做项目、编写驱动、了解如何使用外部函数接口(FFI),还有掌握 Cortex-M 相关工具。一步步教你成为高手!

您将会学到

  • 从零开始学习 Rust 编程语言
  • 从零开始构建你的第一个裸机 Rust 应用程序
  • 学习如何为运行在 ARM Cortex-M 微控制器上的固件设置 Rust 工具链
  • 编写你自己的链接脚本和启动文件,并理解嵌入式 Rust 中的内存布局和启动过程
  • 使用 cargo-binutils 来检查和分析 ELF 文件
  • 使用 VS Code 设置现代高效的开发流程,用于构建、烧录和调试针对嵌入式目标的 Rust 代码
  • 使用和理解核心嵌入式 Rust 库
  • 在资源受限的环境中高效地记录和调试
  • 使用 cortex-m 和 cortex-m-rt 库与 ARM Cortex 外设(如 SysTick 和 ITM)进行实战操作
  • Rust FFI:创建安全的 Rust API 以与现有的 C 库进行接口交互,使将 Rust 集成到现有的 C 基础代码库中更加容易
  • 学习如何在 Rust 和 C 之间安全地传递结构体、字符串和枚举,同时保持类型安全和控制
  • 将 Rust 函数暴露给 C 调用,使用 unsafe 和 FFI 概念来安全地管理跨语言互操作性
  • 逐步构建一个实际的 Flappy Bird 游戏应用使用 Rust
  • 使用 embedded-hal 特性构建硬件无关的驱动程序,使您的代码可以在多个微控制器平台上保持一致。
  • 使用真正的传感器(MPU6050)来控制游戏机制
  • 用整洁可维护的模块结构化您的代码
  • 使用 STM32 HAL 箱子轻松配置和控制您的微控制器外设,使用安全的 Rust 抽象
  • 编写通用嵌入式代码

要求

  • 本课程不需要任何先验的 Rust 编程经验,因为课程将从零开始教授
  • 任何微控制器的基本知识
  • 任何编程语言的基本知识
  • 如果您想在嵌入式目标上运行代码,需要列出的硬件和组件

描述

想要在您的工具箱中添加另一种嵌入式语言吗?试试 Rust 吧——您不会失望的!

本课程是您开始使用 Rust 在微控制器上进行编程的起点,即使您对嵌入式系统一无所知。

我们将从了解微控制器的工作原理到用 Rust 编程,一步步带你掌握基础知识。无论你是否熟悉 C/C++,或者刚刚接触微控制器,这门课程都将使你能够轻松地进行嵌入式 Rust 开发。

为什么选择 Rust 用于嵌入式开发?

Rust 通过以下方式防止许多常见的内存问题(如空指针解引用、缓冲区溢出和使用后释放错误):

  • 所有权模型:Rust 的严格所有权、借用和生命周期规则防止了大多数意外的内存误用。
  • 类型安全性 :Rust 的类型系统确保你正确地访问数据,并通过强制执行严格的变量使用模式来防止某些类型的无效内存访问。

谢谢 Cargo,Rust 的官方包管理器,你可以通过简单地包含外部库或“crate”,就像插拔组件一样,轻松地添加功能。

你会学到什么?

在这门课程中,你将掌握以下内容:

  1. 为嵌入式系统初学者准备的 Rust 入门介绍
  2. 完整的工具链设置,用于跨编译、烧录和调试
  3. 使用 defmt 和 probe-rs 进行实时跟踪的调试和日志记录
  4. 使用 STM32 HAL crate 进行高级外设编程
  5. 逐步构建一个真实的 Flappy Bird 游戏应用程序,使用 Rust
  6. 使用真实的传感器(MPU6050)来控制游戏机制
  7. 清晰、模块化的编码实践和硬件抽象
  8. 使用 embedded-hal 特性构建硬件无关的驱动程序
  9. 编写和理解你自己的链接脚本启动代码
  10. 使用 Rust 的泛型和特质构建通用的嵌入式代码
  11. 通过 FFI 实现安全且无缝的 Rust + C 集成
  12. 用 Rust 编写稳健、可重用且符合生产标准的嵌入式固件的信心

硬件要求

注意: 如果您已经有微控制器开发板,我们建议继续使用它。本课程设计得非常全面,概念和步骤可以应用于大多数开发板,尽管可能需要一些小的调整。但如果您希望使用与讲师相同的开发板以获得更顺畅的体验,可以查看推荐的硬件

1) 微控制器开发板

选项-1. 基于 STM32F303 的开发板

  • 该课程主要使用了 Fastbit STM32 Nano 板 ,该板基于 STM32F303 微控制器和内置的 MPU6050 传感器。

选项 2. 任何 STM32 微控制器板

  • 您可以使用任何带有 STM32 微控制器的开发板。课程内容设计得具有适应性,因此您可以使用手头的具体 STM32 板进行学习。

2) SWD 基的调试器

  • 用于编程和调试 STM32 微控制器,需要一个基于 SWD(Serial Wire Debug)的调试器。此工具对于将程序加载到微控制器上以及实时调试您的项目都是必不可少的。

3) LCD 扩展板

  • 在一个项目中,您需要一个 TFT LCD 模块进行实验。本课程使用的是基于 GC9A01 LCD 驱动的 Fastbit 1.28″ TFT LCD,具有 8 位并行接口。不过,您可以使用相同或兼容的模块。

4) MPU6050 传感器

软件需求

  1. VS Code
  2. STM32CubeIDE

此课程面向哪些人:

  • 寻求探索 Rust 作为 C/C++ 的替代品,或者与现有代码共存以进行微控制器编程的嵌入式开发人员
  • 想将 Rust 技能应用到低级、硬件相关的项目中并学习嵌入式编程的 Rust 爱好者。
  • 勇于从零开始构建嵌入式系统的初学者
  • 想要再掌握一门嵌入式语言吗?试试 Rust,你不会失望的
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。