Difference between revisions of "NAND"

From DSiBrew
Jump to navigation Jump to search
(Add partition starts, note that diag area is blank straight from factory.)
Line 1: Line 1:
The DSi uses a 256MB Samsung moviNAND flash chip, which is a NAND flash chip with a built-in controller that implements a MMC (SDIO) interface.  In many ways, it's like an SD card in BGA packaging, and some people have successfully read it with modified SD card readers.
+
The DSi uses a 256MB Samsung moviNAND flash chip, which is a NAND flash chip with a built-in controller that implements a MMC (SDIO) interface.  In many ways, it's like an SD card in BGA packaging, and some people have successfully read it with modified SD card readers. The last 16MB is used for wear-leveling purposes (such as replacing bad blocks), while the first 240MB is used for storing actual data.
  
 
Addressing is done in terms of 512-bytes sectors.  All wear-levelling and bad-block-mapping is handled transparently inside the chip by the controller.  Most sectors are encrypted with a per-console key.
 
Addressing is done in terms of 512-bytes sectors.  All wear-levelling and bad-block-mapping is handled transparently inside the chip by the controller.  Most sectors are encrypted with a per-console key.

Revision as of 22:58, 2 September 2009

The DSi uses a 256MB Samsung moviNAND flash chip, which is a NAND flash chip with a built-in controller that implements a MMC (SDIO) interface. In many ways, it's like an SD card in BGA packaging, and some people have successfully read it with modified SD card readers. The last 16MB is used for wear-leveling purposes (such as replacing bad blocks), while the first 240MB is used for storing actual data.

Addressing is done in terms of 512-bytes sectors. All wear-levelling and bad-block-mapping is handled transparently inside the chip by the controller. Most sectors are encrypted with a per-console key.

Layout:

Offset Size Description
0 0x200 PC-style MBR, encrypted with a per-console key
0x200 0x200 Stage 2 info block 1 (see below)
0x400 0x200 Stage 2 info block 2
0x600 0x200 Stage 2 info block 3
0x800 0x4DC00 Stage 2 bootloader (encrypted with a universal key)
0x4E400 0x400 Stage 2 footer -- unknown format, but first 10 bytes are build number of Stage 2 bootloader
0x4E800 ? Unused (all 00)
0xffa00 0x400 Diagnostic area. (often contains build date of device in plaintext) Blank in never-before-booted DSi. Might be written to during firmware updates.
0x10ee00 ? First sector of main FAT32 partition
0xcf09a00 ? First sector of photo FAT32 partition