HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境

一、目的

        在之前的博客中《HPM6750系列--第二篇 搭建Ubuntu开发环境》、《HPM6750系列--第三篇 搭建MACOS编译和调试环境》我们分别介绍了Ubuntu和MacOS系统上基于命令行的开发环境的搭建过程,包括环境准备、编译、调试过程,整个过程稍微有些繁琐可能有些小伙伴不太习惯,那么本篇就介绍一下在Visual Studio Code下的开发调试过程(Ubuntu和MacOS都支持)。

        注意:针对自己使用的操作系统先阅读一下之前的命令行搭建方式,本篇所有的操作都是在之前的基础之上完成的。

        

HPM6750evkmini

HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第1张图片 调试窗口 Ubuntu

二、准备

        1、安装Visual Studio Code

        Visual Studio Code - Code Editing. RedefinedVisual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.https://code.visualstudio.com

        2、安装cmake-tool、Cortex-Debug插件 

        HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第2张图片

        关于CMake Tool的详细介绍可以查阅: Get started with CMake Tools on Linux

三、实战

        1、设置环境变量并保存到~/.bash_profile(注意其中的路径替换成自己主机的路径)

export GNURISCV_TOOLCHAIN_PATH="/Users/coder/workspace/third/hpm/toolchain/riscv32-unknown-elf-newlib-multilib"
export HPM_SDK_TOOLCHAIN_VARIANT=
export HPM_SDK_BASE="/Users/coder/workspace/third/hpm/hpm_Sdk"
export OPENOCD_SCRIPTS="/Users/coder/workspace/third/hpm/hpm_Sdk/boards/openocd"
export HPM_OPENOCD_PATH="/Users/coder/workspace/third/hpm/riscv-openocd"

        其中HPM_OPENOCD_PATH是我们自己编译的OPENOCD程序的路径;OPENOCD_SCRIPTS是使用OPENOCD时要使用的配置文件路径。

        2、创建工程目录并拷贝示例工程

        重新打开一个terminal并输入

mkdir -p ~/workspace/work/hpm
cp -r ~/workspace/third/hpm/hpm_Sdk/samples/hello_world  ~/workspace/work/hpm/
cd ~/workspace/work/hpm/hello_world/

        3、配置工程属性(重要)

mkdir .vscode

        在目录下放置一下两个文件

        settings.json

{
    "cmake.buildBeforeRun": true,
    "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
    "cortex-debug.openocdPath": "${env:HPM_OPENOCD_PATH}/src/openocd",
    "cortex-debug.variableUseNaturalFormat": false,
    "cmake.configureSettings": {
        "BOARD":"hpm6750evkmini"
    },
    "cmake.defaultVariants": {
        "buildType": {
            "choices": {
                "flash_xip": {
                    "short": "flash_xip",
                    "long": "hpm flash xip",
                    "buildType": "flash_xip"
                }
            }
        }
    }
}

        其中"cortex-debug.openocdPath"是设置为我们自己编译的openocd的路径;

        "cmake.defaultVariants"用于新增构建类型为flash_xip;

        launch.json(hpm6750evkmini板载ft2232调试器

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "HPM Debug",
            "cwd": "${workspaceRoot}",
            "executable": "${command:cmake.launchTargetPath}",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "gdbPath" : "${env:GNURISCV_TOOLCHAIN_PATH}/bin/riscv32-unknown-elf-gdb",
            "searchDir": ["${env:OPENOCD_SCRIPTS}"],
            "device": "HPM6750",
            "configFiles": [
                "probes/ft2232.cfg",
                "soc/hpm6750-single-core.cfg",
                "boards/hpm6750evkmini.cfg"
            ],
            "interface": "jtag",
            "runToEntryPoint": "main",
            // Work around for stopping at main on restart
            "postRestartCommands": [
                "break main",
                "continue"
            ]
        }
    ]
}

                其中"gdbPath"设置我们工具链中的gdb路径;"searchDir"设置openocd配置文件的路径;"configFiles"设置配置文件("probes/ft2232.cfg":使用ft2232调试器、"soc/hpm6750-single-core.cfg":单核调试、"boards/hpm6750evkmini.cfg":板级配置) 

        4、打开工程并编译

cd ~/workspace/work/hpm/hello_world/
code .

        HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第3张图片 

         其中①选择编译类型

HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第4张图片

        可以看到其中有我们刚刚设置的flash_xip。

        很多小伙伴可能还不知道flash_xip的含义:

        我们的程序有加载视图和执行视图的区别,程序中的代码(Code)和数据(Data)是保存在flash中的,在运行的时候这些内容可以直接从flash的地址执行,这种叫做flash_xip;如果代码和数据都拷贝到RAM中运行,比如拷贝到SDRAM中,我们可以叫做sdram_xip(但是程序还是必须先烧写到flash中,程序执行的时候由启动代码拷贝到sdram中)。如果大家对这个想进一步了解的话,可以阅读一下博文

GNU LD脚本命令语言(一)_coder.mark的博客-CSDN博客链接器脚本控制着每一次链接过程,链接脚本是用链接器命令语言编写的(linker command language)。链接脚本的主要目的是描述输入文件中的段(section)应该如何映射到输出文件中的段(section),并且控制输出文件的内存布局(地址分配)。有些时候链接器脚本还可以使用链接器命令指示链接器执行许多其他操作。......................................................_gnu ldhttps://blog.csdn.net/tianizimark/article/details/125865933

        其他编译类型的含义:

HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第5张图片

        Debug:禁止优化并且包含调试信息

        Release:包含优化但没有调试信息

        MinRelSize:优化程序大小并且没有调试信息

        RelWithDebInfo:优化执行速度并且包括调试信息 

        ②选择工具链,此处我们不需要设置(因为我们已经通过环境变量的方式设置工具链)

        ③编译

        HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第6张图片 

        5、调试 

        打开调试窗口(点击④)

HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第7张图片

        观察terminal窗口会有openocd执行过程

        HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第8张图片 

        观察DEBUG CONSOLE窗口有GDB的执行过程 

        HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第9张图片 

         同时整个调试窗口会有一个调试工具栏出现

HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第10张图片

        HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第11张图片

        以上就是Visual Code的开发调试环境。

        最后针对HPM-SDK的一些配置,我们还设置了"flash_sdram_xip"构建类型。

        HPM6750系列--第四篇 搭建Visual Studio Code开发调试环境_第12张图片​​​​​​​         

你可能感兴趣的:(HPM6750,嵌入式硬件,macos,hpm6750)