Difference between revisions of "Bootloader"

From 3dbrew
Jump to navigation Jump to search
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
When the 3DS does not find the NAND chip, the following error is displayed:
 
When the 3DS does not find the NAND chip, the following error is displayed:
  
[[Image:CTR_Bootrom_Error.jpg|500px]]
+
[[Image:CTR_Bootrom_Error.jpg|240px]]
  
The 3DS' Boot procedure:
+
{| class="wikitable" border="1"
 +
|-
 +
!  Error
 +
!  Description
 +
|-
 +
| <tt>00F800FE 00000000 00000000 00000200 00000000</tt>
 +
| Error when having SD-card reader connected to NAND during boot.
 +
|-
 +
| <tt>00F800FE 00000000 00000000 00000400 00000000</tt>
 +
| NAND not found error (?)
 +
|-
 +
| <tt>00F800FE FFFFFFFF FFFFFFFF 00000080 00800000</tt>
 +
| NAND error when DAT1 was used as DAT0.
 +
|-
 +
| <tt>00F800FE FFFFFFFF FFFFFFFF 00000005 00800000</tt>
 +
| NAND error when DAT2 was used as DAT0.
 +
|-
 +
| <tt>00F800FE FFFFFFFF FFFFFFFF 00000005 00000000</tt>
 +
| NAND error when DAT3 was used as DAT0.
 +
|}
  
* 0 Seconds - unit is powered on bootrom begins execution
+
== NAND Reads ==
 +
During a successful boot on 6.x, the bootloader (and firm) reads the following sectors from NAND (in this order):
 +
00000000 (NCSD Partition Table)
 +
 +
0B130000 (FIRM Partition)
 +
0B530000 (Secondary FIRM Partition)
 +
 +
0B130000 (FIRM: Header)
 +
0B130200 (FIRM: Section 1)
 +
0B163E00 (FIRM: Section 2)
 +
0B193E00 (FIRM: Section 3)
 +
 +
00013000 .. Below is probably NATIVE_FIRM booting ..
 +
00014000
 +
00015000
 +
00016000
 +
00017000
 +
 +
09011A00
 +
09011C00
 +
09012000
 +
09012400
 +
...
  
* 2 Seconds - bootrom attempts to initialize the NAND. If the NAND is successfully initialized, the bootrom launches the firmware loaded from the NAND [[FIRM]] partition which handles booting the rest of the system. The ARM11 kernel loaded from FIRM then loads the [[NCCH#CXI|CXI]] ARM11 system modules embedded in the kernel. If the NAND cannot be initialized, (i.e. the NAND chip is not connected/damaged etc) a blue error screen similar to the screen above appears.
+
== The 3DS' Boot procedure: ==
  
* 3 Seconds - all essential hardware is active. [[Process_Manager_Ports|PM]] loads [[NS]], which then loads the [[Configuration Memory#ACTIVEMENUTID|current active menu]]. For retail units this menu is usually the [[Home Menu]].
+
* 0 Seconds - unit is powered on the ARM9 and ARM11 [[Memory_layout|bootroms]] begins execution
 +
 
 +
* 2 Seconds - ARM9 bootrom attempts to initialize the NAND. If the NAND is successfully initialized, the ARM9 bootrom loads the [[FIRM|firmware]] stored in the NAND [[FIRM]] partition which handles booting the rest of the system(if verification for NAND firm0 fails, the ARM9 bootrom will attempt to use firm1 instead). The ARM11 kernel loaded from FIRM then launches the [[NCCH#CXI|CXI]] ARM11 system modules loaded from FIRM(Note that the ARM11 kernel does not handle any encryption/RSA verification, this is handled by the [[FIRM|ARM9]]). If the NAND cannot be initialized, (i.e. the NAND chip is not connected/damaged etc) a blue error screen similar to the screen above appears.
 +
 
 +
* 3 Seconds - all essential hardware is active. The [[Process_Manager_Services|PM]] module launches [[NS]], [[NS]] then launches [[ErrDisp]] and the [[Configuration Memory#ACTIVEMENUTID|current active menu]] via PM module. For retail units this menu is usually the [[Home Menu]]. NS will [[NS|auto-boot]] titles instead of launching ErrDisp/Home Menu, if auto-booting is needed. Note that PM module first launches the module dependencies when launching a process, prior to actually launching the process.
  
 
* 4 Seconds - the LCD screens are initialized
 
* 4 Seconds - the LCD screens are initialized
  
 
* 7 Seconds - [[Home Menu]] is fully initialized/loaded
 
* 7 Seconds - [[Home Menu]] is fully initialized/loaded
 +
 +
== BootROM ==
 +
The non-protected areas of the ARM9 and ARM11 bootROMs are identical, for launch-day regular Old3DS, 2DS, and regular New3DS.

Revision as of 02:04, 21 February 2015

When the 3DS does not find the NAND chip, the following error is displayed:

CTR Bootrom Error.jpg

Error Description
00F800FE 00000000 00000000 00000200 00000000 Error when having SD-card reader connected to NAND during boot.
00F800FE 00000000 00000000 00000400 00000000 NAND not found error (?)
00F800FE FFFFFFFF FFFFFFFF 00000080 00800000 NAND error when DAT1 was used as DAT0.
00F800FE FFFFFFFF FFFFFFFF 00000005 00800000 NAND error when DAT2 was used as DAT0.
00F800FE FFFFFFFF FFFFFFFF 00000005 00000000 NAND error when DAT3 was used as DAT0.

NAND Reads

During a successful boot on 6.x, the bootloader (and firm) reads the following sectors from NAND (in this order):

00000000 (NCSD Partition Table)

0B130000 (FIRM Partition)
0B530000 (Secondary FIRM Partition)

0B130000 (FIRM: Header)
0B130200 (FIRM: Section 1)
0B163E00 (FIRM: Section 2)
0B193E00 (FIRM: Section 3)

00013000 .. Below is probably NATIVE_FIRM booting ..
00014000
00015000
00016000
00017000

09011A00
09011C00
09012000
09012400
...

The 3DS' Boot procedure:

  • 0 Seconds - unit is powered on the ARM9 and ARM11 bootroms begins execution
  • 2 Seconds - ARM9 bootrom attempts to initialize the NAND. If the NAND is successfully initialized, the ARM9 bootrom loads the firmware stored in the NAND FIRM partition which handles booting the rest of the system(if verification for NAND firm0 fails, the ARM9 bootrom will attempt to use firm1 instead). The ARM11 kernel loaded from FIRM then launches the CXI ARM11 system modules loaded from FIRM(Note that the ARM11 kernel does not handle any encryption/RSA verification, this is handled by the ARM9). If the NAND cannot be initialized, (i.e. the NAND chip is not connected/damaged etc) a blue error screen similar to the screen above appears.
  • 3 Seconds - all essential hardware is active. The PM module launches NS, NS then launches ErrDisp and the current active menu via PM module. For retail units this menu is usually the Home Menu. NS will auto-boot titles instead of launching ErrDisp/Home Menu, if auto-booting is needed. Note that PM module first launches the module dependencies when launching a process, prior to actually launching the process.
  • 4 Seconds - the LCD screens are initialized
  • 7 Seconds - Home Menu is fully initialized/loaded

BootROM

The non-protected areas of the ARM9 and ARM11 bootROMs are identical, for launch-day regular Old3DS, 2DS, and regular New3DS.