FreeCalypso > hg > freecalypso-tools
annotate doc/Calypso-chip-versions @ 698:9ecbf1bf2e1b
fc-iram: added '+' to getopt magic string like in fc-xram
Both fc-iram and fc-xram now support secondary program invokation.
If the user needs to pass some options to the secondary program,
we don't want fc-iram or fc-xram to claim these options as its own,
thus we need to stop getopt() from reordering arguments.  This fix
was already implemented in fc-xram a long time ago, but the issue
was overlooked when secondary program invokation ability was added
to fc-iram.
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Tue, 31 Mar 2020 03:23:26 +0000 | 
| parents | a449ae0a1cec | 
| children | 
| rev | line source | 
|---|---|
| 
446
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
1 There have been many different versions of the Calypso silicon made over the | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
2 years, including hardware differences, at least 3 ARM boot ROM versions and at | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
3 least 3 DSP ROM versions. New target utility calversion (to be run via fc-iram) | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
4 helps identify unknown Calypso chip versions: it reports the ARM boot ROM | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
5 version, the DSP ROM version and the values read from the few documented ID | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
6 registers. | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
7 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
8 In order to be able to use our calversion utility to identify an unknown Calypso | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
9 variant, the Calypso device under examination needs to satisfy the following | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
10 two requirements: | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
11 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
12 * The boot ROM needs to be enabled by nIBOOT pin strapping on the board, in | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
13 order to be able to get in with fc-iram; | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
14 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
15 * The Calypso chip version to be identified needs to be Calypso C05 rev B or | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
16 later, containing ARM boot ROM version 0200 or 0300. This limitation exists | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
17 because our target-utils framework on which calversion is based depends on being | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
18 booted by a known Calypso boot ROM version in order to figure out which UART it | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
19 should use for communication. If anyone encounters a device with a Calypso C05 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
20 rev A chip in it, you will need to somehow read out its boot ROM, send us that | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
21 boot ROM dump, and we will extend our UART detection logic in target-utils to | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
22 support that ancient boot ROM version which is currently unknown to us. | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
23 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
24 If you have a Calypso boot ROM version which is not currently supported by our | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
25 target-utils, how can you read it out? The simplest way (assuming that nIBOOT | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
26 is strapped low on the board to enable the boot ROM) would be to edit | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
27 target-utils/libcommon/uartsel.c in your local copy, hard-code whichever UART | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
28 you are using in the uart_select_init() function, removing the boot ROM | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
29 version-dependent autodetection code, rebuild calversion and loadagent with | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
30 this hack, and use the modified loadagent with fc-loadtool to dump the ROM. | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
31 Alternatively, if the boot ROM is disabled with nIBOOT strapped high, you may | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
32 be able to read it out via JTAG, or perhaps via fc-memdump if the device | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
33 already runs some compatible firmware. | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
34 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
35 Back to our calversion utility, if you have a Calypso device with a not-quite- | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
36 known chip version in it and you are able to get in with fc-loadtool, you can | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
37 run calversion on it as follows: | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
38 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
39 fc-iram /dev/ttyXXX /opt/freecalypso/target-bin/calversion.srec | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
40 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
41 You should get output that looks like this: | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
42 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
43 Calypso version ID program running | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
44 Loaded via boot ROM v0300, UART 0 (MODEM) at baud rate #0 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
45 CLKTCXO input autodetected to be 26 MHz | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
46 Device ID code: 0xB496 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
47 Device version code: 0x0000 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
48 ARM ID code: 0xFFF3 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
49 cDSP ID code: 0x0128 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
50 Releasing DSP core from reset | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
51 Waiting for DSP bootloader READY status | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
52 Loading NDB parameters | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
53 Loading PARAM area | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
54 Booting DSP main code | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
55 DSP reports version 0x3606 0x0000 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
56 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
57 You should be able to see which of the two supported boot ROM versions (0200 or | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
58 0300) your Calypso chip has, which UART was used to load the code, whether your | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
59 board uses a 13 MHz or a 26 MHz clock (this is a board-level property, not a | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
60 property of the Calypso chip), what values are reported in the device ID | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
61 registers, and the last bit which takes the most work to obtain - the DSP ROM | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
62 version. | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
63 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
64 The boot ROM version and the CLKTCXO input frequency are also reported when you | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
65 run fc-loadtool, and the device ID registers can be trivially read with the r16 | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
66 command once you are in loadtool, but getting the DSP ROM version requires | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
67 putting the DSP through its messy boot process, which is why a special program | 
| 
 
a449ae0a1cec
better documentation for calversion
 
Mychaela Falconia <falcon@freecalypso.org> 
parents:  
diff
changeset
 | 
68 had to be written for the task. | 
