FreeCalypso > hg > freecalypso-sw
annotate doc/Roadmap @ 584:d42078e35ac9
tpudrv12.c compiles!
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
|---|---|
| date | Fri, 15 Aug 2014 21:57:14 +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. |
