参考链接
【Ubuntu下搭建stm32开发环境】Ubuntu18.04+vscode1.8.5+openocd+stlinkv2
Linux下使用VSCode,GCC,OpenOCD实现STM32一键编译烧录调试(CMake篇)
VSCode插件安装
- STM32 VS Code Extension
安装java
#安装java环境
sudo apt-get install default-jre安装CMAKE
#安装cmake
#下载cmake
wget https://cmake.org/files/v3.28/cmake-3.28.5.tar.gz
#解压
sudo tar zxvf cmake-3.28.5.tar.gz
sudo cp -r cmake-3.28.5 /usr/local/
cd /usr/local/cmake-3.28.5/
#编译安装
sudo ./bootstrap
sudo make
sudo make install
#建立软链接
sudo ln -s /usr/local/cmake-3.28.5/ /usr/bin/
#验证安装
cmake --version安装STM32套件(CubeMX mcufinder cubeclt)
安装GDB
#安装依赖
sudo apt-get install lib32ncurses5 lib32tinfo5 libc6-i386 texinfo libgmp-dev bison
#lib32ncurses5和lib32tinfo5这两个可能没有了,需要到老网站上去下
https://mirrors.aliyun.com/oldubuntu-releases/ubuntu/pool/main/n/ncurses/?spm=a2c6h.25603864.0.0.df882952Xf05Gn
#下载
wget https://ftp.gnu.org/gnu/gdb/gdb-11.2.tar.xz
#解压
sudo tar xvf gdb-11.2.tar.xz
sudo cp -r gdb-11.2 /usr/local
cd /usr/local/
#配置安装
sudo ./configure
sudo make
sudo make install安装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
#下载
git clone git://git.code.sf.net/p/openocd/code openocd
cd openocd/
sudo ./bootstrap
sudo cp -r openocd/ /usr/local
cd /usr/local/openocd
#安装依赖(为安装JLINK做准备)
sudo apt install automake autoconf libtool pkg-config
cd src/jtag/drivers/libjaylink
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install
#配置安装(使能JLINK,STLINK默认支持)
sudo ./configure --enable-maintainer-mode --enable-parport --disable-parport-ppdev --enable-jlink
sudo make
sudo make install
#验证安装
openocd --version安装STLINK驱动
#安装依赖
sudo apt-get install git make cmake libusb-1.0-0-dev
sudo apt-get install gcc build-essential
#下载
git clone https://github.com/stlink-org/stlink
cd stlink
#编译安装
cmake
make
make install安装JLINK
#安装依赖
sudo apt-get install libreadline6-dev
#下载
wget https://www.segger.com/downloads/jlink/JLink_Linux_x86_64.deb
#安装
sudo dpkg -i Link_Linux_x86_64.deb
#验证
cd /opt/SEGGER/JLink
./JLinkExe工程测试
使用STM32CubeMX创建一个工程,并导出工程为CMake类型
使用vsode插件导入Cmake工程

编辑工程的launch.json
{
"cwd": "${workspaceRoot}",
"executable": "${workspaceFolder}/build/Debug/ElectronBot-IAP.elf.elf",
"configFiles": [
// "interface/stlink-v2.cfg",
"interface/jlink.cfg",
"target/stm32f4x.cfg"
],
"name": "Debug with OpenOCD",
"request": "launch",
"type": "cortex-debug",
"servertype": "openocd",
"searchDir": [],
"runToEntryPoint": "main",
"showDevDebugOutput": "raw",
}
编辑工程的task.json
{
"type": "shell",
"label": "flash with J-link",
"command": "openocd",
"args": [
"-f",
"interface/jlink.cfg",
"-f",
"target/stm32f4x.cfg",
"-c",
// "program build/F401CCU6_demo.elf verify reset exit"
"program build/Debug/${workspaceRootFolderName}.elf.elf verify reset", //将工程根目录名称作为可执行文件名称
"-c",
"reset run",
// "-c",
// "shutdown",
"-c",
"exit"
], /*command+args相当于主命令+子命令,也就是openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "program build/F401CCU6_demo.elf verify reset exit"的效果*/
"problemMatcher": [
"$gcc"
],
"group": "build",
"dependsOn": [ //每次执行这个任务,会先build任务,这便是所谓的依赖。
"build"
]
},
{
"type": "shell",
"label": "CubeProg: Flash project (SWD)",
"command": "STM32_Programmer_CLI",
"args": [
"--connect",
"port=swd",
"--download",
"${command:cmake.launchTargetPath}",
"-hardRst",
"-rst",
"--start"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": []
},
调试工程

下载工程

