HardwareCalypso » History » Version 13
nion, 02/19/2016 10:48 PM
Name changed from Calypso to Hardware/Calypso
1 | 5 | laforge | [[PageOutline]] |
---|---|---|---|
2 | 1 | laforge | = Calypso Digital Baseband = |
3 | |||
4 | The Calypso Digital Base Band chip is a popular DBB implementation for inexpensive feature phones. |
||
5 | |||
6 | 5 | laforge | The register-level manuals seem to have leaked at some point and are available from cryptome.org |
7 | 6 | laforge | at http://cryptome.org/ti-calypso2.pdf and http://cryptome.org/ti-calypso1.pdf |
8 | 5 | laforge | |
9 | 8 | laforge | As cryptome.org is currently suffering legal battles due to Microsoft stupidity, |
10 | you can use http://cryptome.quintessenz.org/mirror/ti-calypso1.pdf / http://cryptome.quintessenz.org/mirror/ti-calypso2.pdf |
||
11 | 7 | laforge | |
12 | 1 | laforge | == Variants == |
13 | * Calypso G2 C035 |
||
14 | * Calypso G2 C035 Lite (D751749GHH) |
||
15 | * Like C035, only 256kBytes of internal memory |
||
16 | 2 | laforge | |
17 | 12 | nion | == DSP == |
18 | |||
19 | More information on the DSP used in the Calypso DBB is available on [wiki:Hardware/CalypsoDSP]. |
||
20 | |||
21 | 9 | vogelchr | == CPU == |
22 | |||
23 | The CPU embedded in the calypso chipset is a ARM7TDMI. Details documents about this CPU is available from the ARM infocenter at [http://infocenter.arm.com/help/index.jsp]. |
||
24 | |||
25 | 3 | laforge | == Memory Map == |
26 | |||
27 | 4 | roh | * nCS0 0x0000'0000 ... 0x007f'ffff (C123: external NOR flash) |
28 | 3 | laforge | * nCS6 0x0080'0000 ... 0x00bf'ffff (internal SRAM, in case of calypso lite only 256kBytes) |
29 | * nCS1 0x0100'0000 ... 0x017f'ffff (C123: external SRAM) |
||
30 | 2 | laforge | |
31 | == Integrated Peripherals == |
||
32 | 7 | laforge | == Integrated Peripherals == |
33 | === TPU (Time Processing Unit) === |
||
34 | * A programmable micro-engine clocked at GSM quarter-bit clock |
||
35 | === MODEM UART === |
||
36 | * The UART that is typically connected to a PC or the application processor in a smartphone |
||
37 | === IRDA UART === |
||
38 | * The UART that is either connected to IRDA or for diagnostics/programming |
||
39 | === RIF (Radio Interface) === |
||
40 | * Connects to the synchronous bi-directional BSP (Baseband Serial Port) |
||
41 | === DPLL + clock block === |
||
42 | * Generate clocks for DSP, ARM and all peripherals |
||
43 | === GEA (GPRS Encryption Algorithm) === |
||
44 | * Encrypts/Decrypts data according to the proprietary GEA algorithm |
||
45 | === Watchdog timer === |
||
46 | === Interrupt Controller === |
||
47 | === Memory interface (SRAM/ROM) === |
||
48 | === DMA controller === |
||
49 | * Only usable for UART and RIF, can only DMA to small API RAM memory region |
||
50 | === SIM card controller === |
||
51 | * Connects to the SIM card socket in the phone |
||
52 | === TSP controller (Time Serial Port) === |
||
53 | * Controls the TSP, which controls the sequencing of all external peripherals like ABB, RF chip, RF PA, Antenna Switch |
||
54 | === RTC clock === |
||
55 | * A pretty standard realtime clock |
||
56 | === ULPD (Ultra Low Power Device) === |
||
57 | * Responsible for enabling the phone to go to lowest-possible power mode while IDLE, but still waking up at the right point to receive important data (like paging channel) from the BTS |
||
58 | === I2C Master controller === |
||
59 | * Typically connects to external peripherals like LCD (if any) |
||
60 | 2 | laforge | |
61 | The controller has two oddities: |
||
62 | 1 | laforge | * It assumes that the peripheral has an address byte. If your peripheral doesn't, you have to |
63 | write the first byte into the address register and not the FIFO |
||
64 | * You cannot under-fill the FIFO, i.e. if you write 8 bytes into the 16byte deep fifo, the controller |
||
65 | 2 | laforge | will transmit 16 bytes rather than 8. Therefore, always limit the FIFO depth to your write size! |
66 | 13 | nion | More details about this can be seen at [wiki:Hardware/CalypsoI2CFIFO] |
67 | 7 | laforge | === SPI Master controller === |
68 | * Connects to USP of ABB and possibly other external peripherals |
||
69 | === TIMER1 / TIMER2 general purpose timers === |
||
70 | 2 | laforge | The timer input clock is not mentioned in the data sheet. It seems to be 13MHz / 32, i.e. 406.25kHz |
71 | 7 | laforge | === PWL (PWM for Light) === |
72 | * connected to the screen/keypad backlight |
||
73 | === PWT (PWM for Tones) === |
||
74 | * connected to a buzzer for ringtone generation |
||
75 | 10 | steve-m | |
76 | 11 | steve-m | === JTAG Interface === |
77 | |||
78 | The Calypso has an ARM7TDMI JTAG interface, which is exposed on phones like the Motorola [wiki:MotorolaC115 C115], [wiki:MotorolaC155 C155], [wiki:SonyEricssonJ100i Sony Ericsson J100i] and the [wiki:PirelliDPL10 Pirelli DP-L10]. |
||
79 | With standard ARM JTAG debuggers like OpenOCD, halting the core does not work out-of-the-box, because ARM instruction 0xb needs to be executed first (which is an proprietary extension to the ARM7TDMI TAP-Controller). It is unclear what this instruction does exactly. |
||
80 | The OpenOCD configuration file along with the corresponding svf-file is attached to this page. |
||
81 | 10 | steve-m | |
82 | === Debug traces === |
||
83 | |||
84 | The chip has very tiny debug traces on a small flex-pcb around the 4 sides of the chip. |
||
85 | Which trace goes to which ball can be seen on this scan: http://www.steve-m.de/pictures/calypso_bottom.jpg |