嵌入式 Rust 入门
开始学习嵌入式 Rust,了解工具链、常见开发板以及裸机编程基础。
嵌入式 Rust 入门 是 CoddyKit 上的免费 Learn Rust Coding 课时。 这是第 1 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn Rust Coding 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn Rust Coding 课程共包含 3 节课。
欢迎学习嵌入式 Rust
欢迎来到 嵌入式 Rust 的世界!本课将开启您使用 Rust 为微控制器及其他资源受限设备编程的学习之旅。
我们将探讨 Rust 为什么非常适合嵌入式系统,以及与传统桌面开发或 Web 开发相比,这一领域有哪些独特之处。
嵌入式 Rust 与标准 Rust
为嵌入式系统编程时,您通常需要在没有操作系统的环境中工作。这意味着您要直接与硬件交互。
- 没有 OS:没有 Linux、Windows 或 macOS。
- 资源受限:内存(RAM)和存储空间(闪存)有限。
- 直接控制硬件:您可以直接控制 GPIO、定时器和通信接口等外设。
嵌入式 Rust 工具链
开始学习嵌入式 Rust 所需的配置与标准 Rust 略有不同。您通常会使用 rustup 安装特定组件:
- 目标支持:例如,用于 ARM Cortex-M 微控制器的
rust-std-arm-none-eabi。 cargo-generate:一种根据模板创建新项目的工具,在嵌入式配置中很常见。- 调试工具:例如用于烧录和调试设备的
probe-rs。
交叉编译基础
嵌入式开发通常涉及交叉编译。这意味着您在一种类型的计算机上(例如笔记本电脑的 x86 CPU)编译代码,然后让代码在另一种设备上运行(例如 ARM Cortex-M 微控制器)。
Rust 使用目标三元组(例如 thumbv7em-none-eabihf)指定目标设备的架构、供应商、OS(或没有 OS)以及 ABI。
常见开发板
在嵌入式 Rust 中,您会接触到各种微控制器(MCU)。常见选择包括:
- STM32 系列:功能多样,在工业领域应用广泛。
- ESP32:以具备 Wi-Fi 和蓝牙功能而闻名。
- nRF52 系列:非常适合 Bluetooth Low Energy(BLE)应用。
这些开发板为 Rust 代码的运行提供实际硬件。
理解裸机编程
裸机编程意味着代码直接运行在硬件上,没有底层操作系统管理资源或提供抽象。
所有工作都由您负责:初始化内存、设置时钟、配置外设以及处理中断。这种方式更底层,但能让您获得完全的控制权。
裸机程序结构
嵌入式 Rust 程序与标准程序有所不同。下面是一个基本结构:
#![no_std]:不链接标准库。#![no_main]:不使用默认的main入口点。#[cortex_m_rt::entry]:为 Cortex-M 设备指定实际入口点。
这个最小程序可以针对嵌入式目标进行编译,但还需要恐慌处理程序和运行时 crate。
#![no_std]
#![no_main]
// A minimal panic handler for embedded systems
use panic_halt as _;
// The entry point for ARM Cortex-M microcontrollers
#[cortex_m_rt::entry]
fn main() -> ! {
// This function runs once on device startup.
// Here you would initialize your hardware peripherals.
// For example, setting up a GPIO pin.
loop {
// Your main application loop runs here.
// This loop will run forever, performing tasks.
// Example: Toggle an LED, read sensor data.
}
}嵌入式版“Hello, World!”
由于没有可以输出内容的控制台,嵌入式系统中的经典“Hello, World!”通常是让 LED 闪烁。
这个简单操作表明您已经成功:
- 针对目标设备编译代码。
- 将代码烧录到设备上。
- 获得对基本硬件外设(通用输入/输出引脚)的控制。
内存布局与链接脚本
在裸机编程中,您需要了解程序编译后的代码和数据如何排列在微控制器的内存中。
链接脚本(通常由开发板支持包提供)定义这种内存布局,指定程序的不同部分(例如代码、静态数据、堆和栈)存放在设备的闪存(只读)和 RAM(可读写)中的位置。
快速检查嵌入式基础
下面检查您对嵌入式 Rust 基础知识的理解。
回顾:开始学习嵌入式 Rust
本课介绍了嵌入式 Rust,重点讲解了裸机编程和交叉编译等独特挑战。我们介绍了必备的工具链组件、常见的开发板,以及 no_std 程序的基本结构。
您还了解到,让 LED 闪烁就是嵌入式系统中的“Hello, World!”,并初步了解了链接脚本。现在,您已经可以进一步学习如何为现实世界编写代码了!
常见问题解答
「嵌入式 Rust 入门」课时是免费的吗?
是的 — 「嵌入式 Rust 入门」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn Rust Coding 课程的其余内容,请升级到 CoddyKit PRO。 Learn Rust Coding 课程共包含 3 节课。
「嵌入式 Rust 入门」这节课中我会学到什么?
开始学习嵌入式 Rust,了解工具链、常见开发板以及裸机编程基础。 你通过在浏览器中直接运行的动手代码来练习 Learn Rust Coding,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Learn Rust Coding 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Learn Rust Coding 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 3 节。
「嵌入式 Rust 入门」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Learn Rust Coding 课中编写并运行代码吗?
能。每节 Learn Rust Coding 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 嵌入式 Rust 入门
- 硬件抽象层与设备驱动
- 操作系统开发概念