设置Linduino、Visual Micro和Atmel-ICE进行硬件调试

描述

作者:Dan Eddleman and Malavika Sajikumar

Linduino 是凌力尔特的 Arduino 兼容系统,用于向凌力尔特集成威廉希尔官方网站 的客户分发固件库和示例代码。该设计基于Arduino Uno,使用Atmel ATmega328处理器,同时增加了14针QuikEval。™可插入近 100 个子板的连接器。这些威廉希尔官方网站 板展示了凌力尔特的部件,包括模数转换器、数模转换器、高压功率监控器、温度测量设备、射频合成器、电池组监控器等。

最初的Arduino Uno(可从 www.arduino.cc 获得)包括一个很少使用的功能,使其能够在切割PCB上的铜迹线后与Atmel硬件调试器配对。在此模式下,围绕 Microsoft Visual Studio 构建的免费提供的 Atmel Studio 开发环境支持广泛的调试功能,包括逐行代码单步执行、断点支持和轻松查看变量值的功能。不幸的是,在Arduino Uno的PCB走线被切断后,只有硬件调试器才能将新固件(草图)加载到Arduino Uno;标准Arduino IDE通过USB电缆加载新固件的能力将丢失,直到用一点焊料重新连接走线。

当我在2013年设计Linduino时,我增加了一个规定,让用户可以焊接一个3引脚针座,这样就可以随时在正常操作和支持硬件调试器的操作之间进行选择,而无需进一步焊接。

虽然 Arduino IDE 是一个绝佳的环境,让用户在 10 分钟内启动并运行凌力尔特演示板和示例代码,但其简单性是有代价的。它不提供更高级的 IDE 的功能,例如实时调试代码的功能。当我在 Linduino 上开发自己的代码时,我会使用 Atmel Studio 和 Atmel-ICE 硬件调试器。到目前为止,将 Arduino 草图转换为可以使用硬件调试器进行调试的 Atmel Studio 项目是一个相当复杂的过程。

最近,Atmel Studio 的 Visual Micro 加载项简化了此过程,因此我创建了本教程,以展示将 Linduino(或 Arduino)草图转换为可以使用 Atmel-ICE 硬件调试器进行调试的表单所需的步骤。这篇博客的长度可能令人生畏,但过程相当简单,我已经努力从头到尾包含所有步骤。

话虽如此,我不会向全新的Arduino用户推荐此过程。如果您编写的代码少于 100 行,Arduino IDE 很简单,而且可以正常工作。随着代码越来越大,并且您接受调试代码所花费的时间比编写代码所花费的时间更多,您将欣赏硬件调试器提供的功能。但是,请理解,如果您错误地覆盖了Linduino的引导加载程序,您可能会使Linduino变砖。引导加载程序可以使用 Atmel-ICE 恢复,因此 Linduino 并不是真正的砖砌,但如果您是不熟悉术语引导加载程序的新手用户,这可能不适合您。

安装 Linduino Library 和 Arduino IDE

在此处下载林杜伊诺图书馆

Arduino

图1.下载林杜伊诺图书馆。

下载完成后,打开包含 *.zip 文件的文件夹,然后右键单击 LTsketchbook.zip将内容提取到用户的“文档”文件夹中,如下所示。

Arduino

图2.从LT素描本中提取内容。

Arduino

图3.用户文档文件夹。

在LTsketchbook.zip提取时,下载Windows Installer for Arduino IDE版本1.6.7。在编写本文时,最新版本 1.6.10 和 1.6.11 无法使用此调试方法正常工作。

Arduino

图4.Arduino IDE.

下载完成后,运行 Windows 安装程序并接受所有默认设置。安装完成后,打开Arduino应用程序并选择文件→首选项。

Arduino

图5.打开 Arduino。

按“素描簿位置”旁边的“浏览”按钮,然后选择新提取的 LT素描簿文件夹。此外,在“在检查编译和上传期间显示详细输出”旁边,然后按“确定”。

Arduino

图6.提取的LT素描本。

选择素描本→实用工具→MyBlink

Arduino

图7.我的眨眼。

Arduino

图8.我的眨眼上传。

将Linduino连接到USB端口,如果出现提示,则允许安装驱动程序。然后,选择“工具→端口→COMx”,其中 COMx 对应于已分配给 Linduino 的 COM 端口。在下图中,它是 COM3。如果列出了多个端口,则可能很难确定哪个端口对应于您的Linduino。在这种情况下,请断开 Linduino 的连接,然后再次选择“工具→端口”以查看已删除的 COM 端口。重新连接 Linduino 并选择该端口。

Arduino

图9.Linduino 到 USB 端口。

接下来,按箭头按钮编译并上传到林杜伊诺。完成后,您将在Arduino IDE中看到“完成上传”消息,Linduino的LED将开始闪烁。

Arduino

图 10.编译并上传我的眨眼。

配置视觉微

请仔细遵循接下来的几个步骤,即使您尚未完全了解其目的。这些步骤对于 Visual Micro 的正确操作非常重要,原因将在开始使用硬件调试器后变得清晰。

关闭所有打开的Arduino IDE应用程序。使用 Windows 文件资源管理器,导航到 Documents/LTsketchbook/Utilities/MyBlink。在该文件夹中,将 MyBlink.ino 复制到 MyBlink.cpp。

Arduino

图 11.复制MyBlink.ino。

接下来,从MyBlink.ino中删除所有内容并将其保留为空文件。清除内容的最简单方法是双击 MyBlink.ino .Arduino IDE使用MyBlink打开MyBlink.ino.cpp在第二个选项卡中加载。清除MyBlink.ino的所有内容(键入Ctrl-A并按键盘上的删除)。保存文件,然后再次按上传箭头。MyBlink.cpp的内容将被编译并上传到Linduino中。

虽然这里没有显示,但最好在 MyBlink.ino 文件中添加注释。

/* 此文件 MyBlink.ino 故意留空,代码已移至 MyBlink.cpp。从 ino 文件中删除所有代码允许此项目与 Arduino IDE 和 Atmel Studio、Visual Micro 加载项和硬件调试器正常工作。*/

Arduino

图 12.编译并上传了MyBlink.cpp。

关闭 Arduino IDE 并下载 Atmel Studio Web 安装程序。

Arduino

图 13.爱特梅尔工作室安装程序。

运行安装程序并接受所有默认值。安装程序可能需要很长时间才能完成,可能需要一个小时或更长时间。如果 Atmel Studio 提示需要某些 Windows 更新,请尝试使用其提供的链接安装更新。

Atmel Studio 安装完成后,打开 Atmel Studio 并选择“工具→扩展和更新”。

Arduino

图 14.扩展和更新。

从“扩展和更新”窗口的左侧面板中,选择“可用下载→全部”。从中央面板中,下载并安装 Atmel Studio 7 的 Arduino IDE。Atmel Studio 可能会要求您注册一个帐户。完成后,按“立即重新启动”按钮。

Arduino

图 15.Arduino IDE for Atmel Studio 7.

Atmel Studio 重新启动后,将打开一个 Visual Micro 配置窗口,该窗口由上一步中用于 Atmel Studio 7 扩展的 Arduino IDE 安装。接受默认值。将草图位置和威廉希尔官方网站 板管理器字段留空,然后按确定 如果配置窗口未自动打开,请选择 vMicro→IDE 并从下拉菜单中选择配置管理器。

Arduino

图 16.接受默认值。

此时,Arduino IDE和Atmel Studio已经安装了许多USB驱动程序。我建议重新启动 Windows 以确保正确注册所有新驱动程序。

重新启动 Windows 后,将 Atmel-ICE3 的电缆插入 USB 端口。您将看到一条消息,指出正在设置新设备。

Arduino

图 17.设备设置安装。

修改林杜伊诺进行硬件调试

如果尚未修改,这将是修改Linduino以进行硬件调试的好时机。拔下Linduino上的所有连接,将其翻转并剪切如下所示的痕迹。

Arduino

图 18.切断痕迹。

Arduino

图 19.剪切跟踪细节。

然后,将 1mm 3 针接头焊接到 Linduino 中,并在未标有 NORM 的引脚上放置跳线。

当跳线处于如下所示的位置时,Linduino 处于调试模式,需要硬件调试器和 Atmel Studio 对 Linduino 进行编程。Arduino IDE将无法在调试模式下对Linduino进行编程。当跳线处于NORM位置时,Linduino将与Arduino IDE一起正常工作,但硬件调试器则不能正常工作。如果没有可用的 1mm 3 针接头,上面显示的切割将启用调试模式。焊接在切口或跳线孔上的 NORM 引脚将重新启用正常工作。

Arduino

图 20.焊接在 NORM 引脚上。

Arduino

图 21.JTAGICE3 连接器。

按如下所示的方向将 Atmel-ICE 的 6 针连接器插入 Linduino 的 6 针 ISP 接头上。

Arduino

图 22.Atmel-ICE 的 6 针连接器位于 Linduino 的 6 针 ISP 接头上。

对于那些熟悉Arduino威廉希尔官方网站 和操作的人来说,在调试模式下,ATmega328P的RESET引脚用于传输有关内存,寄存器值,断点等的所有数据,而不会中断IO引脚。Arduino的自动复位(从FTDI的USB到串行DTR引脚耦合的交流电)与ATmega328P断开连接。对于普通用户来说,没有必要了解这些细节就可以有效地使用硬件调试器。

配置我的眨眼

重新启动 Windows 后,将 Atmel-ICE3 的电缆插入 USB 端口。您将看到一条消息,指出正在设置新设备。

Arduino

图 23.新设备设置。

如果您尚未这样做,请重新连接PC和Linduino之间的USB电缆。

重新启动 Atmel Studio。选择vMicro→打开现有Arduino项目。

Arduino

图 24.打开现有的 Arduino 项目。

导航到 Documents→LTsketchbook→Utilities→MyBlink 文件夹,然后选择 MyBlink 文件。如上所述,在使用Visual Micro打开任何Arduino项目之前,最好将*.ino文件复制到*.cpp文件,并从*.ino文件中删除所有内容。我们在本教程的上一步中为 MyBlink 做到了这一点。如果不创建 *.cpp 文件,Visual Micro 将创建一个新的临时文件夹,并将您的项目复制到该文件夹中。生成的复制更难与硬件调试器一起使用。

Arduino

图 25.选择“我的眨眼”。

Linduino 与 Arduino/Genuino Uno 板兼容,因此请选择 vMicro→Board→Arduino/Genuino Uno。

Arduino

图 26.Arduino/Genuino Uno.

选择“vMicro→Compiler→Verbose”以在编译步骤中显示更多信息。

Arduino

图 27.详细编译器选项。

选择 vMicro→Uploader→Programmer→Atmel Studio Device Programming,指定应使用 Atmel-ICE3(或其他与 Atmel Studio 兼容的硬件调试器)对 Linduino 进行编程。

Arduino

图 28.爱特梅尔工作室设备编程。

此外,选择vMicro→Uploader→始终使用Programmer进行上传(而不是端口/IP)。

Arduino

图 29.始终使用程序员进行上传。

选择 vMicro→Debugger→Atmel Studio Debugger 以指示将使用硬件调试器。

Arduino

图 30.爱特梅尔工作室调试器。

接口设置

选择“调试”→“启动调试并中断”。

Arduino

图 31.开始调试并中断。

应出现一个窗口,询问接口设置。选择 Atmel-ICE、ATmega328P 和 ISP,然后按“应用”。

Arduino

图 32.接口设置。

如果您收到一条消息,请选择连接的工具和界面,然后重试,请继续。

Arduino

图 33.连接的工具和界面。

在要出现的下一个窗口中,选择 Atmel-ICE3 和 debugWire。debugWire是一种调试模式,允许使用微控制器的RESET引脚传输所有信息。启用后,固件将使用调试线加载到微控制器。

如果在启用调试线时尝试使用 Arduino IDE 加载固件,上传将失败。为了将来参考,如果遇到此问题,请选择“调试→禁用调试线并关闭”以重新启用Linduino的默认引导加载程序。如果该菜单选项灰显,则可能需要在 Atmel Studio 中加载项目才能使其可选。

Arduino

图 34.选择“调试器/程序员”。

选择“调试”→启动调试并再次中断。如果“设备编程”窗口再次出现,您可能还必须关闭该窗口。

此时,您可能会收到一条消息,通知您即将启用 debugWire。尽管该消息看起来是一个错误,但这是 Atmel Studio 让您知道它即将启用 debugWire 的方式。如果演示板连接到Linduino的QuikEval连接器,请在按“是”按钮之前将其卸下。您可以在启用调试线后重新插入演示板。

Arduino

图 35.启动失败。

启用 debugWire 后,将显示一条消息,提示您切换目标电源。要切换电源,请从 Linduino 上拔下 USB 电缆,然后重新插入。如果您使用的是 12V 交流电源,请同时断开它以从 Linduino 上卸下所有电源。

Arduino

图 36.已启用调试线。

首次启用 debugWire 后,可能需要再次选择“调试→启动调试和中断”。如果“设备编程”窗口再次出现,您可能还必须关闭该窗口。等待构建和写入完成,如 Atmel Studio 窗口底部的状态吟游诗人所示。

Arduino

图 37.状态栏。

加载并执行程序

MyBlink 草图加载到 Linduino 中,并在 init() 语句处暂停。如果按 F5,程序将执行。您还可以通过 MyBlink 放置断点或单步,其方式与使用 Microsoft Visual Studio 调试其他软件的方式相同。

Arduino

图 38.MyBlink Debugging AtmelStudio.

请注意,当您退出 Atmel Studio 时,debugWire 会自动禁用。禁用debugWire后,将3针接头移动到NORM位置可恢复正常操作,Linduino可以再次与标准Arduino IDE一起使用。但是,Atmel Studio 有时无法自动禁用 debugWire。在这种情况下,可以通过在 Atmel Studio 中打开项目并选择“调试→禁用调试线并关闭”来手动禁用调试线。

为避免混淆,建议您在关闭 Atmel Studio 之前始终禁用 debugWire。

结论

Arduino IDE简化了新手用户的固件开发,同时为更高级的用户提供了一个交换代码的通用环境。但是Arduino IDE的简单性是通过避开更高级的IDE的功能来实现的。本教程介绍了 Linduino 如何通过添加跳线来实现 Atmel Studio IDE、Visual Micro 加载项和 Atmel-ICE3 硬件调试器提供的高级功能。

凌力尔特的 Linduino 不隶属于官方 Arduino 团队,但凌力尔特认识到,Linduino 之所以成为可能,是因为 Arduino 团队对开源社区的承诺。请考虑在 www.arduino.cc 支持他们。

故障 排除

在“设备编程”窗口中,如果在单击“应用”时看到如下所示的连接问题,一个可能的原因是您在打开项目时选择了 .cppproj 而不是 .atsln 文件。

Arduino

无法连接。

下图显示了关闭“设备编程”窗口后的错误消息。

Arduino

设置失败。

如果无法读取设备签名,请确保连接器已正确插入。

Arduino

无法读取设备。

如果需要固件更新,请允许其完成。

Arduino

需要固件更新。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分