336
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 TI's TCS211 firmware and its predecessors contain a flash-resident bootloader
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 stage which we call FRBL. This FRBL implements not one but two different
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 protocols for interrupting the normal fw boot process, downloading a code image
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 into RAM and jumping to it; we call these two protocols FRBL1 and FRBL2. The
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 reasons for this oddity are historical: the original FRBL (TI GSM bootloader or
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 TI GSM monitor or whatever it was called officially) consisted of cmdboot.c,
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 command.c, convert.c, optboot.c, serial.c and start.c source modules and
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 implemented the protocol we call FRBL1, then came MMJ and other TIDK people
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 with their new FLUID idea, they decided on a different protocol which we call
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 FRBL2, and they jerry-rigged their new FLUID bootloader into the firmware's
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 FRBL code.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 The original source for FRBL1 C modules appears to have been lost (it is not
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 present in what we presume to be the world's last surviving copy of TCS211 from
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 OM), all we have are COFF objects from TI-OM's 20070608 build. The reconst
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 subdirectory contains our reconstruction attempt; this reconstruction is of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 poor quality because these particular COFF objects have only minimal symbolic
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 information required for linking, as opposed to the much richer -g kind we got
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 for L1 and GPF.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 The test subdirectory is intended to contain our frbl1test and frbl2test
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 programs; only frbl2test has been written so far.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 Aside from implementing two different serial protocols, TI's FRBL as featured
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 in their Calypso firmwares has one other major quirk: both FRBL1 and FRBL2 were
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 implemented on 13 MHz platforms (the original purpose was to facilitate fw
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 loading on TI's earlier DBB chips before Calypso that didn't have the boot ROM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 which we are so used to), on TI's D-Sample board (Calypso chip, 13 MHz CLKTCXO
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 input) both the old way (fluid -oO via FRBL or via JTAG) and the new way
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 (fluid -oo via the boot ROM) work well, but FRBL was never updated for 26 MHz
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 platforms, thus on all practical Calypso platforms (Leonardo derivatives) one
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 must use the boot ROM, not FRBL.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 TI's TCS211 builds for Leonardo and all vendor firmwares (Openmoko etc) derived
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 from this reference do include FRBL which was never updated for 26 MHz CLKTCXO
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 input on these platforms. The result is that FRBL will only work if you talk
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 to it at 230400 baud instead of TI's intended 115200 baud. TI's official
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 version of FLUID does not support FRBL entry at 230400 baud and such operation
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 was clearly never intended or officially supported - instead the officially
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 supported way for Leonardo and Leonardo-based customer designs was to use
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 fluid -oo mode, which works through the boot ROM just like fc-loadtool.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 However, there is a possibility that Openmoko may have tried to turn this FRBL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 bug into a feature - we are still investigating.
|