Skip to contentSkip to conversation

Add a flash programming end marker and progress dots

PATCH New Jerry Van Baren 3 participants 3 messages Mar 7, 2008 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Add a flash programming end marker and progress dots

---

OK, how about this for a compromise for end marker and progress dots?

 common/cmd_mem.c        |    2 +-
 drivers/mtd/cfi_flash.c |   13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletions(-)
common/cmd_mem.c +1 -1
index 4262e26..b55d243 100644
@@ -422,7 +422,7 @@ int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 	   ) {
 		int rc;
 
-		puts ("Copy to Flash... ");
+		puts ("Copy to Flash\n");
 
 		rc = flash_write ((char *)addr, dest, count*size);
 		if (rc != 0) {
drivers/mtd/cfi_flash.c +13 -0
index 439c950..eebe86a 100644
@@ -1188,6 +1188,7 @@ void flash_print_info (flash_info_t * info)
 int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
 {
 	ulong wp;
+	ulong dots = 0;
 	uchar *p;
 	int aln;
 	cfiword_t cword;
@@ -1196,6 +1197,10 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
 #ifdef CFG_FLASH_USE_BUFFER_WRITE
 	int buffered_size;
 #endif
+
+	/* print an end marker for visible feedback */
+	printf("%*c\r", (cnt + (1 << 14) - 1) / (1 << 14), '|');
+
 	/* get lower aligned address */
 	wp = (addr & ~(info->portwidth - 1));
 
@@ -1248,6 +1253,9 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
 		wp += i;
 		src += i;
 		cnt -= i;
+		dots += i;
+		if ((dots % (1 << 14)) == 0)
+			putc ('.');
 	}
 #else
 	while (cnt >= info->portwidth) {
@@ -1259,8 +1267,13 @@ int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
 			return rc;
 		wp += info->portwidth;
 		cnt -= info->portwidth;
+		dots += info->portwidth;
+		if ((dots % (1 << 14)) == 0)
+			putc ('.');
 	}
 #endif /* CFG_FLASH_USE_BUFFER_WRITE */
+	putc ('\n');
+
 	if (cnt == 0) {
 		return (0);
 	}
Signature · 1 line
1.5.4.1
#1 lore raw

PATCH 1/1 Add a flash programming end marker and progress dots

Quoted 4 lines · Jerry Van Baren

---

OK, how about this for a compromise for end marker and progress dots?

Thanks. Nice work. But I see some problems on my PPC4xx system:

a) Crashes upon flashing 16MBytes

=> cp.b 100000 fe000000 1000000
Copy to Flash

Bad trap at PC: 20202020, SR: 29000, vector=1400
NIP: 20202020 XER: 0000005F LR: 20202020 REGS: 0ff15950 TRAP: 1400 DEAR:
7F7F7FEF
MSR: 00029000 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 00

b) Strange output upon "saveenv" with redundant env sectors:

=> saveenv
Saving Environment to Flash...
. done
Un-Protected 1 sectors
. done
Un-Protected 1 sectors
Erasing Flash...
. done
Erased 1 sectors
Writing to Flash... |

|
|
|

done
.......|
. done
Protected 1 sectors
. done
Protected 1 sectors

It seems we have to restrict the output length somehow for this 16MByte problem. Or perhaps use a fixed length for all sizes.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#2 lore raw

PATCH 1/1 Add a flash programming end marker and progress dots

Quoted 2 lines · In message <[email protected]> you wrote:

a) Crashes upon flashing 16MBytes

Nice :-(

Quoted 1 line

b) Strange output upon "saveenv" with redundant env sectors:

...

Quoted 2 lines

It seems we have to restrict the output length somehow for this 16MByte problem. Or perhaps use a fixed length for all sizes.

The important thing is that the string printed...

- must make no assumptions about starting in a specific column (i. e. \r will not work)
- must not emit any newlines (i. e. must be single-line).

A fixed (precalculated) length of the string should be used indeed (if at all).

Best regards,

Wolfgang Denk

Signature · 7 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
There are two ways of constructing a software design. One way  is  to
make  it  so  simple that there are obviously no deficiencies and the
other is to make it so complicated that there are  no  obvious  defi-
ciencies.                             - Charles Anthony Richard Hoare