作为一名嵌入式从业者,学习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基本的学习环境已经可以较为完整的运行了。
|