FreeCalypso > hg > freecalypso-sw
annotate doc/Roadmap @ 806:6ce960359fee
aci: phb.c compiles
| author | Space Falcon <falcon@ivan.Harhan.ORG> | 
|---|---|
| date | Sun, 05 Apr 2015 05:50:28 +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. | 
