]> git.sur5r.net Git - openocd/commitdiff
flash fillX now has a verify stage
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 30 Apr 2009 08:08:49 +0000 (08:08 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 30 Apr 2009 08:08:49 +0000 (08:08 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@1575 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/flash/flash.c

index 0490e759245afd2273112fbb5be621d9f526f366..978fc0e79bc0b91cffbf5c48cece6b8d457db17b 100644 (file)
@@ -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)