[U-Boot] [PATCH v2] cp/cmp: Add WATCHDOG_RESET in copy and compare loop

On some boards with a very short watchdog timeout, the "cp" and "cmp" commands may reset the board. This patch adds some watchdog resets inside the loops. Otherwise for example the lwmon5 board will reset while doing something like this:
=> cp.b fc000000 1000000 100000
Signed-off-by: Stefan Roese sr@denx.de --- v2: - Changed to power of 2 value to simplify the resulting code, 4096 seems to be enough for lwmon5.
common/cmd_mem.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/common/cmd_mem.c b/common/cmd_mem.c index 44834ea..c426997 100644 --- a/common/cmd_mem.c +++ b/common/cmd_mem.c @@ -337,6 +337,10 @@ int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) ngood++; addr1 += size; addr2 += size; + + /* reset watchdog from time to time */ + if ((count % 4096) == 0) + WATCHDOG_RESET(); }
printf("Total of %ld %s%s were the same\n", @@ -447,6 +451,10 @@ int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) *((u_char *)dest) = *((u_char *)addr); addr += size; dest += size; + + /* reset watchdog from time to time */ + if ((count % 4096) == 0) + WATCHDOG_RESET(); } return 0; }

Dear Stefan Roese,
In message 1283322171-9451-1-git-send-email-sr@denx.de you wrote:
On some boards with a very short watchdog timeout, the "cp" and "cmp" commands may reset the board. This patch adds some watchdog resets inside the loops. Otherwise for example the lwmon5 board will reset while doing something like this:
=> cp.b fc000000 1000000 100000
Signed-off-by: Stefan Roese sr@denx.de
v2:
- Changed to power of 2 value to simplify the resulting code, 4096 seems to be enough for lwmon5.
Hm... as mentioned before, the trigger interval is in the order of tens of microseconds. I don't think that the 440EX is _that_ slow?
Best regards,
Wolfgang Denk

In message 20100909182830.08EBE1524F7@gemini.denx.de I wrote:
- Changed to power of 2 value to simplify the resulting code, 4096 seems to be enough for lwmon5.
Hm... as mentioned before, the trigger interval is in the order of tens of microseconds. I don't think that the 440EX is _that_ slow?
Tens of milliseconds, that is.
Best regards,
Wolfgang Denk
participants (2)
-
Stefan Roese
-
Wolfgang Denk