annotate doc/Calypso-chip-versions @ 629:0f70fe9395c4

fc-loadtool: bug in the new program-m0 CRC-32 verification
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 29 Feb 2020 09:10:39 +0000
parents a449ae0a1cec
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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.