diff options
author | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-04-30 08:08:49 +0000 |
---|---|---|
committer | oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-04-30 08:08:49 +0000 |
commit | 2ae1f18d1facd12ed37af5962334d35ac1f86ae7 (patch) | |
tree | 14450868d158bb9e046d4c46880da4c7e6402035 | |
parent | 01f25b5aeb88513f9478fc83b14ecaa868d0eed5 (diff) | |
download | openocd_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
-rw-r--r-- | src/flash/flash.c | 16 |
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) |