越来越多的芯片厂商提供了自己的IDE给用户免费使用,但是国内的厂家大多没有,总不能一直用盗版吧,常在河边走,哪有不湿鞋…………
这里就利用VS Code搭建一个GCC开发环境,所有的都是免费的!
需要的软件
- VSCode及插件
比较核心的插件有下面几个,其他的按需安装即可:- C/C++
The C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging. - Cortex-Debug
Cortex-Debug adds support for debugging ARM executables through a GDB Server.
- C/C++
- 编译器及相关工具
选择官方的GCC编译器GNU Arm Embedded Toolchain以及CMake(或者make) - 调试工具
我只用Segger J-Link,使用其他的工具需要装OpenOCD或者ARM官方的pyOCD
搭建过程
安装VS Code和插件
这里就不多说了,非常简单,后面跟着步骤详细记录插件的配置方法。
安装GNU Arm Embedded Toolchain
- 1、以管理员权限运行安装包,打开的界面选择需要的语言,选哪个应该都清楚了
- 2、所有的步骤都按默认的进行,除了最后一步,最后一步务必将后面三个英文的选项都打上勾
- 3、验证安装结果,打开命令行,输入
arm-none-eabi-gcc --version
回车查看是否如下图所示
安装CMake
- 1、双击打开安装包,一路下一步,直到下面这里,选择后面两项!后面也是一路默认的操作。
*2、验证安装结果,打开命令行,输入cmake --version
回车查看是否如下图所示!
安装make
习惯make的可以按这一小节进行安装
- 1、先到这里下载最新的xPack Windows Build Tools工具,将下载下来的压缩包解压,我这里选择C盘根目录;
- 2、将工具包的bin路径添加到环境变量里
- 3、验证安装结果,打开命令行,输入
make
回车查看是否如下图所示!
安装调试工具
因为我是用jlink,所以就直接装jlink的驱动,这个应该就不特别说了,一路下一步就搞定。等哪天用别的工具了再回来写一下openOCD。
插件配置
虽然C/C++、CMake Tools都能通过配置完成编译、代码调试,但是对于MCU开发来说,Cortex-Debug更合适,不仅是配置简单,而且还能查看芯片的寄存器等内容。因此只用Cortex-Debug来做调试。
C/C++的配置
该插件只用来配置语法感知和提示,只要文件里不出现错误提示就算配置OK。
按快捷键
ctrl+shift+q
打开命令面板,输入C/C++
,在弹出的提示中选择C/C++: 编辑配置(UI)
(有UI可选我就不折腾别的)打开。然后配置以下内容:
-
1、建立配置建一个名称,这里我就用
ARM-GCC
-
2、选择前面装好的工具链里的编译器,注意windows路径中的反斜杠要替换为斜杠
-
3、智能感知模式选择
gcc-arm
-
4、因为前面已经配置了compilerPath,所以这里我保持默认,只包含工作区路径
*5、这个地方相当于keil中Options-C/C++页面里的Define,如果希望代码阅读起来更舒服,可以按实际的情况填写相应的宏 -
6、因为用的GCC编译器,所以语言标准都选gnu标准,具体的版本看自身需求
通过以上配置,会在.vscode
的c_cpp_configuration.json
文件中得到如下的结果,以后类似的工程都可以直接拷贝这个文件实现相同的配置
{
"configurations": [
{
"name": "ARM-GCC",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2020-q4-major/bin/arm-none-eabi-gcc.exe",
"intelliSenseMode": "gcc-arm",
"cStandard": "gnu11",
"cppStandard": "gnu++11"
}
],
"version": 4
}
Cortex-Debug的配置
- 1、按
F1
,在命令面板中输入launch
,选择Debug:Open launch.json
,在弹出的选择环境的列表中选择Cortex Debug
; - 2、这时会在
.vscode
下面生成launch.json
,内容长这样 - 3、 按下面这个完善文件内容
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "cortex-debug",
"request": "launch",
"name": "Debug J-Link",
"cwd": "${workspaceRoot}",
"executable": "./build/xxxx.elf",
"serverpath": "C:/Program Files (x86)/SEGGER/JLink/JLinkGDBServerCL.exe",
"servertype": "jlink",
"device": "STM32H750ZB", // 可以在jflash等工具的器件选择列表里找到对应的具体型号
"interface": "swd", // 可选jtag、swd
"serialNumber": "", // 电脑上有多个JLink,通过这里指定使用一个进行调试
"jlinkscript": "",
"runToMain": true,
"svdFile": "", // 可以在jlink的安装路径下找,也可以在keil、iar等地方找到,该文件描述了器件的寄存器等内容
"rtos": "",
"preLaunchTask": ""
}
]
}
验证环境
为了方便,这里我选择使用STM32CubeMX生成的makefile工程!至于其它的芯片没有现成makefile,或者想使用CMake,找个时间另外写一篇。
编译工程
切换到终端窗口,在命令行中输入make
并回车,完成编译
调试工程
点击运行
图标切换到调试界面,选择前面上面完善好的配置即可出现如下的调试状态,,按上方居中的按钮可以执行全速、单步跳过等操作,左侧可以查看局部变量、全局变量、断点、CPU的寄存器,如果配置文件里配置好了对应的SVD文件,还可以查看外设寄存器。
网友评论