FreeCalypso > hg > freecalypso-tools
comparison loadtools/flmisc.c @ 616:4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Tue, 25 Feb 2020 02:43:05 +0000 |
| parents | 0dd2c87c1b63 |
| children | cd48bc4c5460 |
comparison
equal
deleted
inserted
replaced
| 615:39b74c39d914 | 616:4be92bcd1535 |
|---|---|
| 6 #include <stdio.h> | 6 #include <stdio.h> |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 #include <strings.h> | 9 #include <strings.h> |
| 10 #include <stdlib.h> | 10 #include <stdlib.h> |
| 11 #include <time.h> | |
| 11 #include "flash.h" | 12 #include "flash.h" |
| 12 | 13 |
| 13 extern struct flash_bank_info flash_bank_info[2]; | 14 extern struct flash_bank_info flash_bank_info[2]; |
| 14 | 15 |
| 15 flashcmd_blankchk(argc, argv, bank) | 16 flashcmd_blankchk(argc, argv, bank) |
| 127 struct flash_bank_info *bi; | 128 struct flash_bank_info *bi; |
| 128 u_long offset, len; | 129 u_long offset, len; |
| 129 char *strtoul_endp; | 130 char *strtoul_endp; |
| 130 struct sector_info *startsec, *endsec, *sp; | 131 struct sector_info *startsec, *endsec, *sp; |
| 131 int stat; | 132 int stat; |
| 133 time_t start_time, finish_time; | |
| 134 unsigned duration, mm, ss; | |
| 132 | 135 |
| 133 if (argc != 4) { | 136 if (argc != 4) { |
| 134 inv: fprintf(stderr, "usage: %s %s hex-start-offset hex-length\n", | 137 inv: fprintf(stderr, "usage: %s %s hex-start-offset hex-length\n", |
| 135 argv[0], argv[1]); | 138 argv[0], argv[1]); |
| 136 return(-1); | 139 return(-1); |
| 164 if (get_flash_sector_table(bank) < 0) | 167 if (get_flash_sector_table(bank) < 0) |
| 165 return(-1); | 168 return(-1); |
| 166 if (get_flash_sector_range(bi, offset, len, &startsec, &endsec) < 0) | 169 if (get_flash_sector_range(bi, offset, len, &startsec, &endsec) < 0) |
| 167 return(-1); | 170 return(-1); |
| 168 printf("Erasing %d sector(s)\n", endsec - startsec); | 171 printf("Erasing %d sector(s)\n", endsec - startsec); |
| 172 time(&start_time); | |
| 169 for (sp = startsec; sp < endsec; sp++) { | 173 for (sp = startsec; sp < endsec; sp++) { |
| 170 stat = bi->ops->erase_sector(bi, sp); | 174 stat = bi->ops->erase_sector(bi, sp); |
| 171 if (stat) | 175 if (stat) |
| 172 return(stat); | 176 return(stat); |
| 173 putchar('.'); | 177 putchar('.'); |
| 174 fflush(stdout); | 178 fflush(stdout); |
| 175 } | 179 } |
| 180 time(&finish_time); | |
| 176 putchar('\n'); | 181 putchar('\n'); |
| 182 duration = finish_time - start_time; | |
| 183 mm = duration / 60; | |
| 184 ss = duration - mm * 60; | |
| 185 printf("Operation completed in %um%us\n", mm, ss); | |
| 177 return(0); | 186 return(0); |
| 178 } | 187 } |
| 179 | 188 |
| 180 flashcmd_quickprog(argc, argv, bank) | 189 flashcmd_quickprog(argc, argv, bank) |
| 181 char **argv; | 190 char **argv; |
