FreeCalypso > hg > freecalypso-sw
annotate doc/Roadmap @ 923:10b4bed10192
gsm-fw/L1: fix for the DSP patch corruption bug
The L1 code we got from the LoCosto fw contains a feature for DSP CPU load
measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier
DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the
code dealing with that feature is conditionalized as #if (DSP >= 38),
but one spot was missed, and the MCU code was writing into an API word
dealing with this feature. In TCS211 this DSP API word happens to be
used by the DSP code patch, hence that write was corrupting the patched
DSP code.
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 19 Oct 2015 17:13:56 +0000 |
parents | 6500e1817d9b |
children |
rev | line source |
---|---|
462
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 The ultimate goal of the FreeCalypso project is to produce a GSM firmware |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 version that: |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 a) runs on the Calypso targets of interest to us: not only the FIC/Openmoko |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 GTA0x GSM modem, but also some complete dumbphones like Mot C139 and/or |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 Pirelli DP-L10; |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 b) operates each target device it runs on in a way that is practically usable: |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 to me (lead developer Space Falcon) practical usability means providing a |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 standard AT command interface on modems like GTA0x and operating as a self- |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 contained standard cellphone with a UI on complete "dumbphone" targets; |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 c) is rebuildable from source in a way that would allow us to exercise the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 traditional Four Freedoms of free software as defined by the FSF. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 Our starting point is TI's Leonardo reference firmware version from Sotovik, a |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 mixture of source and linkable binary object modules. It can be built into a |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 complete and functional firmware image with TI's TMS470 compiler+linker+etc |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 toolchain, and can run on two hardware targets: |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 a) TI's Leonardo development board for the Calypso/Iota/Rita chipset - |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 legendary unobtainium hardware; |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 b) FIC/Openmoko GTA0x GSM modem - while this device is *not* what I wish to use |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 with the "end user" hat on, it is an available and working hw platform for |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 development. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 This Leonardo starting point does kinda-sorta satisfy the "rebuildable from |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 source" requirement, as I was able to port it from the Leonardo board to the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 GTA0x modem, but it is still quite far from what the FreeCalypso project |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 ultimately seeks to achieve. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 What I, the lead developer, ultimately seek is not an AT-controlled modem |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 embedded in a "Linux" smartphone, but a complete and standalone "dumbphone", |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 with the UI driven by the Calypso. Transforming our starting and working |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 reference version from something that runs on the GTA0x modem and presents an |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 AT command interface into something that can run on a complete "dumbphone" and |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 present a self-contained UI can be done in several possible ways: |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 1. One could proceed further with the same approach that was used to produce |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 leo2moko: keep making small incremental changes to the Leonardo semi-src, |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 while keeping most of the binary object blobs intact at least initially, and |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 sticking with the original proprietary TMS470 compiler toolchain (running |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 under wine, as it's a bunch of M$ Windows binaries) throughout the journey. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 Advantage: no massive "forklift" step required at the very beginning of the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 journey, one can do small incremental steps instead. One possible roadmap |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 with this approach might be (just thinking out loud here) to start with |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 finding a way to redirect the AT command channel to something wrapped inside |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 RVTMUX, then port the fw to run on a target like Pirelli DP-L10, still |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 controlled via AT commands but passed via RVTMUX, and then try to add the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 "dumbphone" UI layers. Some of the binary object blobs would certainly need |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 to be "cracked" and modified in this process, most sensibly by replacing |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 each blob in need of modification with a reconstructed source piece, but |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 this work would be done incrementally, rather than in a massive "forklift" |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 step upfront. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 Disadvantage: this approach requires sticking with the original proprietary |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 compiler toolchain throughout at least most of the journey, which means |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 keeping the Weendoze poison that toolchain comes with. This aspect was |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 enough to turn me personally away from this approach. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 2. One could move away from the proprietary compiler toolchain and replace it |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 with gcc, while still retaining those parts of the Leonardo firmware for |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 which we only have linkable binary objects but no C source, by teaching the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 GNU toolchain (gcc+binutils) to emulate the TMS470 compiler's ABI: COFF |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 objects, a very different way of doing ARM/Thumb interworking, and a host of |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 other differences from how the GNU toolchain for ARM normally does things. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 (I've done similar work on GCC and GNU Binutils in the past; let us not |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 forget that GNU started out by emulating various inter-component interfaces, |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 including ABIs, of various proprietary Unix versions.) |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 The advantage of this approach should be obvious. While in the long run we |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 would certainly like to get rid of all binary object blobs and replace them |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 with reconstructed source pieces, life would be much easier if we could do |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 this work incrementally, one blob at a time in a regression-tested working |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 fw version, rather than all upfront. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
79 Disadvantage: teaching gcc and binutils to emulate TI's TMS470 ABI well |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 enough to where one could compile some sources with gcc, link the resulting |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 .o's with TI's blobs and get a working fw image at the end would be no easy |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 matter. In fact, it would be a massive amount of work, and considering that |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 this work would serve absolutely no purpose but to allow linking with some |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 proprietary binary blobs, finding the justification for the effort would be |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 difficult. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 3. The approach I am currently following is the most ambitious one: start by |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 deblobbing the firmware, i.e., replacing all binary object blobs with |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 reconstructed source pieces, and then simply compile the all-C source with |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 the GNU toolchain for ARM7 in its default ABI. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
92 Advantage: having the firmware in the form of full C source that builds with |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
93 a free compiler (a compiler that is itself bona fide Free Software) is |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
94 obviously the ultimate best. No blobs means no need to waste creative energy |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
95 on emulating proprietary compiler ABIs. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
96 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
97 Disadvantage: all the hardest work is upfront, and needs to be done in a |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
98 "forklift" manner. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
99 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
100 It should be obvious that incrementality, or division into manageable, bite- |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
101 sized pieces, is an essential requirement for successful execution of any large |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
102 scale project, and FreeCalypso is no different. Because our chosen approach |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
103 unfortunately does not allow us to make small incremental modifications to a |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
104 fully functional fw version, I currently achieve the needed incrementality in a |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
105 different way: by starting out with a firmware "skeleton" that compiles into an |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
106 image and runs on the hardware, but does nothing useful yet, and then slowly |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
107 adding chunks of "meat" to this skeleton in incremental steps aiming in the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
108 direction of the complete & working fw version that is our reference. As I add |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
109 each "chunk of meat" to our gcc-built gsm-fw, I test it on the hardware and |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
110 compare its operation against the leo2moko reference version - that is our form |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
111 of pseudo-regression testing. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
112 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
113 Where the missing source bits come from |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
114 ======================================= |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
115 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
116 How can we replace a binary object blob with a corresponding source piece if we |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
117 lack the original source? In two ways: |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
118 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
119 1. In many cases we can lift the corresponding source piece from another TI |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
120 source leak, e.g., the LoCosto one. Calypso and LoCosto chipsets are |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
121 different, so code specific to LoCosto hardware won't run on Calypso targets, |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
122 but much of the code is chipset-independent. The LoCosto source leak is |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
123 important because it contains real C source for many of the chipset- |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
124 independent components for which our Leonardo reference version has only |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
125 binary blobs. |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
126 |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
127 2. When no original or suitable substitute source can be found anywhere, we |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
128 have to bite the bullet, pass the blob through a suitable disassembler (I |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
129 wrote one that is specifically taylored for reversing code built with the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
130 TMS470 compiler), and then write a piece of new C code that replicates the |
6500e1817d9b
doc/Roadmap: written
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
131 logic found in the disassembled blob. |