在Visual Studio中调试嵌入式ARM设备
[原文发表地址]Debugging an embedded ARM device in Visual Studio
[原文作者] Marc Goodner-MSFT
[原文发表时间] 2018/1/10
我们在15.5版本的Visual Studio 2017中引入了对ARM GCC交叉编译的支持。在15.6 Preview 2中,我们添加了对调试的支持。这个调试功能的概述源自ARM交叉编译入门的安装,并将作为补充进行集成。
首先,确保输出具有调试符号很重要。在从ARM在线编译器导出的GCC项目中,他们不这样做。要添加它们,请在tools和flags部分下编辑makefile,并为GCC和G ++命令添加-g标志,如下所示。
CC = 'arm-none-eabi-gcc' '-g' ...
CPP = 'arm-none-eabi-g++' '-g' ...
现在,在构建二进制文件并刷新设备后,右键单击二进制输出,然后选择“调试”和“启动设置”。
在弹出的对话框中选择C / C ++调试微控制器(gdbserver)。
这将创建一个launch.vs.json,其中包含许多与嵌入式调试相关的选项.有很多方法可以调试这些设备,所以您在这里填写的内容将特定于您的开发板,硬件调试器及其提供gdbserver接口的相关软件。我们提供尽可能多的默认和提示,我们可以帮助你。在这个预览中,一些发出的环境变量还没有工作,你需要用所需的值替换它们。
- $ {workspaceRootFolderName},您的文件夹名称
- $ {env.gccpath},您的VS安装路径跟在Linux \ gcc_arm \ bin之后
- $ {debugInfo.linuxNatvisPath},如果你有一个Natvis文件的路径。这是很好的删除,因为它是针对特定的情况
我将通过使用OpenOCD对ST Nucleo-F411RE进行配置。这个过程与大多数电路板相似。
首先,在输出中更改程序名称以指向您的.elf文件。
"program": "${workspaceRoot}\\BUILD\\Nucleo_blink_led.elf",
更改miDebuggerPath以指向arm-none-eabi-gdb.exe的完整路径。
"miDebuggerPath": "C:\\Program Files (x86)\\Microsoft Visual Studio\\Internal\\Enterprise\\Linux\\gcc_arm\\bin\\arm-none-eabi-gdb.exe",
在“setupCommands”中,您可以删除文档链接部分(保持不变)。更改符号加载指向您的.elf文件。
"text": "-file-exec-and-symbols Nucleo_blink_led.elf",
您可以执行其他命令,使您的开发板进入调试状态,通常您需要暂停,然后在会话开始时重置开发板。为此,请按如下所示将这些命令作为setup命令数组的一部分添加。
{
"text": "monitor reset halt",
"ignoreFailures": true
},
{
"text": "monitor reset init",
"ignoreFailures": true
}
确保miDebuggerServerAddress与您的硬件调试器将提供的位置相匹配。这是OpenOCD的默认设置。
"miDebuggerServerAddress": "localhost:3333",
如果你想手动启动你的硬件接口,你可以省略这些行。如果你希望VS启动软件来与你的硬件调试器进行交互,这是一个用配置文件启动OpenOCD的例子。您应该手动检查此命令,以确保配置了正确的文件,并且确保用于验证服务器已经启动的的文件配置是正确的。
"debugServerPath": "D:\\openocd-0.10.0\\bin-x64\\openocd.exe",
"debugServerArgs": "-f d:/openocd-0.10.0/scripts/board/st_nucleo_f4.cfg",
"serverStarted": "Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints",
现在使用我们的配置,使用F5从Visual Studio开始在设备上调试嵌入式ARM应用程序。
接下来该干什么下载Visual Studio 2017预览版,安装Linux C ++工作负载,选择嵌入式和物联网开发选项,并试用您的项目。
我们正在积极为嵌入式方案提供额外的支持。您的反馈对我们非常重要。我们期待您的回音,并看到您所做的一切。
联系我们的最佳方式是通过我们的GitHub托管的问题列表,直接通过邮件 vcpplinux-support@microsoft.com或找到我在Twitter @robotdad。