赞
踩
在之前的博客中《HPM6750系列--第二篇 搭建Ubuntu开发环境》、《HPM6750系列--第三篇 搭建MACOS编译和调试环境》我们分别介绍了Ubuntu和MacOS系统上基于命令行的开发环境的搭建过程,包括环境准备、编译、调试过程,整个过程稍微有些繁琐可能有些小伙伴不太习惯,那么本篇就介绍一下在Visual Studio Code下的开发调试过程(Ubuntu和MacOS都支持)。
注意:针对自己使用的操作系统先阅读一下之前的命令行搭建方式,本篇所有的操作都是在之前的基础之上完成的。
关于CMake Tool的详细介绍可以查阅: Get started with CMake Tools on Linux
- 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时要使用的配置文件路径。
重新打开一个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/
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":板级配置)
- cd ~/workspace/work/hpm/hello_world/
- code .
其中①选择编译类型
可以看到其中有我们刚刚设置的flash_xip。
很多小伙伴可能还不知道flash_xip的含义:
我们的程序有加载视图和执行视图的区别,程序中的代码(Code)和数据(Data)是保存在flash中的,在运行的时候这些内容可以直接从flash的地址执行,这种叫做flash_xip;如果代码和数据都拷贝到RAM中运行,比如拷贝到SDRAM中,我们可以叫做sdram_xip(但是程序还是必须先烧写到flash中,程序执行的时候由启动代码拷贝到sdram中)。如果大家对这个想进一步了解的话,可以阅读一下博文
其他编译类型的含义:
Debug:禁止优化并且包含调试信息
Release:包含优化但没有调试信息
MinRelSize:优化程序大小并且没有调试信息
RelWithDebInfo:优化执行速度并且包括调试信息
②选择工具链,此处我们不需要设置(因为我们已经通过环境变量的方式设置工具链)
③编译
打开调试窗口(点击④)
观察terminal窗口会有openocd执行过程
观察DEBUG CONSOLE窗口有GDB的执行过程
同时整个调试窗口会有一个调试工具栏出现
以上就是Visual Code的开发调试环境。
最后针对HPM-SDK的一些配置,我们还设置了"flash_sdram_xip"构建类型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。