summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2009-11-03 15:38:09 +0100
committerØyvind Harboe <oyvind.harboe@zylin.com>2009-11-03 15:38:09 +0100
commit1b60ce8d5badb730739744323cb7cd4ac6c252af (patch)
treebf276cc3ab2eadc98cda9d9a886749757e8fa1fc
parentf37c9b8d1560d0081e53c71c55113a3c9858011a (diff)
downloadopenocd+libswd-1b60ce8d5badb730739744323cb7cd4ac6c252af.tar.gz
openocd+libswd-1b60ce8d5badb730739744323cb7cd4ac6c252af.tar.bz2
openocd+libswd-1b60ce8d5badb730739744323cb7cd4ac6c252af.tar.xz
openocd+libswd-1b60ce8d5badb730739744323cb7cd4ac6c252af.zip
target: 20 second timeout/megabyte for CRC check
There was a fixed 20 second timeout which is too little for large, slow timeout checks. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
-rw-r--r--src/target/arm7_9_common.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/target/arm7_9_common.c b/src/target/arm7_9_common.c
index 2b064f23..3275584f 100644
--- a/src/target/arm7_9_common.c
+++ b/src/target/arm7_9_common.c
@@ -2821,8 +2821,11 @@ int arm7_9_checksum_memory(struct target_s *target, uint32_t address, uint32_t c
buf_set_u32(reg_params[0].value, 0, 32, address);
buf_set_u32(reg_params[1].value, 0, 32, count);
+ /* 20 second timeout/megabyte */
+ int timeout = 20000 * (1 + (count / (1024*1024)));
+
if ((retval = target_run_algorithm(target, 0, NULL, 2, reg_params,
- crc_algorithm->address, crc_algorithm->address + (sizeof(arm7_9_crc_code) - 8), 20000, &armv4_5_info)) != ERROR_OK)
+ crc_algorithm->address, crc_algorithm->address + (sizeof(arm7_9_crc_code) - 8), timeout, &armv4_5_info)) != ERROR_OK)
{
LOG_ERROR("error executing arm7_9 crc algorithm");
destroy_reg_param(&reg_params[0]);