Changes

1,261 bytes added ,  04:58, 23 August 2021
Imported from boot1
[[Image:boot-stage1-error.jpeg|frame|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:
# Initialize the encryption hardware
# Read the contents of [[NVRAM]]
# Initialize both LCDs
# Read blocks (but not files) from the [[NAND]] flash
# Perform some variety of integrity check on all data it reads (signature, CRC, ?)
# Display basic hexadecimal error codes
# Possibly factory-programming the [[NAND]] flash?
# Might also do basic power-on self test of peripherals

Known error codes:

{| border="1" cellpadding="3" cellspacing="0"
! 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.
|}
322

edits