esp8266跨坑技巧嵌入式linux那些事

VSCode下 搭建 ARM Cortex-M 开发环境 --

2018-02-24  本文已影响0人  TuringChen

VSCode下 搭建 ARM Cortex-M 开发环境 -- Part 2 调试环境搭建

前言

本章旨在记录如何在VSCode搭建DEBUG环境,具体包含以下几个部分:

  1. 调试所需基础环境
  2. 运行OpenOCD
  3. 在VSCode下创建task运行OpenOCD(可选)
  4. 在VSCode下创建task编译工程(可选)
  5. 在VSCode下添加GDB配置
  6. 在VSCode下使用GDB调试程序

调试所需基础环境

运行OpenOCD

运行OpenOCD是为了 在PC上有GDB server在运行。 有了GDB Server,arm-none-eabi-gdb才能够控制ST-Link

  1. 在Project的tools文件夹下创建openocd_settings文件夹
    创建openocd_settings文件夹.png
  2. 复制{OpenOCD PATH}\openocd-0.10.0\tcl 下的 mem_helper.tcl{Project PATH}\tools\openocd_settings
    mem_helper.tcl.png
    {Project PATH}\tools\openocd_settings下mem_helper.tcl.png
  3. 复制{OpenOCD PATH}\openocd-0.10.0\tcl\target 下的 swj-dp.tcl{Project PATH}\tools\openocd_settings
    swj-dp.tcl.png
    {Project PATH}\tools\openocd_settings\swj-dp.tcl.png
  4. 复制{OpenOCD PATH}\openocd-0.10.0\tcl\interface 下的 stlink-v2-1.cfg{Project PATH}\tools\openocd_settings
    stlink-v2-1.cfg.png
    tools\openocd_settings\stlink-v2-1.cfg.png
  5. 复制{OpenOCD PATH}\openocd-0.10.0\tcl\target 下的 stm32f4x.cfg{Project PATH}\tools\openocd_settings
    stm32f4x.cfg.png
    tools\openocd_settings\stm32f4x.cfg.png
  6. 按照下图修改{Project PATH}\tools\openocd_settings\stm32f4x.cfg
    source [find target/swj-dp.tcl] 替换为 source [find tools/openocd_settings/swj-dp.tcl]
    source [find mem_helper.tcl] 替换为 source [find tools/openocd_settings/mem_helper.tcl]
    修改stm32f4x.cfg.png
  7. 把开发板连上电脑,在VSCode的Terminal下执行如下命令, 即可发现openocd已经成功connect上ST-link了
openocd -f tools/openocd_settings/stlink-v2-1.cfg -f tools/openocd_settings/stm32f4x.cfg
openocd connect ST-link.png
至此,openocd已经成功运行,并且可以成功connect上ST-Link了

在VSCode下创建task运行OpenOCD

在每次debug之前首先得让openocd成功运行并且connect上板子。但是,每次都要在Termianl输入command实在太麻烦了,不如在创建个VSCode Task帮我们做这事:

  1. 在VSCode界面下,单击“任务”,选择“配置任务”
  2. 在task.json下 创建一个名为 "openocd" 的 task, 代码如下:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "openocd",
            "type": "shell",
            "command": "openocd -f tools/openocd_settings/stlink-v2-1.cfg -f tools/openocd_settings/stm32f4x.cfg",
        }
    ],
}
  1. 按F1 显示命令, 输入 “Tasks: Run Task”,然后回车,选择“openocd”,然后一路回车。即可让VSCode 创建一个task去 运行openocd连接ST-Link了


    运行openocd task.png

在VSCode下创建task编译工程(可选)

在每次debug之前可能需要重新编译程序。但是,每次都要在Termianl输入make clean 和 make 实在太麻烦了,不如在创建个VSCode Task帮我们做这事:

  1. 在tools文件夹下创建build.py
import subprocess
import os

if __name__ == '__main__':
    # subprocess.run(["pwd"])
    subprocess.run(["echo", "building...."])
    subprocess.run(["make", "clean"])
    subprocess.run(["make"])
build.py.png
  1. 在VSCode界面下,单击“任务”,选择“配置任务”
  2. 在task.json下 创建一个名为 "build" 的 task, 代码如下:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "openocd",
            "type": "shell",
            "command": "openocd -f tools/openocd_settings/stlink-v2-1.cfg -f tools/openocd_settings/stm32f4x.cfg",
        },
        {
            "label": "build",
            "type": "shell",
            "command": "python",
            "args": [
                "tools/build.py"
            ]            
        }
    ],
}
  1. 按F1 显示命令, 输入 “Tasks: Run Task”,然后回车,选择“build”,然后一路回车。即可让VSCode 创建一个task去 编译程序了


    运行build task.png

在VSCode下添加GDB配置

  1. 在VSCode界面下,单击“调试”,选择“添加配置”
  2. 在launch.json 添加 如下ARM Debug配置
{
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "ARM Debug",
            "type": "cppdbg",
            "request": "launch",
            "miDebuggerPath": "E:\\ARM\\gcc-arm-none-eabi\\bin\\arm-none-eabi-gdb.exe",
            "targetArchitecture": "arm",
            "program": "${workspaceRoot}\\out\\HAL_demo.elf",
            "setupCommands": [
                {
                    "text": "file 'E:/STMicroelectronics/workspace/stm32f429/projects/HAL_demo/out/HAL_demo.elf'"
                },
                {
                    "text": "target remote localhost:3333"
                },
                {
                    "text": "monitor reset"
                },
                {
                    "text": "monitor halt"
                },
                {
                    "text": "load"
                }
            ],
            "preLaunchTask": "build",
            "launchCompleteCommand": "None",
            "externalConsole": true,
            "cwd": "${workspaceRoot}"
        }
    ]
}

注意事项:

在VSCode下使用GDB调试程序

上面步骤完成以后,我们可以正式开始调试前一章节编译出来的可执行文件了。

-exec info registers
查看 core registers状况.png
-exec disassemble
查看PC位置和汇编Code.png

本章总结

至此,我们已经成功在VSCode下搭建调试环境了,可以愉快使用GDB调试板子了。
可惜,目前在VSCode调试还有以下缺陷(这些缺陷通过GDB command可以解决)

  1. 不支持汇编程序调试
  2. 查看Registers状况不方便
  3. 创建data breakpoint 不方便
上一篇 下一篇

猜你喜欢

热点阅读