summaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-04-30 08:08:49 +0000
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-04-30 08:08:49 +0000
commit2ae1f18d1facd12ed37af5962334d35ac1f86ae7 (patch)
tree14450868d158bb9e046d4c46880da4c7e6402035 /src/flash
parent01f25b5aeb88513f9478fc83b14ecaa868d0eed5 (diff)
downloadopenocd+libswd-2ae1f18d1facd12ed37af5962334d35ac1f86ae7.tar.gz
openocd+libswd-2ae1f18d1facd12ed37af5962334d35ac1f86ae7.tar.bz2
openocd+libswd-2ae1f18d1facd12ed37af5962334d35ac1f86ae7.tar.xz
openocd+libswd-2ae1f18d1facd12ed37af5962334d35ac1f86ae7.zip
flash fillX now has a verify stage
git-svn-id: svn://svn.berlios.de/openocd/trunk@1575 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/flash.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/flash/flash.c b/src/flash/flash.c
index 0490e759..978fc0e7 100644
--- a/src/flash/flash.c
+++ b/src/flash/flash.c
@@ -726,6 +726,7 @@ static int handle_flash_fill_command(struct command_context_s *cmd_ctx, char *cm
u32 pattern;
u32 count;
u8 chunk[1024];
+ u8 readback[1024];
u32 wrote = 0;
u32 cur_size = 0;
u32 chunk_count;
@@ -799,6 +800,21 @@ static int handle_flash_fill_command(struct command_context_s *cmd_ctx, char *cm
err = flash_driver_write(bank, chunk, address - bank->base + wrote, cur_size);
if (err!=ERROR_OK)
return err;
+
+ err = target_read_buffer(target, address + wrote, cur_size, readback);
+ if (err!=ERROR_OK)
+ return err;
+
+ int i;
+ for (i=0; i<cur_size; i++)
+ {
+ if (readback[i]!=chunk[i])
+ {
+ LOG_ERROR("Verfication error address 0x%08x, read back 0x%02x, expected 0x%02x", address + wrote + i, readback[i], chunk[i]);
+ return ERROR_FAIL;
+ }
+ }
+
}
if ((retval = duration_stop_measure(&duration, &duration_text)) != ERROR_OK)