如果想使用GNU gcc-arm-none-eabi-gcc来开发项目,遇到的挑战就是如何在烧写和debug代码了,开源的ide常见的有基于eclipse、CLion和vscode,基于前面两种的都是java平台的,无论内存和效率都有点高,但是优点是项目的配置较少,vscode的效率和内存占用少但是项目的配置较复杂。本文是我自己的一点经验总结,配置过程如下:
一、准备工作:
需要的软件,VSCode-win32-x64-1.84.2.zip ,这个到https://code.visualstudio.com/download下载
编译器 gcc-arm-none-eabi-10.3-2021.10.zip https://developer.arm.com/downloads/-/gnu-rm/10-3-2021-10
下载和调试工具 openocd xpack-openocd-0.12.0-2,
项目工具CMAKE,https://cmake.org/download/
项目工具ninja,
其它的就是调试器jlink、stlink的驱动了。
二、安装各种软件
这个很少简单,将所有的软件解压到磁盘的项目下,
向我这样,比较省事都统统放在C盘,然后就是设置环境变量,PATH
在加入一个变量
这个变量是配置openocd vscode时用到地。
完成后加入CMD命令,检验一下
如果成功,进行下一步。
三、安装vscode插件,
上面的插件确保安装成功,
四、构建CMAKE项目,
我使用的是STM32CubeMX构建项目,使用stlink调试项目。
使用vscode打开项目,
运行debug编译项目既可以,这是生成debug项目
到此时项目就算成功了一半了。
五、配置debug设置
这是最最关键的一步,谁也不是神仙,写代码难免会出错,所以调试就是最关键的了。
如果你向我一样比较急切地去debug,很可能是失败的。
参考上面地设置,
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug (Remote OpenOCD)",
"type":"cortex-debug",
// "cortex-debug.armToolchainPath":"${env:ARM_NONE_EABI_TOOLCHAIN_PATH}/bin",
"cwd": "${workspaceRoot}",
"executable": "${workspaceRoot}/build/debug/lv_stm32f746.elf",
"request": "launch",
"servertype": "external",
// This may need to be arm-none-eabi-gdb depending on your system
// "gdbPath" : "${env:ARM_NONE_EABI_TOOLCHAIN_PATH}/bin/arm-none-eabi-gdb",
// Connect to an already running OpenOCD instance
"gdbTarget": "localhost:3333",
"svdFile": "${workspaceRoot}/.vscode/STM32F746.svd",
"runToMain": false,
// Work around for stopping at main on restart
"postRestartCommands": [
"break main",
"continue"
]
},
{
"cwd": "${workspaceRoot}",
"executable": "${workspaceRoot}/build/debug/lv_stm32f746.elf",
"cortex-debug.armToolchainPath":"${env:ARM_NONE_EABI_TOOLCHAIN_PATH}/bin",
"device": "STM32F746NGH6",
"configFiles": [
"interface/stlink.cfg",
"target/stm32f7x.cfg"
],
"name": "Debug (Local OpenOCD)",
"request": "launch",
"type": "cortex-debug",
"showDevDebugOutput": false,
"gdbPath" : "${env:ARM_NONE_EABI_TOOLCHAIN_PATH}/bin/arm-none-eabi-gdb",
"svdFile": "${workspaceRoot}/.vscode/STM32F746.svd",
"servertype": "openocd",
"runToMain": true,
}
]
}
关键地是: "gdbPath" : "${env:ARM_NONE_EABI_TOOLCHAIN_PATH}/bin/arm-none-eabi-gdb",和 "cortex-debug.armToolchainPath":"${env:ARM_NONE_EABI_TOOLCHAIN_PATH}/bin",
这里面的设置指向了调试工具的目录,上面配置的ARM_NONE_EABI_TOOLCHAIN_PATH环境参数
然后就是启动调试了
看到断点可以调试了。
|