使用vscode代替keil5作为ARM开发环境
WHY
ARM开发环境众多,比较常用的有keil、IAR、STM32CubeIDE、RT-Thread Studio等等。本人之前使用较多的是KEIL5,原因大概就是大学用的KEILC51对KEIL的界面比较熟悉上手难度低,加上项目基本都是windows环境上的开发,故一直使用KEIL。但KEIL被人诟病的语法补全功能、没有跨平台能力和界面不美观,都是其缺点。(虽然keil stutio正在研发中,预计明年初会出来,界面有了很大的改观。)
vscode这个软件最近很火,因为好用加上大量插件可以优化开发。其跨平台的特性可以在Linux和MAC上都可以运行。
前情提要
准备工作
我们写的C语言怎么变成机器能运行的代码?经历了预编译、编译、汇编、链接四个过程。
软件安装
Visual Studio Code
Visual Studio Code (简称 VSCode / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、Git 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux,运行流畅,可谓是微软的良心之作……
STM32Cube
主要生成工程和Makefile文件。
上述两件套玩嵌入式的一般都有。安装也比较方便没有过多下一步,故不再赘述。以下四件套这里也有一份打包好的也可以去官网下载。
MSYS2
其作用是用来继承Windows的环境变量
默认安装msys2,并编辑msys2_shell.cmd修改到和框框中一样。
GCC编译器
其主要作用是用来编译我们写的代码。
默认下一步安装,然后需要配置环境变量。若默认安装将以下路径添加到系统环境变量
C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.07\bin
win+R打开cmd输入以下命令arm-none-eabi-gcc -v
查看是否配置正确,若出现以下提示则配置正确:
MAKE
make 是一个命令工具,它解释 Makefile 中的规则。在 Makefile 文件中描述了整个工程所有文件的编译顺序、编译规则。
若是默认安装将C:\Program Files (x86)\GnuWin32\bin
添加到电脑的环境变量。win+R打开cmd输入以下命令make -v
查看是否配置正确,若出现以下提示则配置正确:
OpenOCD
OpenOCD是一个运行于PC上的开源调试软件,它可以控制包括Stlink等很多JTAG硬件;我们可以将它理解为一种GDB服务程序。
将压缩包解压到硬盘上一个位置X:\xxxxxx\Openocd\OpenOCD-20210729-0.11.0\bin
,将解压出来的bin文件夹添加到环境变量。win+R打开cmd输入以下命令opencbd -v
查看是否配置正确,若出现以下提示则配置正确:
生成测试工程
使用STM32CobeMX工具选择对应工程,配置一个方便测量的io引脚,切记需要把Debug引脚设置成SW模式,否则烧写一次会出现无法调试的问题。
工程文件设置成输出Makefile,然后点击Generate code生成工程文件
配置vscode
安装插件
1、在vscode的插件中下载安装C/C++,GBD调试插件。
配置launch.json
ctrl+shift+p配置launch.json文件需要注意有注释出需要根据实际位置配置
{
"version": "0.2.0",
"configurations": [
{
"name": "ARM Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/${workspaceRootFolderName}.elf",
"cwd": "${workspaceFolder}",
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/bin/arm-none-eabi-gdb.exe", //交叉编译工具链地址
"setupCommands": [
{
"text": "file E:/STM32test/build/STM32test.elf", //工程使用绝对地址
},
{
"text": "target remote localhost:3333", //调试器端口号,默认是3333等下可以通过指令看到
},
{
"text": "monitor reset",
},
{
"text": "monitor halt",
},
{
"text": "load" ,
}
],
"preLaunchTask": "build"
}
]
}
添加任务
1、ctrl+shift+p打开命令面板。
2、搜索tasks。
3、点配置任务。
4、选择工程文件夹,选择Others
然后在打开的tasks.json中复制下图代码
//tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "echo compile exeover&make -j4"
}
]
}
配置msys2_shell.cmd为终端
{
"terminal.integrated.shell.windows":"C:/msys64/msys2_shell.cmd", //根据实际位置添加
"terminal.integrated.shellArgs.windows": ["-defterm", "-mingw32", "-no-start", "-here"],
}
添加OcdStm32.cfg文件
在工程目录下和Makefile同级目录下新建一个文件,重命名至OcdStm32.cfg
添加代码如下:
interface stlink-v2 #调试器的名字
transport select swd #接口名,swd或jtag
source [find target/stm32f1x.cfg] #芯片类型,在\OpenOCD-20210729-0.11.0\share\openocd\scripts\target里找
编译调试
在终端中输入openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg
可以看到打开的端口号为3333,与launch.json中间配置的一致
然后按开始按钮就可以调试了