FreeCalypso > hg > freecalypso-sw
annotate loadtools/flcmplboot.c @ 415:b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Tue, 17 Jun 2014 06:31:27 +0000 |
parents | a2df77833c21 |
children | c2e14cc15c23 |
rev | line source |
---|---|
412
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * This module contains the implementation of the flash erase-program-boot |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 * hack for brickable Compal phones. |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 */ |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 #include <sys/types.h> |
414
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
7 #include <sys/stat.h> |
412
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 #include <ctype.h> |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 #include <stdio.h> |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 #include <stdint.h> |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 #include <string.h> |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 #include <strings.h> |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 #include <stdlib.h> |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 #include "flash.h" |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 |
414
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
16 extern struct flash_bank_info flash_bank_info[2]; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
17 extern struct flash_cmdset flash_cmdset_intel; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
18 |
412
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 static int hack_enabled; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 static uint32_t boot_sector_size; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 static uint32_t ram_buffer_addr; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 /* called from hwparam.c config file parser */ |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 void |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 set_boot_reflash_hack(arg, filename_for_errs, lineno_for_errs) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 char *arg; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 char *filename_for_errs; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 int lineno_for_errs; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 { |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 char *cp, *np, *ep; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 if (hack_enabled) { |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 fprintf(stderr, |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 "%s line %d: duplicate boot-reflash-hack setting\n", |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 filename_for_errs, lineno_for_errs); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 exit(1); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 } |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 for (cp = arg; isspace(*cp); cp++) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 ; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 if (!*cp || *cp == '#') { |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 too_few_arg: fprintf(stderr, |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 "%s line %d: boot-reflash-hack setting: too few arguments\n", |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 filename_for_errs, lineno_for_errs); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 exit(1); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 } |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 for (np = cp; *cp && !isspace(*cp); cp++) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 ; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 if (!*cp) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 goto too_few_arg; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 *cp++ = '\0'; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 ram_buffer_addr = strtoul(np, &ep, 16); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 if (*ep) { |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 invhex: fprintf(stderr, |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 "%s line %d: syntax error (hex arguments expected)\n", |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 filename_for_errs, lineno_for_errs); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 exit(1); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 } |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 while (isspace(*cp)) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 cp++; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 if (!*cp || *cp == '#') |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 goto too_few_arg; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 for (np = cp; *cp && !isspace(*cp); cp++) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 ; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 if (*cp) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 *cp++ = '\0'; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 boot_sector_size = strtoul(np, &ep, 16); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 if (*ep) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 goto invhex; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 while (isspace(*cp)) |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 cp++; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 if (*cp && *cp != '#') { |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 fprintf(stderr, |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 "%s line %d: boot-reflash-hack setting: too many arguments\n", |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 filename_for_errs, lineno_for_errs); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 exit(1); |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 } |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 hack_enabled = 1; |
bf49e348576b
fc-loadtool: flcmplboot.c (boot-reflash-hack) code started
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 } |
414
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
79 |
415
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
80 static void |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
81 make_s3_record(buf, dest_addr, datalen) |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
82 u_char *buf; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
83 uint32_t dest_addr; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
84 { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
85 int totlen, i; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
86 u_char accum; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
87 |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
88 buf[0] = totlen = datalen + 5; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
89 buf[1] = dest_addr >> 24; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
90 buf[2] = dest_addr >> 16; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
91 buf[3] = dest_addr >> 8; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
92 buf[4] = dest_addr; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
93 accum = 0; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
94 for (i = 0; i < totlen; i++) |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
95 accum += buf[i]; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
96 buf[i] = ~accum; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
97 } |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
98 |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
99 static void |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
100 make_ml_arg(rec, buf) |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
101 u_char *rec; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
102 char *buf; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
103 { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
104 register int i, len; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
105 register char *s; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
106 |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
107 len = rec[0] + 1; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
108 s = buf; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
109 for (i = 0; i < len; i++) { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
110 sprintf(s, "%02X", rec[i]); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
111 s += 2; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
112 } |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
113 *s = '\0'; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
114 } |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
115 |
414
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
116 flashcmd_erase_program_boot(argc, argv) |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
117 char **argv; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
118 { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
119 FILE *binf; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
120 struct stat filestat; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
121 size_t len; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
122 char *strtoul_endp; |
415
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
123 char *targv[5], longarg[513]; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
124 char shortarg1[9], shortarg2[9], shortarg3[9]; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
125 u_char databuf[256]; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
126 int reclen, cc; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
127 uint32_t ramaddr, remlen; |
414
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
128 |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
129 if (!hack_enabled) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
130 fprintf(stderr, |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
131 "Operation not applicable to this target device\n"); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
132 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
133 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
134 if (argc < 3 || argc > 4) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
135 inv: fprintf(stderr, "usage: %s %s binfile [length]\n", |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
136 argv[0], argv[1]); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
137 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
138 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
139 if (flash_get_cfi(0) < 0) |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
140 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
141 if (flash_bank_info[0].geom->regions[0].sector_size |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
142 != boot_sector_size) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
143 fprintf(stderr, |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
144 "error: detected flash boot sector size differs from config\n"); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
145 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
146 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
147 if (flash_bank_info[0].ops != &flash_cmdset_intel) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
148 fprintf(stderr, |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
149 "error: operation implemented for Intel flash only\n"); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
150 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
151 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
152 |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
153 binf = fopen(argv[2], "r"); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
154 if (!binf) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
155 perror(argv[2]); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
156 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
157 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
158 fstat(fileno(binf), &filestat); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
159 if (!S_ISREG(filestat.st_mode)) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
160 fprintf(stderr, "%s is not a regular file\n", argv[2]); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
161 fclose(binf); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
162 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
163 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
164 if (argc > 3) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
165 len = strtoul(argv[3], &strtoul_endp, 16); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
166 if (*strtoul_endp) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
167 fclose(binf); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
168 goto inv; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
169 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
170 if (len > filestat.st_size) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
171 fprintf(stderr, |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
172 "error: specified length exceeds file length\n"); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
173 fclose(binf); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
174 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
175 } |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
176 } else |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
177 len = filestat.st_size; |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
178 if (len > boot_sector_size) { |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
179 fprintf(stderr, "error: length exceeds boot sector size\n"); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
180 fclose(binf); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
181 return(-1); |
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
182 } |
415
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
183 if (len & 1) { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
184 fprintf(stderr, "error: length must be even\n"); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
185 fclose(binf); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
186 return(-1); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
187 } |
414
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
188 |
415
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
189 printf("Loading new boot code into target RAM at %lx\n", |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
190 (u_long) ram_buffer_addr); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
191 targv[0] = "ML"; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
192 targv[1] = longarg; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
193 targv[2] = 0; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
194 ramaddr = ram_buffer_addr; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
195 for (remlen = len; remlen; remlen -= reclen) { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
196 if (remlen >= 250) |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
197 reclen = 250; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
198 else |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
199 reclen = remlen; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
200 cc = fread(databuf + 5, 1, reclen, binf); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
201 if (cc != reclen) { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
202 fclose(binf); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
203 fprintf(stderr, "error reading from %s\n", argv[2]); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
204 return(-1); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
205 } |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
206 make_s3_record(databuf, ramaddr, reclen); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
207 make_ml_arg(databuf, longarg); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
208 tpinterf_make_cmd(targv); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
209 if (tpinterf_send_cmd() < 0) { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
210 fclose(binf); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
211 return(-1); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
212 } |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
213 cc = tpinterf_pass_output(1); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
214 if (cc) { |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
215 fclose(binf); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
216 return(cc); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
217 } |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
218 ramaddr += reclen; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
219 putchar('.'); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
220 fflush(stdout); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
221 } |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
222 putchar('\n'); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
223 fclose(binf); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
224 |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
225 printf("Commanding flash erase+program operation on the target\n"); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
226 sprintf(shortarg1, "%lx", (u_long) ram_buffer_addr); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
227 sprintf(shortarg2, "%lx", (u_long) flash_bank_info[0].base_addr); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
228 sprintf(shortarg3, "%lx", (u_long) len); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
229 targv[0] = "intel-rewrite-sector"; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
230 targv[1] = shortarg1; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
231 targv[2] = shortarg2; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
232 targv[3] = shortarg3; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
233 targv[4] = 0; |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
234 tpinterf_make_cmd(targv); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
235 if (tpinterf_send_cmd() < 0) |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
236 return(-1); |
b2487cfd68fd
fc-loadtool: flash erase-program-boot implementation complete
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
414
diff
changeset
|
237 return tpinterf_pass_output(20); /* 20 s timeout */ |
414
a2df77833c21
fc-loadtool: started implementing flash erase-program-boot command
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
412
diff
changeset
|
238 } |