分类: 嵌入式
2009-12-03 16:28:30
上一节的方法可行,但是需要做的工作量很大。后来发现U-Boot本身已经有了看门狗接口。只要实现看门狗接口,然后再进行少量改动即可。
在include/watchdog.h文件中有WATCHDOG_RESET的宏定义,可选择C实现或者汇编实现,函数为hw_watchdog_reset。
在watchdog.h末尾声明函数hw_watchdog_reset:
void hw_watchdog_reset(void);
启用开关为:CONFIG_HW_WATCHDOG,在trizepsiv.h中轻易这个开关即可。
同时,在boards/trizepsiv/conxs.c中实现hw_watchdog_reset函数:
206 #ifdef CONFIG_HW_WATCHDOG
207 void hw_watchdog_reset(void)
208 {
209
int i;
210 GPSR0 = 1 << 14;
211 for (i=100; i>0; i--);
212 // udelay(100);
213 GPCR0 = 1 << 14;
214 }
215 #endif
另外,为了在其它地方调用WATCHDOG_RESET函数,可以将watchdog.h添加包含到common.h文件中:
111 #include