FreeCalypso > hg > freecalypso-tools
annotate doc/TIFFS-Overview @ 1014:961efadd530a default tip
fc-shell TCH DL handler: add support for CSD modes
TCH DL capture mechanism in FC Tourmaline firmware has been extended
to support CSD modes in addition to speech - add the necessary support
on the host tools side.
It needs to be noted that this mechanism in its present state does NOT
provide the debug utility value that was sought: as we learned only
after the code was implemented, TI's DSP has a misfeature in that the
buffer we are reading (a_dd_0[]) is zeroed out when the IDS block
is enabled, i.e., we are reading all zeros and not the real DL bits
we were after. But since the code has already been written, we are
keeping it - perhaps we can do some tests with IDS disabled.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 26 Nov 2024 06:27:43 +0000 |
parents | 0306449ba467 |
children |
rev | line source |
---|---|
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
1 [Historical note: this document was originally written in 2014 when the vision |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
2 of FreeCalypso was very different from what it is today. Since then we have |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
3 transitioned from making aftermarket hacks on pre-existing Calypso phones and |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
4 modems to producing and supporting our own FreeCalypso hardware products, and |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
5 our firmware work has changed from a nebulous dream to stable production code. |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
6 The ways in which we approach various technical aspects have changed |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
7 accordingly, but much of our documentation has been slow to catch up. The |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
8 documentation is now being updated, but there may still be some passages where |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
9 the old world view shines through.] |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
10 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
11 All TI GSM firmwares known to this author (Mother Mychaela of FreeCalypso) |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 implement some kind of flash file system, or FFS. Several different FFS code |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 implementations, and correspondingly several different on-flash data formats, |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 have been used throughout the history of TI's involvement in the wireless |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 terminal business. The FFS incarnation of primary interest to the FreeCalypso |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 project is the one invented by Mads Meisner-Jensen at TI in the early 2000s |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 (at least according to the comments in the sources available to us), and it is |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 relevant to us in the following ways: |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 * When targeting the GSM modem in Openmoko's GTA01/02 smartphones, we need to |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 work with the original FFS from the factory (call it MokoFFS), the same FFS |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 as used by the mokoN firmwares: this FFS contains the IMEI and the RF |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 calibration values from the factory, which we most certainly don't want to go |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 without. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 * The Leonardo firmware semi-src which we are using as the reference for |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 building our own full source, multi-target GSM fw contains a turnkey-working |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 implementation of this very FFS, using the on-flash format in question and |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 providing run-time APIs expected by the rest of the GSM fw suite. Following |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
30 the principle of ``if it ain't broke, don't fix it'', we use this FFS not |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 only on the gtamodem target, but also on other targets, including those where |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
32 we are starting from a blank state and thus have the freedom to use whatever |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
33 FFS we like. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 * The original proprietary fw on the Pirelli DP-L10 phone also happens to use |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
36 an FFS in the same format, although Pirelli's FFS does *not* contain the IMEI |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
37 or any of the RF calibration values. This Pirelli phone was originally a |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
38 target of high interest for FreeCalypso, as we had high hopes of turning it |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
39 into a libre phone by way of our aftermarket firmware - but this plan has |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
40 since been abandoned when it became clear that Pirelli's hw is unsuitable for |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
41 aftermarket fw development because of the multitude of extra peripheral chips |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
42 for non-GSM functions which get in the way. In the earlier years of |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
43 FreeCalypso a lot of effort had been invested into studying all aspects of |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
44 the Pirelli DP-L10 phone and its original firmware, including the FFS. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 Naming |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 ====== |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 I have previously referred to the FFS format in question as Mokopir-FFS or |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 MPFFS, from "Moko" and "Pirelli". I was originally hesitant to call it TIFFS, |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 as lacking the source code, I had no way of knowing whether the FFS format and |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 implementation were of TI's own invention, or something that TI licensed as a |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 black box from one of their many proprietary software partners. (I was unable |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 to identify it as any well-known, industry-standard FFS format, but absence of |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 evidence is not evidence of absence.) But now that we have TI's original source |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 code which implements this FFS (first the MV100-0.1.rar source, then the full |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 Leonardo one), complete with comments and a HISTORY file, we know that our FFS |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
58 was invented and implemented by someone named Mads Meisner-Jensen at TI-DK, |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
59 apparently their flash chip expert who also wrote FLUID. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 I am now making a naming transition from MPFFS to TIFFS: there is really no |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 link between this FFS format and the Openmoko+Pirelli duo, other than the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 happenstance of me having first encountered this FFS on these two GSM device |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 brands, and the name TIFFS is more neutrally-descriptive. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 What it is |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 ========== |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 In a rare departure from TI's norm (most of TI's GSM firmware and associated |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 development tools suffer from heavy Windows poisoning), what I call TIFFS is |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 very Unixy. It is a file system with a hierarchical directory tree structure |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 and with Unixy forward-slash-separated, case-sensitive pathnames; the semantics |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 of "what is a file" and "what is a directory" are exactly the same as in UNIX; |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 and TIFFS even supports symlinks, although that support is a little under- |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 developed, and apparently no FFS symlinks were ever used in any production GSM |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 device. Thus the FFS implemented in TI-based GSM devices (modems and |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
77 "dumbphone" handsets) is really no different from, for example, JFFS2 in |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
78 embedded Linux systems. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 (The only traditional UNIX file system features which are missing in TIFFS are |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 the creation/modification/access timestamps and the ownership/permission |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 fields.) |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 The FFS in a GSM device typically stores two kinds of content: |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 * Factory data: IMEI, RF calibration values, device make/model/revision |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 ID strings etc. These files are expected to be programmed on the factory |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 production line and not changed afterward. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 * Dynamic data written into the FFS in normal device operation: when you use a |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 "dumbphone" running TI-based firmware, every time you store something "on the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 phone" or in "non-volatile memory", that item is actually stored in the FFS. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 (Where else, if you think of it?) That includes contacts and received SMS |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 stored "on the phone" instead of the SIM, any selections you make in the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 settings/preferences menus which persist across reboots (power cycles), call |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 history etc. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 It needs to be noted that the "dynamic data" aspect of FFS usage applies not |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 only to complete phones, but also to modems like the one used in the GTA01/02. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 One would naively think that non-volatile storage of data in flash outside of |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 factory programming would be needed only in a device with its own UI, and that |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 a modem subservient to external AT commands would be completely stateless |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
103 across reboot/power cycles; but that is not the case in actuality. TI-baseed |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
104 GSM firmwares, including Openmoko's mokoN and our own FreeCalypso, are designed |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
105 to always "mount" their FFS with read/write access; TI's FFS implementation in |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
106 the firmware has no concept of a "read-only mount". |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 I am still investigating just what kinds of data are routinely written into the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 non-volatile FFS by the firmware in normal operation on devices like the GTA0x |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 modem, but there most definitely are some. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 There is no hard separation between "static" and "dynamic" data in the file |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 system structure; TIFFS is thus akin to an embedded Linux system with just a |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 single root file system containing both "static" files like userland binaries |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 and "dynamic" ones like configuration files under /etc which the user is |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 expected to edit with vi after logging into the box, or log and similar files |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 created by the system itself under /var, for example. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 Where it lives |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 ============== |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 The type of flash memory used in Calypso GSM modems and "dumbphones" is called |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 NOR flash. This NOR flash memory is physically divided (by the design of the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 flash chip itself) into units called "sectors" or more descriptively, erase |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 blocks. The typical NOR flash sector size (in Calypso GSM devices) ranges from |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 64 KiB in the GTA02 modem's NOR flash (4 MiB total) to 256 KiB in the |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
127 S71PL129NC0 flash+RAM chip used in the Pirelli DP-L10 and in our own FreeCalypso |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
128 hardware designs (16 MiB of flash total). The key physical property is that |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
129 any bit may be changed from a '1' to a '0' at any time, in any combination, but |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
130 resetting of '0' bits back to ones can be done only on the granularity of these |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
131 largish sectors, in an operation called "sector erase". |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 The location of TIFFS within the flash memory of a given GSM device is defined |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 by the firmware design of that device, but is always some integral number of |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 contiguous flash sectors. Some examples: |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 * On the GTA01/02 GSM modem, FFS occupies 7 sectors of 64 KiB each, starting at |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 flash offset 0x380000. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 * On the Pirelli DP-L10, the FFS used by the original proprietary fw occupies |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 18 sectors of 256 KiB each (for 4.5 MiB in total), starting at the beginning |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 of the 2nd flash chip select (0x02000000 in the ARM7 address space). |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 * On Motorola/Compal C139/140 phones, the FFS used by the original proprietary |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 fw occupies 5 sectors of 64 KiB each (320 KiB in total), starting at 0x370000. |
482
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
146 C11x/12x use smaller FFS configurations, whereas C155/156 use a different FFS |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
147 implementation with a completely different on-flash format - see the new |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
148 Compal-FFS article for more details. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
150 * On our own FreeCalypso hardware family we have put our FFS in the first 8 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
151 sectors (of 256 KiB each) in the 2nd flash chip select bank, which appears at |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
152 0x01800000 in the ARM7 address space instead of Pirelli's 0x02000000 because |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
153 we have wired the 2nd flash chip select to nCS2 on the Calypso instead of |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
154 Pirelli's nCS3. |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
155 |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 * The smallest real FFS configuration called for by the table in dev.c in TI's |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 original Leonardo fw source is 3 sectors of 64 KiB each; the same table also |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 sports a 4 KiB x 4 configuration for RAM-based testing (emulation of FFS in |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 RAM without real flash). |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 * The largest FFS configuration that has been envisioned by the original |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 designers seems to be somewhere around 128 sectors. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 Each flash sector used for TIFFS begins with this 6-byte signature: |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 46 66 73 23 10 02 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 The first 4 bytes are 'Ffs#' in ASCII, and the following two bytes are the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 format version number of 0x0210 in little-endian byte order. The following two |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 bytes give a count of how many times that sector has been erased and rewritten |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 (FF FF in "fresh" or "virgin" FFS images), and the following byte indicates |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 that block's role and status in the FFS life cycle. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 How it works |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 ============ |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 Just like JFFS2 and other high-quality flash file systems, TIFFS is designed to |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 recover gracefully from any possible power failure or crash: one can yank the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 battery from the GSM device (or induce a firmware crash) at the most mis- |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 opportune moment in the middle of an FFS write operation, and the FFS is |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 expected to recover on the next boot cycle. I won't be able to document here |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 all gory details of exactly how this goal is achieved, partly because I haven't |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 studied the code to the requisite level of depth myself yet, but all of the |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
184 responsible code lives under src/cs/drivers/drv_app/ffs in our fc-magnetite and |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
185 fc-selenite source trees; feel free to study it. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 In its "normal" or "clean" state (i.e., when not in the middle of a write |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 operation or recovery from an ungracefully interrupted one), a TIFFS instance |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 consists of the following 3 types of blocks: |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 * One block containing inode records, indicated by AB in its type/flags/status |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 byte in the block header; |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 * N-2 blocks (where N is the total number of flash sectors allocated for the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 FFS) containing (or waiting to be filled with) data chunks - indicated by BD |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 in the type/flags/status byte; |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 * One "free" block, indicated by BF - destined to become a new AB or a new BD |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 at some point. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 Each object written into the FFS (file, directory or symlink) consists of a |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 16-byte inode record written into the AB block and a data chunk written into |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 one of the BD blocks. The data chunk includes the name of the object, hence |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 one is required even for directories. Data chunks are contiguous, uncompressed, |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 and subject to an upper size limit of 2048 or 8192 bytes, depending on the FFS |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 configuration. Files larger than this limit are stored in a "segmented" form, |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 giving rise to a 4th inode or object type (after file, directory and symlink): |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 segment. Each segment of a segmented file consists of not only a data chunk, |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 but also an inode record for the segment, which gives the location of the data |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 chunk and ties the segment object into the overall FFS structure, making it |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 accessible. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 Because aside from complete sector erasure, flash memory bits can only |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 transition from '1' to '0' but not the other way around, overwriting an existing |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 file with some new content (an operation which any reasonable file system must |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 implement in some way) cannot be done in place. Instead like most flash file |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 systems, TIFFS implements this common operation by writing the new version of |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 the file to a new location (previously blank flash) and then invalidating the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 old version - and doing all that while keeping in mind the possibility of an |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 ungraceful crash or powerdown at any moment, and the requirement of recovering |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 gracefully from any such event. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221 Of course as an FFS receives more write activity, even if one keeps overwriting |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 some existing files with new content of the same size, without adding to the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 visible total content size (think du(1) command), eventually all remaining blank |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 flash space will fill up. At that point (or at some earlier point, depending |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 on the FFS design and/or configuration) the FFS has to invoke a compaction or |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 reclamation or garbage collection procedure: any "mixed" blocks containing both |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 valid and stale data are transitioned into a "stale-only" state by having the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 active data moved to a new block, and then the "all stale" blocks are subjected |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 to sector erasure, becoming new blank sectors. The logic responsible for these |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 operations once again needs to be resilient to the possibility of a crash or |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 powerdown occurring at the most mis-opportune moment, and it also needs to |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 implement flash wear leveling: there is a physical limit to how many times a |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 given flash sector can be erased and rewritten before it goes bad. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 All of the above are common and well-known principles, successfully implemented |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 in well-known flash file systems such as JFFS2 in Linux. TIFFS is absolutely |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 no different in this regard; for the implementation details, read the source |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 code. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 |
920
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
240 TIFFS filename and pathname limits |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
241 ================================== |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
242 |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
243 Classic TIFFS, as in the canonical firmware source from TI, imposes the |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
244 following limits on the content written into FFS: |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
245 |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
246 * Each elementary filename or pathname component (the name of each individual |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
247 file or subdirectory within its parent directory) is limited to 20 characters; |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
248 |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
249 * The set of allowed characters in these elementary filenames is limited to |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
250 [A-Za-z0-9_.,+%$#-]; |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
251 |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
252 * The maximum pathname depth is limited to 6. |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
253 |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
254 As an illustration of the pathname depth limit, the deepest allowed path to a |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
255 non-directory file is /d1/d2/d3/d4/d5/file. It is also possible to have a |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
256 directory nesting of /d1/d2/d3/d4/d5/d6, but in this case the deepest directory |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
257 can only be empty. |
0306449ba467
doc/TIFFS-Overview: document classic filename and pathname limits
Mychaela Falconia <falcon@freecalypso.org>
parents:
734
diff
changeset
|
258 |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 How this FFS comes into being |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 ============================= |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 (This section is only relevant to you if you plan on physically producing your |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
263 own GSM phones or modems on your own factory production line, like we currently |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
264 do at our family company, or if you simply enjoy knowing how it is done.) |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 To my knowledge, TI never used or produced a tool akin to mkfs.jffs2 in the |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
267 embedded Linux world, or akin to our recently developed tiffs-mkfs, which would |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
268 produce a TIFFS image complete with some initial directory and file content |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
269 "in vitro". Instead it appears that the FFS instances found in shipped products |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
270 such as Openmoko phones have been created "in vivo" by TI's firmware running on |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
271 the device itself during the "production test" phase. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
273 We never got a copy of the original factory production line software that was |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
274 used by Openmoko, but we have successfully replicated the process using our own |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
275 Unix/Linux-based FreeCalypso host tools, the very same tools that are contained |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
276 in the present source package you are looking at. The process goes like this: |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 * When the printed circuit board is physically populated with components such |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 as the Calypso chip and the flash chip, the latter can be blank - if the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 board design has the nIBOOT pin pulled low, enabling the Calypso boot ROM |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 (Openmoko and Pirelli both good on this one, but shame on Compal!), there is |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 no need to preprogram the flash chip with anything prior to populating it on |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 the board, and the device remains fully unbrickable at all times afterward. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 * When the assembled board is powered up for the first time, with completely |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 blank flash, the Calypso boot ROM will sit there and patiently wait for a |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287 code download on either of its two UARTs. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 * Using TI's FLUID (Flash Loader Utility Independent of Device) or FreeCalypso's |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 fc-loadtool free replacement, the factory production station loads the main |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 firmware image into the flash. Note, it is just the firmware image at this |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 step, and the FFS sectors remain blank. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 * The board is commanded to reboot (or power-cycled), and the firmware image |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 boots for the first time. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 * TI's FFS implementation code in their standard firmware reacts to all blank |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 flash in the FFS sectors as follows: it performs what they call the preformat |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 operation, writing the TIFFS signature and a BF state byte into every FFS |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 sector, but the main "format" operation, which sets up the AB/BD block roles, |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 creates the root inode and makes the FFS ready to accept the creation of its |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 first directories and files, is not done automatically. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 In order to perform the FFS format operation and then fill the new FFS with |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 whatever directories and files are deemed needed to be present in "fresh" |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 shipping products, the factory production station connects to the just-booted |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 firmware running on the target via the RVT/ETM protocol (see the RVTMUX |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 write-up), and sends "test mode" commands to this running firmware. These |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 "FFS test mode" (or TMFFS) commands include the format operation, an mkdir |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 operation to create directories, and a "file write" operation akin to doing |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 'cat > /dir/whatever/file', creating files in FFS and storing any desired data |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 in them. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 The IMEI is assigned and written into FFS in this process, but it is not the |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 only data item that will be unique for each individual device made. Much more |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
316 important are the RF calibration values; the factory calibration procedure does |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
317 the following for each individual unit: |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
318 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
319 * Measures the frequency offset produced by the VCXO as a function of the AFC |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
320 DAC control value and constructs the afcparams table based on these |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
321 measurements; |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
322 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
323 * Characterizes the dBm output of the Tx chain as a function of the APC DAC |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
324 control value and comes up with a set of these DAC values which produce Tx |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
325 power levels prescribed by the GSM 05.05 spec; |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
327 * Determines the correction values which need to be applied in order to set the |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
328 correct Rx path gains and to determine the true Rx signal level from the dBfs |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
329 power measurements made in the DSP from Rx I&Q samples. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
331 These calibration procedures are performed by connecting a suitable RF test |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
332 instrument (R&S CMU200 is the industry gold standard) to the GSM device's |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
333 antenna connector or RF test port and running special calibration programs |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
334 which talk both to the CMU200 or other test instrument and to the L1TM (Layer 1 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
335 test modes) component in the DUT (device under test). In FreeCalypso hardware |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
336 manufacturing we use a CMU200 instrument which is itself maintained in good |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
337 calibration standing, and for the calibration software we use our own |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
338 fc-rfcal-tools which talk to the DUT via rvinterf. |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
339 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
340 All of the resulting calibration values are stored in a bunch of files under the |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
341 /gsm/rf subtree, and these files are "owned" by the L1 code. The latter has |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
342 RAM data structures which correspond to these files; upon normal boot the |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 initialization code looks in FFS, and if it finds any of the RF calibration |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 files, it reads each present file into the corresponding RAM data structure, |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
345 overwriting the compiled-in defaults. With TI's standard production calibration |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
346 procedure which we have replicated in our FreeCalypso hw manufacturing setup, |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
347 these RF calibration files in FFS come into being as follows: |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
349 * The Test Mode support code in L1 (i.e., part of the main GSM fw) performs the |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
350 measurements and stores results in its RAM data structures as commanded by |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
351 the production test station through the Test Mode interface; |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
353 * Certain special test mode commands encoded via the MISC_ENABLE opcode direct |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
354 the above L1TM code to write its RAM data structures into FFS. |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
355 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
356 See the RF_tables article for more information. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 Compal and Pirelli differences |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 ============================== |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 The above description refers to TI's vanilla reference version, and it seems |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
362 like Openmoko (FIC) was the only phone/modem manufacturer (prior to us!) who |
482
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
363 followed it without major deviations. In contrast, both Compal (Motorola C1xx |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
364 and Sony Ericsson J100) and Foxconn (Pirelli DP-L10) moved their vital per-unit |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
365 factory data (IMEI and RF calibration) out of the FFS into their own ad hoc |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
366 flash data structures (which are very difficult to reverse-engineer and make |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
367 use of, unfortunately), leaving their FFS only for less critical data. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 |
482
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
369 In Compal's case (all C1xx models and SE J100) the FFS stores only users' |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
370 personal information and nothing more. One can turn the phone off, use |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
371 fc-loadtool to erase the FFS sectors, and boot the regular fw back up; the fw |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
372 will automatically do a new FFS format (it even displays a message on the LCD |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
373 as it does so) and carry on happily as a "fresh" or "blank", perfectly |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
374 functional and usable phone. Please see the new Compal-FFS article for further |
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
375 details. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 In Pirelli's case, booting their official fw with blank FFS sectors will also |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 result in the FFS being automatically formatted, but their fw expects some |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 static "asset" files to be present in this FFS: UI graphics and language |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 strings, ringtones, firmware images for the WiFi and VoIP processors and some |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 static configuration files, about 3 MiB in total. Thus although the firmware |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 will auto-format the blank FFS sectors, it won't function normally with all of |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 these "asset" files missing. Foxconn's original factory production line station |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 must have uploaded these files to each phone via the TMFFS2 protocol, and our |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 FreeCalypso suite now features a tool that can replicate this feat: fc-fsio. |
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
387 Aftermarket FFS for FreeCalypso on Compal & Pirelli targets |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
388 =========================================================== |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
390 When we run our own FreeCalypso fw on "alien" (not native to us) Mot C1xx and |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
391 Pirelli DP-L10 hardware, we don't use the FFS from their respectively original |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
392 firmwares: those original FFS instances don't contain any bits of interest to |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
393 us, trying to make our fw use the same FFS as Mot/Compal's or Pirelli's original |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
394 fw would be more trouble than benefit, and on one of the target devices in this |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
395 family (Mot C155/156) the original FFS is in some different format. Instead we |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
396 create our own aftermarket FFS for our FreeCalypso fw on these alien hw targets, |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
397 using a different flash location from the original so that the original fw's FFS |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
398 cannot be mistaken for our own. |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
399 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
400 On the Pirelli DP-L10 we put our aftermarket FFS in an area of the flash which |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
401 the official fw family uses as a staging area for over-the-air firmware updates, |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
402 thus as long as you are not doing official fw updates over WLAN (i.e., if you |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
403 only run one fixed official fw version or flash different official fw versions |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
404 with fc-loadtool without going through "fw update" protocols), our aftermarket |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
405 FFS used by our run-from-RAM FreeCalypso firmwares should remain undisturbed |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
406 while the phone is in the official fw mode. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
408 The situation is different on Mot C1xx phones. The lower-end C1xx models |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
409 including the C139 (our primary hw target in this family) have too little RAM |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
410 to run our FreeCalypso fw entirely out of RAM without flashing; the C155/156 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
411 subfamily does have enough RAM to allow a complete FC GSM fw image to be loaded |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
412 and run via fc-xram under some conditions (we previously supported such usage |
482
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
413 in our now-retired Citrine fw and we also support it in the gcc-built config of |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
414 FC Selenite), but there is no place in the flash where we can put our |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
415 aftermarket FFS without overwriting some part of the original fw or its data - |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
416 thus our general procedure for running FreeCalypso on any C1xx model is to |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
417 convert the victim phone to FC on a long-term basis by flashing our modified |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
418 bootloader, flashing one of our fw builds and establishing a FreeCalypso |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
419 aftermarket FFS in a flash area designated by us. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
421 It was already mentioned earlier that the factory RF calibration values on these |
482
3100f534340b
doc updates for Compal FFS
Mychaela Falconia <falcon@freecalypso.org>
parents:
431
diff
changeset
|
422 alien phones are stored in non-TIFFS flash data structures of Compal's or |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
423 Foxconn's invention, and our currently supported FreeCalypso firmwares |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
424 (Magnetite and Selenite) do not contain any code for reading these alien data |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
425 structures. (FC Citrine could read directly from Pirelli's factory data block, |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
426 but none of our fw offerings ever parsed Compal's weird flash records.) Instead |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
427 our current approach is to have an external tool extract the bits of interest |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
428 from the alien factory records, convert them to our TI-standard format if |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
429 necessary, and upload them into our FreeCalypso aftermarket FFS. The specifics |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
430 are as follows: |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
432 * The Pirelli DP-L10 is a breeze: simply run our special pirelli-magnetite-init |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
433 command in fc-fsio while connected to a Magnetite or Selenite fw instance |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
434 running with our aftermarket FFS, and the tool will copy both the IMEI and |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
435 the RF calibration records from Pirelli's factory data block into our |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
436 aftermarket FFS. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
438 * Mot C1xx phones present a lot more hassle: our current official procedure is |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
439 to make a dump of the flash prior to the xenotransplantation procedure (also |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
440 serves as a backup), extract the RF calibration values with our c1xx-calextr |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
441 tool, and then later in the procedure when you initialize your aftermarket FFS |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
442 with fc-fsio, upload these extracted and format-converted RF calibration files |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
443 as one of the several steps involved. You will also need to enter your IMEI |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
444 manually: fc-loadtool flash compal-imei command can extract the factory IMEI |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
445 record from the flash chip's protection register and save it into a text file, |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
446 but you still need to feed it manually to the new firmware with fc-fsio |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
447 set-imeisv command. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
449 FreeCalypso host tools for TIFFS |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
450 ================================ |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
451 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
452 Our FC host tools package supports TIFFS in two ways: |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
453 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
454 1) Our primary tool for working with GSM device file systems is fc-fsio. When |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
455 run against a compatible firmware version (primarily our own, but Pirelli's |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
456 proprietary fw is also compatible), fc-fsio allows various read and write |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
457 operations to be performed on the target device FFS. fc-fsio can also be used |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
458 together with our fc-xram based FFS editing agent described below. |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
459 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
460 2) We have a TIFFS In Vitro Analyzer (IVA) tool for "in vitro" examination of |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
461 FFS images that have been read out of raw flash with fc-loadtool. See the |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
462 TIFFS-IVA-usage article for more information. As a very recent addition, we |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
463 also have another "in vitro" tool (tiffs-mkfs) that goes the other way, creating |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
464 new complete TIFFS images from a tree of directories and files. |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
466 In addition to the above, back in the days of Openmoko (back when the Openmoko |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
467 community was still active and we considered ourselves a part of it) we had |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
468 produced a kit for editing the modem FFS on Openmoko GTA01/02 devices, giving |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
469 users an easy way to change their /pcm/IMEI file. Changing IMEIs for no good |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
470 reason is completely pointless and is actually detrimental rather than helpful |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
471 for privacy, but whoever came up with the edicts that "the IMEI MUST be |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
472 immutable" had obviously failed Human Psychology 101: declaring something to be |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
473 forbidden causes people to want it simply because it is forbidden and for no |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
474 other reason - hence the popular demand for IMEI changing tools. |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
475 |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
476 Our Openmoko FFS editing kit from early 2014 consisted of a very early version |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
477 of what much later became the present FC host tools package (more specifically, |
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
478 it was before fc-fsio, and the set-imeisv command had been hacked into fc-tmsh |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
479 instead) plus a pair of "in vivo" FFS editing agent target binaries that run on |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
480 the target by way of fc-xram. Our current FC host tools fully supplant the |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
481 ancient version in that 2014 kit, and our current replacement for the ancient |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
482 FFS editing agent is this new version: |
431
579441d7dcd8
doc/TIFFS-Overview: long-overdue update for the current state of FC
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
483 |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
484 https://www.freecalypso.org/hg/ffs-editor/ |
0
e7502631a0f9
initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 |
734
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
486 The new FFS editing agent linked above is run via fc-xram, while it is running |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
487 you communicate with it via rvinterf (launched directly from fc-xram as the 2nd |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
488 program), and you can run fc-fsio against it to perform whatever actual FFS |
23f41a61ff7a
doc/TIFFS-Overview: update for new developments
Mychaela Falconia <falcon@freecalypso.org>
parents:
482
diff
changeset
|
489 manipulations are needed. |