comparison README @ 31:c7df31a89935

tcs211-l1-reconst README updated
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Fri, 23 Oct 2015 01:26:37 +0000
parents 3f44bb6108b9
children 53d8cb470dc7
comparison
equal deleted inserted replaced
30:2a63c80c59d5 31:c7df31a89935
1 The purpose of this Hg tree (derived from leo2moko-debug) is to facilitate an 1 The purpose of this Hg tree (derived from leo2moko-debug) is to facilitate an
2 attempt at reconstructing an L1 source that would match the binary object 2 attempt at reconstructing an L1 source that would match the binary object
3 version we got with our TCS211 semi-src delivery from Sotovik. 3 version we got with our TCS211 semi-src delivery from Sotovik.
4 4
5 The source tree contained herein does NOT compile all the way into a complete 5 The idea is to deblob TCS211 L1 one module or small group of modules at a time.
6 firmware image, instead the link step currently fails because most L1 modules 6 Take individual C modules from the LoCosto L1 source and get them to compile
7 have been replaced with dummies. The purpose of this tree is not to produce a 7 in the TCS211 environment with TCS211 versions of all include files, producing
8 complete fw image, but to facilitate compilation of individual C modules pulled 8 new from-source objects that would serve as candidate replacements for the ones
9 from the LoCosto L1 source in the TCS211 environment. 9 we got as blobs. An absolutely essential aspect of this approach is
10 incrementality: we should be able to deblob just a few L1 objects (replace them
11 with build-from-source versions) while keeping the original blobs for all other
12 parts of L1 we haven't reached yet, and regression-test at each step to ensure
13 that the firmware still works.
10 14
11 The envisioned mode of usage is as follows: 15 TI's build system for this fw does not provide very fine granularity as far as
16 compiling each individual module from source or taking it as a delivered blob.
17 Instead it operates on the granularity of libs, or sometimes (as in the case of
18 L1) groups of libs. In the case of L1, this tree has the build system set up
19 to rebuild l1_ext.lib and l1_int.lib from source, which necessarily includes
20 _everything_ that goes into these libs. We are nowhere close to having a
21 working reconstructed source for every module in these two libs, thus we have
22 dummies in the place of most of them to appease BuSyB. Therefore, if you
23 simply run ./winebuild.sh to build this fw version, the link step will fail.
24
25 Instead this fw has to be built in a somewhat convoluted way:
26
27 1. Run ./winebuild.sh initially to compile everything leading up to the link
28 step, and let it fail.
29
30 2. Go into g23m/__out__/gsm*/obj/l1_ext, and copy in original blob objects for
31 all those modules which have not been source-reconstructed yet. Do likewise
32 for l1_int.
33
34 3. Run ./winebuild.sh again. As long as the dummy C files have not been
35 touched and the copied-in objects have newer timestamps, the dummies won't
36 be recompiled and the copied-in objects won't get blown away. TI's make
37 will rerun the ar packaging step to produce l1_ext.lib and l1_int.lib from
38 the mix of objects (some compiled from source, others copied-in blobs) in
39 the obj directories, and then the final link should succeed.
40
41 The development process is as follows:
12 42
13 1. Choose an individual L1 C module to work on. 43 1. Choose an individual L1 C module to work on.
14 44
15 2. Copy the source for the chosen module from the LoCosto source in the place 45 2. Copy the source for the chosen module from the LoCosto source in the place
16 of the dummy in this tree. 46 of the dummy in this tree.