1099|10

2870

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

《Rust实战》嵌入式实验环境搭建 [复制链接]

作为一名嵌入式从业者,学习rust的目标之一是:将rust应用于嵌入式领域。本次就是在windows下搭建rust的实验环境。

环境需要的软件清单:
1、rust的安装程序 rustup-init.exe,https://www.rust-lang.org/tools/install 
2、VSCODE rust语言的ide开发环境 ,
3、VSCODE 的rust插件rust-analyze和CodeLLDB,rust语法编辑,CodeLLDB调试rust使用

4、VSCODE OpenOCD Cortex-debug,扩展插件用来调试在vscode下调试。
5、rust必要的安装编译支持,M0、M3、M4、M7等等
6、OpenOCD嵌入式调试器,xpack-openocd-0.12.0-3 ,The xPack OpenOCD releases | The xPack Build Framework

以上1、2、3都是rust的基础安装。4、5、6是嵌入式要求的安装。

安装的步骤方法。

一、rust语言的安装

rust的安装步骤,使用rustup-init.exe先安装rustup工具,然后进行编译环境的安装。

   

这里需要注意,默认的选项可能于我的不同,这里是选择使用的运行目标,在windows平台上主要有两种 i686-pc-windows-gnu和i686-pc-windows-msvc,因为rust使用llvm的runtime,llvm没有提供windows下的llvm的runtime基本库,所以安装完成后需要选择对应的runtime环境。

i686-pc-windows-gnu,安装GNU的C/C++库,可以使用MingW64。
i686-pc-windows-msvc,安装VC++的SDK,简便的方法是安装VS2022

在我的机器上是两个环境都有安装,但是默认是gnu目标。

 

使用rustup update检查是否安装成功。

cargo new hello_world

使用cargo建立hello_world项目程序

G:\eeworld\rust>cargo new hello_world
     Created binary (application) `hello_world` package
G:\eeworld\rust>cd hello_world
G:\eeworld\rust\hello_world>cargo run
   Compiling hello_world v0.1.0 (G:\eeworld\rust\hello_world)
    Finished dev [unoptimized + debuginfo] target(s) in 2.39s
     Running `target\debug\hello_world.exe`
Hello, world!
G:\eeworld\rust\hello_world>

输出正常表示安装成功。

二、vscode工具及插件的安装

vscode的安装比较容易。这里使用的是安装包,安装包解压C:\VSCode-win32-x64-1.87.2既可以,增加环境变量,VSCODE_HOME变量名是我自己定义的,

VSCODE_HOME = C:\VSCode-win32-x64-1.87.2

增加VSCODE_HOME到PATH当中。

rust插件的安装,这里的插件比较多,我选择了rust-analyzer插件,这个个人喜好吧,可以是别的。

  如果安装成功就可以使用语法提示了。

如果想能够调试rust程序,则需要安装codeLLDB插件,非常遗憾的是:这个插件在国内安装是灰常的困难!!!,使用vscode的插件管理可以按照上这个界面,但是工作就是不正常。

  因为缺少GNU或其它的调试符号库,我安装的方法是拷贝出错的地址,手动下载,手工的安装到系统。

 这里不是重点,细节可以另行补充叙述。

如果以上安装成功则说明 rust的基本环境已经可以使用了。

三、嵌入式编译目标的安装

thumbv6m-none-eabi for ARM Cortex-M0 and Cortex-M0+,的支持
thumbv7m-none-eabi for ARM Cortex-M3,的支持
thumbv7em-none-eabi for ARM Cortex-M4 and Cortex-M7 (no FPU support),的支持
thumbv7em-none-eabihf for ARM Cortex-M4F and Cortex-M7F (with FPU support),的支持

以上的列表为嵌入式的支持列表。安装方法使用rustup target add命令进行安装

rustup target add thumbv6m-none-eabi

四、xpack-openocd的安装

我使用的是xpack-openocd-0.12.0-3 的安装包,方法是下载安装到目录解压。

 

vscode的插件Cortex-Debug的安装,方法使用vscode的管理器就可以了。

  安装完成后准备工作就此完成。

五、项目建立和测试

建立项目比较简洁的方法是使用cargo模板,如果使用常规的方法配置十分的繁琐,参考的连接:STM32L0 Rust Part 1 - Getting Started · Craig J. Bishop (craigjb.com)

安装  cargo-generate.exe工具

cargo install cargo-generate

使用模板建立项目

cargo generate --git https://github.com/rust-embedded/cortex-m-quickstart

根据提示输入:项目名称  blink

打开.cargo/config.toml文件,修改与开发板对应的build项目目标

  如果是stm32f103使用默认既可以。根据开发板修改memory.x文件中的内存布局,

MEMORY
{
  /* NOTE 1 K = 1 KiBi = 1024 bytes */
  /* TODO Adjust these memory regions to match your device memory layout */
  FLASH : ORIGIN = 0x08000000, LENGTH = 192K /* STM32L073RZ */
  RAM : ORIGIN = 0x20000000, LENGTH = 20K /* STM32L073RZ */
}

修改cargo.toml文件,内容参考 

链接已隐藏,如需查看请登录或者注册

[dependencies]
embedded-hal = "0.2.7"
nb = "1"
cortex-m = "0.7.6"
cortex-m-rt = "0.7.1"
# Panic behaviour, see https://crates.io/keywords/panic-impl for alternatives
panic-halt = "0.2.0"

[dependencies.stm32f1xx-hal]
version = "0.10.0"
features = ["rt", "stm32f103", "medium"]

cargo build

 

完成后,生成elf文件,使用二进制工具编程hex文件,烧录到开发板。

终结:

目前可以编译和运行rust编写的程序,但是配置过程十分的麻烦,很多还需要手工进行。但是,rust基本的学习环境已经可以较为完整的运行了。

 

此帖出自编程基础论坛

最新回复

谢谢bigbat大佬的经验提醒。。。。 嗯嗯,此方法有效!   详情 回复 发表于 2024-4-17 10:15
点赞(2) 关注
 

回复
举报

1123

帖子

1

TA的资源

五彩晶圆(初级)

沙发
 

过两天试一试楼主的历程!

不过还不清楚Rust能做什么,还没学习。。。。慢慢来。。

谢谢楼主分享

此帖出自编程基础论坛
 
 
 

回复

6841

帖子

11

TA的资源

版主

板凳
 
大佬我可以跟你学习吗?我也找了一些视频与资料学习了一下,但是我的语言基础还不会,老师的讲的都还不理解是什么吧,以后跟你学习了!
此帖出自编程基础论坛

点评

rust不适合没有语言基础的入门语言,rust的很多概念是为了避免c++等语言中内存管理的缺陷,当你能够了解到内存管理缺陷时编程水平已经达到一定的水平了  详情 回复 发表于 2024-4-6 09:28
 
 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

4
 
lugl4313820 发表于 2024-4-6 07:36 大佬我可以跟你学习吗?我也找了一些视频与资料学习了一下,但是我的语言基础还不会,老师的讲的都还不理解 ...

rust不适合没有语言基础的入门语言,rust的很多概念是为了避免c++等语言中内存管理的缺陷,当你能够了解到内存管理缺陷时编程水平已经达到一定的水平了

此帖出自编程基础论坛
 
 
 

回复

731

帖子

5

TA的资源

纯净的硅(高级)

5
 

楼主分享的Rust开发环境搭建教程步骤非常详细,图文并茂,通俗易懂,适合入门学习

此帖出自编程基础论坛
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

6
 

怎么在线调试呢?

此帖出自编程基础论坛

点评

你参考一下:在 Windows 上针对 Rust 设置开发环境 | Microsoft Learn 这是微软出的教程,重点和难点是:CodeLLDB 的安装,需要手工安装,其它的都没事  详情 回复 发表于 2024-4-11 18:31
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

7
 
freebsder 发表于 2024-4-11 15:33 怎么在线调试呢?

你参考一下:在 Windows 上针对 Rust 设置开发环境 | Microsoft Learn 这是微软出的教程,重点和难点是:CodeLLDB 的安装,需要手工安装,其它的都没事

此帖出自编程基础论坛

点评

谢谢分享!  详情 回复 发表于 2024-4-12 11:10
 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

8
 
bigbat 发表于 2024-4-11 18:31 你参考一下:在 Windows 上针对 Rust 设置开发环境 | Microsoft Learn 这是微软出的教程,重点和难 ...

谢谢分享!

此帖出自编程基础论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

1123

帖子

1

TA的资源

五彩晶圆(初级)

9
 

怪不得我昨天在笔记本上VSCode装CodeLLDB报错,仔细一看,原来是网络问题,timeout

此帖出自编程基础论坛

点评

先删除 CodeLLDB插件,安装过程出错的地方,把URL记下来手工下载,手工安装,当然有梯子也可以不用怎么麻烦。  详情 回复 发表于 2024-4-12 16:05
 
 
 

回复

2870

帖子

4

TA的资源

五彩晶圆(中级)

10
 
hellokitty_bean 发表于 2024-4-12 11:20 怪不得我昨天在笔记本上VSCode装CodeLLDB报错,仔细一看,原来是网络问题,timeout

先删除 CodeLLDB插件,安装过程出错的地方,把URL记下来手工下载,手工安装,当然有梯子也可以不用怎么麻烦。

此帖出自编程基础论坛

点评

谢谢bigbat大佬的经验提醒。。。。 嗯嗯,此方法有效!  详情 回复 发表于 2024-4-17 10:15
 
 
 

回复

1123

帖子

1

TA的资源

五彩晶圆(初级)

11
 
bigbat 发表于 2024-4-12 16:05 先删除 CodeLLDB插件,安装过程出错的地方,把URL记下来手工下载,手工安装,当然有梯子也可以不用 ...

谢谢bigbat大佬的经验提醒。。。。

嗯嗯,此方法有效!

此帖出自编程基础论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表