FreeCalypso > hg > freecalypso-sw
annotate loadtools/flprogsrec.c @ 341:fcbdb2ae1a47
OSL: os_CreateTask() done
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Sat, 03 May 2014 12:24:56 +0000 | 
| parents | cd12d1049f91 | 
| children | f027c6fbe37e | 
| rev | line source | 
|---|---|
| 
99
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
2 * In this module we are going to implement the flash program-srec and | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
3 * flash program-m0 commands: programming flash using S-record files | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
4 * as the data source. | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
5 */ | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
6 | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
7 #include <sys/types.h> | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
8 #include <stdio.h> | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
9 #include <stdint.h> | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
10 #include <stdlib.h> | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
11 #include "flash.h" | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
12 #include "srecreader.h" | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
13 | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
14 extern struct flash_bank_info flash_bank_info[2]; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
15 | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
16 flashcmd_progsrec_gen(bank, imgfile, is_m0) | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
17 char *imgfile; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
18 { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
19 struct flash_bank_info *bi; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
20 struct srecreader srr; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
21 char *targv[4], shortarg[10], longarg[513]; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
22 int resp; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
23 unsigned long rec_count; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
24 | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
25 srr.filename = imgfile; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
26 resp = open_srec_file(&srr); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
27 if (resp < 0) | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
28 return(resp); | 
| 
205
 
cd12d1049f91
fc-loadtool: flash ID check moved into flash info, added to erase and program
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
106 
diff
changeset
 | 
29 resp = flash_id_check(bank, 0); | 
| 
 
cd12d1049f91
fc-loadtool: flash ID check moved into flash info, added to erase and program
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
106 
diff
changeset
 | 
30 if (resp) { | 
| 
 
cd12d1049f91
fc-loadtool: flash ID check moved into flash info, added to erase and program
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
106 
diff
changeset
 | 
31 fclose(srr.openfile); | 
| 
 
cd12d1049f91
fc-loadtool: flash ID check moved into flash info, added to erase and program
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
106 
diff
changeset
 | 
32 return(resp); | 
| 
 
cd12d1049f91
fc-loadtool: flash ID check moved into flash info, added to erase and program
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
106 
diff
changeset
 | 
33 } | 
| 
99
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
34 bi = flash_bank_info + bank; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
35 sprintf(shortarg, "%lx", (u_long) bi->base_addr); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
36 targv[0] = "AMFB"; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
37 targv[1] = shortarg; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
38 targv[2] = 0; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
39 printf("Setting flash base address: %s %s\n", targv[0], targv[1]); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
40 tpinterf_make_cmd(targv); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
41 if (tpinterf_send_cmd() < 0) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
42 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
43 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
44 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
45 resp = tpinterf_pass_output(1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
46 if (resp) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
47 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
48 return(resp); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
49 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
50 targv[0] = "AMFW"; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
51 targv[1] = shortarg; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
52 targv[2] = longarg; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
53 targv[3] = 0; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
54 for (rec_count = 0; ; ) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
55 if (read_s_record(&srr) < 0) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
56 /* error msg already printed */ | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
57 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
58 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
59 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
60 if (srr.record_type == '0') { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
61 if (srr.lineno == 1) | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
62 continue; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
63 fprintf(stderr, | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
64 "Warning: S0 record found in line %d of %s (expected in line 1 only)\n", | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
65 srr.lineno, srr.filename); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
66 continue; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
67 } else if (srr.record_type == '7') | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
68 break; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
69 else if (srr.record_type != '3') { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
70 fprintf(stderr, | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
71 "Warning: unsupported S%c record type in line %d of %s\n", | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
72 srr.record_type, srr.lineno, srr.filename); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
73 continue; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
74 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
75 /* must be S3 */ | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
76 if (s3s7_get_addr_data(&srr) < 0) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
77 /* error msg already printed */ | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
78 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
79 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
80 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
81 if (srr.datalen < 1) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
82 fprintf(stderr, | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
83 "%s line %d: S3 record of zero data length ignored\n", | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
84 srr.filename, srr.lineno); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
85 continue; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
86 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
87 if (srr.addr & 1 || srr.datalen & 1) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
88 fprintf(stderr, | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
89 "%s line %d: violates word alignment requirement\n", | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
90 srr.filename, srr.lineno); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
91 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
92 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
93 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
94 srr.addr &= bi->total_size - 1; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
95 if (srr.addr + srr.datalen > bi->total_size) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
96 fprintf(stderr, | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
97 "%s line %d: goes past the end of the flash bank\n", | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
98 srr.filename, srr.lineno); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
99 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
100 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
101 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
102 if (!rec_count) | 
| 
106
 
ae4921a3aa33
fc-loadtool program-{m0,srec}: more usable progress indication
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
99 
diff
changeset
 | 
103 printf("Programming flash, each \'.\' is 100 S-records\n"); | 
| 
99
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
104 sprintf(shortarg, "%lx", (u_long) srr.addr); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
105 build_flashw_hex_string(srr.record + 5, longarg, | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
106 srr.datalen >> 1, is_m0); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
107 tpinterf_make_cmd(targv); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
108 if (tpinterf_send_cmd() < 0) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
109 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
110 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
111 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
112 resp = tpinterf_pass_output(8); /* 8 s timeout */ | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
113 if (resp) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
114 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
115 return(resp); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
116 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
117 rec_count++; | 
| 
106
 
ae4921a3aa33
fc-loadtool program-{m0,srec}: more usable progress indication
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
99 
diff
changeset
 | 
118 if (rec_count % 100 == 0) { | 
| 
 
ae4921a3aa33
fc-loadtool program-{m0,srec}: more usable progress indication
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
99 
diff
changeset
 | 
119 putchar('.'); | 
| 
 
ae4921a3aa33
fc-loadtool program-{m0,srec}: more usable progress indication
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
99 
diff
changeset
 | 
120 fflush(stdout); | 
| 
 
ae4921a3aa33
fc-loadtool program-{m0,srec}: more usable progress indication
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents: 
99 
diff
changeset
 | 
121 } | 
| 
99
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
122 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
123 /* got S7 */ | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
124 fclose(srr.openfile); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
125 if (!rec_count) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
126 fprintf(stderr, | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
127 "%s line %d: S7 without any preceding S3 data records\n", | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
128 srr.filename, srr.lineno); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
129 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
130 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
131 printf("\nProgramming complete\n"); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
132 return(0); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
133 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
134 | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
135 flashcmd_program_srec(argc, argv, bank) | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
136 char **argv; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
137 { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
138 if (argc != 3) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
139 fprintf(stderr, "usage: %s %s image.srec\n", argv[0], argv[1]); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
140 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
141 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
142 return flashcmd_progsrec_gen(bank, argv[2], 0); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
143 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
144 | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
145 flashcmd_program_m0(argc, argv, bank) | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
146 char **argv; | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
147 { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
148 if (argc != 3) { | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
149 fprintf(stderr, "usage: %s %s image.m0\n", argv[0], argv[1]); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
150 return(-1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
151 } | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
152 return flashcmd_progsrec_gen(bank, argv[2], 1); | 
| 
 
b78db17bfc85
fc-loadtool: flash program-{m0,srec} implemented
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
153 } | 
