首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解除JTAG的插头(不是重新启动,而是)解冻在JTAG插入之前冻结的设备?

如何解除JTAG的插头(不是重新启动,而是)解冻在JTAG插入之前冻结的设备?
EN

Stack Overflow用户
提问于 2019-04-12 10:03:42
回答 1查看 145关注 0票数 1

我们编写了一个STM32L072,使用从cubeMX生成的较低层的HAL库。

请注意,我的企业中的“编程风格”并不涉及在他们的嵌入式设备中包含一个看门狗。无可奉告。

在一次特定的现场测试期间(在许多次测试中),设备停止工作(即:屏幕冻结,通信总线上没有响应,但PWM驱动程序正在工作)。

设备已经重新启动,几分钟后,冻结再次发生。这件事发生在我们到达前几次。

我们插入了JTAG/ screen 2,总线或屏幕上没有任何变化。一旦我们拔掉闪光灯,设备就会在没有重置的情况下重新工作(如果它发生了,我们就可以识别出初始化模式)。

  • 我不明白JTAG规范如何解释这种行为(即解冻)?
  • 顺便问一下,是什么原因导致的冻结可以通过JTAG拔出而解除呢?振荡器停了?自动睡眠模式?硬件断点?软件断点?中断被禁用了?

编辑-回复评论和重述:

  • 不是振荡器的原因,因为PWM仍在工作。
  • 软件断点?不太可能,因为没有设置之前,闪现程序。
  • 关于中断,我认为这是一个有趣的线索,但是JTAG如何通过拔出它来改变任何事情呢?
EN

回答 1

Stack Overflow用户

发布于 2019-04-12 11:31:19

在不了解更多软件的情况下,很难确定。如果PWM正在运行,显然振荡器没有停止。听起来,代码可能有一个嵌入式软件断点指令。在默认情况下,片上调试不会在碰到断点时停止外围时钟。

当主机调试器被附加(即调试器软件,而不仅仅是物理JTAG硬件)时,这种指令应该被保护为仅阻塞,例如:

代码语言:javascript
复制
if (CoreDebug->DHCSR & 1) __BKPT(0);

如果断点不以调试器为条件,处理器将停止运行,而不需要重新启动它(除了一个看门狗,最好是独立的看门狗,因为可以配置窗口的看门狗,以便在命中断点时停止其时钟)。

当调试器被分离时,断点将被释放,这可能就是这里正在发生的情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55649198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档