
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@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