aboutsummaryrefslogtreecommitdiff
path: root/src/target
diff options
context:
space:
mode:
authorTomas Vanek <vanekt@fbl.cz>2016-07-21 09:27:00 +0200
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>2016-08-13 09:39:01 +0100
commitccb4a913c228573e172b7b71d86c464e6fc705b9 (patch)
tree3ec5b23b9a450621d8423b4e43410bce9b8740aa /src/target
parent8160cfb7db097eabfb6041acdee72921e5753dd9 (diff)
target: check late abort from target in async_algorithm
target_run_flash_async_algorithm() ignored abort from target (rp set to 0) when raised after all data have been written in fifo. I could result e.g. in not reported error during flash write. The change adds rp test after target algorithm has finished. Change-Id: Iadd93371e4a4602737be10079479285d81ae41b2 Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/3560 Tested-by: jenkins Reviewed-by: Steven Stallion <stallion@squareup.com> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Diffstat (limited to 'src/target')
-rw-r--r--src/target/target.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/target/target.c b/src/target/target.c
index 0dbce9ae..56d9eee5 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -1014,6 +1014,15 @@ int target_run_flash_async_algorithm(struct target *target,
retval = retval2;
}
+ if (retval == ERROR_OK) {
+ /* check if algorithm set rp = 0 after fifo writer loop finished */
+ retval = target_read_u32(target, rp_addr, &rp);
+ if (retval == ERROR_OK && rp == 0) {
+ LOG_ERROR("flash write algorithm aborted by target");
+ retval = ERROR_FLASH_OPERATION_FAILED;
+ }
+ }
+
return retval;
}