annotate doc/Calypso-chip-versions @ 921:74d284add54d

fc-fsio: guard against bogus readdir results from the target If the FFS being operated on contains SE K2x0 extended filenames, readdir will return strings that are bad for printing. We need to guard against this possibility, and also against possible other bogosity that could be sent by other alien firmwares.
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 31 Dec 2022 22:55:23 +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.