Stage1

From DSiBrew
Revision as of 23:20, 13 October 2022 by Hallowizer (talk | contribs) (Hallowizer moved page Boot0 to Stage1: commonly used name)
Jump to navigation Jump to search
When the Stage 1 bootloader (in ROM) fails, it displays a 32-bit hexadecimal number on the top screen.

The first stage of the DSi's bootloader lives in ROM, presumably on the CPU die. It loads further encrypted+signed stages from NAND flash, starting with a plaintext offset table in the sector at offset 0x200.

Not much is known about this bootloader yet, but it presumably knows how to:

  1. Initialize the encryption hardware
  2. Read the contents of NVRAM
  3. Initialize both LCDs
  4. Read blocks (but not files) from the NAND flash
  5. Perform some variety of integrity check on all data it reads (signature, CRC, ?)
  6. Display basic hexadecimal error codes
  7. Possibly factory-programming the NAND flash?
  8. Might also do basic power-on self test of peripherals

Known error codes:

Error Code Description
0000FE00 Error communicating with NAND chip. (It's missing, CLK is shorted, etc.)
0000FEFC Integrity error in first block of Stage 2 (address at 0x220)
0000FEFD Integrity error in second block of Stage 2 (address at 0x230)
0000FEFE Boot sector integrity error (Sector 0x200 not valid), or error in NVRAM contents.