在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文件的路径。这是很好的删除,因为它是针对特定的情况

我将通过使用OpenOCDST 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