aboutsummaryrefslogtreecommitdiff
path: root/src/lpc43xx.c
diff options
context:
space:
mode:
authorAllen Ibara2014-01-10 11:10:57 -0800
committerAllen Ibara2014-01-10 13:24:25 -0800
commit2b798fa8fc7b06de6053f09ad4394ee1454a5d82 (patch)
tree16d908cae7707339a011ed112db35c6b19c103ef /src/lpc43xx.c
parent487252150fbeb9c0265ad7e9a6aa4057e09b4246 (diff)
LPC43XX: Make the chunk_offset logic more explicit.
Diffstat (limited to 'src/lpc43xx.c')
-rw-r--r--src/lpc43xx.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lpc43xx.c b/src/lpc43xx.c
index fbd3941..6954404 100644
--- a/src/lpc43xx.c
+++ b/src/lpc43xx.c
@@ -431,12 +431,20 @@ static int lpc43xx_flash_write(struct target_s *target, uint32_t dest, const uin
{
unsigned first_chunk = dest / IAP_PGM_CHUNKSIZE;
unsigned last_chunk = (dest + len - 1) / IAP_PGM_CHUNKSIZE;
- unsigned chunk_offset = dest % IAP_PGM_CHUNKSIZE;
+ unsigned chunk_offset;
unsigned chunk;
struct flash_program flash_pgm;
for (chunk = first_chunk; chunk <= last_chunk; chunk++)
{
+ if (chunk == first_chunk)
+ {
+ chunk_offset = dest % IAP_PGM_CHUNKSIZE;
+ }
+ else
+ {
+ chunk_offset = 0;
+ }
/* first and last chunk may require special handling */
if ((chunk == first_chunk) || (chunk == last_chunk)) {
@@ -454,7 +462,6 @@ static int lpc43xx_flash_write(struct target_s *target, uint32_t dest, const uin
/* update to suit */
len -= copylen;
src += copylen;
- chunk_offset = 0;
} else {
/* interior chunk, must be aligned and full-sized */