comparison loadtools/chainload.c @ 614:02bdb2f366bc

fc-xram: added transfer time reporting
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 24 Feb 2020 23:07:03 +0000
parents dc05170ab113
children bf840c984113
comparison
equal deleted inserted replaced
613:ab4021fb1c66 614:02bdb2f366bc
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <stdlib.h> 8 #include <stdlib.h>
9 #include <string.h> 9 #include <string.h>
10 #include <strings.h> 10 #include <strings.h>
11 #include <time.h>
11 #include "srecreader.h" 12 #include "srecreader.h"
12 13
13 struct srecreader xramimage; 14 struct srecreader xramimage;
14 15
15 extern struct baudrate *current_baud_rate; 16 extern struct baudrate *current_baud_rate;
36 perform_chain_load() 37 perform_chain_load()
37 { 38 {
38 int resp; 39 int resp;
39 unsigned long rec_count; 40 unsigned long rec_count;
40 char *argv[3], srecarg[516]; 41 char *argv[3], srecarg[516];
42 time_t start_time, finish_time;
43 unsigned duration, mm, ss;
41 44
42 if (open_srec_file(&xramimage) < 0) 45 if (open_srec_file(&xramimage) < 0)
43 exit(1); 46 exit(1);
44 argv[0] = "ML"; 47 argv[0] = "ML";
45 argv[1] = srecarg; 48 argv[1] = srecarg;
65 "%s line %d: S%c record type not supported\n", 68 "%s line %d: S%c record type not supported\n",
66 xramimage.filename, xramimage.lineno, 69 xramimage.filename, xramimage.lineno,
67 xramimage.record_type); 70 xramimage.record_type);
68 exit(1); 71 exit(1);
69 } 72 }
70 if (xramimage.record_type == '7') 73 if (xramimage.record_type == '7') {
74 time(&finish_time);
71 break; 75 break;
76 }
72 /* must be S3 */ 77 /* must be S3 */
73 if (xramimage.datalen < 1) { 78 if (xramimage.datalen < 1) {
74 fprintf(stderr, 79 fprintf(stderr,
75 "%s line %d: S3 record has zero data length\n", 80 "%s line %d: S3 record has zero data length\n",
76 xramimage.filename, xramimage.lineno); 81 xramimage.filename, xramimage.lineno);
77 exit(1); 82 exit(1);
78 } 83 }
79 if (!rec_count) 84 if (!rec_count) {
80 printf("Each \'.\' is 100 S-records\n"); 85 printf("Each \'.\' is 100 S-records\n");
86 time(&start_time);
87 }
81 make_ml_arg(xramimage.record, srecarg); 88 make_ml_arg(xramimage.record, srecarg);
82 tpinterf_make_cmd(argv); 89 tpinterf_make_cmd(argv);
83 if (tpinterf_send_cmd()) 90 if (tpinterf_send_cmd())
84 exit(1); 91 exit(1);
85 if (tpinterf_pass_output(1)) 92 if (tpinterf_pass_output(1))
97 "%s line %d: S7 without any preceding S3 data records\n", 104 "%s line %d: S7 without any preceding S3 data records\n",
98 xramimage.filename, xramimage.lineno); 105 xramimage.filename, xramimage.lineno);
99 exit(1); 106 exit(1);
100 } 107 }
101 putchar('\n'); /* newline after the dots */ 108 putchar('\n'); /* newline after the dots */
109 duration = finish_time - start_time;
110 mm = duration / 60;
111 ss = duration - mm * 60;
112 printf("XRAM image transferred in %um%us\n", mm, ss);
102 if (xram_run_baudrate != current_baud_rate) { 113 if (xram_run_baudrate != current_baud_rate) {
103 resp = loadagent_switch_baud(xram_run_baudrate); 114 resp = loadagent_switch_baud(xram_run_baudrate);
104 if (resp) 115 if (resp)
105 exit(1); 116 exit(1);
106 } 117 }