Difference between revisions of "Hardware"

From 3dbrew
Jump to navigation Jump to search
(94 intermediate revisions by 21 users not shown)
Line 1: Line 1:
{{stub}}
+
This page lists and describes the hardware found inside the Nintendo 3DS. Many of these parts are custom made and are expanded upon here or in other pages.
 +
 
 +
== Common hardware ==
 +
{| class="wikitable"
 +
! Type !! Description
 +
|-
 +
| ARM11 Processor Core || Old3DS: [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360f/index.html ARM11 2x MPCore & 2x VFPv2 Co-Processor] 268MHz (268,111,856.0 ± 2<sup>-32</sup> Hz, i.e. exactly twice the clock rate of the ARM9).
 +
 
 +
New3DS: 4x MPCore, 4x VFPv2, able to run up to 804MHz (see below). It also has an optional 2MB L2 cache.
 +
|-
 +
| ARM9 Processor Core || [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0201d/index.html ARM946] 134MHz (134,055,927.9 ± 2<sup>-32</sup> Hz),
 +
|-
 +
| GPU || [http://en.wikipedia.org/wiki/PICA200 DMP PICA] 268MHz,
 +
|-
 +
| VRAM || 6 MB within SoC.
 +
|-
 +
| Top screen || 800x240, with only 400 usable pixels per eye per line.
 +
|-
 +
| Bottom screen || 320x240, with resistive touch overlay.
 +
|-
 +
| DSP || [https://twitter.com/CEVADSP/status/177172880918986752 CEVA TeakLite]. 134Mhz. 24ch 32728Hz sampling rates.
 +
|}
  
This page lists and describes the hardware found inside the Nintendo 3DS. Many of these parts are custom made and are expanded upon here or in other pages.
+
New3DS exclusives are able to clock the CPU at 804MHz, but this appears to be limited to the currently running application/app cores. Timed by running svcGetSystemTick on either side of a long idle loop to stay in the current process context. svcGetSystemTick uses a tick counter running at 268MHz in this mode.
 +
 
 +
On New3DS: when Home Menu is active, the system runs at 804MHz. For everything else, it's 268MHz, except when the app(let) has the required flag set. See [[NCCH/Extended_Header|here]] and [[PDN_Registers|here]] for details, regarding clock-rate and cache.
  
 +
For New3DS-only there are multiple clock-rate multiplier values available in [[PDN_Registers|hardware]], but since the relevant code is only implemented in the New3DS ARM11-kernel, the only non-normal clock-rate available with official kernel code is 3x.
  
 
== Specifications ==
 
== Specifications ==
 
 
{| class="wikitable"
 
{| class="wikitable"
! Type !! Name !! Datasheet !! Source
+
! Type !! 3DS !! 3DSXL !! 2DS !! N3DS !! N3DSXL !! N2DSXL
 +
|-
 +
| Model || CTR-001 || SPR-001 || FTR-001 || KTR-001 || RED-001 || JAN-001
 
|-
 
|-
| SoC || Nintendo 1048 0H (Custom): CPU, GPU, VRAM & DSP all on one chip. || N/A || N/A
+
| SoC || CPU CTR
 +
|| CPU CTR A
 +
CPU CTR
 +
|| CPU CTR B  || CPU LGR A || CPU LGR A  || CPU LGR A
 +
 
 
|-
 
|-
| ARM11 Processor Core || ARM11 MPCore 2x 268MHz(~268123480 Hz) & 2x VFP Co-Processor || [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360f/index.html] || [11]
+
| FCRAM || [https://web.archive.org/web/20221022124807/https://www.fujitsu.com/downloads/MICRO/fma/pdf/MB81EDS516545_e511463.pdf 2x64MB Fujitsu MB82M8080-07L] || Fujitsu MB82DBS16641 || Fujitsu MB82DBS1664 || ?? || Fujitsu MB82MK9A9A || Fujitsu MB82MK9A9A
 
|-
 
|-
| ARM9 Processor Core || ARM946
+
| Top Screen || 3.53 in, 3D || 4.88 in, 3D || 3.53 in cropped from a single panel ||  3.88 in, 3D || 4.88 in, 3D || 4.88 in (?)
 
|-
 
|-
| GPU || [http://en.wikipedia.org/wiki/PICA200 DMP PICA] 268MHz || N/A || [11]
+
| Bottom Screen || 3.00 in || 4.18 in || 3.00 in cropped from a single panel || 3.33 in || 4.18 in || 4.18 in (?)
 
|-
 
|-
| DSP || 134Mhz. 24ch 32728Hz sampling rates. || N/A || [11]
+
| Storage ||colspan="2"| Toshiba THGBM2G3P1FBAI8 1GB ||colspan="1"| Changed between O3DS and N3DS parts depending on production date ||colspan="2"| Samsung KLM4G1YEQC 4GB (in 1.3GiB SLC mode) or Toshiba THGBMBG4P1KBAIT 2GB (MLC, approx. 1.8GiB usable) ||colspan="1"| Samsung KLM4G1FEPD 4GB
 
|-
 
|-
| VRAM || 6 MB within SoC. Independent of system memory (FCRAM). || N/A || [11]
+
| Speaker, Microphone, Circlepad, Touch controller || TI PAIC3010B 0AA37DW || ?? || ?? || TI AIC3010B 39C4ETW  || TI AIC3010D 48C01JW || ??
 
|-
 
|-
| FCRAM || 2x64MB Fujitsu MB82M8080-07L ||[http://crediar.no-ip.com/sg_/download.php?id=d67d1c][http://edevice.fujitsu.com/fj/DATASHEET/e-ds/e511463.pdf][http://edevice.fujitsu.com/jp/datasheet/j-ds/j511463.pdf]|| [5]
+
| Gyroscope || [https://www.sparkfun.com/datasheets/Sensors/Gyro/PS-ITG-3200-00-01.4.pdf Invensense ITG-3270 MEMS Gyroscope] || ?? || ?? || ?? || ?? || ??
 
|-
 
|-
| Storage || Toshiba THGBM2G3P1FBAI8 1GB NAND Flash || N/A || N/A
+
| Accelerometer || ST Micro 2048 33DH X1MAQ Accelerometer Model LIS331DH || ?? || ?? || ?? || ?? || ??
 
|-
 
|-
| Power Management || Texas Instruments PAIC3010B 0AA37DW || N/A || FCC filing
+
| Infrared IC || NXP S750 0803 TSD031C || ?? || ?? || ?? || NXP S750 1603 TSD438C || NXP S750 0210 TSD651C
 
|-
 
|-
| Gyroscope || Invensense ITG-3270 MEMS Gyroscope || [http://dl-web.dropbox.com/u/20520664/references/PS-ITG-3200-00-01.4.pdf] || N/A
+
| Custom Microcontroller || Renesas UC CTR || ?? || Renesas UC CTR 324KM47 KG10  || Renesas UC KTR || Renesas UC KTR 442KM13 TK14 || ??
 
|-
 
|-
| Accelerometer || ST Micro 2048 33DH X1MAQ Accelerometer Model LIS331DH || [http://dl.dropbox.com/u/20520664/references/CD00213470.pdf] || N/A
+
| PMIC? || TI 93045A4 OAAH86W || ?? || ?? || TI 93045A4 38A6TYW G2 || TI 93045A4 49AF3NW G2 || TI 93045A4 72ASRHW G2
 
|-
 
|-
| Wifi || 802.11b/g Atheros AR6014 || [http://www.db.pokestation.net/3DS/Wi-Fi%20module%20pinouts.pdf] || N/A
+
| Charging IC ||colspan="6"| CKP TI [http://www.ti.com/lit/ds/symlink/bq24072.pdf BQ24072]
 
|-
 
|-
| Infrared IC || NXP infrared IC, "S750 0803 TSD031C" || N/A || [10]
+
| Wifi || Atheros AR6014 || ?? || ?? || ?? || Atheros AR6014G-AL1C || ??
 
|-
 
|-
| Auxiliary Microcontroller || Renesas Electronics UC CTR, custom Nintendo microcontroller || N/A || N/A
+
| Wifi SPI Flash
 +
| Raw ID data: 20 58 || ?? || ?? || Raw ID data: 62 62 || ?? || ??
 
|}
 
|}
  
Line 45: Line 75:
  
 
* There is a trove of data on the FCC website at [https://fjallfoss.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&RequestTimeout=500&calledFromFrame=N&application_id=462292&fcc_id=%27EW4DWMW028%27].
 
* There is a trove of data on the FCC website at [https://fjallfoss.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&RequestTimeout=500&calledFromFrame=N&application_id=462292&fcc_id=%27EW4DWMW028%27].
 +
 +
* [12] This IC is somewhat similar to [http://www.alldatasheet.net/datasheet-pdf/pdf/347838/NXP/SC16IS750IBS.html this].
 +
 +
* The Raw ID data for Wifi SPI Flash is from command 0x9F, RDID.
  
 
== FCRAM ==
 
== FCRAM ==
Line 62: Line 96:
 
== GPU ==
 
== GPU ==
  
As mentioned, DMP's (Digital Media Proffesionals) PICA 200, 268Mhz. This GPU supports OpenGL ES 1.1.
+
Designed by Digital Media Professionals Inc. (DMP) and codenamed PICA200, 268Mhz.
 +
 
 +
Block diagram of an ULTRAY2000 based architecture PICA200:
  
 
[[File:Pica200BlockDiagram.png]]
 
[[File:Pica200BlockDiagram.png]]
  
Block diagram of an ULTRAY2000 based architecture PICA200
+
PICA200 is compatible with OpenGL ES 1.1. It furthermore provides unique functionality for:
 +
* Per-fragment lighting ("Lighting Maestro")
 +
* Hard- and soft-shadowing ("Shadow Maestro")
 +
* Polygon subdivision ("Figure Maestro")
 +
* Bump mapping and procedural textures ("Mapping Maestro")
 +
* Rendering of gaseous objects ("Particle Maestro")
 +
 
 +
Some parts of the extended functionality are provided in hardware by an extended geometry pipeline. Most importantly, PICA200 has three programmable vertex processors. There is furthermore a unit called [[GPU/Primitive_Engine|Primitive Engine]], which is a geometry shader unit (using the same instruction set as vertex shaders) with support for variable-size primitives. The Primitive Engine functionality may be disabled, and the geometry shader unit then acts as a fourth vertex processor. See [[Shader_Instruction_Set]] for more information on the shader instruction set.
 +
 
 +
[[GPU/Fragment Lighting|Fragment lighting]] is implemented as an optional pipeline step during pixel processing. It's implemented by having the vertex shader output an additional attribute describing the transformation (represented by a quaternion) to surface-local space. This per-vertex quaternion can then be interpolated across screen space to calculate dot products relevant for lighting (e.g. light vector dot normal vector). To provide support for advanced lighting models, these dot products are used as indices into programmable lookup tables. With this setup, PICA200 in particular supports the shading models Blinn-Phong, Cook-Terrance, Ward, and microfacet-based BRDF-models.
 +
 
 +
PICA200 supports four texture units, the fourth of which is used exclusively for [[GPU/Procedural Texture Generation|procedural texture generation]].
 +
 
 +
== SDIO controller ==
 +
 
 +
Nintendo recommends SD cards up to 32 GB. The internal SDIO controller seems to support SD cards up to 2.199 Terabyte (32-bit sector number). It's unknown if 2TB works. Up to 1TB has been tested and works, however larger SD sizes increase system boot time. The larger the SD capacity, the greater the bootup slowdown. 64-128GB tends to be the sweet spot for most users, with only an extra 0.5-1.0 seconds added to boot time as the tradeoff for the larger size.
 +
 
 +
SD cards should be formatted FAT32 with a 64KB unit size for maximum compatibility.
  
 
== Images ==
 
== Images ==
Line 94: Line 147:
 
[[Image:CTR_NAND_pinout_XL.jpg|500px]]
 
[[Image:CTR_NAND_pinout_XL.jpg|500px]]
  
 +
==== 2DS ====
 +
 +
[[Image:2DSeMMC.jpg|500px]]
 +
 +
==== New 3DS ====
 +
 +
[[Image:N3DSeMMC.jpg]]
 +
 +
==== New 3DS XL ====
 +
 +
[[Image:N3DSXLeMMC.jpg]]
  
 
=== WiFi dongle pinout ===
 
=== WiFi dongle pinout ===
Line 105: Line 169:
 
This is the interface for the 'NEW' WiFi module (based on Atheros AR6002) first included in DSi.
 
This is the interface for the 'NEW' WiFi module (based on Atheros AR6002) first included in DSi.
  
The proprietary and by now ancient DS-mode WiFi is colored yellow, pins are unknown.
+
The proprietary DS-mode WiFi is colored yellow, pins are unknown.
  
I2C eeprom is colored blue:
+
I²C eeprom is colored blue:
 
* SCL
 
* SCL
 
* SDA
 
* SDA
Line 119: Line 183:
 
* NC
 
* NC
  
=== Auxiliary Microntroller ===
+
=== Auxiliary Microcontroller (MCU) ===
 
[[Image:CTR_UC.png|600px]]
 
[[Image:CTR_UC.png|600px]]
  
 
Monitors HOME button, WiFi switch, 3D slider, volume control slider.
 
Monitors HOME button, WiFi switch, 3D slider, volume control slider.
Controls LEDs, various power supplies.
+
Controls LEDs, various power supplies via an I²C connection to the PMIC.
 +
 
 +
Two I²C buses are attached to the MCU. For one, the SoC is the master; for the other, the MCU is the master.
  
Devices attached to I2C bus:
+
Devices attached to MCU master I²C bus:
* UC (master?)
+
* MCU (master)
 +
* Fuel Gauge
 
* Accelerometer (slave address 0x18)
 
* Accelerometer (slave address 0x18)
* SoC (master? slave?)
+
* PMIC
 +
* maybe more?
 +
 
 +
Devices attached to the SoC master I²C bus:
 +
* SoC (master)
 +
* MCU
 +
* LCD
 +
* Camera
 +
* QTM (New3DS-only)
 +
 
 +
The MCU uses the [http://mcs.uwsuper.edu/sb/327/Resources/RL78.pdf RL78 ISA].
 +
 
 +
The MCU uses some custom Special Function Registers, but documentation for much of the hardware protocol/general SFRs can be found [http://courses.ee.sun.ac.za/Computer_Systems_245/Dokumentasie/RL78%20hardware%20manual%20(registers).pdf here].

Revision as of 15:32, 15 October 2023

This page lists and describes the hardware found inside the Nintendo 3DS. Many of these parts are custom made and are expanded upon here or in other pages.

Common hardware

Type Description
ARM11 Processor Core Old3DS: ARM11 2x MPCore & 2x VFPv2 Co-Processor 268MHz (268,111,856.0 ± 2-32 Hz, i.e. exactly twice the clock rate of the ARM9).

New3DS: 4x MPCore, 4x VFPv2, able to run up to 804MHz (see below). It also has an optional 2MB L2 cache.

ARM9 Processor Core ARM946 134MHz (134,055,927.9 ± 2-32 Hz),
GPU DMP PICA 268MHz,
VRAM 6 MB within SoC.
Top screen 800x240, with only 400 usable pixels per eye per line.
Bottom screen 320x240, with resistive touch overlay.
DSP CEVA TeakLite. 134Mhz. 24ch 32728Hz sampling rates.

New3DS exclusives are able to clock the CPU at 804MHz, but this appears to be limited to the currently running application/app cores. Timed by running svcGetSystemTick on either side of a long idle loop to stay in the current process context. svcGetSystemTick uses a tick counter running at 268MHz in this mode.

On New3DS: when Home Menu is active, the system runs at 804MHz. For everything else, it's 268MHz, except when the app(let) has the required flag set. See here and here for details, regarding clock-rate and cache.

For New3DS-only there are multiple clock-rate multiplier values available in hardware, but since the relevant code is only implemented in the New3DS ARM11-kernel, the only non-normal clock-rate available with official kernel code is 3x.

Specifications

Type 3DS 3DSXL 2DS N3DS N3DSXL N2DSXL
Model CTR-001 SPR-001 FTR-001 KTR-001 RED-001 JAN-001
SoC CPU CTR CPU CTR A

CPU CTR

CPU CTR B CPU LGR A CPU LGR A CPU LGR A
FCRAM 2x64MB Fujitsu MB82M8080-07L Fujitsu MB82DBS16641 Fujitsu MB82DBS1664 ?? Fujitsu MB82MK9A9A Fujitsu MB82MK9A9A
Top Screen 3.53 in, 3D 4.88 in, 3D 3.53 in cropped from a single panel 3.88 in, 3D 4.88 in, 3D 4.88 in (?)
Bottom Screen 3.00 in 4.18 in 3.00 in cropped from a single panel 3.33 in 4.18 in 4.18 in (?)
Storage Toshiba THGBM2G3P1FBAI8 1GB Changed between O3DS and N3DS parts depending on production date Samsung KLM4G1YEQC 4GB (in 1.3GiB SLC mode) or Toshiba THGBMBG4P1KBAIT 2GB (MLC, approx. 1.8GiB usable) Samsung KLM4G1FEPD 4GB
Speaker, Microphone, Circlepad, Touch controller TI PAIC3010B 0AA37DW ?? ?? TI AIC3010B 39C4ETW TI AIC3010D 48C01JW ??
Gyroscope Invensense ITG-3270 MEMS Gyroscope ?? ?? ?? ?? ??
Accelerometer ST Micro 2048 33DH X1MAQ Accelerometer Model LIS331DH ?? ?? ?? ?? ??
Infrared IC NXP S750 0803 TSD031C ?? ?? ?? NXP S750 1603 TSD438C NXP S750 0210 TSD651C
Custom Microcontroller Renesas UC CTR ?? Renesas UC CTR 324KM47 KG10 Renesas UC KTR Renesas UC KTR 442KM13 TK14 ??
PMIC? TI 93045A4 OAAH86W ?? ?? TI 93045A4 38A6TYW G2 TI 93045A4 49AF3NW G2 TI 93045A4 72ASRHW G2
Charging IC CKP TI BQ24072
Wifi Atheros AR6014 ?? ?? ?? Atheros AR6014G-AL1C ??
Wifi SPI Flash Raw ID data: 20 58 ?? ?? Raw ID data: 62 62 ?? ??
  • [11] Official Documentation
  • [5],[10] According to iFixit.com (source):
  • Datasheet for memory is for a chip in the same series, it has less memory than the one inside the 3DS (128mbits vs 512mbits).
  • There is a trove of data on the FCC website at [1].
  • [12] This IC is somewhat similar to this.
  • The Raw ID data for Wifi SPI Flash is from command 0x9F, RDID.

FCRAM

There is one FCRAM (Fast Cycle RAM) IC in the 3DS, produced by Fujitsu and branded as MB82M8080-07L. The Fujitsu MB82M8080-07L chip internally contains 2 dies, where each die is branded MB81EDS516545 and MB82DBS08645.

The MB81EDS516545 die is a CMOS Fast Cycle Random Access Memory (FCRAM) with Low Power Double Data Rate (LPDDR) SDRAM Interface containing 512MBit storage accessible in a 64-bit format. The MB81EDS516545 is suited for consumer applications requiring high data bandwidth with low power consumption.


SoC

The 3DS has much of it's internals housed in a SoC (System on Chip) just like it's predecessors. This is done to reduce build costs, cut down on power consumption, as well as make the PCB layout less complex and make the system harder to tamper with. The SoC, branded as the Nintendo 1048 0H, contains the CPU, GPU, DSP and VRAM.

According to official documents, the CPU used is a dual-core ARM11 CPU, clocked at 268MHz. One core is dedicated to system software, while the other is used for application programming, each known as the syscore and appcore, respectively.


GPU

Designed by Digital Media Professionals Inc. (DMP) and codenamed PICA200, 268Mhz.

Block diagram of an ULTRAY2000 based architecture PICA200:

Pica200BlockDiagram.png

PICA200 is compatible with OpenGL ES 1.1. It furthermore provides unique functionality for:

  • Per-fragment lighting ("Lighting Maestro")
  • Hard- and soft-shadowing ("Shadow Maestro")
  • Polygon subdivision ("Figure Maestro")
  • Bump mapping and procedural textures ("Mapping Maestro")
  • Rendering of gaseous objects ("Particle Maestro")

Some parts of the extended functionality are provided in hardware by an extended geometry pipeline. Most importantly, PICA200 has three programmable vertex processors. There is furthermore a unit called Primitive Engine, which is a geometry shader unit (using the same instruction set as vertex shaders) with support for variable-size primitives. The Primitive Engine functionality may be disabled, and the geometry shader unit then acts as a fourth vertex processor. See Shader_Instruction_Set for more information on the shader instruction set.

Fragment lighting is implemented as an optional pipeline step during pixel processing. It's implemented by having the vertex shader output an additional attribute describing the transformation (represented by a quaternion) to surface-local space. This per-vertex quaternion can then be interpolated across screen space to calculate dot products relevant for lighting (e.g. light vector dot normal vector). To provide support for advanced lighting models, these dot products are used as indices into programmable lookup tables. With this setup, PICA200 in particular supports the shading models Blinn-Phong, Cook-Terrance, Ward, and microfacet-based BRDF-models.

PICA200 supports four texture units, the fourth of which is used exclusively for procedural texture generation.

SDIO controller

Nintendo recommends SD cards up to 32 GB. The internal SDIO controller seems to support SD cards up to 2.199 Terabyte (32-bit sector number). It's unknown if 2TB works. Up to 1TB has been tested and works, however larger SD sizes increase system boot time. The larger the SD capacity, the greater the bootup slowdown. 64-128GB tends to be the sweet spot for most users, with only an extra 0.5-1.0 seconds added to boot time as the tradeoff for the larger size.

SD cards should be formatted FAT32 with a 64KB unit size for maximum compatibility.

Images

Front

CTR Front.jpg

High Resolution

Back

CTR Back.jpg

High Resolution

NAND pinout

NAND dumping has been successful, but the image is encrypted.

Normal model

CTR NAND pinout.png

XL model

CTR NAND pinout XL.jpg

2DS

2DSeMMC.jpg

New 3DS

N3DSeMMC.jpg

New 3DS XL

N3DSXLeMMC.jpg

WiFi dongle pinout

CTR WiFiDongle pinout.png

SDIO interface is colored red:

  • CLK
  • CMD
  • D0, D1, D2, D3

This is the interface for the 'NEW' WiFi module (based on Atheros AR6002) first included in DSi.

The proprietary DS-mode WiFi is colored yellow, pins are unknown.

I²C eeprom is colored blue:

  • SCL
  • SDA

SPI Flash is colored purple:

  • CLK
  • CS#
  • SI
  • SO
  • WP#
  • NC

Auxiliary Microcontroller (MCU)

CTR UC.png

Monitors HOME button, WiFi switch, 3D slider, volume control slider. Controls LEDs, various power supplies via an I²C connection to the PMIC.

Two I²C buses are attached to the MCU. For one, the SoC is the master; for the other, the MCU is the master.

Devices attached to MCU master I²C bus:

  • MCU (master)
  • Fuel Gauge
  • Accelerometer (slave address 0x18)
  • PMIC
  • maybe more?

Devices attached to the SoC master I²C bus:

  • SoC (master)
  • MCU
  • LCD
  • Camera
  • QTM (New3DS-only)

The MCU uses the RL78 ISA.

The MCU uses some custom Special Function Registers, but documentation for much of the hardware protocol/general SFRs can be found here.