
Hello Lukasz,
Am 17.03.2015 10:52, schrieb Lukasz Majewski:
Hi Heiko,
trigger watchdog before calling usb_gadget_handle_interrupts() This prevents board resets when calling dfu command on boards which have a watchdog.
Signed-off-by: Heiko Schocher hs@denx.de
common/cmd_dfu.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/common/cmd_dfu.c b/common/cmd_dfu.c index e975abe..46af4cf 100644 --- a/common/cmd_dfu.c +++ b/common/cmd_dfu.c @@ -9,6 +9,7 @@ */
#include <common.h> +#include <watchdog.h> #include <dfu.h> #include <g_dnl.h> #include <usb.h> @@ -64,6 +65,7 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (ctrlc()) goto exit;
usb_gadget_handle_interrupts(); } exit:WATCHDOG_RESET();
It seems strange for me, that we must reset watchdog when looping in the dfu.
Hmm.. maybe I overlook something, but If you look into this while(1) loop, there is no trigger of the watchdog ... and if I start the dfu command without a USB cable on the board, what triggers the boards watchdog?
What is the WATCHDOG interval on the affected board?
~5 seconds
Ah, this is on an at91 board .. and in the drivers/serial/atmel_usart.c atmel_serial_tstc() is no WATCHDOG_RESET...
So ctrlc() does not trigger the watchdog
bye, Heiko