summaryrefslogtreecommitdiff
path: root/src/target/armv7m.c
diff options
context:
space:
mode:
authorSpencer Oliver <ntfreak@users.sourceforge.net>2010-05-10 14:14:57 +0100
committerSpencer Oliver <ntfreak@users.sourceforge.net>2010-05-10 15:39:46 +0100
commit2ae192699f5aaa911a874b85669fc803e4a29804 (patch)
tree261ecb0a68d79901d4a7676ffc6bd7f848441051 /src/target/armv7m.c
parentbbc8f4e6cec361a34028dad4b5000c136f4f48b2 (diff)
downloadopenocd+libswd-2ae192699f5aaa911a874b85669fc803e4a29804.tar.gz
openocd+libswd-2ae192699f5aaa911a874b85669fc803e4a29804.tar.bz2
openocd+libswd-2ae192699f5aaa911a874b85669fc803e4a29804.tar.xz
openocd+libswd-2ae192699f5aaa911a874b85669fc803e4a29804.zip
armv7m: 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: Spencer Oliver <ntfreak@users.sourceforge.net>
Diffstat (limited to 'src/target/armv7m.c')
-rw-r--r--src/target/armv7m.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/target/armv7m.c b/src/target/armv7m.c
index 83335a58..bd5aa147 100644
--- a/src/target/armv7m.c
+++ b/src/target/armv7m.c
@@ -615,8 +615,10 @@ int armv7m_checksum_memory(struct target *target,
buf_set_u32(reg_params[0].value, 0, 32, address);
buf_set_u32(reg_params[1].value, 0, 32, count);
+ 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(cortex_m3_crc_code)-6), 20000, &armv7m_info)) != ERROR_OK)
+ crc_algorithm->address, crc_algorithm->address + (sizeof(cortex_m3_crc_code)-6), timeout, &armv7m_info)) != ERROR_OK)
{
LOG_ERROR("error executing cortex_m3 crc algorithm");
destroy_reg_param(&reg_params[0]);