Linux系统--搭建STM32开发环境
搭建STM32开发环境
下载驱动工具
- 安装openocd
用于发现和连接stlinksudo apt-get install openocd
- 安装stlink
下载地址:https://github.com/stlink-org/stlink/tags
下载源码 stlink-1.8.0.zip 包
1 | unzip stlink-1.8.0.zip |
在build/Release/bin 生成工具程序
./st-flash –version
- 安装gcc-arm-none-eabi(交叉编译链)若编译链版本有要求,可以自行下载对应版本
1
sudo apt-get install gcc-arm-none-eabi
配置环境变量
stm32 网址指导说明,详细介绍了如何下载基础工程和编译环境。如果需要先跑通测试工程,可以参考以下链接
指导说明
1、创建目录
1 | mkdir STM32-base |
确保安装了 “git”和“make”若无则执行
1 | sudo apt-get install git |
2、下载交叉编译链
编译环境下载
最新版本
解压后,放入STM32-base/tools
1 | cd ~/Downloads |
3、下载基础工程和编译脚本
1 | # 下载编译make文件 |
4、编译
在模板工程目录下执行,输出文件会在 bin/目录找到 “stm32_bin_image.bin”、”stm32_executable.elf”
1 | make |
烧录与调试
确保自己安装好了openocd 和 stlink 工具,并且硬件已经连接好。
1、进入demo工程
1 | cd STM32-base-F1-template |
2、单独烧录
st-flash 命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17$ st-flash write ./bin/stm32_bin_image.bin 0x08000000
以下日志表示成功
st-flash 1.8.0
2024-07-08T14:53:24 INFO common.c: STM32F1xx_MD: 20 KiB SRAM, 64 KiB flash in at least 1 KiB pages.
file ./bin/stm32_bin_image.bin md5 checksum: 5e908f9c1f5ce5aa7b606ea58a28bf, stlink checksum: 0x0002a810
2024-07-08T14:53:24 INFO common_flash.c: Attempting to write 3308 (0xcec) bytes to stm32 address: 134217728 (0x8000000)
-> Flash page at 0x8000c00 erased (size: 0x400)
2024-07-08T14:53:24 INFO flash_loader.c: Starting Flash write for VL/F0/F3/F1_XL
2024-07-08T14:53:24 INFO flash_loader.c: Successfully loaded flash loader in sram
2024-07-08T14:53:24 INFO flash_loader.c: Clear DFSR
2024-07-08T14:53:24 INFO flash_loader.c: Clear CFSR
2024-07-08T14:53:24 INFO flash_loader.c: Clear HFSR
4/4 pages written
2024-07-08T14:53:24 INFO common_flash.c: Starting verification of write complete
2024-07-08T14:53:24 INFO common_flash.c: Flash written and verified! jolly good!
2024-07-08T14:53:24 INFO common.c: Go to Thumb modest-info 命令
st-info --probe
日志正确显示
1 | Found 1 stlink programmers |
错误显示: 解决方式见下文
1 | Failed to enter SWD mode |
问题
1、缺少动态库
1 | # st-flash write ./bin/stm32_bin_image.bin 0x08000000 |
解决方式:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
或者 sudo ldconfig
2、烧录失败,进入swd模式失败
1 | st-flash write ./bin/stm32_bin_image.bin 0x08000000 |
可能原因:
- 外部硬件未连接好
- 模式未设置正确
- 固件未擦除
解决方式3、bin文件大小过大,无法烧录1
2
3# 按住reset键不动,然后执行,显示成功后松开
st-flash --connect-under-reset erase
解决方式:换成标准库开发或者裁剪HAL库工程大小