FreeCalypso > hg > freecalypso-docs
comparison MEMIF-wait-states @ 25:c01155dec65b
MEMIF-wait-states: updates for the newly discovered CAL000/A v0.8 document
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 10 Nov 2019 01:26:11 +0000 |
| parents | 3d65bdaf00da |
| children |
comparison
equal
deleted
inserted
replaced
| 24:00216b7cfc4d | 25:c01155dec65b |
|---|---|
| 4 requires some non-trivial analysis. | 4 requires some non-trivial analysis. |
| 5 | 5 |
| 6 Calypso MEMIF timings are described on pages 7 through 11 of this TI document: | 6 Calypso MEMIF timings are described on pages 7 through 11 of this TI document: |
| 7 | 7 |
| 8 ftp://ftp.freecalypso.org/pub/GSM/Calypso/cal000_a.pdf | 8 ftp://ftp.freecalypso.org/pub/GSM/Calypso/cal000_a.pdf |
| 9 | |
| 10 as well as this more recently discovered newer version: | |
| 11 | |
| 12 ftp://ftp.freecalypso.org/pub/GSM/Calypso/cal000_a_v0.8.pdf | |
| 9 | 13 |
| 10 When running on a Calypso C035 target, our TCS211 reference fw as well as most | 14 When running on a Calypso C035 target, our TCS211 reference fw as well as most |
| 11 vendor firmwares we've examined run the ARM7 core at its maximum clock frequency | 15 vendor firmwares we've examined run the ARM7 core at its maximum clock frequency |
| 12 of 52 MHz. These same firmwares typically configure WS=3 for both flash and | 16 of 52 MHz. These same firmwares typically configure WS=3 for both flash and |
| 13 XRAM. Most Calypso-based phones and modems have flash and RAM chips with 70 ns | 17 XRAM. Most Calypso-based phones and modems have flash and RAM chips with 70 ns |
| 15 52 MHz and WS=3 was OK for 70 ns memories: one ARM7 clock cycle at 52 MHz is | 19 52 MHz and WS=3 was OK for 70 ns memories: one ARM7 clock cycle at 52 MHz is |
| 16 19.23 ns, WS=3 means 4 cycles total per access (it's an N+1 arrangement), | 20 19.23 ns, WS=3 means 4 cycles total per access (it's an N+1 arrangement), |
| 17 19.23 ns * 4 = 76.92 ns, thus it should be OK for 70 ns memories, right? Not | 21 19.23 ns * 4 = 76.92 ns, thus it should be OK for 70 ns memories, right? Not |
| 18 so fast: as shown in the formula on cal000_a.pdf page 11 and can be seen from | 22 so fast: as shown in the formula on cal000_a.pdf page 11 and can be seen from |
| 19 the timing diagrams, two other timing parameters (tda and tsu) also need to be | 23 the timing diagrams, two other timing parameters (tda and tsu) also need to be |
| 20 factored in. The sum of tda+tsu for 2.8V MEMIF as given in the only document | 24 factored in. The sum of tda+tsu for 2.8V MEMIF as given in the CAL000/A v0.2 |
| 21 we have available is 10.5 ns, thus if we run the ARM7 core at 52 MHz and set | 25 document is 10.5 ns, thus if we run the ARM7 core at 52 MHz and set WS=3, the |
| 22 WS=3, the available safe window for memory access time is only about 66 ns, | 26 available safe window for memory access time is only about 66 ns, which is 4 ns |
| 23 which is 4 ns short of the 70 ns flash and RAM access time specs. | 27 short of the 70 ns flash and RAM access time specs. |
| 28 | |
| 29 The more recently discovered version 0.8 of this same CAL000/A document | |
| 30 indicates that the tables for 2.8V and 1.8V MEMIF were erroneously swapped in | |
| 31 the older version, and the new correct tda+tsu number for 2.8V MEMIF now appears | |
| 32 to be 8.0 ns rather than 10.5 ns. The available safe window for memory access | |
| 33 time with WS=3 thus becomes 68.92 ns - this new figure is much closer to 70 ns, | |
| 34 but it is still a negative margin, short by 1.08 ns. | |
| 24 | 35 |
| 25 TI's reference fw setting of WS=3 in conjuction with ARM7 running at 52 MHz has | 36 TI's reference fw setting of WS=3 in conjuction with ARM7 running at 52 MHz has |
| 26 made its way into the official firmwares of Openmoko devices and several Compal | 37 made its way into the official firmwares of Openmoko devices and several Compal |
| 27 phones, including Mot C11x/12x, Mot C139/140 and Sony Ericsson J100. At least | 38 phones, including Mot C11x/12x, Mot C139/140 and Sony Ericsson J100. At least |
| 28 in the case of Openmoko we know that the hardware features a flash chip with | 39 in the case of Openmoko we know that the hardware features a flash chip with |
| 29 70 ns access time (the combined flash+RAM chip is K5A3281CTM-D755, with the | 40 70 ns access time (the combined flash+RAM chip is K5A3281CTM-D755, with the |
| 30 suffix meaning 70 ns access time for flash and 55 ns for RAM), and in the case | 41 suffix meaning 70 ns access time for flash and 55 ns for RAM), and in the case |
| 31 of Compal phones it is highly unlikely that they used flash chips faster than | 42 of Compal phones it is highly unlikely that they used flash chips faster than |
| 32 70 ns, thus we have strong evidence that the access time spec is being violated | 43 70 ns, thus we have strong evidence that the access time spec is being violated |
| 33 by about 4 ns. It works in practice because the official specs are guaranteed | 44 by about 1.1 ns. It works in practice because the official specs are guaranteed |
| 34 worst-case numbers, but it is still wrong in the strict sense. | 45 worst-case numbers and the shortcoming is very small, but it is still wrong in |
| 46 the strict sense. | |
| 35 | 47 |
| 36 We have strong evidence that this WS=3 setting comes from TI's mainline | 48 We have strong evidence that this WS=3 setting comes from TI's mainline |
| 37 reference fw, as opposed to being customized by or for Openmoko or Compal. | 49 reference fw, as opposed to being customized by or for Openmoko or Compal. |
| 38 The evidence is in the following instruction sequence which appears verbatim- | 50 The evidence is in the following instruction sequence which appears verbatim- |
| 39 identical across Openmoko's, Mot C11x/12x and C139/140 firmware versions: | 51 identical across Openmoko's, Mot C11x/12x and C139/140 firmware versions: |
| 88 on them, and that chip version has no nCS4, only CS4 which is muxed with ADD22 | 100 on them, and that chip version has no nCS4, only CS4 which is muxed with ADD22 |
| 89 and used for the latter on the D-Sample. | 101 and used for the latter on the D-Sample. |
| 90 | 102 |
| 91 I further hypothetize that the above MEMIF settings were likely cast into code | 103 I further hypothetize that the above MEMIF settings were likely cast into code |
| 92 in the days of Calypso C05, and that the WS=3 setting was computed when the | 104 in the days of Calypso C05, and that the WS=3 setting was computed when the |
| 93 ARM7 core ran at 39 MHz. The combination of ARM7 at 39 MHz, WS=3 and the same | 105 ARM7 core ran at 39 MHz. The combination of ARM7 at 39 MHz, WS=3 and the more |
| 94 tda+tsu = 10.5 ns adjustment from the available cal000_a.pdf document | 106 generous tda+tsu = 10.5 ns adjustment from the older cal000_a.pdf document |
| 95 (officially corresponding to Calypso C035 F751774) gives an access time of | 107 (officially corresponding to Calypso C035 F751774) gives an access time of |
| 96 92 ns, which is very sensible. The hypothesis further goes that later TI moved | 108 92 ns, which is very sensible. The hypothesis further goes that later TI moved |
| 97 to Calypso C035 silicon and started running the ARM7 core at 52 MHz, but the WS | 109 to Calypso C035 silicon and started running the ARM7 core at 52 MHz, but the WS |
| 98 setting was never changed (overlooked), and the 92 ns access time turned into a | 110 setting was never changed (overlooked), and the 92 ns access time turned into a |
| 99 mere 66 ns. The latter works with 70 ns memories in practice despite being | 111 mere 68.92 ns. The latter works with 70 ns memories in practice despite being |
| 100 strictly incorrect (negative margin), and so the error escaped notice. | 112 strictly incorrect (negative margin), and so the error escaped notice. |
| 101 | 113 |
| 102 Solution adopted for FreeCalypso | 114 Solution adopted for FreeCalypso |
| 103 ================================ | 115 ================================ |
| 104 | 116 |
