Less noisy output for STM32L erase/program, but still showing progess
authorUwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Fri, 13 Jan 2012 18:16:15 +0000 (19:16 +0100)
committerUwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Tue, 17 Jan 2012 21:16:46 +0000 (22:16 +0100)
src/stlink-common.c

index 5a51314240eceab6d68bf2d4144f4fd1c6b7aecf..28be2d25e06465f692454e3afda219b333d56628 100644 (file)
@@ -893,7 +893,6 @@ uint32_t stlink_calculate_pagesize(stlink_t *sl, uint32_t flashaddr){
  */
 int stlink_erase_flash_page(stlink_t *sl, stm32_addr_t flashaddr)
 {
-  ILOG("Erasing flash page at addr: %#x\n", flashaddr);
   if (sl->chip_id == STM32F4_CHIP_ID)
   {
     /* wait for ongoing op to finish */
@@ -1234,8 +1233,11 @@ int stlink_write_flash(stlink_t *sl, stm32_addr_t addr, uint8_t* base, unsigned
             WLOG("Failed to erase_flash_page(%#zx) == -1\n", addr + off);
             return -1;
         }
+        fprintf(stdout,"\rFlash page at addr: 0x%08lx erased", addr + off);
+        fflush(stdout);
         page_count++;
     }
+    fprintf(stdout,"\n");
     ILOG("Finished erasing %d pages of %d (%#x) bytes\n", 
         page_count, sl->flash_pgsz, sl->flash_pgsz);
 
@@ -1321,19 +1323,20 @@ int stlink_write_flash(stlink_t *sl, stm32_addr_t addr, uint8_t* base, unsigned
        /* write a word in program memory */
        for (off = 0; off < len; off += sizeof(uint32_t)) {
                uint32_t data;
+               write_uint32((unsigned char*) &data, *(uint32_t*) (base + off));
+               stlink_write_debug32(sl, addr + off, data);
+
                if (sl->verbose >= 1) {
                        if ((off & (sl->flash_pgsz - 1)) == 0) {
                                /* show progress. writing procedure is slow
                                   and previous errors are misleading */
                                const uint32_t pgnum = off / sl->flash_pgsz;
                                const uint32_t pgcount = len / sl->flash_pgsz;
-                               fprintf(stdout, "%u pages written out of %u\n", pgnum, pgcount);
+                               fprintf(stdout, "\r%3u/%u pages written", pgnum, pgcount);
+                                fflush(stdout);
                        }
                }
 
-               write_uint32((unsigned char*) &data, *(uint32_t*) (base + off));
-               stlink_write_debug32(sl, addr + off, data);
-
                /* wait for sr.busy to be cleared */
                while ((stlink_read_debug32(sl, STM32L_FLASH_SR) & (1 << 0)) != 0) {
                }
@@ -1377,6 +1380,7 @@ int stlink_write_flash(stlink_t *sl, stm32_addr_t addr, uint8_t* base, unsigned
 
 #endif /* todo: check redo write operation */
        }
+        fprintf(stdout, "\n");
        /* reset lock bits */
        val = stlink_read_debug32(sl, STM32L_FLASH_PECR)
              | (1 << 0) | (1 << 1) | (1 << 2);