FreeCalypso > hg > fc-magnetite
annotate doc/FCDEV3B-V1-issues @ 604:a7ed7d4483b0
main assembly boot path code: MEMIF change for 26 MHz targets
as explained in the MEMIF-wait-states document
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 17 Jun 2019 02:11:17 +0000 |
parents | 29c0be5a1962 |
children |
rev | line source |
---|---|
569
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 Our early FCDEV3B boards (the first two batches made in 2017, now retroactively |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 called FCDEV3B V1) had a hardware design defect that affected sleep modes; this |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 defect has been fixed on our current FCDEV3B V2 boards. The design defect on |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 FCDEV3B V1 was as follows: the reset input to the flash chip was connected to |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 Calypso's FDP output per both TI's Leonardo reference schematics and Openmoko's |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 working design, but this arrangement turns out to be unsuitable for the high- |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 capacity Spansion S71PL129NC0HFW4B flash+pSRAM chip we are using, copied from |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 Pirelli DP-L10. Calypso always drives its FDP output low during all sleep |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 periods, including small sleep which can be arbitrarily short, and while TI may |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 have thought it was a good idea to plunge the flash chip into reset during all |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 sleeps, even ultra-short ones, newer flash chips like our current Spansion part |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 are not happy with such reset timing. The datasheet for S29PL-N flash (the |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 flash part of S71PL-N MCPs) says that the minimum reset pulse width must be |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 30 us, and the "dance" put out on FDP by the Calypso during certain rapid |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 sleep-wake sequences appears to violate this timing requirement. Furthermore, |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 with our current flash chips (both our chosen Spansion part and OM's original |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 Samsung K5A32xx) there is no power saving advantage to putting the flash chip |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 into reset (in fact, with Spansion flash it is the opposite according to the |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 datasheet!), hence the solution is straightforward: on our current FCDEV3B V2 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 boards we have disconnected FDP from the flash chip, and we use a different |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 circuit to provide our flash chip with the reset which it requires. |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 The practical effect of the just-described hw defect on FCDEV3B V1 boards is |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 that all sleep modes must be disabled when the firmware is running from flash |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 (run-from-RAM firmwares are not affected), otherwise the firmware will |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 erratically hang or self-reboot on certain sleep-wake sequences. If you have |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 an FCDEV3B V1 board and you would like to run our current FC Magnetite firmware |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 on it, you have two options for disabling sleep: |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 Option 1: You can flash a regular sleep-enabled fw build, and then on every |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 boot, before doing anything else, issue an AT%SLEEP=0 command to disable all |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 sleep modes. |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 Option 2: You can compile a special fw build that boots with all sleep modes |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 disabled: |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 ./configure.sh fcdev3b hybrid DISABLE_SLEEP=1 SUFFIX=-nosleep |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 Additionally, there was one (only one) FCDEV3B V1 board from the very first |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 batch (kept by the Mother and not sold or given away to anyone) that had |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 trouble booting from flash on normal power-up. By Murphy's law, it just |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 happened to be the one board on which our very initial bring-up work was done. |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 RAM-loaded fw booted fine, interrupting the boot process serially and having |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 the serially loaded code jump to the image in flash also worked fine, but |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 regular flash boot exhibited erratic behaviour. Eventually it was found that |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 the flash boot problem on that one board occurs only when flash boot mode 1 is |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 used, whereas flash boot mode 0 works fine. I (Mychaela) suspect that the |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 problem has something to do with the watchdog reset that happens as part of |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 flash boot mode 1, the FDP output behaviour during that watchdog reset, and the |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 flash chip's reaction to the latter. |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 The fcdev3b-hacks directory contains two hacks that can be applied to FCDEV3B |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 firmware images (fwimage.bin builds) as xxd binary patches: |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 * The first hack dating from 2017-05 patches the fw to use flash boot mode 0 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 instead of TI's original flash boot mode 1, but after boot the FFFF:FB10 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 register is set to put the flash and not the internal ROM at address 0, so |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 the interrupt and exception vectors go to the flash like in TI's original fw, |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 not through the internal ROM. This hack was put together for the purpose of |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 producing flashable fw images that boot without problems on that one board on |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 which flash boot mode 1 didn't work, and worked successfully for that purpose. |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 * The second hack dating from 2018-03 patches the fw to not only use flash boot |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 mode 0, but also route the interrupt and exception vectors through Calypso's |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 internal ROM. I was hoping that this hack would make the sleep mode problem |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 go away without a hardware respin by having the Calypso execute some cycles |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 out of its internal ROM and RAM before hitting the flash after wakeup, but |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 nope, bringing up the SIM interface with AT+CFUN=1 in the l1reconst config |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 when running from flash with small sleep enabled still triggers erratic |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 misbehaviour even with this patch. |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 Just to reiterate, none of these hacks are needed for our current FCDEV3B V2 |
29c0be5a1962
doc update for the arrival of correctly working FCDEV3B V2 hardware
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 boards - instead I am merely preserving our development history here. |