以下步骤解决了我的问题。我认为擦除我的芯片有助于重新编程芯片。我不确定究竟是哪一步导致了错误。但是在这些步骤之后,我没有得到那个错误。
- 选择正确的芯片:samd21e16b 而不是 samd21e16b-U (第一个选择是基于原理图。我的原理图不正确(查看我们板上的物理芯片或使用微芯片工作室。微芯片工作室为我检测到正确的芯片). 我在创建项目时选择了不正确的设备(例如,我们的设备有不同的 SRAM、Flash 和包。))。然后,我需要重新设置并选择正确的芯片。
- 通过微芯片工作室擦除芯片并能够对其进行重新编程。所以,我正在使用微芯片工作室擦除芯片并返回到视觉工作室,然后重新编程或调试它
- 检查电源连接(通过 SWD 连接器连接 Vcc 3.3 并确保在调试前 Atmel ice 上的绿灯亮起(Atmel ice 上的绿色 LED 显示芯片电源正常且正确),我应该确保我的芯片是通过USB连接到电脑的。可能你的芯片不同来供电)
- 我没有将调试器从 Atmel ice 更改为 J-Link,但这是 visualGDB (sysProgs) 支持团队提到的解决方案。我只会简单地添加他们的报价。对于想要通过visual studio解决问题并重置芯片的人可能会有所帮助。但是我没有更改我的调试器或没有配置 openOCD。我使用了微芯片工作室并重置了芯片。
VisualGDB 支持团队:这看起来像是设备连接问题,而不是 VisualGDB 特定的问题。我们最好的建议是尝试使用 Segger J-Link。它带有自己完全支持的 OpenOCD 替代品,通常在许多边缘情况下效果更好。VisualGDB 支持 OpenOCD 和 J-Link 软件,因此您之前使用的所有功能将继续以相同的方式工作。VisualGDB 不直接管理重置/擦除。它只是启动处理与目标的低级通信的开源 OpenOCD 工具。您可能能够通过编辑 OpenOCD 脚本文件来配置 OpenOCD 以更改重置行为,但是,这需要您自担风险,并且可能需要对 OpenOCD 内部进行广泛研究。如果您正在寻找一种简单的开箱即用解决方案,