armv7m: 20 second timeout/megabyte for CRC check
authorSpencer Oliver <ntfreak@users.sourceforge.net>
Mon, 10 May 2010 13:14:57 +0000 (14:14 +0100)
committerSpencer Oliver <ntfreak@users.sourceforge.net>
Mon, 10 May 2010 14:39:46 +0000 (15:39 +0100)
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>
src/target/armv7m.c

index 83335a584c59f3da638cd560f1c407b19a93927d..bd5aa147afc2f5560d579df5f874d0dab02683ed 100644 (file)
@@ -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]);