新路程------hi3516a watchdog

来源:互联网 发布:短信轰炸软件免费版 编辑:程序博客网 时间:2024/05/22 14:23

      最近搞watchdog,差点没搞死,先是喂狗停止后,系统一直卡死,猜测是boot过程中出了问题,因为有网友也遇到过,所以怀疑是spi flash的上电时序慢了,但是虽然怀疑对了,没有办法验证,而且我的spi flash在看门狗重启过程中是不断电的。

   然后就看整个reboot过程,上一篇文章写了,当

void kernel_restart_prepare(char *cmd)
{
blocking_notifier_call_chain(&reboot_notifier_list, SYS_RESTART, cmd);  
system_state = SYSTEM_RESTART;
usermodehelper_disable();
device_shutdown();
printk("matt-kernel_restart\n");
__raw_writel(~0, IO_ADDRESS(0x20050004));  //当全局软复位放到这个之前,就会出类似的情况,这个现象对我产生了干扰
syscore_shutdown();
}

hi3516a一共三种复位,por上电复位和rtsn硬件管脚复位,这个看POR_SEL ,我这边的POR_SEL
是低电平也就是全部都是上电复位的。然后看看门狗的输出WDG_RSTN

这个在spec178页写了可以复用,当POR_SEL =0的时候是SYS_RSTN_OUT
这个功能

这个功能在spec64页写了

功能 1SYS_RSTN_OUT
系统复位输出,复位有效时间约
130ms
0:复位;但是光这些信息还不够,我看了硬件原理图,这个管脚连到了spi flash的reset pin,看原理图,中间有个电阻是绿色的,可能是没有焊接,对比硬件,看到确实没有电阻在上面,于是开始怀疑这个电阻没上导致spi flash没有复位导致重启失败


最重要的是没有看Hi3516A/Hi3516D 硬件设计用户指南.pdf的11页

POR_SEL 为低电平时,选择内部复位,主芯片上电后由内部PORPower on
Reset
)电路对整个芯片进行复位(复位脉冲宽度约为 130ms),此时RSTN 管脚无
效;当选择内部复位时,
RSTN 管脚可悬空处理。
选择内部复位时,为确保系统能正常启动,小系统相关的外设(例如:存放
boot
flash 器件)必须先于Hi3516A 释放复位信号,或同时与Hi3516A 一起释放复
位信号,否则可能会出现无法启动等异常情况。


我就是没有复位flash导致的所以最后的原因就是这个电阻没上导致