[U-Boot] Watchdog support.
Luigi 'Comio' Mantellini
luigi.mantellini at idf-hit.com
Sun Sep 14 13:13:51 CEST 2008
Hi Wolfgang,
Thank you to share your experience.
Anyway, I'm not sure that the common infrastructure covers all scenarios. For
example in /common/main.c we have the code:
...
int readline_into_buffer (const char *const prompt, char * buffer)
{
...
for (;;) {
#ifdef CONFIG_BOOT_RETRY_TIME
while (!tstc()) { /* while no incoming data */
if (retry_time >= 0 && get_ticks() > endtime)
return (-2); /* timed out */
}
#endif
WATCHDOG_RESET(); /* Trigger watchdog, if needed */
#ifdef CONFIG_SHOW_ACTIVITY
while (!tstc()) {
extern void show_activity(int arg);
show_activity(0);
}
#endif
...
if I enable CONFIG_BOOT_RETRY_TIME or CONFIG_SHOW_ACTIVITY the while loops
iterate a call to tstc() to check the presence of a char in the input buffer.
If tstc doesn't reset the watchdog (like ns16550 driver in my case) we could
have a watchdog timeout.
Ok I patched the serial line driver in order to call the WATCHDOG_RESET
function... but I will not cover all code flows.
From these considerations, I ask myself if the watchdog infrastructure is
really robust or if we need to improve something (like patch policy : we
accept only patch "WATCHDOG"-aware or demand the watchdog to a "simple"
scheduler).
Of course... these are my2cents but I'm interested to community opinions.
thanks and best regards,
luigi
Il domenica 14 settembre 2008 12:28:54 hai scritto:
> Dear "Luigi 'Comio' Mantellini",
>
> In message <200809140859.33792.luigi.mantellini.ml at gmail.com> you wrote:
> > I'm working on a mips based SoC with an external watchdog. The watchdog
> > should be touched every 5 seconds in order to avoid the system reboot.
>
> That shgould be no problem. We have a couple of boards that have
> watchdogs enabled, some with really strict requirements (like
> triggering the watchdow every 80 milliseconds).
>
> > I tried to define macros like CONFIG_HW_WATCHDOG / CONFIG_WATCHDOG, but
> > I'm not happy for the result. For example, the serial port driver
> > (ns16550 in my case) don't touch the watchdog during the status polling,
> > as well as a lot of commands (copy in flash, tftp, ...).
>
> I can't speak for MIPS in general, but the common infeastructure
> should work just fine.
>
> > I don't understand if u-boot supports or not watchdogs in a "structural"
> > manner.
>
> Yes, it does.
>
> > Kindly, if you have experience on Watchdog under u-boot, tell my any
> > comments or suggestion.... in my application the watchdog is mandatory (i
> > cannot stop the _watchdog_).
>
> It's a standard feature being used actively on several boards, some of
> them in mass production.
>
> Best regards,
>
> Wolfgang Denk
More information about the U-Boot
mailing list