EMMC Registers: Difference between revisions
No edit summary |
Add EMMC_PORTSEL |
||
(9 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
These registers are used to access the system [[Flash_Filesystem|NAND]] and the inserted SD card. Both devices use the same interface. | These registers are used to access the system [[Flash_Filesystem|NAND]] and the inserted SD card. Both devices use the same interface. HCLK of the SDMMC controller is 67.027964 MHz (double of the DSi HCLK). | ||
=Registers= | =Registers= | ||
Line 14: | Line 14: | ||
| 0x10006000 | | 0x10006000 | ||
| 2 | | 2 | ||
| | | Boot9, NewKernel9Loader, Process9 | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| | | EMMC_PORTSEL | ||
| 0x10006002 | | 0x10006002 | ||
| 2 | | 2 | ||
| | | Port selection, 0 = SD card, 1 = NAND | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
Line 53: | Line 53: | ||
|- | |- | ||
| style="background: green" | Yes | | style="background: green" | Yes | ||
| EMMC_STATUS0 | | [[#EMMC_STATUS0|EMMC_STATUS0]] | ||
| 0x1000601c | | 0x1000601c | ||
| 2 | | 2 | ||
Line 105: | Line 105: | ||
| 2 | | 2 | ||
| | | | ||
|- | |||
|} | |} | ||
The IO interface for SDMC/NAND seems to be very similar to the DSi; see libnds for [https://github.com/devkitPro/libnds/blob/master/source/arm7/sdmmc.c sample code] and [https://github.com/devkitPro/libnds/blob/master/include/nds/arm7/sdmmc.h documentation], and GBATEK for [http://problemkaputt.de/gbatek.htm#dsisdmmcioportscommandparamresponsedata better documentation]. | The IO interface for SDMC/NAND seems to be very similar to the DSi; see libnds for [https://github.com/devkitPro/libnds/blob/master/source/arm7/sdmmc.twl.c sample code] and [https://github.com/devkitPro/libnds/blob/master/include/nds/arm7/sdmmc.h documentation], and GBATEK for [http://problemkaputt.de/gbatek.htm#dsisdmmcioportscommandparamresponsedata better documentation]. | ||
3DS SDMC/NAND IO registers are located at 0x10006000 and apparently mirrored at 0x10007000. It seems the 0x10007000 mirror is never used on retail units. | 3DS SDMC/NAND IO registers are located at 0x10006000 and apparently mirrored at 0x10007000. It seems the 0x10007000 mirror is never used on retail units. | ||
==EMMC_STATUS0== | |||
{| class="wikitable" border="1" | |||
! Bit | |||
! Description | |||
|- | |||
| 3 | |||
| SD card removal flag (Set to 1 when SD card is removed) | |||
|- | |||
| 4 | |||
| SD card insertion flag (Set to 1 when SD card is inserted) | |||
|- | |||
| 5 | |||
| SD card insertion status (0 = missing, 1 = inserted) | |||
|- | |||
|} | |||
===SD card insertion status=== | |||
Assertion happens around 250 ms after SD card insertion and/or enabling the EMMC hardware (delay could possibly be due to an SD bus timeout?). |