福步外贸论坛网首页/南山网站seo

福步外贸论坛网首页,南山网站seo,凡科网做网站能达到什么效果,各大网站代下单怎么做Rust嵌入式开发环境搭建指南(基于Stm32+Vscode) 部分目录如下所示: 目录 简介Rust开发环境安装STM32开发工具链安装VSCode环境配置VSCode插件安装调试器配置项目创建与配置常见问题与解决方案简介 本文档旨在指导开发者如何搭建基于Rust语言的STM32嵌入式开发环境。相比传…

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-addcargo-rmcargo-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工具链仍然

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划合集——动态规划基本原理

动态规划合集——动态规划基本原理 动态规划原理1258:【例9.2】数字金字塔 动态规划原理深度优先搜索记忆化搜索动态规划(顺推)动态规划原理题解分析 滚动数组优化动态规划(逆推) 动态规划原理 从数塔问题出发理解动态…

如何让节卡机器人精准对点?

如何让节卡机器人精准对点? JAKA Zu 软件主界面主要由功能栏、开关栏、菜单栏构成。 菜单栏:控制柜管理,机器人管理与软件管理组成。主要功能为对控制柜关机、APP 设置、机器人本体设 置、控制柜设置、连接机器人和机器人显示等功能。 开关…

实时视频分析的破局之道:蓝耘 MaaS 如何与海螺 AI 视频实现高效协同

一、蓝耘 MaaS 平台:AI 模型全生命周期管理的智能引擎 蓝耘 MaaS(Model-as-a-Service)平台是由蓝耘科技推出的 AI 模型全生命周期管理平台,专注于为企业和开发者提供从模型训练、推理到部署的一站式解决方案。依托云原生架构、高…

设计模式(行为型)-策略模式

目录 定义 类图 角色 角色详解 Strategy(抽象策略类)​ Context(环境类 / 上下文类)​ ConcreteStrategy(具体策略类)​ 优缺点 优点​ 缺点​ 使用场景 类行为差异场景​ 动态算法选…

【算法day14】三数之和

三数之和 https://leetcode.cn/problems/3sum/description/ 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。…

10、STL中的unordered_map使用方法

一、了解 1、unordered_map(哈希) unordered_map是借用哈希表实现的关联容器。 访问键值对O(1),最坏情况O(n),例如哈希冲突严重时。【n是一个哈希桶的元素数量】 unordered_map特性 键值对存储&#xff…

C++ 头文件说明

如果一个程序足够大,代码功能很多,可以想象,不可能把代码写在一个cpp文件里。我们需要模块化,这样的好处很多,方便分工合作,可读性提高,调用也方便。 这个要怎么做呢? 很简单直接当…

【Linux系统】Linux进程终止的N种方式

Linux系列 文章目录 Linux系列前言一、进程终止的概念二、进程终止的场景三、进程终止的实现3.1 程序退出码3.2 运行完毕结果正常3.3 运行完毕结果异常3.4 程序异常退出 总结 前言 进程终止是操作系统中,进程的一个重要阶段,他标志着进程生命周期的结束…

【工具类】Java的 LocalDate 获取本月第一天和最后一天

博主介绍:✌全网粉丝22W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

嵌入式开发之STM32学习笔记day06

基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器,广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款,凭借其强大的性能、丰富的外设接口和低廉的价格…

AutoHub场景演示|带您领略智能自动化操作的全新体验

AutoHub是一款由OpenCSG推出的基于前沿大型语言模型(LLM)的浏览器自动化工具,旨在通过智能对话交互和自动化技术,帮助用户更高效地浏览网页和完成任务。它不仅能够自动化繁琐的网页操作,还能够为用户提供精准的信息检索…

深入解析 Linux 声卡驱动:从架构到实战

在嵌入式 Linux 设备中,音频功能的实现离不开 Linux 声卡驱动。而 ALSA (Advanced Linux Sound Architecture) 作为 Linux 内核的音频框架,提供了一整套 API 和驱动模型,帮助开发者快速集成音频功能。本篇文章以 WM8960 音频编解码器&#xf…

虚拟地址空间(下)进程地址空间(上)

一.关于页表组成 1.权限(rwx) 作用:如1.让代码区变成只读的 2.写时拷贝的实现:子进程创建时其页表指向的父进程代码和数据权限都是只读的,子进程试图修改,触发错误,系统开始写时拷贝。 来源:…

iwebsec-SQL数字型注入

1.判断是否存在漏洞 添加and 11发现正常显示,添加and 12无回显条目,则存在sql注入漏洞 2.因为有回显,尝试union联合注入,使用order by判断出有3个字段 3.使用union联合注入查看回显位,发现3三个字段均有回显&#xff…

蓝桥杯每日五题第一日

蓝桥杯每日5题 问题一 班级活动 1.班级活动 - 蓝桥云课 问题描述 小明的老师准备组织一次班级活动。班上一共有 nn 名 (nn 为偶数) 同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 nn 以内的正…

前端字段名和后端不一致?解锁 JSON 映射的“隐藏规则” !!!

🚀 前端字段名和后端不一致?解锁 JSON 映射的“隐藏规则” 🌟 嘿,技术冒险家们!👋 今天我们要聊一个开发中常见的“坑”:前端传来的 JSON 参数字段名和后端对象字段名不一致,会发生…

【Linux】Bash是什么?怎么使用?

李升伟 整理 什么是 Bash? Bash(Bourne Again Shell)是一种 命令行解释器(Shell),广泛用于 Unix 和 Linux 操作系统。它是 Bourne Shell(sh) 的增强版,提供了更多的功能…

Qt Creator入门

1.创建项目 选择创建项目-Application(Qt)-Qt Widgets Application-修改名称即可 默认创建有窗口类,myWidget,基类有三种选择:QWidget,QMainWindow,QDialog 注意: 名称和创建路径不能有中文、…

咖啡点单小程序毕业设计(JAVA+SpringBoot+微信小程序+完整源码+论文)

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着社会的快速发展和…

003-掌控命令行-CLI11-C++开源库108杰

首选的现代C风格命令行参数解析器! (本课程包含两段教学视频。) 以文件对象监控程序为实例,五分钟实现从命令行读入多个监控目标路径;区分两大时机,学习 CLI11 构建与解析参数两大场景下的异常处理;区分三…