N900 Hardware Subsystems

(Flash Memory)
m (Protected "N900 Hardware Subsystems": Excessive vandalism ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite)))
 
(40 intermediate revisions not shown)
Line 1: Line 1:
-
There are many interacting hardware subsystems in the n900.
+
There are many interacting hardware subsystems in the [[Nokia N900|N900]].
These can be split roughly into several areas.
These can be split roughly into several areas.
-
=Audio=
+
==Audio==
-
==Software==
+
 
-
Most of the audio on the n900 is handled by gstreamer and pulseaudio.
+
===Software===
 +
 
 +
Most of the audio on the N900 is handled by gstreamer and PulseAudio.
See [[Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Introduction|the API documentation on sound]]
See [[Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Introduction|the API documentation on sound]]
-
==Main Speakers==
+
===Main Speakers===
-
==Earpiece==
+
===Earpiece===
-
==Headset==
+
===Headphones===
-
==Composite out==
+
 
-
==Bluetooth audio==
+
The [[N900 headphone amplifier|headphone amplifier]] is a TPA6130a2 manufactured by Texas Instruments.
-
=Video=
 
-
==Display==
 
-
===Built in LCD===
 
===Composite out===
===Composite out===
-
==Front camera (VGA)==
 
-
==Rear camera (5MP)==
 
-
===Rear camera LED flash===
 
-
===Rear camera warning light===
 
-
===Rear camera shutter===
 
-
=USB=
 
-
=User interaction=
+
===FM radio transmitter===
-
==Accelerometer==
+
 
-
==Lock Switch==
+
{{main|N900 FM radio transmitter}}
-
==Headset Switch==
+
 
-
==Jack Switch==
+
===FM radio receiver===
-
==Camera Button==
+
 
-
==Power Button==
+
{{main|N900 FM radio receiver}}
-
==Volume control==
+
 
-
==Rear cover presence switch==
+
===Bluetooth audio===
-
==Camera cover==
+
 
-
==Keyboard==
+
==Video==
-
===Keyboard Slide===
+
 
-
==Proximity sensor==
+
The GPU is a SGX530 licensed from Imagination Technologies.
 +
 
 +
===Display===
 +
====Built in LCD====
 +
 
 +
{{main|N900 LCD panel}}
 +
 
 +
====Composite out====
 +
===Front camera (VGA)===
 +
 
 +
{{main|N900 VGA camera}}
 +
 
 +
===Rear camera (5MP)===
 +
 
 +
{{main|N900 camera sensor}}
 +
 
 +
====Rear camera autofocus====
 +
 
 +
{{main|N900 Hardware Autofocus}}
 +
 
 +
====Rear camera LED flash====
 +
 
 +
{{main|N900 Hardware Flash Torch}}
 +
 
 +
====Rear camera warning light====
 +
====Rear camera shutter====
 +
 
 +
==USB==
 +
 
 +
{{main|N900 Hardware USB}}
 +
 
 +
===USB socket===
 +
 
 +
{{main|N900 Hardware USB Socket}}
 +
 
 +
==User interaction==
 +
 
 +
===Touchscreen===
 +
 
 +
The touch screen controller is a [http://www.ti.com/product/tsc2005 TSC 2005].
 +
 
 +
===Accelerometer===
 +
 
 +
{{main|N900 accelerometer}}
 +
 
 +
===Switches===
 +
====Lock Switch====
 +
====Headset Switch====
 +
====Jack Switch====
 +
====Camera Button====
 +
====Power Button====
 +
====Volume control====
 +
====Rear cover presence switch====
 +
====Camera cover====
 +
 
 +
===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
 +
 
 +
{| class="wikitable" border=1
 +
!(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.<br>
 +
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:<br>
 +
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.<br>
 +
for 3-key tupels the combinations are:<br>
 +
Sh-Fn-J/K<br>
 +
Sh-Fn-X/Z<br>
 +
Sh-CTL-K/H<br>
 +
Sh-CTL-A/Del<br>
 +
Fn-CTL-Space/M<br>
 +
Fn-CTL-J/H<br>
 +
 
 +
Looking at this matrix, we notice two things:<br>
 +
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<br>
 +
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.<br>
 +
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)
 +
 
 +
====Keyboard Slide====
 +
 
 +
===Proximity sensor===
 +
 
 +
===Ambient Light Meter===
 +
 
 +
{{main|N900 light meter}}
 +
 
 +
==Power management==
 +
 
 +
{{main|N900 Hardware Power management}}
 +
 
 +
===Battery===
 +
 
 +
====Charge meter====
 +
 
 +
{{main|N900 Hardware Charge Meter}}
 +
 
 +
===Battery Charger===
 +
 
 +
{{main|N900 Hardware Battery Charger}}
 +
 
 +
===Gaia===
 +
===CPU===
 +
 
 +
==Phone==
 +
 
 +
{{main|N900 Hardware Phone}}
 +
 
 +
===GPS===
 +
 
 +
{{main|N900 Hardware GPS}}
 +
 
 +
===2G/3G phone module===
 +
===SIM===
 +
 
 +
==Local Network==
 +
===Bluetooth===
 +
 
 +
{{main|N900 Hardware Bluetooth}}
 +
 
 +
===Wifi===
 +
 
 +
{{main|N900 Hardware Wifi}}
 +
 
 +
===USB Networking===
 +
 
 +
==Computing==
 +
===CPU===
 +
 
 +
{{main|N900 CPU}}
 +
 
 +
====Many functional blocks of the CPU====
 +
====Chipset====
 +
 
 +
{{main|N900 Hardware Chipset}}
-
==Ambient Light Meter==
+
===Memory===
 +
====Flash Memory====
 +
=====Internal 32GB eMMC=====
 +
=====Internal 'OneNand' 256MB=====
 +
=====External microSD card=====
-
=Power management=
+
====RAM====
-
==Battery==
+
-
===Charge meter===
+
-
==Battery Charger==
+
-
==Gaia==
+
-
==CPU==
+
-
=Phone=
+
==Other hardware (needs merging into hierarchy above)==
-
==GPS==
+
-
==2G/3G phone module==
+
-
==SIM==
+
-
=Local Network=
+
(Click on device for wiki page with more information)
-
==Bluetooth==
+
-
==Wifi==
+
-
==USB Networking==
+
-
=Computing=
+
{| class="wikitable" border="1" cellpadding="2"
-
==CPU==
+
!Device
-
===Chipset===
+
!Model (Manufacturer)
-
==Memory==
+
!Description
-
===Flash Memory===
+
!Driver
-
====Internal 32GB emmc====
+
|-
-
====Internal 'OneNand' 256MB====
+
|[[N900 Hardware LED|LED Controller]] || LP5523  || ||
-
====External microSD card====
+
|-
 +
|[[N900 Hardware Digital Audio Data Serial Interface|Digital Audio Data Serial Interface]] || TLV320AIC3x || ||
 +
|-
 +
|}
-
===RAM===
+
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/
[[Category:N900 Hardware]]
[[Category:N900 Hardware]]

Latest revision as of 23:45, 24 March 2018

There are many interacting hardware subsystems in the N900.

These can be split roughly into several areas.

Contents

Audio

Software

Most of the audio on the N900 is handled by gstreamer and PulseAudio. See the API documentation on sound

Main Speakers

Earpiece

Headphones

The headphone amplifier is a TPA6130a2 manufactured by Texas Instruments.

Composite out

FM radio transmitter

Main article: N900 FM radio transmitter


FM radio receiver

Main article: N900 FM radio receiver


Bluetooth audio

Video

The GPU is a SGX530 licensed from Imagination Technologies.

Display

Built in LCD

Main article: N900 LCD panel


Composite out

Front camera (VGA)

Main article: N900 VGA camera


Rear camera (5MP)

Main article: N900 camera sensor


Rear camera autofocus

Main article: N900 Hardware Autofocus


Rear camera LED flash

Main article: N900 Hardware Flash Torch


Rear camera warning light

Rear camera shutter

USB

Main article: N900 Hardware USB


USB socket

Main article: N900 Hardware USB Socket


User interaction

Touchscreen

The touch screen controller is a TSC 2005.

Accelerometer

Main article: N900 accelerometer


Switches

Lock Switch

Headset Switch

Jack Switch

Camera Button

Power Button

Volume control

Rear cover presence switch

Camera cover

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)

Keyboard Slide

Proximity sensor

Ambient Light Meter

Main article: N900 light meter


Power management

Main article: N900 Hardware Power management


Battery

Charge meter

Main article: N900 Hardware Charge Meter


Battery Charger

Main article: N900 Hardware Battery Charger


Gaia

CPU

Phone

Main article: N900 Hardware Phone


GPS

Main article: N900 Hardware GPS


2G/3G phone module

SIM

Local Network

Bluetooth

Main article: N900 Hardware Bluetooth


Wifi

Main article: N900 Hardware Wifi


USB Networking

Computing

CPU

Main article: N900 CPU


Many functional blocks of the CPU

Chipset

Main article: N900 Hardware Chipset


Memory

Flash Memory

Internal 32GB eMMC
Internal 'OneNand' 256MB
External microSD card

RAM

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/