FreeCalypso > hg > freecalypso-sw
annotate target-utils/compalstage/README @ 400:f027c6fbe37e
fc-loadtool flash: first round of refactoring for CFI
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Sun, 15 Jun 2014 20:05:54 +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. | 
