听说,电子工程师经常被“狗”咬!

听说,电子工程师经常被“狗”咬!,第1张

  在研发初期,嵌入式工程师都需要在线仿真、调试产品,在这个过程中,有很多工程师在使用仿真器工具(以AK100Pro为例)过程中会遇到的一些异常:

  下载程序一半后进度条停止不前,直至提示下载失败;

  能够顺利进入仿真模式,不久就不能跟踪调试了,单片机自主跑起来了。

  出现上述现象的原因有很多,今天我们就仅从“看门狗”的角度来分析一下到底单片机发生了什么。

  看门狗简介

  在嵌入式系统中,单片机可能会受到外界电、磁等干扰,造成程序异常,从而使系统陷入瘫痪状态。为了防止此类后果发生,便出现了用于监控单片机运行状态的芯片--watch dog,中文译为“看门狗”。看门狗芯片输出端接单片机复位引脚,当在设定的时间间隔内没有收到单片机的脉冲信号(喂狗信号),看门狗内部定时器溢出,拉低复位引脚从而使得芯片复位。目前很多单片机已经内置了内部看门狗电路,原理与外部看门狗类似。

  通过下面几个我们在技术支持过程中遇到的问题,并总结了行之有效的解决办法。

  1. 内部看门狗

  客户采用STM32研发产品,需要为原有的代码增加看门狗程序,然而在用AK100Pro仿真调试时,发现程序在断点处停下来后一会儿,芯片居然自己全速跑起来了。

  单片机分为内核和外设,仿真调试过程中,在断点处停下来后,芯片内核是停止的,而外设则可以选择性的继续运行,如内部看门狗。内核停止,无法喂狗,导致看门狗将芯片复位。

  那么如何解决呢?有两种方法可以实现:一个是在用户程序中对相关寄存器进行初始化如下图所示。在调试时配置芯片的调试寄存器,让内核停止时,同时自动停止看门狗。在STM32F10x手册中,有对DBGMCU_CR寄存器,这个寄存器可以控制调试相关的外设行为。

  听说,电子工程师经常被“狗”咬!,听说,电子工程师经常被“狗”咬!,第2张

  另一个办法是在TKScope驱动设置中,设置【初始化宏】的参数,增加配置项,如下图所示。

  听说,电子工程师经常被“狗”咬!,听说,电子工程师经常被“狗”咬!,第3张

  注意,如果芯片本身没有类似的寄存器,那就只能在芯片初始化时,禁能看门狗了。

  2. 接有外部看门狗,且将看门狗控制端引出到编程接口

  前不久为客户添加Cypress公司的Cortex-M3芯片MB9F8268时,发现下载程序总是到一半,就突然通信不上了。

  听说,电子工程师经常被“狗”咬!,听说,电子工程师经常被“狗”咬!,第4张

  通过抓取数据包查看并分析后发现,复位引脚被周期性的拉低。原来客户板子上有一个外部看门狗芯片,由于编程过程过长,没有及时喂狗,导致芯片复位。

  找到了原因,问题就好解决了。在下载过程中,可以利用JTAG中的时钟线(TCK),将其接在看门狗芯片的控制端,这样在通信过程中就会为看门狗提供持续的脉冲信号,从而避免了看门狗定时器溢出,触发芯片复位了。

  3. 接有外部看门狗,但看门狗控制端未引出

  对于这种情况,由于无法控制外部看门狗,除非断开连接,否则仿真、编程工具也是无能为力的。

  总结

  最后,我们汇总了针对看门狗问题的解决办法,希望客户能够合理设计仿真、编程接口,以及合理设计应用程序,规避看门狗对编程、仿真的影响,别再被“狗”咬:

  用户程序在初始化时,禁能内部看门狗;

  配置【初始化宏】,使得AK100Pro去禁能看门狗;

  用户程序定时喂狗;

  断开外部看门狗;

  将调试时钟接在看门狗控制端,下载过程中可去喂狗。

   身处物联网洪流的你还在等什么!“关注物联网新机遇的你,怎能错过这个饕餮盛宴!!由华强聚丰旗下电子发烧友网举办的第三届“中国IoT大会”将 于12月2日在深圳隆重举行:全球化的 视野、更高价值的独家观点、更专业的技术分享、更前沿的脉动把握,汇聚全球物联网知名企业与精英的盛典,你不可错过!更多信息欢迎大家继续关注电子发烧友 网!”(点击图片查看详情)

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2685186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-15
下一篇 2022-08-15

发表评论

登录后才能评论

评论列表(0条)

保存