target/cortex_a: fix waiting for target halted after step
Depending on adapter speed, the function cortex_a_poll() can take time to execute and can complete successfully when the timeout is already expired. Checking the timeout at function return causes a timeout error while that could be avoided. Check the target status at cortex_a_poll() return, before checking for the timeout. Change-Id: I4c1581f6e718298c566df7b1359255e16e3955d5 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5111 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>bscan_optimization
parent
a4ac56152d
commit
d3a9e535d5
|
@ -1206,6 +1206,8 @@ static int cortex_a_step(struct target *target, int current, target_addr_t addre
|
||||||
retval = cortex_a_poll(target);
|
retval = cortex_a_poll(target);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
if (target->state == TARGET_HALTED)
|
||||||
|
break;
|
||||||
if (timeval_ms() > then + 1000) {
|
if (timeval_ms() > then + 1000) {
|
||||||
LOG_ERROR("timeout waiting for target halt");
|
LOG_ERROR("timeout waiting for target halt");
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
|
|
Loading…
Reference in New Issue