annotate doc/Loadtools-performance @ 1011:6d9b10633f10 default tip

etmsync Pirelli IMEI retrieval: fix poor use of printf() Bug reported by Vadim Yanitskiy <fixeria@osmocom.org>: the construct where a static-allocated string was passed to printf() without any format arguments causes newer compilers to report a security problem. Given that formatted output is not needed here, just fixed string output, change printf() to fputs(), and direct the error message to stderr while at it.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 23 May 2024 17:29:57 +0000
parents 4a1f0bbca58e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
1 Memory dump performance
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
2 =======================
630
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
3
611
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 Here are the expected run times for the flash dump2bin operation of dumping the
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
5 entire flash content of a Calypso GSM device with the current version of
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
6 fc-loadtool which uses the new binary transfer protocol:
611
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 Dump of 4 MiB flash (e.g., Openmoko GTA01/02 or Mot C139/140) at 115200 baud:
693
4a1f0bbca58e doc/Loadtools-performance: two digits for seconds
Mychaela Falconia <falcon@freecalypso.org>
parents: 681
diff changeset
9 6m04s
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
10
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
11 The same 4 MiB flash dump at 812500 baud: 0m52s
611
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
13 Dump of 8 MiB flash (e.g., Mot C155/156) at 812500 baud: 1m44s
611
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
15 These times are a 2x improvement compared to all previous versions of
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
16 fc-loadtool (prior to fc-host-tools-r13) which used a hex-based transfer
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
17 protocol.
611
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 Because of the architecture of fc-loadtool and its loadagent back-end, the run
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 time of a flash dump operation depends only on the serial baud rate and the
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 size of the flash area to be dumped; it should not depend on the USB-serial
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 adapter type or any host system properties, as long as the host system and
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 serial adapter combination supports the desired baud rate. In contrast, flash
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 programming and fc-xram loading operations are quite different in that their
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 run times do depend on the host system and USB-serial adapter or other serial
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 port hardware - this host system dependency exists because of the way these
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 operations are implemented in our architecture.
c847d742ab38 doc/Loadtools-performance: article started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
29 Flash programming operations
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
30 ============================
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
31
615
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
32 Here are some examples of expected flash programming times, all obtained on the
630
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
33 Mother's Slackware 14.2 host system:
615
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
34
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
35 Flashing an Openmoko GTA02 modem (K5A3281CTM flash chip) with a new firmware
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
36 image (2376448 bytes), using a PL2303 USB-serial cable at 115200 baud: 0m19s to
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
37 erase 37 sectors, 3m45s to program the image.
615
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
38
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
39 Flashing the same OM GTA02 modem with the same fw image, using a CP2102
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
40 USB-serial cable at 812500 baud: 0m19s to erase, 0m51s to program.
615
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
41
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
42 Flashing a Magnetite hybrid fw image (2378084 bytes) into an FCDEV3B board
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
43 (S71PL129N flash chip) via an FT2232D adapter at 812500 baud: 0m24s to erase
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
44 13 sectors (4 small and 9 large), 1m27s to program the image.
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
45
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
46 Regardless of whether you execute these two steps separately or use one of our
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
47 new flash e-program-{bin,m0,srec} commands, flash programming is always done in
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
48 two steps: first the erase operation covering the needed range of sectors, then
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
49 the actual programming operation that includes the data transfer.
615
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
50
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
51 Flash erase times are determined entirely by physical processes inside the
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
52 flash chip and thus should not be affected by software design or the serial
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
53 link: for each sector to be erased, fc-loadtool issues the sector erase command
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
54 to the flash chip and then polls the chip for operation completion status; the
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
55 polling is done over the serial link and thus may seem very slow, but the extra
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
56 bit of latency added by the finite polling speed is still negligible (at least
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
57 on the Mother's Slackware system) compared to the time of the actual sector
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
58 erase operation inside the flash chip. One remaining flaw is that in our
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
59 current implementation the issuance of each individual sector erase command to
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
60 the flash chip takes 6 command-response exchanges between fc-loadtool and
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
61 loadagent; on my Slackware host system this extra overhead is still negligible
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
62 compared to the 0.5s or more for the actual erase operation time, but this
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
63 overhead may become more significant on host systems with higher latency.
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
64
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
65 After the erase operation, the execution time of the main flash programming
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
66 operation is a sum of 3 components:
613
ab4021fb1c66 doc/Loadtools-performance: flash programming added
Mychaela Falconia <falcon@freecalypso.org>
parents: 611
diff changeset
67
ab4021fb1c66 doc/Loadtools-performance: flash programming added
Mychaela Falconia <falcon@freecalypso.org>
parents: 611
diff changeset
68 * The time it takes for the bits to be transferred over the serial link;
ab4021fb1c66 doc/Loadtools-performance: flash programming added
Mychaela Falconia <falcon@freecalypso.org>
parents: 611
diff changeset
69 * The time it takes for the flash programming operation to complete on the
ab4021fb1c66 doc/Loadtools-performance: flash programming added
Mychaela Falconia <falcon@freecalypso.org>
parents: 611
diff changeset
70 target (physics inside the flash chip);
ab4021fb1c66 doc/Loadtools-performance: flash programming added
Mychaela Falconia <falcon@freecalypso.org>
parents: 611
diff changeset
71 * The overhead of command-response exchanges between fc-loadtool and loadagent.
ab4021fb1c66 doc/Loadtools-performance: flash programming added
Mychaela Falconia <falcon@freecalypso.org>
parents: 611
diff changeset
72
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
73 Because image data transfer is taking place in this step, flash programming at
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
74 812500 baud is faster than 115200 baud, although it is not the same 7x
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
75 improvement as happens with flash dumps. The present version of fc-loadtool
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
76 also uses a new binary transfer protocol instead of the hex-based one used in
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
77 previous versions (prior to fc-host-tools-r13); this change produces a 2x
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
78 improvement for OM GTA02 flashing, but only a smaller improvement for FCDEV3B
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
79 flashing.
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
80
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
81 Notice the difference in flash programming times between GTA02 and FCDEV3B: the
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
82 fw image size is almost exactly the same, any difference in latency between
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
83 CP2102 and FT2232D is less likely to produce such significant time difference
680
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
84 given our current 2048 byte transfer block size (in fact fc-xram transfer times
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
85 suggest that FT2232D is faster), thus the difference in physical flash program
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
86 operation times between K5A3281CTM and S71PL129N flash chips seems to be the
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
87 most likely explanation.
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
88
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
89 It also needs to be noted that in the current version of fc-loadtool there is
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
90 no difference in performance between flash program-bin, program-m0 and
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
91 program-srec operations: they all use the same binary protocol with 2048 byte
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
92 transfer block size. There is no coupling between source S-records and flash
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
93 programming operation blocks (2048-byte units) in the case of flash program-m0
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
94 and program-srec: the new implementation of these commands prereads the entire
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
95 S-record image as a separate preparatory step on the host side, the bits to be
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
96 programmed are saved in a temporary binary file (automatically deleted
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
97 afterward), and the actual flash programming operation proceeds from this
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
98 internal binary source - but it knows about any discontiguous program regions
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
99 and skips the gaps properly.
671
e66fafeeb377 doc/Loadtools-performance: new faster flash operations
Mychaela Falconia <falcon@freecalypso.org>
parents: 630
diff changeset
100
630
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
101 XRAM loading via fc-xram
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
102 ========================
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
103
680
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
104 The new version of fc-xram as of fc-host-tools-r13 is dramatically faster than
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
105 the original implementation from 2013, using a new binary transfer protocol.
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
106 The speed increase comes from not only switching from hex to binary, but even
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
107 more so from eliminating the command-response turnaround time on every S3
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
108 record. The new XRAM loading times obtained on the Mother's Slackware 14.2
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
109 host system are:
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
110
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
111 Pirelli DP-L10 with built-in CP2102 USB-serial chip, 812500 baud, loading
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
112 hybrid-vpm fw build, 49969 S3 records: 0m27s
615
39b74c39d914 doc/Loadtools-performance: complete for now
Mychaela Falconia <falcon@freecalypso.org>
parents: 613
diff changeset
113
680
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
114 FCDEV3B interfaced via FT2232D adapter, 812500 baud, loading hybrid fw build,
681
0815661d6e3e doc/Loadtools-performance: typo fix
Mychaela Falconia <falcon@freecalypso.org>
parents: 680
diff changeset
115 78875 S3 records: 0m35s
680
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
116
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
117 With the previous version of fc-xram these two loads took 1m40s and 2m54s,
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
118 respectively. With the current version of loadtools XRAM loading is faster
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
119 than flash programming for the same fw image as one would naturally expect (the
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
120 flash programming step on the target is replaced with a simple memcpy()
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
121 operation), but in the previous version XRAM loading was slower because of
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
122 massive command-response exchange overhead: there was a command-response
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
123 turnaround time incurred for every S3 record, typically carrying only 30 bytes
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
124 of payload.
630
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
125
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
126 Additional complication with FTDI adapters and newer Linux kernel versions
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
127 ==========================================================================
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
128
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
129 If you are using an FTDI adapter and a Linux kernel version newer than early
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
130 2017 (the change was introduced between 4.10 and 4.11), then you have one
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
131 additional complication: a change was made to the ftdi_sio driver in the Linux
680
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
132 kernel that made many loadtools operations (basically everything other than
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
133 flash dumps which are entirely target-driven) unbearably slow, at least with
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
134 previous versions of loadtools that made many more command-response exchanges
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
135 with loadagent for smaller transfer units and thus were much more sensitive to
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
136 host system latency on these exchanges. We do not yet know if this FTDI
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
137 latency timer issue still has a significant negative impact or not with current
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
138 loadtools, but if it does, the solution is to run a special setserial command.
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
139 After you plug in your FTDI-based USB-serial cable or connect the USB cable
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
140 between your PC or laptop and your FTDI adapter board, causing the
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
141 corresponding ttyUSBx device to appear, execute the following command:
630
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
142
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
143 setserial /dev/ttyUSBx low_latency
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
144
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
145 (Obviously change ttyUSBx to your actual ttyUSB number.) Execute this
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
146 setserial command before running fc-loadtool or fc-xram, and then hopefully you
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
147 should get performance that is comparable to what I get on classic Slackware.
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
148 I say "hopefully" because I am not able to test it myself - I refuse to run any
8c6e7b7e701c doc/Loadtools-performance: updates for new program-m0 and setserial
Mychaela Falconia <falcon@freecalypso.org>
parents: 618
diff changeset
149 OS that can be categorized as "modern" - but field reports of performance on
680
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
150 non-Slackware systems running newer Linux kernels (4.11 or later) are welcome,
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
151 both with and without the low_latency setting. Please be sure to include your
89ed8b374bc0 doc/Loadtools-performance: finished updates for fc-host-tools-r13
Mychaela Falconia <falcon@freecalypso.org>
parents: 678
diff changeset
152 Linux kernel version and your USB-serial adapter type in your report!