打印

看门狗问题请教

[复制链接]
5168|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
speed_2008|  楼主 | 2008-6-19 17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F101C8T6芯片,没有打开看门狗时,JLINK仿真器仿真一直正常,但是今天增加了看门狗看门狗后(IWDG),第一次程序下载后,看门狗运行,JLINK仿真器无法下载,如何解决,请各位赐教 
沙发
香水城| | 2008-6-19 20:59 | 只看该作者

STM32中可以控制在调试模式下是否需要停止某些模块

看门狗也可以通过程序控制在调试断点处暂停时,是否需要停止还是继续运行,有关细节请看STM32技术参考手册的16.3.3节:http://www.st.com/stonline/products/literature/rm/13902.pdf

其他很多外设,如定时器等,也有这种调试状态下停止的功能。这个功能允许工程师调试相应功能模块。

你的问题就是因为看门狗不断进入复位,使得JTAG无法停止CPU的运行。你可以通过改变BOOT0和BOOT1的配置,使用RAM启动方式,然后通过JTAG下载新的程序更新Flash中的内容。该方法还可以处理因为其它原因不能连接JTAG的情况,如把JTAG口当成I/O口等。

使用特权

评论回复
板凳
speed_2008|  楼主 | 2008-6-20 13:35 | 只看该作者

确认一下解决办法

使用香主提供的改变BOOT0 BOOT1跳线方法,终于可以用JLINK下载程序了,非常感谢。

另外想确认一下,如果在看门狗打开的情况下,不想改变启动模式就可以下载程序,是不是只要在程序中设置寄存器DBGMCU_CR的DBG_IWDG_STOP标志就可以了?

使用特权

评论回复
地板
speed_2008|  楼主 | 2008-6-20 13:40 | 只看该作者

头文件定义中找不到DBGMCU_CR寄存器?

在项目中查找不到DBGMCU_CR寄存器,如果想设置DBGMCU_CR,是不是需要自己定义一个?这个寄存器是不是基本不使用?

使用特权

评论回复
5
speed_2008|  楼主 | 2008-6-21 12:02 | 只看该作者

没有人关注这个问题吗?

没有人在仿真情况下打开看门狗?以后程序下载也有这个问题啊?斑竹可否再出面关注一下这个不太难的问题?维和再Fwlib中找不到DBGMCU_CR相关的定义或者使用函数?

使用特权

评论回复
6
香水城| | 2008-6-21 12:26 | 只看该作者

STM32新版的固件库中包含了DBGMCU_CR寄存器

这是最新版固件库的说明手册:http://www.st.com/stonline/products/literature/um/13475.pdf

这是最新版固件库的程序包:http://www.st.com/stonline/products/support/micro/files/um0427.zip

这里还有一个应用笔记说明如何从旧版的固件库升级到使用新版:http://www.st.com/stonline/products/literature/an/14747.pdf

使用特权

评论回复
7
speed_2008|  楼主 | 2008-6-21 14:03 | 只看该作者

感谢香主的解答,问题进一步深入

非常感谢斑竹的解答,采用跳线改变启动模式的确解决了这个问题,但是在仿真情况下采用改变跳线的方式不太方便,所以尝试使用DEBBUG_MCU的IWDG禁止功能,由于FWLIBV10中没有定义,又不想因为要升级到V20去改变很多外设定义,所以将V20中和DEBUG相关的文件拷贝到V10中,增加相关定义后,程序运行正常。
但是发现JLINK虽然可以下载程序,但是成功率还是没有IWDG不开时高,下载几次中间仍然会出现不成功情况,主要发生在程序下载即将结束的时候(如果不在DEBUG_IWDG禁止时,程序下载基本上停止在下载开始的地方),不知在DEBUG停止IWDG运行时为何还经常下载程序失败,请斑竹继续关注一下。谢谢

使用特权

评论回复
8
香水城| | 2008-6-21 15:16 | 只看该作者

JLink下载程序是通过在RAM中执行烧录程序实现

在执行烧录程序的时候看门狗会恢复运行,如果刚好在执行烧录程序时看门狗超时则仍然会产生复位。

根本原因是一旦启动看门狗,则它不能被关闭除非芯片复位,但JLink恰恰不能执行对芯片的复位。相信你是用的IAR的软件,这是IAR IDE的一个局限。如果你使用手工复位,复位后还没等到JLink停止程序运行时,你的程序又打开了看门狗,结果造成你所看到的情况。我让你进入RAM启动状态,正是要回避执行打开看门狗的操作。

比较好的解决办法是,在调试带有看门狗功能的程序时,暂时通过一个外部事件(比如一个按键)启动看门狗,这样当手工复位芯片后,看门狗并没有被启动,你的调试操作也就不受影响了。

使用特权

评论回复
9
xiachu| | 2013-12-11 19:57 | 只看该作者
香水城 发表于 2008-6-19 20:59
看门狗也可以通过程序控制在调试断点处暂停时,是否需要停止还是继续运行,有关细节请看STM32技术参考手册 ...

版主 您好,我现在也遇到了这个问题debug一个看门狗程序后现在不能debug了,芯片停不下来。板子是LM3S9B92,开发环境是CCSV5.2.1   现在不知道怎么让它停下来,求版主指导。QQ479358469,自己在捣鼓没人指导。

使用特权

评论回复
10
xlsbz| | 2013-12-11 21:12 | 只看该作者
MArk  好帖。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

55

帖子

0

粉丝