0


VSCode 加Cortex-Debug嵌入式调试方法

简介

当使用ARM Cortex-M微控制器时,Cortex-Debug是一个Visual Studio Code的扩展,以简化调试过程。本文档介绍了如何编写启动配置(launch.json)。

settings.json配置

  • 打开VSCode用户设置文件settings.json: 文件→偏好→设置
  • 选择用户设置: 在搜索栏中输入" json "(带或不带双引号)。在设置中找到“编辑”链接。然后点击它。这将打开~/.config/Code/User/settings.json文件
  • 将以下行添加到settings.json文件,在大括号{}之间:
{"cortex-debug.openocdPath":"/usr/bin/openocd",
    "cortex-debug.armToolchainPath.linux":"/opt/toolchains/gcc-arm- none-eabi-10.3-2021.10/bin",
    "cortex-debug.armToolchainPath.windows":"C:\\ProgramData\\chocolatey\\bin",
    "cortex-debug.gdbPath.linux":"/opt/toolchains/gcc-arm-none-eabi-10.3-2021.10/bin//arm-none-eabi-gdb",
    "cortex-debug.gdbPath.windows":"C:\\ProgramData\\chocolatey\\bin\\arm-none-eabi-gdb.exe"}

请注意:您系统上的路径可能不同。确保该路径与文件的实际位置匹配。

  • 保存文件settings.json

launch.json配置

要在VS Code中运行或调试一个简单的应用程序,我们可以在debug start视图中选择run and debug,或者我们可以按F5, VS Code将尝试运行当前活动的文件。

创建启动配置文件是有益的,因为它允许我们配置和保存调试设置的详细信息。VSCode会在启动时调试配置信息。位于工作空间(项目根文件夹)中的.vscode文件夹中的Json文件。

launch.json文件用于在Visual Studio Code中配置调试器。

参数
以下是launch.json中的参数列表。为特定的设备和环境配置它们。

cwd:项目路径
configFiles:要加载的OpenOCD配置文件
device:目标设备标识符
接口:用于连接的调试接口类型(默认为SWD) -用于J-Link和BMP探针。
name:配置名称;显示在启动配置下拉菜单中。
preLaunchTask:在调试会话开始之前运行的任务。指定在tasks.json中定义的任务。
request:配置请求类型。可以是“发射”或“附加”。
runToEntryPoint:如果启用,调试器将运行,直到主函数开始。
serialNumber: J-Link专用参数。J-Link序列号-仅当多个J-Link连接到计算机时需要
servertype: GDB服务器类型—支持jlink、openocd、pyocd、pe、stutil
svdFile:描述微控制器外设的SVD文件的路径;如果没有提供,那么可以根据输入的“设备”选择一个。这可能会根据“设备”自动加载。
swoConfig: SWO/ITM配置。
enabled:开启SWO解码。
cpuFrequency: CPU的目标频率,单位为Hz。
swoffrequency: SWO频率,单位为Hz。
source:SWO数据来源。可以是“探针”直接从调试探针获得,也可以是串行端口设备使用调试探针外部的串行端口。
decoders:SWO解码器配置
label:输出窗口的标签。
port: ITM端口号
  • 打开VSCode启动配置文件launch. json: Run→Add Configuration…
  • 复制以下代码
{"version":"0.2.0","configurations":[{"name":"Debug (OpenOCD)","cwd":"${workspaceRoot}","executable":"${workspaceRoot}/build/blinky.elf","request":"launch","type":"cortex-debug","servertype":"openocd","interface":"swd","device":"TM4C123GH6PM","runToEntryPoint":"main","svdFile":"${workspaceRoot}/svd/TM4C123GH6PM.svd","configFiles":["board/ek-tm4c123gxl.cfg"],"preLaunchCommands":["set mem inaccessible-by-default off","monitor reset"],"postLaunchCommands":["monitor reset init","monitor sleep 200"]}]}
  • 修改“executable”、“svdFile”和“device”参数并保存
  • svdFile: launch. json中的“svdFile”条目。在Json文件是可选的,但对嵌入式系统调试至关重要,因为它描述了设备的外设寄存器。

例1: Discovery Board / OpenOCD

这是开发板的配置。这基本上是cortex-m-quickstart的默认设置。

launch. json

{"version":"0.2.0",
    "configurations":[{"type":"cortex-debug",
            "request":"launch",
            "name":"Debug (OpenOCD)",
            "servertype":"openocd",
            "cwd":"${workspaceRoot}",
            "preLaunchTask":"cargo build",
            "runToMain": true,
            "executable":"./target/thumbv7em-none-eabihf/debug/project-name",
            "device":"STM32F303VCT6",
            "configFiles":["interface/stlink-v2-1.cfg",
                "target/stm32f3x.cfg"],
            "svdFile":"${workspaceRoot}/.vscode/STM32F303.svd",
            "swoConfig":{"enabled": true,
                "cpuFrequency":8000000,
                "swoFrequency":2000000,
                "source":"probe",
                "decoders":[{"type":"console", "label":"ITM", "port":0}]}}]}

例2:Nucleo-F429ZI Board / J-Link

将Nucleo-F429的STLink固件升级为JLink。因此,对于我的核与J-Link固件,我更改设置“servertype”为“jlink”和“interface”为“swd”。

{"version":"0.2.0",
    "configurations":[{"type":"cortex-debug",
            "request":"launch",
            "name":"Debug (J-Link)",
            "cwd":"${workspaceRoot}",
            "executable":"./target/thumbv7em-none-eabihf/debug/project-name",
            "servertype":"jlink",
            "device":"STM32F429ZI",
            "interface":"swd",
            "serialNumber":"",
            "preLaunchTask":"cargo build",
            "runToMain": true,
            "svdFile":"${workspaceRoot}/.vscode/STM32F429.svd",
            "swoConfig":{"enabled": true,
                "cpuFrequency":8000000,
                "swoFrequency":2000000,
                "source":"probe",
                "decoders":[{"type":"console", "label":"ITM", "port":0}]}},
    ]}

结合Makefile设置调试方法

添加构建(编译、链接等)任务(tasks.json)

ctrl+shift+p打开命令行,输入Tasks: Run task==》 Create tasks.json file from template, 生成默认的tasks.json文件。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format"version":"2.0.0",
    "tasks":[{"label":"echo",
            "type":"shell",
            "command":"echo Hello"}]}

工程采用makefile编译则,改为

{"version":"2.0.0",
    "tasks":[{"label":"make all",
            "type":"shell",
            "command":"make all",
            "group":{"kind":"build",
                "isDefault":true},
            "problemMatcher":"$gcc"}]}

或者

{"version":"2.0.0",
    "tasks":[{"type":"shell",
            "label":"build",
            "command":"cd C:/project/debug; make",
            "args":[],    
        }]}

配置c_cpp_properties.json

{"configurations":[{"name":"Win32",
            "includePath":["${workspaceFolder}/**",
                "${workspaceFolder}\\libs\\nnom\\inc",
                "${workspaceFolder}\\libs\\nnom\\inc\\layers"],
            "defines":["_DEBUG",
                "UNICODE",
                "_UNICODE"],
            "compilerPath":"D:\\soft\\Qt5.6.2\\Tools\\mingw492_32\\bin\\gcc.exe",
            "cStandard":"c99",
            "cppStandard":"c++14",
            "intelliSenseMode":"windows-gcc-x86"}],
    "version":4}
标签: vscode ide 编辑器

本文转载自: https://blog.csdn.net/qq_32348883/article/details/135213750
版权归原作者 路过的小熊~ 所有, 如有侵权,请联系我们删除。

“VSCode 加Cortex-Debug嵌入式调试方法”的评论:

还没有评论