FreeCalypso > hg > freecalypso-tools
annotate doc/Calypso-chip-versions @ 712:a167d7b376b7
fc-loadtool code: flprotreg.c factored out
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 05 Jun 2020 07:29:59 +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. |