[U-Boot] Watchdog support.
Wolfgang Denk
wd at denx.de
Sun Sep 14 17:59:46 CEST 2008
Dear "Luigi 'Comio' Mantellini",
In message <200809141313.51807.luigi.mantellini at idf-hit.com> you wrote:
>
> Anyway, I'm not sure that the common infrastructure covers all scenarios. For
> example in /common/main.c we have the code:
As menrioned before, I'm not so sure about the MIPS implementation,
but this is in proiduction use in several PowerPC boards.
> int readline_into_buffer (const char *const prompt, char * buffer)
> {
> ...
> 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.
He. I see what you mean. Well, U-Boot makes no attempts (yet) to
implement actual watchdog checking for the U-Boot code itself. We
just make sure that the watchdog gets triggered. This is done in the
timer interrupt; see "lib_ppc/interrupts.c":
116 void timer_interrupt (struct pt_regs *regs)
117 {
...
126 #if defined(CONFIG_WATCHDOG) || defined (CONFIG_HW_WATCHDOG)
127 if ((timestamp % (CFG_WATCHDOG_FREQ)) == 0)
128 WATCHDOG_RESET ();
129 #endif /* CONFIG_WATCHDOG || CONFIG_HW_WATCHDOG */
So specific watchdog triggering is only necessary for those parts of
the code that have to be run with interrupts switched off.
> Ok I patched the serial line driver in order to call the WATCHDOG_RESET
> function... but I will not cover all code flows.
That should not be necessary.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
CONSUMER NOTICE: Because of the "Uncertainty Principle," It Is
Impossible for the Consumer to Find Out at the Same Time Both
Precisely Where This Product Is and How Fast It Is Moving.
More information about the U-Boot
mailing list