N900 Hardware Subsystems
There are many interacting hardware subsystems in the N900.
These can be split roughly into several areas.
Contents |
[edit] Audio
[edit] Software
Most of the audio on the N900 is handled by gstreamer and PulseAudio. See the API documentation on sound
[edit] Main Speakers
[edit] Earpiece
[edit] Headphones
The headphone amplifier is a TPA6130a2 manufactured by Texas Instruments.
[edit] Composite out
[edit] FM radio transmitter
Main article: N900 FM radio transmitter
[edit] FM radio receiver
Main article: N900 FM radio receiver
[edit] Bluetooth audio
[edit] Video
The GPU is a SGX530 licensed from Imagination Technologies.
[edit] Display
[edit] Built in LCD
Main article: N900 LCD panel
[edit] Composite out
[edit] Front camera (VGA)
Main article: N900 VGA camera
[edit] Rear camera (5MP)
Main article: N900 camera sensor
[edit] Rear camera autofocus
Main article: N900 Hardware Autofocus
[edit] Rear camera LED flash
Main article: N900 Hardware Flash Torch
[edit] Rear camera warning light
[edit] Rear camera shutter
[edit] USB
Main article: N900 Hardware USB
[edit] USB socket
Main article: N900 Hardware USB Socket
[edit] User interaction
[edit] Touchscreen
The touch screen controller is a TSC 2005.
[edit] Accelerometer
Main article: N900 accelerometer
[edit] Switches
[edit] Lock Switch
[edit] Headset Switch
[edit] Jack Switch
[edit] Camera Button
[edit] Power Button
[edit] Volume control
[edit] Rear cover presence switch
[edit] Camera cover
[edit] Keyboard
Matrix keyboard connected to row[7:0] x col[7:0] dedicated matrixscanner IO at GAIA.
All QCOL traces and QROW7 trace are equipped with ESD protection against static discharge.
Each switch under a key is connected to one col and one row trace
(QCOL-> 7 6 5 4 3 2 1 0) QROW7: VOL- VOL+ I QROW6: U QROW5: Y QROW4: Shft Fn CTRL Rght Down T QROW3: Left SPC M N B V R QROW2: C X Z CR Up . E QROW1: L K J H G F D W QROW0: S A Del , P O Q
For example pressing W connects QCOL0 to QROW1.
The matrix controller applies a certain level (say +3V) to first col QCOL0 and checks which rows are going to same level (QROW1 for 'W'). Then next col is the one to get +3V, and so on.
For Shift-X QCOL6 will pull up QROW4 and QROW2. For Shift-T QCOL6 and QCOL0 will pull up QROW4.
Now the nasty part of it:
Shift-Fn-K means QCOL5 will pull up QROW4, and QCOL6 will pull up QROW4 and QROW1. BUT: when QROW4 is pulled high by QCOL5, then via the closed Shift key QROW4 will pull high QCOL6, and QCOL6 will pull high QROW1 via K switch. So the matrix controller will see QROW4 and QROW1 both be high, for either of QCOL5 and QCOL6, which looks like 4 keys shift, Fn, K, and(!) J are pressed. Situation for Shift-Fn-J is absolutely identical, and so Sh-Fn-J and Sh-Fn-K are not distinguishable.
for 3-key tupels the combinations are:
Sh-Fn-J/K
Sh-Fn-X/Z
Sh-CTL-K/H
Sh-CTL-A/Del
Fn-CTL-Space/M
Fn-CTL-J/H
Looking at this matrix, we notice two things:
1: Nokia missed to give real dedicated col-lines to the qualifier keys, though there would have been plenty, by simply arranging the keys in matrix in a smarter way. That would have completely avoided the above described N-key rollover issue
Another common method to fix this problem is to use diodes in series with the key switches. A diode for Ctrl, Shift, and Fn would be just enough here, adding to the BOM with only 3 parts a 2ct each.
2: U has its own row, and U is used for flashing (USB-flashing mode). Coincidence?
Let's assume Nokia EE thought (for whatever weird reason) it might be clever to have a dedicated row for U (so they just pull high QCOL0 in NOLO bootloader and check the 8 row lines by reading in that byte). Then we might start to wonder what's with Y. And with I? And with T R W E Q? Nota bene press&hold multiple of those keys will always still deliver a nice clean easy-to-read 8bit result, on the presumed test during boot in NOLO
(p.s: maybe the rows are driven high - or even low - and the cols are the sensing inputs. I've not checked this, as it doesn't change anything in the basic function principle and neither changes the problem with N-key rollover. For the NOLO speculations it makes more sense to have inputs on rows and drivers on cols, though)
[edit] Keyboard Slide
[edit] Proximity sensor
[edit] Ambient Light Meter
Main article: N900 light meter
[edit] Power management
Main article: N900 Hardware Power management
[edit] Battery
[edit] Charge meter
Main article: N900 Hardware Charge Meter
[edit] Battery Charger
Main article: N900 Hardware Battery Charger
[edit] Gaia
[edit] CPU
[edit] Phone
Main article: N900 Hardware Phone
[edit] GPS
Main article: N900 Hardware GPS
[edit] 2G/3G phone module
[edit] SIM
[edit] Local Network
[edit] Bluetooth
Main article: N900 Hardware Bluetooth
[edit] Wifi
Main article: N900 Hardware Wifi
[edit] USB Networking
[edit] Computing
[edit] CPU
Main article: N900 CPU
[edit] Many functional blocks of the CPU
[edit] Chipset
Main article: N900 Hardware Chipset
[edit] Memory
[edit] Flash Memory
[edit] Internal 32GB eMMC
[edit] Internal 'OneNand' 256MB
[edit] External microSD card
[edit] RAM
[edit] Other hardware (needs merging into hierarchy above)
(Click on device for wiki page with more information)
| Device | Model (Manufacturer) | Description | Driver |
|---|---|---|---|
| LED Controller | LP5523 | ||
| Digital Audio Data Serial Interface | TLV320AIC3x |
For those wanting to hack on the hardware drivers, the Maemo Kernel source code can be downloaded here:
http://repository.maemo.org/pool/fremantle/free/k/kernel/
- This page was last modified 13:23, 15 July 2011.
- This page has been accessed 9,891 times.
