嵌入式Rust开发入门指南
最近想学习嵌入式Rust开发,但不知道从哪里入手。请问有没有适合新手的入门指南?需要准备哪些开发工具和环境?另外,嵌入式Rust和普通Rust开发有什么区别?希望能推荐一些实用的学习资源和示例项目。
        
          2 回复
        
      
      
        想入门嵌入式Rust?先学Rust基础,再了解no_std环境。推荐STM32系列开发板,用cargo-generate创建项目。掌握HAL库和PAC,学会GPIO、UART等外设操作。多动手实践,从点灯开始!
嵌入式Rust开发入门指南
环境准备
- 安装Rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add thumbv7em-none-eabihf
- 安装嵌入式工具
cargo install cargo-binutils
rustup component add llvm-tools-preview
基础项目设置
创建新项目:
cargo new --bin embedded-blink
cd embedded-blink
Cargo.toml配置:
[package]
name = "embedded-blink"
version = "0.1.0"
edition = "2021"
[dependencies]
cortex-m = "0.7"
cortex-m-rt = "0.7"
embedded-hal = "0.2"
panic-halt = "0.2"
[dependencies.stm32f1xx-hal]
version = "0.10"
features = ["stm32f103", "rt"]
简单LED闪烁示例
// src/main.rs
#![no_std]
#![no_main]
use panic_halt as _;
use cortex_m_rt::entry;
use stm32f1xx_hal::{
    prelude::*,
    pac,
    gpio::gpioc::PC13,
    gpio::PushPull,
    gpio::Output,
};
use embedded_hal::digital::v2::OutputPin;
#[entry]
fn main() -> ! {
    // 获取外设访问权
    let dp = pac::Peripherals::take().unwrap();
    let mut rcc = dp.RCC.constrain();
    let mut gpioc = dp.GPIOC.split(&mut rcc.apb2);
    
    // 配置PC13引脚为推挽输出
    let mut led = gpioc.pc13.into_push_pull_output(&mut gpioc.crh);
    
    loop {
        // LED开
        led.set_high().ok();
        delay(1_000_000);
        
        // LED关
        led.set_low().ok();
        delay(1_000_000);
    }
}
// 简单延时函数
fn delay(count: u32) {
    for _ in 0..count {
        cortex_m::asm::nop();
    }
}
内存布局配置
memory.x文件:
MEMORY
{
  FLASH : ORIGIN = 0x08000000, LENGTH = 64K
  RAM : ORIGIN = 0x20000000, LENGTH = 20K
}
构建和烧录
# 构建
cargo build --release --target thumbv7m-none-eabi
# 生成二进制文件
cargo objcopy --release --target thumbv7m-none-eabi -- -O binary embedded-blink.bin
# 使用OpenOCD烧录
openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg
关键概念
- no_std环境:嵌入式开发通常不使用标准库
- 硬件抽象层(HAL):提供统一的硬件访问接口
- 外设访问:通过PAC(PERIPHERAL ACCESS CRATE)访问芯片寄存器
- 内存安全:Rust的所有权系统确保内存安全
下一步学习
- 学习中断处理
- 探索定时器和PWM
- 了解串口通信
- 研究嵌入式并发模式
这个指南提供了嵌入式Rust开发的基础框架,帮助你开始第一个嵌入式Rust项目。
 
        
       
                     
                   
                    

