cp/cmp: Add WATCHDOG_RESET in copy and compare loop
PATCH 1/1 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
--- common/cmd_mem.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
common/cmd_mem.c +8 -0
@@ -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 %1000 ) ==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 %1000 ) ==0 ) +WATCHDOG_RESET (); }return 0 ; }
Signature · 1 line
1.7.2.2
PATCH 1/1 cp/cmp: Add WATCHDOG_RESET in copy and compare loop
common/cmd_mem.c int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) · line 343
Quoted 3 lines · On Tuesday, August 31, 2010 07:57:33 Stefan Roese wrote:
common/cmd_mem.c +3
-0+/* reset watchdog from time to time */ +if ((count %1000 ) ==0 ) +WATCHDOG_RESET ();
please pick a number that doesnt involve needing to call libgcc math functions. like 1024.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100831/a137c5aa/attachment.pgp
PATCH 1/1 cp/cmp: Add WATCHDOG_RESET in copy and compare loop
Hi Mike,
Quoted 7 lines · On Tuesday 31 August 2010 15:18:03 Mike Frysinger wrote:
common/cmd_mem.c int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) · line 343
Quoted 3 lines · On Tuesday, August 31, 2010 07:57:33 Stefan Roese wrote:
common/cmd_mem.c +3
-0+/* reset watchdog from time to time */ +if ((count %1000 ) ==0 ) +WATCHDOG_RESET ();please pick a number that doesnt involve needing to call libgcc math functions. like 1024.
Good idea, thanks. Will send an updated version soon.
Cheers,
Stefan
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office at denx.de
PATCH 1/1 cp/cmp: Add WATCHDOG_RESET in copy and compare loop
In reply to Stefan RoeseDear Stefan Roese,
Quoted 28 lines · In message <[email protected]> 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
fc0000001000000 100000Signed-off-by Stefan Roese <[email protected]>--- common/cmd_mem.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)common/cmd_mem.c +4
-0@@ -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 %1000 ) ==0 ) +WATCHDOG_RESET (); } printf("Total of %ld %s%s were the same\n",
common/cmd_mem.c int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) · line 457
Quoted 7 lines
common/cmd_mem.c +4
-0@@ -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 %1000 ) ==0 ) +WATCHDOG_RESET ();
1000 seems a bit arbitray to me, and very, very low. Are you sure such a low value is needed?
I think lwmon5 has some 50 ms trigger period, so I'd expect to see a _much_ higher value here.
Best regards,
Wolfgang Denk
Signature · 7 lines
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 It [being a Vulcan] means to adopt a philosophy, a way of life which is logical and beneficial. We cannot disregard that philosophy merely for personal gain, no matter how important that gain might be. -- Spock, "Journey to Babel", stardate 3842.4