FreeCalypso > hg > freecalypso-tools
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) { |