当前位置: 首页 > news >正文

Rust嵌入式开发环境搭建指南(基于Stm32+Vscode)

Rust嵌入式开发环境搭建指南(基于Stm32+Vscode)

部分目录如下所示:
在这里插入图片描述

目录

  • 简介
  • Rust开发环境安装
  • STM32开发工具链安装
  • VSCode环境配置
  • VSCode插件安装
  • 调试器配置
  • 项目创建与配置
  • 常见问题与解决方案

简介

本文档旨在指导开发者如何搭建基于Rust语言的STM32嵌入式开发环境。相比传统的C/C++开发方式,Rust提供了更强的内存安全保障和现代化的语言特性,非常适合嵌入式系统开发。本指南将详细介绍从环境搭建到项目配置的全过程,特别关注VSCode作为IDE的配置以及STLink和DAPLink调试器的使用。

Rust开发环境安装

1. 安装Rust工具链

作用:Rust工具链是进行Rust开发的基础环境,包含以下核心组件:

  • rustc:Rust编译器,负责将Rust代码编译成可执行文件或库
  • cargo:Rust的包管理器和构建系统,用于管理依赖、编译项目、运行测试等
  • rustup:Rust工具链管理器,用于安装和更新Rust组件,管理不同版本的Rust

使用rustup安装Rust工具链:

# Windows PowerShell
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 或者直接下载rustup-init.exe安装(推荐)

安装过程中选择默认配置即可。安装完成后,可以通过以下命令验证安装:


#检查版本
rustc --version
cargo --version

#升级到最新版本
rustup upgrade stable

2. 安装Rust嵌入式开发组件

作用:嵌入式开发需要特定的工具和目标支持,这些组件使Rust能够为ARM Cortex-M系列微控制器生成代码。

# 添加Rust交叉编译目标
rustup target add thumbv6m-none-eabi    # Cortex-M0和Cortex-M0+
rustup target add thumbv7m-none-eabi    # Cortex-M3
rustup target add thumbv7em-none-eabi   # Cortex-M4和Cortex-M7(无FPU)
rustup target add thumbv7em-none-eabihf # Cortex-M4F和Cortex-M7F(带FPU)

# 安装cargo-binutils工具
cargo install cargo-binutils
rustup component add llvm-tools-preview

# 安装cargo-embed工具(用于烧录和调试)
cargo install cargo-embed

# 安装probe-rs工具(用于与调试器交互)
cargo install probe-rs --features cli

各组件作用

  • 交叉编译目标:根据STM32芯片的Cortex-M核心类型选择适当的目标,使Rust能够生成适合特定ARM架构的代码
  • cargo-binutils:提供二进制工具集,用于检查和操作编译后的二进制文件,如查看大小、反汇编等
  • llvm-tools-preview:提供LLVM工具链支持,cargo-binutils依赖此组件
  • cargo-embed:用于将编译好的程序烧录到目标设备,并提供RTT调试功能
  • probe-rs:现代化的调试器后端,支持多种调试探针(如STLink、DAPLink等),提供烧录和调试功能

解决rustup-init.exe下载安装缓慢和Cargo下载慢的问题

Rust官网:https://rustup.rs/ 打开这个链接下载。如下下载慢可以使用下面镜像。实际下载速度还可以。

1. rustup-init.exe下载缓慢

可以通过以下国内镜像站点直接下载rustup-init.exe:

  • 清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe
  • 其他镜像等

下载完成后直接运行安装程序。

2.rustup-init.exe安装缓慢,永久设置国内镜像源(推荐)

为了避免每次都需要设置临时环境变量,建议将镜像源设置为系统环境变量,这样可以永久解决下载慢的问题。

方法一:通过Windows图形界面设置(推荐)

  1. 按下Win键 输入"编辑系统环境变量"

  2. 分别添加以下两个环境变量:

    • 变量名:RUSTUP_DIST_SERVER
    • 变量值:https://mirrors.aliyun.com/rustup
    • 变量名:RUSTUP_UPDATE_ROOT
      变量值:https://mirrors.aliyun.com/rustup/rustup

在这里插入图片描述

方法二:通过PowerShell命令行永久设置

以管理员身份运行PowerShell,然后执行以下命令:

# 设置系统环境变量(需要管理员权限)
[Environment]::SetEnvironmentVariable("RUSTUP_DIST_SERVER", "https://mirrors.aliyun.com/rustup", "Machine")
[Environment]::SetEnvironmentVariable("RUSTUP_UPDATE_ROOT", "https://mirrors.aliyun.com/rustup/rustup", "Machine")

# 验证环境变量是否设置成功
[Environment]::GetEnvironmentVariable("RUSTUP_DIST_SERVER", "Machine")
[Environment]::GetEnvironmentVariable("RUSTUP_UPDATE_ROOT", "Machine")

#删除系统环境变量 (需要管理员权限):
[Environment]::SetEnvironmentVariable("RUSTUP_DIST_SERVER", $null, "Machine")
[Environment]::SetEnvironmentVariable("RUSTUP_UPDATE_ROOT", $null, "Machine")

设置完成后,重新打开命令提示符或PowerShell窗口,然后执行Rust安装命令,,或者直接运行rustup-init.exe,下载速度将会显著提升:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
3. rustup-init.exe安装缓慢,使用国内镜像源(临时设置)

rustup-init.exe安装时会下载相关工具不使用镜像会很慢,在rustup-init.exe 程序文件夹下使用 PowerShell设置临时环境变量:

#使用 PowerShell设置临时环境变量
$env:RUSTUP_DIST_SERVER="https://mirrors.aliyun.com/rustup"
$env:RUSTUP_UPDATE_ROOT="https://mirrors.aliyun.com/rustup/rustup"

常用的国内Rust镜像源:

  • 阿里云镜像:https://mirrors.aliyun.com/rustup
  • 清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/rustup
  • 上海交通大学镜像:https://mirrors.sjtug.sjtu.edu.cn/rust-static
4. 配置Cargo国内镜像源

rustup-init.exe安装完成后,为了加速后续的包下载,建议配置Cargo使用国内镜像源。

Windows系统配置步骤

  1. 在用户目录下创建或编辑 .cargo 文件夹(通常位于 C:\Users\用户名\.cargo
  2. 在该文件夹中创建 config.toml(推荐)config(老版本) 文件(无扩展名或.toml扩展名均可,新版本Cargo需要.toml扩展名的文件)
  3. 添加以下配置内容(下面阿里云和清华验证了可用,也可以是其他的源):
# 阿里云镜像(推荐)
#[source.crates-io]
#replace-with = 'aliyun'

#[source.aliyun]
#registry = "https://mirrors.aliyun.com/crates.io-index" #不可用

# 如果上面的地址无效,可以尝试使用:
#registry = "sparse+https://mirrors.aliyun.com/crates.io-index/" #可用

# 清华大学镜像(备选)
[source.crates-io]
replace-with = 'tuna' #可用
# 
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"  #可用
# 或推荐使用:
# registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/" #未验证

# 上海交通大学镜像(备选)
# [source.crates-io]
# replace-with = 'sjtu' #未验证
# 
# [source.sjtu]
# registry = "https://mirrors.sjtug.sjtu.edu.cn/crates.io-index" #未验证
# 或推荐使用:
# registry = "sparse+https://mirrors.sjtug.sjtu.edu.cn/crates.io-index/"#未验证

通过命令行快速创建配置

# PowerShell创建配置目录和文件
mkdir -Force "$HOME\.cargo"
Set-Content -Path "$HOME\.cargo\config" -Value @"
[source.crates-io]
replace-with = 'aliyun'

[source.aliyun]
registry = "https://mirrors.aliyun.com/crates.io-index"
# 或使用 sparse 协议(推荐)
# registry = "sparse+https://mirrors.aliyun.com/crates.io-index/"
"@

验证配置是否生效

配置完成后,可以通过以下命令测试下载速度是否提升:

# 尝试安装一个小型包测试下载速度
cargo install cargo-edit

# 如果需要卸载cargo-edit,可以使用命令
cargo uninstall cargo-edit

如果下载速度明显提升,说明镜像配置已经生效。

#运行以下命令列出所有通过 cargo install 安装的工具及其版本:
cargo install --list

#在输出列表中查找 cargo-edit 条目,例如:
cargo-edit v0.12.0:
    cargo-add
    cargo-rm
    cargo-upgrade

如下所示列出了cargo-edit的版本:

在这里插入图片描述

STM32开发工具链安装

1. 安装ARM GCC工具链

作用:ARM GCC工具链是用于ARM架构处理器的编译工具集,包含以下核心组件:

  • arm-none-eabi-gcc:针对ARM架构的C/C++编译器,用于将C/C++代码编译为ARM指令集
  • arm-none-eabi-ld:链接器,用于将多个目标文件链接成一个可执行文件
  • arm-none-eabi-as:汇编器,将汇编代码转换为机器码
  • arm-none-eabi-gdb:调试器,用于调试ARM目标设备上运行的程序
  • arm-none-eabi-objcopy:用于转换二进制格式,如将ELF文件转换为HEX或BIN格式

使用场景:虽然Rust有自己的编译器,但在嵌入式开发中,ARM GCC工具链仍然

相关文章:

  • ASP3605同步降压调节器——满足汽车电子严苛要求的电源芯片方案
  • 数学之握手问题
  • Java替换jar包中class文件
  • Matlab概率区间预测全家桶更新了,新增光伏出力区间预测,4种分布可供预测
  • 【单片机通信技术应用——学习笔记三】液晶屏显示技术,取模软件的应用
  • AI重构工程设计、施工、总承包行业:从智能优化到数字孪生的产业革命
  • 【C++】八大常见的设计模式的实现与实践指南
  • Flink 内存管理
  • 3.18练习
  • 实现图片多种处理需求的实用工具
  • 功能安全实战系列06-英飞凌Tricore系列SMU详解
  • cc1.日期和进制问题———选择题。
  • Hadoop 启动,发现 namenode、secondary namenodes,这两个没有启动,报错超时。
  • dify重磅升级:从0.15.3安全升级1.1.0新手避坑指南
  • 前端 | debounce 防抖 vs 节流(throttle)
  • 【人工智能-前端OpenWebUI】--图表显示
  • Oracle 19C分区表索引小结
  • 链式二叉树概念和结构
  • 【Java】Mybatis学习笔记
  • HTML5与CSS3新特性详解
  • 中国太保一季度净赚96.27亿元降18.1%,营收同比下降1.8%
  • 巴基斯坦最近“比较烦”:遣返阿富汗人或致地区局势更加动荡
  • 去年立案侦办侵权假冒案件3.7万起,公安部公布13起案例
  • 上海五五购物节首次推出商圈精品推广节,9个商圈近百个商场参与促销
  • 厚植民营企业家成长土壤是民营经济高质量发展的关键
  • 央行副行长:上海国际金融中心建设是我国参与国际金融竞争的核心载体