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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }