Changes

35 bytes added ,  14:15, 18 October 2015
m
Reordering things
Line 1: Line 1:  +
== Boot ROM ==
 +
The non-protected areas of the ARM9 and ARM11 boot ROMs are identical for launch-day regular Old3DS, 2DS, and regular New3DS.
 +
 +
Besides NATIVE_FIRM, the bootloader is also capable of booting other firmwares (such as TWL_FIRM and AGB_FIRM). However, this will result either in a japanese error-screen or a system shutdown, directly after FIRM-Launching.
 +
 +
== Boot Procedure ==
 +
 +
* 0 seconds - unit is powered on. The ARM9 and ARM11 [[Memory_layout|bootroms]] begin 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 (i.e. sm, fs, pm, loader, and pxi). (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 one 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 the PM module first launches the module dependencies when launching a process, prior to actually launching the process. Further details on the Home Menu startup process can be found [[Home_Menu#Home_Menu_startup|here]].
 +
 +
* 4 seconds - the LCD screens are initialized.
 +
 +
* 7 seconds - [[Home Menu]] is fully initialized/loaded.
 +
 +
== NAND Reads during Boot ==
 +
During a successful boot on 6.x, the bootloader (and firm) reads the following sectors from NAND (in this order):
 +
00000000 (NCSD Partition Table)
 +
 +
Only verify 'FIRM' magic? (A second Header-read will be attempted even if everything except the magic is 0xFF...)
 +
0B130000 (FIRM Partition)
 +
0B530000 (Secondary FIRM Partition)
 +
 +
Verify RSA signature and parse Header:
 +
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
 +
...
 +
 +
== Error Codes ==
 
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:
   Line 29: Line 75:  
| [[NCSD]] header in sector 0 is corrupt (failed signature check).
 
| [[NCSD]] header in sector 0 is corrupt (failed signature check).
 
|}
 
|}
  −
== 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)
  −
  −
Only verify 'FIRM' magic? (A second Header-read will be attempted even if everything except the magic is 0xFF...)
  −
0B130000 (FIRM Partition)
  −
0B530000 (Secondary FIRM Partition)
  −
  −
Verify RSA signature and parse Header:
  −
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
  −
...
  −
  −
== Boot procedure ==
  −
  −
* 0 seconds - unit is powered on. The ARM9 and ARM11 [[Memory_layout|bootroms]] begin 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 (i.e. sm, fs, pm, loader, and pxi). (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 one 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 the PM module first launches the module dependencies when launching a process, prior to actually launching the process. Further details on the Home Menu startup process can be found [[Home_Menu#Home_Menu_startup|here]].
  −
  −
* 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.
  −
Besides NATIVE_FIRM, the bootloader is also capable to boot other firmwares (such as TWL_FIRM and AGB_FIRM). However, this will result either in a japanese Error-screen or a system shutdown, directly after FIRM-Launching.
 
549

edits