本帖最后由 TechHolder 于 2020-8-17 12:04 编辑
芯片在运行软件过程中,受到外部的一些干扰会导致程序跑飞,程序跑飞后的问题分析过程复杂且耗时。
那有什么方法可以在CPU运行软件跑飞后可以自动复位芯片,重头开始跑呢?答案肯定是看门狗,但是通过软件初始化使能的看门狗,还是有一个小问题,就是假如程序是在初始化看门狗之前跑飞了呢?
所以,硬件看门狗就是为了解决这个问题,芯片一上电,看门狗就开始监控软件运行是否正常,否则进行复位。
AC781x具有硬件看门狗功能,只需要在选项字节中去将其配置为使能。
那如何使能这个功能呢?两种方法可以实现,如下:
1、首先是我们CMSIS驱动包ac78xx_eflash模块驱动文件中提供了配置接口,EFLASH_ConfigWdg,可方便软件内置进行配置。
#define HRD_WDT_CFG_ADDR (0x08040004)
#define HRD_WDR_CFG_VAL (0xFF33FFCC)
if ((*(uint32_t *)HRD_WDT_CFG_ADDR) != HRD_WDR_CFG_VAL)
{
EFLASH_ConfigWdg(1);
}
在软件中配置时需要注意,应该先去读取对应地址数据判断当前是否已经使能,如果没有使能则调用该函数进行使能,反之,禁止也是一样的道理。
但是配置硬件看门狗后,会导致下次下载程序时无法成功,因为看门狗一直在监控,而在下载程序过程中又无法周期喂狗,看门狗超时就会导致芯片复位,导致下载程序失败。
那如何解决这种芯片进行程序下载呢?引入第二种方法,通过ISP工具来使能或禁能硬件看门狗功能,禁能看门狗功能即可正常进行程序下载。
2、使用我们的ISP工具来进行配置,根据需要来配置使能或禁止硬件肯们狗功能。
使用ISP工具来配置硬件看门狗功能,需要使芯片进入ISP模式,需要配置相关BOOT引脚。
ISP工具下载链接:http://www.autochips.com/cn/MCU/,切换到如下界面即可下载。
|