A20自带软件看门狗,当没有外接硬件看门狗的情况下,需要开启A20自带的软件看门狗来解决系统死机问题。实际项目碰到如下问题:开启看门狗后,上层主动控制系统重启,会出现概率性无法重启现象。抓log定位问题发现,重启过程中调用sun7i_restart后,一直出现mmc错误:
EXT4-fs (mmcblk0p8): ext4_da_writepages: jbd2_start: 1024 pages, ino 8710; err -30
系统没有正常关机。
究其原因是调用sun7i_restart(该函数通过看门狗实现复位系统)后,概率性出现sunxi_wdt.c中watchdog_kick再次喂狗的情况。
解决办法是:通过加锁控制调用sun7i_restart后不再喂狗。