FreeCalypso > hg > freecalypso-tools
annotate loadtools/flerase.c @ 890:76cc910c508e
document fc-imy2pwt
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 03 Apr 2022 05:29:17 +0000 | 
| parents | 185c9bf208d3 | 
| children | 
| rev | line source | 
|---|---|
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 668 
cd48bc4c5460
fc-loadtool code: erase command split out into flerase.c
 Mychaela Falconia <falcon@freecalypso.org> parents: 
616diff
changeset | 2 * Flash erase operations are implemented here | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 */ | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 #include <sys/types.h> | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 #include <stdio.h> | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include <stdint.h> | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 #include <string.h> | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 #include <strings.h> | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 #include <stdlib.h> | 
| 616 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 11 #include <time.h> | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 #include "flash.h" | 
| 669 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 13 #include "discontig.h" | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 extern struct flash_bank_info flash_bank_info[2]; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 flashcmd_erase(argc, argv, bank) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 char **argv; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 struct flash_bank_info *bi; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 u_long offset, len; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 char *strtoul_endp; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 struct sector_info *startsec, *endsec, *sp; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 int stat; | 
| 616 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 25 time_t start_time, finish_time; | 
| 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 26 unsigned duration, mm, ss; | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 if (argc != 4) { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 inv: fprintf(stderr, "usage: %s %s hex-start-offset hex-length\n", | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 argv[0], argv[1]); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 return(-1); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 } | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 offset = strtoul(argv[2], &strtoul_endp, 16); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 if (*strtoul_endp) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 goto inv; | 
| 506 
0dd2c87c1b63
fc-loadtool flash support overhaul
 Mychaela Falconia <falcon@freecalypso.org> parents: 
0diff
changeset | 36 if (flash_detect(bank, 0) < 0) | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 return(-1); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 bi = flash_bank_info + bank; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 if (offset >= bi->geom->total_size) { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 fprintf(stderr, | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 "error: specified offset exceeds flash bank size (0x%lx)\n", | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 (u_long) bi->geom->total_size); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 return(-1); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 } | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 len = strtoul(argv[3], &strtoul_endp, 16); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 if (*strtoul_endp) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 goto inv; | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 if (len > bi->geom->total_size - offset) { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 fprintf(stderr, | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 "error: specified offset+length exceed flash bank size (0x%lx)\n", | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 (u_long) bi->geom->total_size); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 return(-1); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 } | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 if (!len) { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 printf("Zero length specified - nothing to do!\n"); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 return(0); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 } | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 /* now enforce sector alignment for both offset and length */ | 
| 669 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 59 if (get_flash_sector_table(bi) < 0) | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 return(-1); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 if (get_flash_sector_range(bi, offset, len, &startsec, &endsec) < 0) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 return(-1); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 printf("Erasing %d sector(s)\n", endsec - startsec); | 
| 616 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 64 time(&start_time); | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 for (sp = startsec; sp < endsec; sp++) { | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 stat = bi->ops->erase_sector(bi, sp); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 if (stat) | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 return(stat); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 putchar('.'); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 fflush(stdout); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 } | 
| 616 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 72 time(&finish_time); | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 putchar('\n'); | 
| 616 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 74 duration = finish_time - start_time; | 
| 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 75 mm = duration / 60; | 
| 
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
 Mychaela Falconia <falcon@freecalypso.org> parents: 
506diff
changeset | 76 ss = duration - mm * 60; | 
| 692 
185c9bf208d3
loadtools operation time reporting: two digits for seconds
 Mychaela Falconia <falcon@freecalypso.org> parents: 
669diff
changeset | 77 printf("Operation completed in %um%02us\n", mm, ss); | 
| 0 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 return(0); | 
| 
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 } | 
| 669 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 80 | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 81 erase_sectors_for_prog(bi, regions, nregions) | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 82 struct flash_bank_info *bi; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 83 struct discontig_prog *regions; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 84 unsigned nregions; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 85 { | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 86 struct sector_info *seclist[256], **seclp, **secendp, *sp; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 87 struct discontig_prog *regp, *regendp; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 88 uint32_t endaddr, secendaddr; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 89 int flag, stat; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 90 time_t start_time, finish_time; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 91 unsigned duration, mm, ss; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 92 | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 93 if (get_flash_sector_table(bi) < 0) | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 94 return(-1); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 95 seclp = seclist; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 96 endaddr = regions[nregions-1].end; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 97 regendp = regions + nregions; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 98 for (sp = bi->sectors; sp->size; sp++) { | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 99 if (sp->start >= endaddr) | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 100 break; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 101 secendaddr = sp->start + sp->size; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 102 flag = 0; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 103 for (regp = regions; regp < regendp; regp++) { | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 104 if (regp->start >= secendaddr) | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 105 break; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 106 if (sp->start >= regp->end) | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 107 continue; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 108 flag = 1; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 109 break; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 110 } | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 111 if (flag) | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 112 *seclp++ = sp; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 113 } | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 114 secendp = seclp; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 115 printf("Erasing %d sector(s)\n", secendp - seclist); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 116 time(&start_time); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 117 for (seclp = seclist; seclp < secendp; seclp++) { | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 118 sp = *seclp; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 119 stat = bi->ops->erase_sector(bi, sp); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 120 if (stat) | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 121 return(stat); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 122 putchar('.'); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 123 fflush(stdout); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 124 } | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 125 time(&finish_time); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 126 putchar('\n'); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 127 duration = finish_time - start_time; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 128 mm = duration / 60; | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 129 ss = duration - mm * 60; | 
| 692 
185c9bf208d3
loadtools operation time reporting: two digits for seconds
 Mychaela Falconia <falcon@freecalypso.org> parents: 
669diff
changeset | 130 printf("Operation completed in %um%02us\n", mm, ss); | 
| 669 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 131 return(0); | 
| 
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
 Mychaela Falconia <falcon@freecalypso.org> parents: 
668diff
changeset | 132 } | 
