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:
|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.|