annotate target-utils/compalstage/README @ 939:62ca61292b77

gsm-fw: Intel single bank flash driver (Compal) compiles and links
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Sat, 31 Oct 2015 23:21:40 +0000
parents 48c08499cede
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
314
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
1 FreeCalypso loadtools have been designed from the beginning to work through
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
2 the Calypso chip's own boot ROM. This approach works great for Openmoko and
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
3 Pirelli targets, but Compal phones unfortunately have this Calypso boot ROM
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
4 disabled at the board level. To run our own code in these phones instead of
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
5 booting the regular firmware, we need to go through Compal's own boot code.
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
6 The latter allows loading code into IRAM and jumping to it, but not in the
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
7 same way as how we do it through the Calypso boot ROM.
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
8
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
9 One could argue that the "proper" way to support these Compal phones would be
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
10 to build a different version of our loadagent that is designed to be loaded
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
11 through Compal's boot code instead of the Calypso boot ROM, and then redesign
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
12 our fc-loadtool and fc-xram utilities to work with different loadagents loaded
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
13 in different ways on different target devices. But I don't feel like doing
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
14 that - too invasive to the once-clean design of loadtools.
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
15
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
16 Hence I am adopting a different solution that works in the same way as
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
17 OsmocomBB's "chain loading": the IRAM image that is fed to Compal's boot code
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
18 is not our real loadagent, but a tiny piece of code that enables the Calypso
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
19 boot ROM and jumps to it. All loadtools host programs will include this
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
20 optional "Compal stage" at the beginning, enabled for targets that need it,
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
21 but will then always fall into the Calypso boot ROM IRAM download path.
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
22
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
23 The approach I'm adopting is doubly inefficient for Mot C139/140 phones whose
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
24 bootloader effectively requires that the downloaded image be ~15 KiB long
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
25 even when we only need to download 32 bytes. But hey, our ultimate goal is to
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
26 produce our own Calypso phones, rather than hack those made by diabolical
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
27 manufacturers who do not Respect Your Freedom; running our own gsm-fw on the
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
28 Mot C139 is only a transitional step, so making fc-loadtool/fc-xram entry
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
29 slower by a second or two is probably an acceptable price for keeping the
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
30 code clean for the boot-ROM-enabled free world.
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
31
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
32 In this directory we build the several different versions of compalstage
48c08499cede compalstage binaries built
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
33 needed for different C1xx models.