幻仿编程 Udemy 付费课程,独家中英字幕 + 配套资料!
限时1折特惠!课程永久访问权,随时随地学习!
精通嵌入式 Rust:裸金属、FFI、Crates 与项目实战
掌握Rust中的安全、现代嵌入式系统,在STM32微控制器上使用裸机、FFI、驱动程序、机箱和项目
讲师:FastBit Embedded Brain Academy, Kiran Nayak
![图片[1]-【Udemy课程】精通嵌入式Rust裸机编程:FFI接口、Crate管理与项目实战 | Mastering Embedded Rust Bare Metal, FFI, Crates, Projects-幻仿编程](https://hfbc101.com/wp-content/uploads/2026/01/【00673】embedded-rust-for-absolute-beginners.webp)
你将学到的内容
- 从零开始学习 Rust 编程语言
- 从头构建你的第一个裸金属 Rust 应用
- 学习如何配置 Rust 工具链,以构建运行在 ARM Cortex‑M 微控制器上的固件
- 编写自己的链接脚本和启动文件,深入理解嵌入式 Rust 中的内存布局与启动过程
- 使用 cargo‑binutils 检查和分析 ELF 文件
- 使用 VS Code 搭建现代高效的工作流,实现对嵌入式目标的构建、烧录和调试
- 使用并理解核心的嵌入式 Rust crates
- 在资源受限的环境中高效记录日志与调试
- 使用 cortex‑m 与 cortex‑m‑rt crates 操作 ARM Cortex 外设(如 SysTick、ITM)
- Rust FFI:创建安全的 Rust API 与现有 C 库对接,让 Rust 更容易融入已有的 C 代码库
- 学习在 Rust 与 C 之间安全地传递结构体、字符串和枚举,保持类型安全与可控性
- 将 Rust 函数暴露给 C 调用,使用 unsafe 与 FFI 概念安全管理跨语言互操作
- 一步步使用 Rust 构建真实的《Flappy Bird》游戏应用
- 使用 embedded‑hal trait 编写硬件无关的驱动,使代码可在多个微控制器平台间迁移
- 对接真实传感器(MPU6050)以控制游戏机制
- 将代码组织为清晰、可维护的模块
- 使用 STM32 HAL crate 通过安全的 Rust 抽象轻松配置和控制微控制器外设
- 编写通用的嵌入式代码
先决条件
- 不需要任何 Rust 编程经验,课程从零开始教学
- 具备基本的微控制器概念
- 具备任意编程语言的基础知识
- 如果想在真实的嵌入式目标上运行代码,需要准备文中列出的硬件与组件
课程简介
==> 想为你的技术栈再添一种嵌入式编程语言吗?试试 Rust——绝对不会让你失望! <==
本课程是使用 Rust 在基于 ARM Cortex‑M 系列(如 STM32)的微控制器上进行开发的入门指南,即使你是嵌入式系统新手也能轻松上手。
这是一门全动手实战课程,带你从零开始,逐步走向 STM32 上的真实嵌入式 Rust 开发。每个视频都在前一个的基础上递进,帮助你一步步完成从裸金属代码到高级主题(如 FFI、crates、驱动开发、trait)的学习。非常适合 Rust 与嵌入式系统的初学者。
为什么选择 Rust 进行嵌入式开发?
Rust 通过以下机制防止常见的内存错误(如空指针解引用、缓冲区溢出、使用已释放内存):
- 所有权模型:Rust 对所有权、借用和生命周期的严格规则,能够阻止大多数意外的内存误用。
- 类型安全:Rust 的类型系统确保数据访问的正确性,并通过强制变量使用模式防止某些非法的内存访问。
得益于 Cargo(Rust 官方的包管理器),你只需在项目中加入外部库(即 “crate”),就能像插件一样轻松扩展功能。
你将学到什么?
本课程将帮助你掌握以下内容:
硬件需求
注意:如果你已经拥有一块微控制器开发板,完全可以继续使用它。本课程的设计足够通用,概念与步骤可适配大多数开发板,只需做少量微调。但若想获得与讲师完全相同的体验,建议使用下列推荐硬件。
1) 微控制器开发板
选项 1:基于 STM32F303 的板子 (推荐)
- 本课程主要使用 Fastbit STM32 Nano 开发板,搭载 STM32F303 微控制器并内置 MPU6050 传感器。
选项 2:任意 STM32 微控制器板
- 只要是基于 STM32 的开发板均可使用。课程内容已做适配,能够配合你手头的具体 STM32 板子进行学习。
2) 基于 SWD 的调试器
- 需要一款支持 SWD(Serial Wire Debug)的调试器,用于对 STM32 微控制器进行烧录和实时调试。
3) LCD Shield
- 在其中一个项目中需要使用 TFT LCD 模块进行实验。课程采用 Fastbit 1.28″ TFT LCD(8 位并行接口,基于 GC9A01 驱动),你也可以使用相同或兼容的其他模块。
4) MPU6050 传感器
软件需求
适合人群
- 希望将 Rust 作为 C/C++ 替代或与现有代码共存的嵌入式开发者
- 想把 Rust 技能用于底层硬件项目、学习嵌入式编程的 Rust 爱好者
- 对嵌入式系统零基础、渴望从头构建实战技能的学习者
- 想为自己的技术栈再添一种嵌入式语言?试试 Rust,绝不会让你失望
| 共 166 节课程 • 总时长 22 小时 26 分钟 | |
| 第一章 入门 | |
| 1. 欢迎 | 3分43秒 |
| 第二章 Rust 工具链安装 | |
| 1. 主机工具链安装 | 5分59秒 |
| 2. 工具链组件与一级目标的三元组 | 3分28秒 |
| 3. 安装VS Code集成开发环境 | 34秒 |
| 4. 使用Cargo创建Rust项目及重要VS Code扩展 | 9分20秒 |
| 5. 重要工具:rustfmt、cargo fix 和 Clippy | 14分16秒 |
| 第三章 Rust 基础快速入门核心概念 | |
| 1. Rust与C++内存安全保障对比 第1部分 | 16分7秒 |
| 2. 变量与数值数据类型 | 15分5秒 |
| 3. 字节字面量 | 4分26秒 |
| 4. 字符与Unicode表示 | 5分52秒 |
| 5. 静力学 | 5分59秒 |
| 6. 常量 | 2分53秒 |
| 7. Rust与CC++内存安全对比 第2部分 | 7分15秒 |
| 8. 数组 | 10分59秒 |
| 9. 引用 | 9分57秒 |
| 10. 借用(不可变引用与可变引用) | 10分28秒 |
| 11. 切片数据类型 | 19分27秒 |
| 12. if..else 作为语句和表达式 | 10分8秒 |
| 13. 匹配语句 | 15分55秒 |
| 14. if..let语句 | 4分57秒 |
| 15. Rust与CC++内存安全对比第3部分 | 9分30秒 |
| 16. 比较与逻辑运算符 | 7分23秒 |
| 17. 位运算符 | 7分30秒 |
| 18. 字符串 | 19分52秒 |
| 19. UTF8编码字符串 | 4分54秒 |
| 20. 字符串字面量类型(&str) | 8分55秒 |
| 21. 函数声明与参数 | 13分34秒 |
| 22. 结构 | 7分26秒 |
| 23. 打印结构 | 4分32秒 |
| 24. 使用默认值初始化结构体 | 5分19秒 |
| 25. 将结构体变量传递给函数 | 1分58秒 |
| 26. 为结构体创建方法 | 10分52秒 |
| 27. 结构体关联函数(构造函数) | 8分22秒 |
| 28. 枚举 | 21分6秒 |
| 29. 枚举类型的方法与关联函数 | 10分41秒 |
| 30. 期权交易 | 15分25秒 |
| 31. 结果T,E | 1分33秒 |
| 32. 使用Result类型进行错误处理 | 7分58秒 |
| 33. 使用误差传播 | 5分56秒 |
| 34. 泛型 | 14分44秒 |
| 第四章 交叉编译 | |
| 1. 关于硬件 | 1分38秒 |
| 2. 目标架构交叉编译入门 | 8分47秒 |
| 3. 练习001 为最基础的Rust程序生成ELF文件 第1部分 | 15分17秒 |
| 4. 为最基础的 Rust 程序生成 ELF 文件 第2部分 | 11分19秒 |
| 5. 关于“never”类型(!) | 5分13秒 |
| 6. 使用 cargo-binutils 检查 ELF 文件 | 5分8秒 |
| 第五章 为裸机Rust程序编写启动代码和链接器脚本 | |
| 1. 编写启动代码第1部分 | 5分24秒 |
| 2. 链接器、链接器标志与链接器脚本详解 | 6分44秒 |
| 3. 从零开始编写链接器脚本第1部分[内存] | 12分19秒 |
| 4. 程序中的不同数据类型 | 7分44秒 |
| 5. 从零开始编写链接器脚本 第2部分 [SECTIONS] | 7分53秒 |
| 6. 从零开始编写链接器脚本第3部分 | 23分4秒 |
| 7. 编写启动代码第二部分 向量表 | 18分15秒 |
| 8. 编写启动代码第三部分[extern C] | 10分31秒 |
| 9. 编写启动代码第4部分 [默认处理程序] | 10分21秒 |
| 10. 编写启动代码第5部分 [复位处理程序] | 6分43秒 |
| 11. Rust中的原始指针 | 16分46秒 |
| 12. 编写启动代码第6部分 [复位处理程序] | 8分23秒 |
| 第六章 Flash和Debug | |
| 1. 将代码烧录到目标硬件-1 [安装STM32CubeCLT] | 2分58秒 |
| 2. 向目标硬件烧录代码-2 [VsCode与cortex-debug配置] | 18分18秒 |
| 3. 使用probe.rs工具刷写代码 | 4分36秒 |
| 第七章 练习002 使用中断处理LED的裸机Rust应用 | |
| 1. 介绍 | 2分8秒 |
| 2. 练习实现第一部分 | 7分6秒 |
| 3. 练习实现 第2部分 | 5分48秒 |
| 4. 练习实现第3部分 | 10分32秒 |
| 5. 练习实现 第4部分 | 5分31秒 |
| 6. 练习实现 第5部分 | 12分48秒 |
| 7. 练习实现第6部分 | 7分53秒 |
| 8. 练习实现第7部分与LED模块测试 | 2分37秒 |
| 9. 不安全块与不安全函数 | 7分8秒 |
| 10. 注释与生成文档 第2部分 [! 内部文档] | 13分56秒 |
| 11. 注释与生成文档第一部分 外部文档 | 2分9秒 |
| 12. 练习实现第8部分:编写按钮模块 | 8分40秒 |
| 13. 练习实现第9部分:按钮中断编码 | 9分 |
| 14. 练习实现 第10部分 | 10分48秒 |
| 15. 练习实现 第11部分 | 7分36秒 |
| 16. 练习实现第12部分 | 9分15秒 |
| 17. 练习实现第13部分 | 9分36秒 |
| 18. 练习实现第14部分 测试按钮中断 | 2分4秒 |
| 第八章 练习003 使用外部crate cortex-m-rt和cortex-m | |
| 1. 什么是crate | 6分32秒 |
| 2. 嵌入式系统的重要组件 | 11分38秒 |
| 3. 练习介绍 | 2分16秒 |
| 4. Cortex-m-rt 库详解 | 9分34秒 |
| 5. Crate版本号语法 | 8分5秒 |
| 6. 恐慌处理库 | 6分2秒 |
| 7. 使用Cortex-M库生成Systick时基 | 20分5秒 |
| 8. 测试SysTick时基生成 | 3分54秒 |
| 第九章 练习004 ITM打印 | |
| 1. 练习004 介绍 | 1分4秒 |
| 2. 仪器跟踪宏单元 | 9分20秒 |
| 3. 练习实现 | 18分25秒 |
| 4. 重构与测试 | 9分51秒 |
| 5. 临界区 | 9分38秒 |
| 6. 互斥锁与引用计数单元 | 13分53秒 |
| 第十章 Rust 外部函数接口 | |
| 1. 处理Rust与外部语言代码的步骤 | 11分58秒 |
| 2. Rust与C语言类型映射 | 3分9秒 |
| 3. Rust中C语言的void和void指针对应物 | 7分2秒 |
| 4. C语言void和void指针的Rust等效实现续 | 4分51秒 |
| 5. C语言字符串的Rust表示 | 6分33秒 |
| 6. Rust 从 C 语言接收和处理字符串(coreffiCstr) | 8分9秒 |
| 7. Rust向C语言传递字符串(stdffiCString) | 8分42秒 |
| 8. 结构体内存布局 Rust 与 C 对比 | 6分27秒 |
| 9. 从Rust向C传递结构体 | 6分17秒 |
| 第11章 练习005 Flappy Bird游戏实现(Rust + C) | |
| 1. Flappy Bird应用入门 | 7分18秒 |
| 2. 实现外设配置与代码生成(8位并行LCD) | 18分10秒 |
| 3. 实现基于SPI的LCD外设配置与代码生成 | 11分47秒 |
| 4. 从Rust项目编译C源文件的工作原理 | 7分15秒 |
| 5. 编写构建脚本第一部分 | 4分24秒 |
| 6. 编写build.rs第二部分 | 9分45秒 |
| 7. 编写 build.rs 第3部分 | 12分32秒 |
| 8. 编写build.rs第4部分 | 6分11秒 |
| 9. 编写 build.rs 第5部分 | 5分12秒 |
| 10. 系统滴答定时器中断生成测试项目 | 4分22秒 |
| 11. 将驱动文件复制到项目中 | 1分14秒 |
| 12. 分析弱符号链接相关问题 | 4分22秒 |
| 13. 修复弱符号链接相关问题并测试项目 | 8分20秒 |
| 14. 游戏功能启动界面实现第1部分 | 3分24秒 |
| 15. 游戏功能启动界面实现第2部分 | 10分3秒 |
| 16. 游戏功能启动界面实现第3部分 | 3分39秒 |
| 17. 游戏功能启动屏幕实现第4部分 | 10分1秒 |
| 18. 游戏功能开始屏幕实现第5部分 | 1分32秒 |
| 19. 游戏功能开始屏幕实现第6部分 | 9分58秒 |
| 20. 游戏功能启动界面实现第7部分 | 6分11秒 |
| 21. 游戏功能启动界面实现第8部分 | 5分44秒 |
| 22. 游戏功能启动界面实现第9部分 | 2分27秒 |
| 23. 游戏功能启动界面实现第10部分 | 3分15秒 |
| 24. 游戏功能启动界面实现第11部分 | 6分2秒 |
| 25. 游戏功能启动界面实现第12部分 | 3分9秒 |
| 26. 游戏功能启动界面实现第13部分 | 1分56秒 |
| 27. 游戏功能障碍物移动实现第1部分 | 9分33秒 |
| 28. 游戏功能障碍物移动实现第2部分 | 5分39秒 |
| 29. 游戏功能障碍物移动实现第3部分 | 4分29秒 |
| 30. 游戏功能障碍物移动实现第4部分 | 1分49秒 |
| 31. 游戏功能障碍物移动实现第5部分 | 3分3秒 |
| 32. 游戏功能障碍物移动实现第6部分 | 5分52秒 |
| 33. 游戏功能 玩家移动实现 第1部分 | 10分25秒 |
| 34. 游戏功能 玩家移动实现 第2部分 | 8分55秒 |
| 35. 游戏功能碰撞检测实现第一部分 | 3分4秒 |
| 36. 游戏功能碰撞检测实现第2部分 | 8分50秒 |
| 37. 游戏功能碰撞检测实现第3部分 | 3分13秒 |
| 第12章 使用嵌入式硬件抽象层创建硬件无关设备驱动 | |
| 1. 关于硬件无关驱动开发 | 10分2秒 |
| 2. MPU6050驱动库实现第1部分 | 2分52秒 |
| 3. MPU6050驱动包实现第2部分 | 8分50秒 |
| 4. MPU6050驱动库实现第3部分 | 6分52秒 |
| 5. MPU6050驱动库实现第4部分 | 3分58秒 |
| 6. MPU6050驱动板实现第5部分 | 11分35秒 |
| 7. MPU6050驱动库实现第6部分 | 2分14秒 |
| 8. MPU6050驱动库实现第7部分 | 4分45秒 |
| 9. MPU6050驱动板实现第8部分 | 6分48秒 |
| 10. MPU6050驱动板实现第9部分 | 6分27秒 |
| 11. 为驱动程序添加功能 | 11分25秒 |
| 第13章 使用Hal crate和PAC | |
| 1. 练习005 传感器读取 第1部分 | 14分10秒 |
| 2. PAC和HAL | 11分56秒 |
| 3. I2C初始化编码第1部分 | 17分29秒 |
| 4. I2C初始化编码第2部分 | 15分30秒 |
| 5. I2C初始化编码第3部分 | 11分22秒 |
| 第14章 使用特质 | |
| 1. 通过Trait实现处理输入设备 第1部分 | 8分48秒 |
| 2. 通过Trait实现处理输入设备 第2部分 | 8分5秒 |
| 3. 通过Trait实现处理输入设备 第3部分 | 4分16秒 |
| 第15章 日志记录 | |
| 1. 使用RTT和probe.rs记录数据 | 12分58秒 |
| 2. 使用RTT测试记录数据 | 1分59秒 |
| 第16章 练习005 Flappy Bird游戏实现(Rust + C)续 | |
| 1. 游戏功能 计算滚转角 | 14分4秒 |
| 2. 游戏特性:地图滚动角度映射至小鸟位置 | 4分15秒 |
| 3. 更新小鸟Y坐标 | 5分37秒 |
| 4. 关于传感器噪声的说明 | 3分22秒 |
| 5. 测试最终应用程序 | 1分59秒 |
| 6. 学生待办事项 | 1分 |
| 1. 关于课程更新与获取 如何获取本站课程? ○ 免费获取方式:在本站签到、评论、发布文章等可获取积分,通过积分购买课程。 ○ 付费获取方式:购买本站【月度会员】或【永久会员】。 课程购买后是否支持更新? ○ 是的,所有课程均提供免费更新服务。 我们致力于为您提供持续的学习支持。 如何获取更新? ○ 单独购买的课程: 您可在“个人中心”随时查看购买记录及最新下载链接,轻松获取免费更新。 ○ 永久会员: 您可在相关页面直接查看最新下载地址,随时免费获取更新。 ○ 非永久会员(重要提示):通过会员权限下载的课程,在“个人中心”可能不显示具体订单记录。 因此,会员到期后,您将无法通过“个人中心”查看最新下载链接。 ① 解决方案建议:续费会员: 恢复会员权限后,即可再次查看所有最新下载链接。 ② 妥善保存下载链接: 我们强烈建议您在会员有效期内,保存好本站分享的课程下载链接。通常,课程更新内容会直接补充到原有分享链接中。 |
| 2. 关于课程资料 课程下载后资料是否齐全? ○ 绝大部分课程资料齐全。 我们尽力确保您获得完整的学习资源。 ○ 少数情况说明: 极少数课程可能存在资料缺失情况。针对 Udemy 课程,资料形式多样,请知悉:本地文件(随视频下载): 此类课件通常随视频一并提供,下载即得。 ① 本地文件(含链接): 课件文件中会提供资料下载链接,您需自行访问链接下载。此类资料通常也可获取。 ② 在线平台存储(如 GitHub): 讲师会在视频中说明资料获取方式(如访问特定平台),请您按指引自行下载。 ③ Udemy 平台内资料: 部分资料需登录您在 Udemy 购买的账号才能查看。此类资料本站无法提供,除非您自行在 Udemy 平台购买该课程。 |
| 3. 关于课程字幕 是否提供中英文双字幕?原本无字幕的课程是否支持? ○ 是的,本站下载的所有课程均提供中英文双字幕,包括 Udemy 原本无任何字幕的课程。 我们致力于提升您的学习体验。 Udemy 字幕现状与本站服务: ○ Udemy 绝大多数课程本身不提供任何字幕。在少数提供字幕的课程中,也几乎不提供中文字幕。 本站字幕服务流程: ① Udemy 有字幕: 我们会将其翻译成中文字幕,与英文字幕一同提供。 ② Udemy 无字幕: 我们会通过技术手段识别生成英文字幕,再翻译成中文字幕,一同提供给您。 字幕服务重要说明(请您理解): ○ 翻译精度: 字幕翻译采用谷歌翻译引擎完成,虽不及人工翻译精准,但足以保障您正常学习理解。 ○ 若您仍然觉得字幕精度较低: 可联系站长针对性润色字幕(该服务仅限本站会员)。 |
| 4. 关于视频存储与使用 视频存储位置与观看/下载方式? 本站所有课程视频均存储于网盘平台。 您支持在线观看: 可在网盘内直接播放学习。 您支持下载: 可将视频下载至本地,使用播放器播放,更灵活便捷。 主要存储网盘:百度网盘 视频格式与加密情况? 本站所有课程视频均以 MP4 或 MKV 通用格式提供。 视频文件不加密,您可自由分享(请遵守相关法律法规)。 播放建议: 使用本地播放器(如 PotPlayer)播放时,可同时加载中英文字幕文件,学习体验更佳。您可参考我们提供的《PotPlayer 挂载中英双字幕教程》。 |
| 5. 关于售后支持与退款政策 遇到问题如何联系? 无论您在购买前或购买后遇到任何疑问,都欢迎随时联系站长。 我们将竭诚为您服务。 退款政策说明: 原则: 由于虚拟商品(课程、资料等)具有可复制性,一旦购买成功并完成下载,原则上不支持退款。 请您在购买前仔细阅读课程介绍、资料说明及本条款,确认符合您的需求。 如有不确定之处,欢迎先行咨询站长。 |





























暂无评论内容