ubuntu 20.04 + vscode + ST-Link 调试 STM32
1 软件安装
Ubuntu 下解压 gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 和 cmake
sudo apt-get install cmake
tar -xjvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
配置系统环境变量使其生效
vim ~/.bashrc
export PATH=$PATH:/home/liukang/tools/mcu/gcc-arm-none-eabi-10.3-2021.10/bin
source ~/.bashrc
验证 cmake 和 交叉编译工具链版本
cmake -version
arm-none-eabi-gcc -v
cmake 下载地址
arm-none-eabi官网
vscode 安装 C/C++ 、C/C++ Extension Pack 、C/C++ Themes、Cotex-Debug、Arm Assembly、GBKtoUTF8、Remote-SSH 、Remote Explorer、vscode-icons等,可以根据自己需求安装插件,我是使用 ssh 远程连接 ubuntu
2 安装openocd
该工具往下用于连接 jlink 或 stlink,往上提供reset,halt,flash等常用功能,用于程序下载和调试。选用OpenOCD,使用方便且开源。
sudo apt-get install build-essential pkg-config autoconf automake libtool libusb-dev libusb-1.0-0-dev libhidapi-dev
sudo apt-get install libtool libsysfs-dev
sudo apt-get install openocd
#默认安装OpenOCD的路径:/usr/share/openocd/scripts。
验证版本
openocd --version
3 STLink安装
sudo apt-get install libusb-1.0
sudo apt-get install libgtk-3-dev
unzip stlink-1.8.0.zip
cd stlink-1.8.0
cmake .
make
cd bin
sudo cp st-* /usr/local/bin
cd ../lib
sudo cp *.so* /lib32
sudo cp config/udev/rules.d/49-stlinkv* /etc/udev/rules.d/
sudo cp ./config/chips /usr/local/share/stlink/ -rf
验证是否安装成功
注意:bin 目录下的 st-util 是ST-LINK GDB server,我们使用该文件进行调试,也可以使用openocd
4 配置launch.json文件
{
"version": "0.2.0",
"configurations": [
{
"name": "Stlink-Debug",
"cwd": "${workspaceFolder}",
"executable": "./build/stm32f103zet6.elf",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"interface": "swd",
"device": "STM32F103ZET6",
//"miDebuggerPath":"/home/liukang/tools/mcu/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gdb",
"svdFile": "./svd/STM32F103.svd",
"showDevDebugOutput": "both",
"v1": false,
"liveWatch": {
"enabled": true,
"samplesPerSecond": 1
},
// 使用 stutil 作为 gdbserver
"servertype": "stutil",
"serverpath": "/usr/local/bin/st-util",
/*"servertype": "openocd",
"configFiles": [
"/usr/share/openocd/scripts/interface/stlink-v2-1.cfg",
"/usr/share/openocd/scripts/target/stm32f4x.cfg"
]*/
}
]
}
如果需要在在线调试期间,查看MCU寄存器数据,需加入 svd 文件。
5 结果验证
执行 sh build.sh 脚本编译项目
烧写程序
F5 断点调试
以上就是使用 CMake + Ubuntu 20.04 + ST-Link 进行 STM32 的编译、调试和烧录,虽然 Keil软件提供了便捷的一键编译、运行和烧录功能,并且具备可视化的界面,但通过这种方式进行开发,可以帮助更深入地理解底层原理。在配置和使用的过程中,将对整个流程的有更清晰的掌握。使用vscode 存粹是个人爱好(vscode 是全宇宙最好的代码编辑器🤭)
下面是配置过程中涉及到的安装包以及项目工程(stm32f103zet6)为例。
资源包
作者:qq_51769114