关于HC32F460项目加入看门狗功能后重烧录程序无法启动问题记录

项目场景:

在之前的博文分享中,大致介绍和实现了如何在工程中启用MCU的SWDT硬件看门狗功能(链接如下)

HC32F460开发之看门狗功能


问题描述

实现后的例程也在官方的评测板上测试过能正常运行。但是按照例程将看门狗功能加入到项目工程中,烧录到产品中去测试却发现,加入看门狗烧录过后的机器再也无法正常启动运行,去掉看门狗配置编译重烧录回来也是一样。


原因分析:

一开始发现这个问题后,可以说是毫无头绪,后面查看串口LOG发现,BootLoader LOG也没有输出,尝试重新烧录BootLoader程序后,机器又可以正常运行了。初步怀疑是BootLoader程序出问题了,导致没能正常引导应用程序的启动。而问题的原因基本可以确定是因为加入了看门狗功能后才产生的,定位了问题后,就只能慢慢翻看手册查看原因。

最后在用户手册中查找到的问题原因如下:
我们选用的是SWDT的硬件启动方式,该方式编译烧录后,会将看门狗计数器的设定信息写入到flash里。
在这里插入图片描述
关于ICG0寄存器的介绍,文档描述如下:
在这里插入图片描述
flash的地址结构如下
在这里插入图片描述
对于FLASH地址 0x00000400H0x0000041FH,属于flash的扇区0,在之前项目对于flash的规划中,我们将flash的扇区04规划为BootLoader的存储地址,而在应用程序中开启了看门狗功能后,更新烧录app程序后,因为选择了SWDT的硬件启动方式,需要将看门狗的设定信息写入到flash的扇区0中,由此将BootLoader程序给擦除掉,从而导致系统无法正常启动。


解决方案:

在定位了问题之后,问题就很好解决了,这边最后选择将看门狗的启动放到BootLoader中去执行,在应用程序中去执行喂狗操作,这样,后面在调试过程中更新烧录应用程序也不会把BootLoader擦除掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Top0_0lll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值