From: Fabien Le Mentec Date: Sun, 23 Oct 2011 06:45:01 +0000 (-0500) Subject: [update] disable flash write operation checking X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=2953d3a6e85169c889d7860aa49f372b3146dd63;p=fw%2Fstlink [update] disable flash write operation checking --- diff --git a/src/stlink-common.c b/src/stlink-common.c index d120a51..a52a334 100644 --- a/src/stlink-common.c +++ b/src/stlink-common.c @@ -1132,10 +1132,15 @@ int stlink_fwrite_flash(stlink_t *sl, const char* path, stm32_addr_t addr) { /* use fast word write. todo: half page. */ uint32_t val; + +#if 0 /* todo: check write operation */ + uint32_t nwrites = sl->flash_pgsz; redo_write: +#endif /* todo: check write operation */ + /* disable pecr protection */ write_uint32(sl->q_buf, 0x89abcdef); stlink_write_mem32(sl, STM32L_FLASH_PEKEYR, sizeof(uint32_t)); @@ -1179,6 +1184,8 @@ int stlink_fwrite_flash(stlink_t *sl, const char* path, stm32_addr_t addr) { if ((read_uint32(sl->q_buf, 0) & (1 << 0)) == 0) break ; } +#if 0 /* todo: check write operation */ + /* check written bytes. todo: should be on a per page basis. */ stlink_read_mem32(sl, addr + off, sizeof(uint32_t)); if (memcmp(sl->q_buf, mf.base + off, sizeof(uint32_t))) @@ -1193,14 +1200,15 @@ int stlink_fwrite_flash(stlink_t *sl, const char* path, stm32_addr_t addr) { goto on_error; } - fprintf(stderr, "invalid write @%x(%x). retrying.\n", page, addr + off); - nwrites = 0; /* assume addr aligned */ if (off % sl->flash_pgsz) off &= ~(sl->flash_pgsz - 1); page = addr + off; + fprintf(stderr, "invalid write @%x(%x): %x != %x. retrying.\n", + page, addr + off, read_uint32(mf.base + off, 0), read_uint32(sl->q_buf, 0)); + /* reset lock bits */ stlink_read_mem32(sl, STM32L_FLASH_PECR, sizeof(uint32_t)); val = read_uint32(sl->q_buf, 0) | (1 << 0) | (1 << 1) | (1 << 2); @@ -1214,6 +1222,9 @@ int stlink_fwrite_flash(stlink_t *sl, const char* path, stm32_addr_t addr) { /* increment successive writes counter */ ++nwrites; + +#endif /* todo: check write operation */ + } /* reset lock bits */