在最近一段时间的开发中我使用了Visual Studio Code来作为代码编辑器,其优异的工程管理,超快的启动速度,各种各样功能强大的插件(帅气的主题),使我立刻爱上了这个文本编辑器。加之网上有许多将stm32的工程搬迁到VSCode上来编译调试,所以我尝试使用插件来完整的在vscode上搭建了一个S32K144的开发环境。下面我就来详细讲述一下这个环境的搭建和基本使用方式。
在软件左侧选项中选择扩展选项,在插件市场中搜索安装 VS Code 插件如下:
提供 ARM 汇编代码的语法识别加亮
2. C/C++
提供 C/C++ 的语法智能感知、加亮及调试功能。
下图是我安装的关于C/C++相关的插件,仅供参考。
点击 文件 -> 首选项 -> 设置,来打开 VS Code 的配置文件( VS Code 采用 json 格式的文件进行配置,没有图形界面),在文件中加入如下配置(窗口左侧为系统壳配置选项及默认参数是只读的,右侧窗口为配置设置界面,可写),尤其注意最后两项执行程序的路径要设到自己的路径下:
这时你的VSCode终端为git指令界面:
由于vscode不会自动识别makefile中的配置参数,所以如果想要使其代码索引,智能感知运行正确的话,就需要我们单独设置其中的c_cpp_properties.json文件。
c_cpp_properties.json 用于设定工程的 Include 路径,宏定义及搜索浏览路径,其中需要设定两个参数:
includePath 提供.h的搜索目录
defines 编译时在指令中加入的宏定义,这里是在S32DS中的编译配置中找到的宏定义:
将以下路径添加到环境变量中:
在VSCode的终端内,进入到Debug目录下,直接执行make –j4
至此,使用VSCode对S32K144的编译就告一段落了,下面开始调试。
调试的整体流程图如下:
我们可以先进行一个简单的测试,来确定我们的环境是否正确。
注意此时,已经在等待GDB client连接,以及端口号为2331
接着,我们可以在命令行中输入arm-none-eabi-gdb,应该可以看到如下界面,否则是没有添加
到环境变量中。
此时,我的车机已经在正常运行了。
简单解释一下这几个指令:
target remote :2331 :连接到GDB server。
file : 载入目标文件到gdb。
load : 下载文件到目标板。
c: 运行到下一个断点,如果没有断点,会一直运行
monitor reset : 传递命令reset给JLink GDB server。
注意:monitor 后面的参数不是gdb的指令,而是gdb server的(这里就是JLink Server的),这里参考JLink的文档(在安装目录下有),可以接受如下指令
可以了解一下。
这个文件的参数很多,我们对于简单的使用,只需要将其中的路径改为自己的工程路径和名称即可,有关于其具体意义和使用方式的说明可以查看c/c++插件的官方github userguid来学习使用。其中需要注意的是,由于我们的调试是在windows环境下使用mingw64来实现的,所以在调试的启动过程中指令会在windows cmd和mingw64跳转几次,具体指令是在哪个终端内调用的要根据指令的类型来决定,所以我们必须很小心的来设置路径参数,分清“ / ” 和 “ \ ”路径的表示方法,如果执行起来有错误,就多看看启动时,在调试窗口打印的记录来调整修改正确。
最终我们的配置如下,主要注意下红色框框内的参数:
在launch.json中"preLaunchTask": "Jlink GDB Server",
中的Jlink GDB Server语句就是我们在task中设置的,具体如下:
进行编译和启动JlinkGDBServerCL.exe
其中JlinkGDBServerCL.exe是cmd界面,而不是图形界面。
其中task中注意下下面的配置:
这里是一个终端窗口的配置,如果是share会出现终端重用的错误。
我们可以先在某个地方打个断点。
可以单步调试一下
我们可以简单地看到局部变量,全局变量,堆栈,断点,以及其他的一些调试信息
以上就是文档的全部内容,参考的文档有:
使用VSCode和VS2017编译调试STM32程序
https://www.cnblogs.com/WeyneChen/p/8379214.html
STM32高级开发(18)-使用VS Code搭建STM32开发环境
https://blog.csdn.net/zhengyangliu123/article/details/79090601