FreeCalypso > hg > fc-magnetite
annotate doc/Leonardo-target @ 629:3231dd9b38c1
armio.c: make GPIOs 8 & 13 outputs driving 1 on all "classic" targets
Calypso GPIOs 8 & 13 are pinmuxed with MCUEN1 & MCUEN2, respectively,
and on powerup these pins are MCUEN, i.e., outputs driving 1. TI's code
for C-Sample and earlier turns them into GPIOs configured as outputs also
driving 1 - so far, so good - but TI's code for BOARD 41 (which covers
D-Sample, Leonardo and all real world Calypso devices derived from the
latter) switches them from MCUEN to GPIOs, but then leaves them as inputs.
Given that the hardware powerup state of these two pins is outputs driving 1,
every Calypso board design MUST be compatible with such driving; typically
these GPIO signals will be either unused and unconnected or connected as
outputs driving some peripheral. Turning these pins into GPIO inputs will
result in floating inputs on every reasonably-wired board, thus I am
convinced that this configuration is nothing but a bug on the part of
whoever wrote this code at TI.
This floating input bug had already been fixed earlier for GTA modem and
FCDEV3B targets; the present change makes the fix unconditional for all
"classic" targets. The newly affected targets are D-Sample, Leonardo,
Tango and GTM900.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 02 Jan 2020 05:38:26 +0000 |
parents | 41238a8e140c |
children | b639f7ab0007 |
rev | line source |
---|---|
626
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 TI's primary development platform for TCS211 firmware was D-Sample - see our |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 D-Sample article for explanation of our current limited support for that target |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 in FC Magnetite - but they also had another platform called Leonardo. The |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 primary difference is the RF section: D-Sample had Clara RF (the one for which |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 we lack support), whereas Leonardo was TI's reference platform for Rita RF and |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 for the complete Calypso+Iota+Rita chipset. Another major difference is that |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 D-Sample was a single stable platform, whereas Leonardo was made in a |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 bewildering assortment of different variants. |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 We (FreeCalypso core team) never succeeded in getting our hands on a real |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 TI-made Leonardo board of any variant, but we do have a Leonardo build target |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 in FC Magnetite for two reasons: |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 1) Adding this build target was trivial: our starting hw target for which we |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 got our original starting-point fw was Openmoko's embedded GSM/GPRS modem, |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 and that modem is a very close derivative of Leonardo. The only firmware- |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 affecting diff between Leonardo and OM's modem is FIC/OM's reshuffling of |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 TSPACT control lines for their triband RFFE; producing a build configuration |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 with these TSPACT control signals put back into their original Leonardo |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 arrangement became trivial once our reconstruction of tpudrv12.c from |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 disassembly of tpudrv12.obj reached production quality. |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 2) We are currently evaluating a certain third-party (non-TI) development board |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 which strongly appears to be a very close derivative of Leonardo, even closer |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 than Openmoko. We are hoping to get one of these boards into Mother |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 Mychaela's lab some time in 2020-01, at which time we will try running our |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 Magnetite-Leonardo fw on it. |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 Supported Leonardo variants |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 =========================== |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 RF bands: there were several Leonardo variants with full quadband RF using Epcos |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 M034F FEM, and there were several more variants with artifically restricted RF, |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 using a dual-band/single-region FEM and supporting only the two EU bands. The |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 two versions should be firmware-compatible according to our available schematics |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 (the same TSPACT signals are used for Tx control), thus our Magnetite-Leonardo |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 fw should run on any Leonardo variant that matches any of our known schematic |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 versions at least in the principal aspects. |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 Flash memory: our Magnetite-Leonardo fw supports the following flash chips for |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 FFS: |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 4 MiB: Fujitsu MBM29DL320FB or MBM29DL320FT |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 8 MiB: Am29DL640G or its Fujitsu equivalent, or any MCP containing this flash |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 16 MiB: Spansion PL129J or its AMD predecessor, second bank on nCS2 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 If anyone finds a Leonardo variant with some other flash, it may not be |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 supported out of the box - but our included FFS configs for the Leonardo target |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 come directly from TI's original TCS211 version (it is highly unlikely that OM |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 changed anything other than adding their Samsung flash), thus we support |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 everything that TI's own TCS211 supported out of the box. |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 Memory size limits |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 ================== |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 The linker script template we use for target leonardo has memory region size |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 limits set as follows: 8 MiB of flash, 2 MiB of XRAM and 512 KiB of IRAM. If |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 you are working with a Leonardo or Leonardo-compatible board that has smaller |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 flash or XRAM, or has a Calypso Lite chip with only 256 KiB of IRAM, then you |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 have to manually ensure that you stay within your actual memory limits, as you |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 won't get a failing link unless you exceed the larger linker script limits. |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 If you are building a modem-only fw configuration (l1reconst or hybrid), it |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 will fit into under 3 MiB of flash (fitting into a 4 MiB flash chip together |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 with FFS), 512 KiB of XRAM and 256 KiB of IRAM, so you are safe unless you are |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 going to add a lot of your own code or data space. But if you are going to |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 build a UI-enabled fw config (2092 or hybrid-ui), then you will need at least |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 an 8 MiB flash chip (won't fit into a 4 MiB chip together with FFS) and at least |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 1 MiB of XRAM. So far all of our configs fit into 256 KiB of IRAM. |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 Different Calypso chip versions |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 =============================== |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 If you specify the build target as just leonardo, your fw will be configured |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 and built for the leonardo-dsp36 target. If you actually need leonardo-c05b or |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 leonardo-dsp34 because your board has an older Calypso chip version on it, then |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 you will need to specify the build target as just stated - see the |
41238a8e140c
Leonardo target documented
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 Calypso-version-override article. |