annotate README @ 239:a2b95b81c81f

l1tm_func.c: reconstruction complete, exact match to TCS211 binary object
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jan 2017 08:44:01 +0000
parents 53d8cb470dc7
children 95f308ba55c7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
1 The purpose of this Hg tree (derived from leo2moko-debug) is to facilitate an
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
2 attempt at reconstructing an L1 source that would match the binary object
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
3 version we got with our TCS211 semi-src delivery from Sotovik.
12
da79bf85bd73 README added
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
4
31
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
5 The idea is to deblob TCS211 L1 one module or small group of modules at a time.
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
6 Take individual C modules from the LoCosto L1 source and get them to compile
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
7 in the TCS211 environment with TCS211 versions of all include files, producing
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
8 new from-source objects that would serve as candidate replacements for the ones
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
9 we got as blobs. An absolutely essential aspect of this approach is
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
10 incrementality: we should be able to deblob just a few L1 objects (replace them
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
11 with build-from-source versions) while keeping the original blobs for all other
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
12 parts of L1 we haven't reached yet, and regression-test at each step to ensure
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
13 that the firmware still works.
18
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
14
31
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
15 TI's build system for this fw does not provide very fine granularity as far as
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
16 compiling each individual module from source or taking it as a delivered blob.
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
17 Instead it operates on the granularity of libs, or sometimes (as in the case of
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
18 L1) groups of libs. In the case of L1, this tree has the build system set up
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
19 to rebuild l1_ext.lib and l1_int.lib from source, which necessarily includes
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
20 _everything_ that goes into these libs. We are nowhere close to having a
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
21 working reconstructed source for every module in these two libs, thus we have
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
22 dummies in the place of most of them to appease BuSyB. Therefore, if you
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
23 simply run ./winebuild.sh to build this fw version, the link step will fail.
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
24
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
25 Instead this fw has to be built in a somewhat convoluted way:
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
26
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
27 1. Run ./winebuild.sh initially to compile everything leading up to the link
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
28 step, and let it fail.
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
29
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
30 2. Go into g23m/__out__/gsm*/obj/l1_ext, and copy in original blob objects for
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
31 all those modules which have not been source-reconstructed yet. Do likewise
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
32 for l1_int.
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
33
119
53d8cb470dc7 top README update
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 31
diff changeset
34 [Update: the copyblobs.sh script does this job now.]
53d8cb470dc7 top README update
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 31
diff changeset
35
31
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
36 3. Run ./winebuild.sh again. As long as the dummy C files have not been
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
37 touched and the copied-in objects have newer timestamps, the dummies won't
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
38 be recompiled and the copied-in objects won't get blown away. TI's make
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
39 will rerun the ar packaging step to produce l1_ext.lib and l1_int.lib from
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
40 the mix of objects (some compiled from source, others copied-in blobs) in
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
41 the obj directories, and then the final link should succeed.
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
42
c7df31a89935 tcs211-l1-reconst README updated
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 18
diff changeset
43 The development process is as follows:
12
da79bf85bd73 README added
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
44
18
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
45 1. Choose an individual L1 C module to work on.
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
46
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
47 2. Copy the source for the chosen module from the LoCosto source in the place
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
48 of the dummy in this tree.
12
da79bf85bd73 README added
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff changeset
49
18
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
50 3. Run ./winebuild.sh in the g23m directory and examine the output in
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
51 report.txt. If the imported C module fails to compile, massage it until it
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
52 passes compilation.
13
3e89489a43b3 using patched version of frame_na7_db_ir.lib:
Space Falcon <falcon@ivan.Harhan.ORG>
parents: 12
diff changeset
53
18
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
54 4. Once compilation passes, look at the generated COFF object in
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
55 g23m/__out__/gsm*/obj/l1_{ext,int}. Disassemble it with the tiobjd tool
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
56 from freecalypso-reveng, and compare against the disassembly of the
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
57 original ("official") binary blob version we got. Massage the reconstructed
3f44bb6108b9 README written for tcs211-l1-reconst
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 13
diff changeset
58 source until it compiles into object code that matches the original.
119
53d8cb470dc7 top README update
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 31
diff changeset
59
53d8cb470dc7 top README update
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 31
diff changeset
60 [Update: use the scripts under g23m/objdiff to facilitate the disassembly
53d8cb470dc7 top README update
Mychaela Falconia <falcon@ivan.Harhan.ORG>
parents: 31
diff changeset
61 and diffing.]