From fe0240125293a4535cd8eb966d899595a9b4d3ad Mon Sep 17 00:00:00 2001 From: ntfreak Date: Thu, 20 Dec 2007 22:20:45 +0000 Subject: - fixed problem when write_image is called multiple times git-svn-id: svn://svn.berlios.de/openocd/trunk@244 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/flash/flash.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/flash/flash.c b/src/flash/flash.c index fe225f0c..efd16c34 100644 --- a/src/flash/flash.c +++ b/src/flash/flash.c @@ -836,7 +836,8 @@ int flash_write(target_t *target, image_t *image, u32 *written, char **error_str int section; u32 section_offset; - + flash_bank_t *c; + section = 0; section_offset = 0; @@ -846,11 +847,24 @@ int flash_write(target_t *target, image_t *image, u32 *written, char **error_str if (failed != NULL) for (i = 0; i < image->num_sections; i++) failed[i] = 0; - + + if (erase) + { + /* assume all sectors need erasing - stops any problems + * when flash_write is called multiple times */ + + for (c = flash_banks; c; c = c->next) + { + for (i = 0; i < c->num_sectors; i++) + { + c->sectors[i].is_erased = 0; + } + } + } + /* loop until we reach end of the image */ while (section < image->num_sections) { - flash_bank_t *c; u32 buffer_size; u8 *buffer; int section_first; -- cgit v1.2.3