FreeCalypso > hg > freecalypso-tools
annotate loadtools/flerase.c @ 896:0a2f50c571de
CHANGES: fc-buzplay basic 'play' command extension
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 03 Apr 2022 08:41:34 +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:
616
diff
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:
506
diff
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:
668
diff
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:
506
diff
changeset
|
25 time_t start_time, finish_time; |
|
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
Mychaela Falconia <falcon@freecalypso.org>
parents:
506
diff
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:
0
diff
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:
668
diff
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:
506
diff
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:
506
diff
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:
506
diff
changeset
|
74 duration = finish_time - start_time; |
|
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
Mychaela Falconia <falcon@freecalypso.org>
parents:
506
diff
changeset
|
75 mm = duration / 60; |
|
4be92bcd1535
fc-loadtool: added operation time reporting to flash erase
Mychaela Falconia <falcon@freecalypso.org>
parents:
506
diff
changeset
|
76 ss = duration - mm * 60; |
|
692
185c9bf208d3
loadtools operation time reporting: two digits for seconds
Mychaela Falconia <falcon@freecalypso.org>
parents:
669
diff
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:
668
diff
changeset
|
80 |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
81 erase_sectors_for_prog(bi, regions, nregions) |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
82 struct flash_bank_info *bi; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
83 struct discontig_prog *regions; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
84 unsigned nregions; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
85 { |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
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:
668
diff
changeset
|
87 struct discontig_prog *regp, *regendp; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
88 uint32_t endaddr, secendaddr; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
89 int flag, stat; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
90 time_t start_time, finish_time; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
91 unsigned duration, mm, ss; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
92 |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
93 if (get_flash_sector_table(bi) < 0) |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
94 return(-1); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
95 seclp = seclist; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
96 endaddr = regions[nregions-1].end; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
97 regendp = regions + nregions; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
98 for (sp = bi->sectors; sp->size; sp++) { |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
99 if (sp->start >= endaddr) |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
100 break; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
101 secendaddr = sp->start + sp->size; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
102 flag = 0; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
103 for (regp = regions; regp < regendp; regp++) { |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
104 if (regp->start >= secendaddr) |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
105 break; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
106 if (sp->start >= regp->end) |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
107 continue; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
108 flag = 1; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
109 break; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
110 } |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
111 if (flag) |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
112 *seclp++ = sp; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
113 } |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
114 secendp = seclp; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
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:
668
diff
changeset
|
116 time(&start_time); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
117 for (seclp = seclist; seclp < secendp; seclp++) { |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
118 sp = *seclp; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
119 stat = bi->ops->erase_sector(bi, sp); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
120 if (stat) |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
121 return(stat); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
122 putchar('.'); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
123 fflush(stdout); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
124 } |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
125 time(&finish_time); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
126 putchar('\n'); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
127 duration = finish_time - start_time; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
128 mm = duration / 60; |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
129 ss = duration - mm * 60; |
|
692
185c9bf208d3
loadtools operation time reporting: two digits for seconds
Mychaela Falconia <falcon@freecalypso.org>
parents:
669
diff
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:
668
diff
changeset
|
131 return(0); |
|
ba9523ca6ed8
fc-loadtool code: preparations for e-program-* addition
Mychaela Falconia <falcon@freecalypso.org>
parents:
668
diff
changeset
|
132 } |
