FreeCalypso > hg > freecalypso-sw
annotate target-utils/compalstage/README @ 317:06ee56829697
GPF: frame.c compiles
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Fri, 11 Apr 2014 05:37:27 +0000 |
parents | 48c08499cede |
children |
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. |