说明
此系列文章是参考 The Embedded Book 和 Discovery 以及众多第三方文章杂糅而成😄,仅用于学习和探索Rust在STM32嵌入式领域的使用。
为了方便自己使用,以下工具和方式非官方推荐,但是适合自己。
环境准备
-
Rust本体
具体安装方式见官方 https://www.rust-lang.org/tools/install -
Rust依赖安装
rustup component add llvm-tools-preview
rustup component add rust-std-thumbv7em-none-eabihf rust-std-thumbv7em-none-eabi rust-std-thumbv7m-none-eabi
cargo install cargo-binutils
cargo install itmdump
- 其他辅助软件
- 串口调试软件 sscom
- [可选]ST-LINK USB Driver + J-Link硬件
- CH340驱动 CH340驱动一定要插着设备安装!如果有问题,禁用Win10驱动签名功能
- STM32下载软件,如FlyMcu
- arm-none-eabi 套件 添加到Path
- 硬件
我用的 普中F407-定通-T100:
STM32F407ZGT6,1024K Flash, 192K RAM, 32Bit, 168MHz
自带按键,LED,USB2TTL,EEPROM,LCD接口,SD卡接口,miniUSB,NRF24L01接口,SPI-FLASH模块,时钟
晶振8M
下载
如果使用Keil可以直接使用J-Link直接下载,使用Rust编译后的程序无法通过Keil下载,所以可以使用OpenOCD+J-Link方式替代。
但是,实际上OpenOCD使用比较麻烦,我们使用传统的方式ISP下载进行。
还有一个问题是,Rust编译出来的实际上是Arm程序,我们需要使用将其中的Hex或者Bin提取出来。
将Rust编译成的ELF文件提取Hex或者bin方法:
- bin文件
arm-none-eabi-objcopy -O binary stm32app stm32app.bin
- hex文件
arm-none-eabi-objcopy -O ihex stm32app stm32app.hex
备注:
- 由于OpenOCD需要和JLink硬件配合使用,这里不适用此种方式下载和调试。
- 固件下载目前使用USB2TTL的串口下载进行,ISP方式
参考:
- arm-none-eabi
- FlyMcu
- STM32F103 Rust
- https://www.cnblogs.com/whik/p/9953156.html
- https://www.cnblogs.com/yibanshouxi/p/4133471.html