comparison loadtools/ltdump.c @ 610:98474043ecdd

fc-loadtool dump2file operations: added Rx time reporting
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 24 Feb 2020 19:32:43 +0000
parents e7502631a0f9
children 5385aca4d813
comparison
equal deleted inserted replaced
609:ffd606adb039 610:98474043ecdd
70 static FILE *dump_outfile; 70 static FILE *dump_outfile;
71 static int dump_save_srec; 71 static int dump_save_srec;
72 static uint32_t dump_nextaddr, dump_crcaccum; 72 static uint32_t dump_nextaddr, dump_crcaccum;
73 static uint32_t dump_total_len, dump_progress_len; 73 static uint32_t dump_total_len, dump_progress_len;
74 static u_char dump_binrec[0x86]; 74 static u_char dump_binrec[0x86];
75 static time_t dump_last_time; 75 static time_t dump_initial_time, dump_last_time;
76 76
77 static char dumpsrec_s0_line[] = "S007000044554D50C2\n"; 77 static char dumpsrec_s0_line[] = "S007000044554D50C2\n";
78 static char dumpsrec_s7_line[] = "S70500000000FA\n"; 78 static char dumpsrec_s7_line[] = "S70500000000FA\n";
79 79
80 static 80 static
147 u_long start_addr, area_len; 147 u_long start_addr, area_len;
148 char *filename; 148 char *filename;
149 { 149 {
150 u_long target_crc_init, target_crc_fin; 150 u_long target_crc_init, target_crc_fin;
151 char *target_argv[4], target_arg1[10], target_arg2[10]; 151 char *target_argv[4], target_arg1[10], target_arg2[10];
152 unsigned duration, mm, ss;
152 int stat; 153 int stat;
153 154
155 if (!area_len) {
156 fprintf(stderr,
157 "error: dump of zero length is not supported\n");
158 return(-1);
159 }
154 if (start_addr & 0x7F || area_len & 0x7F) { 160 if (start_addr & 0x7F || area_len & 0x7F) {
155 fprintf(stderr, 161 fprintf(stderr,
156 "error: implementation limit: 128-byte alignment required\n"); 162 "error: implementation limit: 128-byte alignment required\n");
157 return(-1); 163 return(-1);
158 } 164 }
171 dump_crcaccum = 0xFFFFFFFF; 177 dump_crcaccum = 0xFFFFFFFF;
172 dump_total_len = area_len; 178 dump_total_len = area_len;
173 dump_progress_len = 0; 179 dump_progress_len = 0;
174 180
175 printf("Requesting memory dump...\n"); 181 printf("Requesting memory dump...\n");
182 time(&dump_initial_time);
176 sprintf(target_arg1, "%lx", start_addr); 183 sprintf(target_arg1, "%lx", start_addr);
177 sprintf(target_arg2, "%lx", area_len); 184 sprintf(target_arg2, "%lx", area_len);
178 target_argv[0] = "DUMP"; 185 target_argv[0] = "DUMP";
179 target_argv[1] = target_arg1; 186 target_argv[1] = target_arg1;
180 target_argv[2] = target_arg2; 187 target_argv[2] = target_arg2;
206 return(-1); 213 return(-1);
207 } 214 }
208 if (fmt_srec) 215 if (fmt_srec)
209 fputs(dumpsrec_s7_line, dump_outfile); 216 fputs(dumpsrec_s7_line, dump_outfile);
210 fclose(dump_outfile); 217 fclose(dump_outfile);
218 duration = dump_last_time - dump_initial_time;
219 mm = duration / 60;
220 ss = duration - mm * 60;
221 printf("Dump stream received in %um%us\n", mm, ss);
222
211 printf("Requesting another CRC-32 of the area from target...\n"); 223 printf("Requesting another CRC-32 of the area from target...\n");
212 stat = crc32_on_target(start_addr, area_len, &target_crc_fin); 224 stat = crc32_on_target(start_addr, area_len, &target_crc_fin);
213 if (stat) 225 if (stat)
214 return(stat); 226 return(stat);
215 if (target_crc_fin == target_crc_init) { 227 if (target_crc_fin == target_crc_init) {