Difference between revisions of "Memory map"
Jump to navigation
Jump to search
(More findings) |
|||
(20 intermediate revisions by 10 users not shown) | |||
Line 7: | Line 7: | ||
! Size | ! Size | ||
! Chip | ! Chip | ||
− | ! | + | ! Notes |
|- | |- | ||
| 0x00000000 | | 0x00000000 | ||
Line 52: | Line 52: | ||
| MEM0 | | MEM0 | ||
| Reserved (IOSU) | | Reserved (IOSU) | ||
+ | |- | ||
+ | | 0x0C000000 | ||
+ | | 0x0C3FFFFF | ||
+ | | 0x400000 | ||
+ | | MMIO | ||
+ | | {{hw|Espresso Registers}} (GX2/DSP/OTP) | ||
+ | |- | ||
+ | | 0x0D000000 | ||
+ | | 0x0D005FFF | ||
+ | | 0x6000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/Latte_registers|Latte registers (shared with Espresso)]] | ||
+ | |- | ||
+ | | 0x0D006000 | ||
+ | | 0x0D00FFFF | ||
+ | | 0xA000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/Legacy|Legacy registers]] (DI/SI/EXI/AI) | ||
+ | |- | ||
+ | | 0x0D010000 | ||
+ | | 0x0D01FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/NAND_interface|NAND registers]] | ||
+ | |- | ||
+ | | 0x0D020000 | ||
+ | | 0x0D02FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/AES_engine|AES registers]] (has a virtual mapping at 0x0D820000) | ||
+ | |- | ||
+ | | 0x0D030000 | ||
+ | | 0x0D03FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/SHA-1_engine|SHA-1 registers]] (has a virtual mapping at 0x0D830000) | ||
+ | |- | ||
+ | | 0x0D040000 | ||
+ | | 0x0D04FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/USB_Host_Controller|EHCI-0 registers]] | ||
+ | |- | ||
+ | | 0x0D050000 | ||
+ | | 0x0D05FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/USB_Host_Controller|OHCI-0:0 registers]] | ||
+ | |- | ||
+ | | 0x0D060000 | ||
+ | | 0x0D06FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/USB_Host_Controller|OHCI-0:1 registers]] | ||
+ | |- | ||
+ | | 0x0D070000 | ||
+ | | 0x0D07FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/SD_Host_Controller|SDIO registers]] | ||
+ | |- | ||
+ | | 0x0D080000 | ||
+ | | 0x0D08FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/SD_Host_Controller|SDIO registers]] ([[:Hardware/802.11_Wireless|802.11 Wireless]]) | ||
+ | |- | ||
+ | | 0x0D100000 | ||
+ | | 0x0D10FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/SD_Host_Controller|SDIO registers]] (eMMC) | ||
+ | |- | ||
+ | | 0x0D110000 | ||
+ | | 0x0D11FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/SD_Host_Controller|SDIO registers]] (Toucan) | ||
+ | |- | ||
+ | | 0x0D120000 | ||
+ | | 0x0D12FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/USB_Host_Controller|EHCI-1 registers]] | ||
+ | |- | ||
+ | | 0x0D130000 | ||
+ | | 0x0D13FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/USB_Host_Controller|OHCI-1:0 registers]] | ||
+ | |- | ||
+ | | 0x0D140000 | ||
+ | | 0x0D14FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/USB_Host_Controller|EHCI-2 registers]] | ||
+ | |- | ||
+ | | 0x0D150000 | ||
+ | | 0x0D15FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/USB_Host_Controller|OHCI-2:0 registers]] | ||
+ | |- | ||
+ | | 0x0D160000 | ||
+ | | 0x0D16FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/SATA_Controller|SATA registers]] | ||
+ | |- | ||
+ | | 0x0D180000 | ||
+ | | 0x0D18FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/AES_engine|AESS registers]] (has a virtual mapping at 0x0D980000) | ||
+ | |- | ||
+ | | 0x0D190000 | ||
+ | | 0x0D19FFFF | ||
+ | | 0x10000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/SHA-1_engine|SHAS-1 registers]] (has a virtual mapping at 0x0D990000) | ||
+ | |- | ||
+ | | 0x0D400000 | ||
+ | | 0x0D40FFFF | ||
+ | | 0x10000 | ||
+ | | SRAM1 | ||
+ | | [[boot1]] (mirrored in 0xFFF00000) | ||
+ | |- | ||
+ | | 0x0D410000 | ||
+ | | 0x0D41FFFF | ||
+ | | 0x10000 | ||
+ | | SRAM0 | ||
+ | | [[:boot0]] (mirrored in 0xFFFF0000) | ||
+ | |- | ||
+ | | 0x0D800000 | ||
+ | | 0x0D805FFF | ||
+ | | 0x6000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/Latte_registers|Latte registers]] | ||
+ | |- | ||
+ | | 0x0D8B0000 | ||
+ | | 0x0D8B3FFF | ||
+ | | 0x4000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/AHMN_controller|AHMN registers]] | ||
+ | |- | ||
+ | | 0x0D8B4000 | ||
+ | | 0x0D8BFFFF | ||
+ | | 0xC000 | ||
+ | | MMIO | ||
+ | | [[:Hardware/Memory_controller|Memory Controller registers]] | ||
|- | |- | ||
| 0x10000000 | | 0x10000000 | ||
Line 57: | Line 207: | ||
| 0x100000 | | 0x100000 | ||
| MEM2 | | MEM2 | ||
− | | | + | | [[Boot1#get_boot_info|boot1 warmboot PRSH/PRST]] |
|- | |- | ||
| 0x10100000 | | 0x10100000 | ||
Line 169: | Line 319: | ||
| 0x8000000 | | 0x8000000 | ||
| MEM2 | | MEM2 | ||
− | | | + | | RAMDISK |
|- | |- | ||
| 0x28000000 | | 0x28000000 | ||
Line 176: | Line 326: | ||
| MEM2 | | MEM2 | ||
| | | | ||
− | MEM2-B: 0x28000000 to 0xCFFFFFFF (0xA8000000)<br> | + | MEM2-B: 0x28000000 to 0xCFFFFFFF (0xA8000000). The 0x10000000 vmem is mapped to the following areas depending on the RAMPID:<br> |
- Home Menu (RAMPID 5): 0x28000000 to 0x2FFFFFFF (0x8000000)<br> | - Home Menu (RAMPID 5): 0x28000000 to 0x2FFFFFFF (0x8000000)<br> | ||
- root.rpx (RAMPID 1): 0x30000000 to 0x31FFFFFF (0x2000000)<br> | - root.rpx (RAMPID 1): 0x30000000 to 0x31FFFFFF (0x2000000)<br> | ||
Line 187: | Line 337: | ||
Cafe OS loader, libraries and apps | Cafe OS loader, libraries and apps | ||
|- | |- | ||
− | | | + | | 0xFFC00000 |
− | | | + | | 0xFFE7FFFF |
− | | | + | | 0x280000 |
− | | | + | | UNK |
− | | | + | | Used by Cafe OS (codegen and PPC kernel ancast image mirror) |
|- | |- | ||
| 0xFFF00000 | | 0xFFF00000 | ||
| 0xFFF07FFF | | 0xFFF07FFF | ||
| 0x8000 | | 0x8000 | ||
− | | | + | | SRAM1 |
− | | | + | | C2W (cafe2wii) boot heap (used to store the old Wii SEEPROM data) |
+ | |- | ||
+ | | 0xFFFE0000 | ||
+ | | 0xFFFE7FFF | ||
+ | | 0x8000 | ||
+ | | SRAM1 | ||
+ | | Mirror of SRAM1. Hai C2W uses this one for (some) Hai params instead of the former?<br>IOS80 also uses this one for SEEPROM data despite the data being written to the former. | ||
|- | |- | ||
| 0xFFFF0000 | | 0xFFFF0000 | ||
| 0xFFFFFFFF | | 0xFFFFFFFF | ||
| 0x10000 | | 0x10000 | ||
− | | | + | | SRAM0 |
− | | IOSU kernel SRAM | + | | IOSU kernel SRAM / C2W (cafe2wii) |
|} | |} |
Latest revision as of 03:01, 27 November 2023
The Wii U has a variety of physical memory sources. There is the 2 GiB of DDR3 split into 4 chips (MEM2), 32 MiB of fast 1T SRAM (MEM1), and the old GX framebuffer (MEM0).
Start Address | End Address | Size | Chip | Notes |
---|---|---|---|---|
0x00000000 | 0x01FFFFFF | 0x2000000 | MEM1 |
MEM1-A: 0x00000000 to 0x00000FFF (0x1000) |
0x08000000 | 0x0811FFFF | 0x120000 | MEM0 |
MEM0-A: 0x08000000 to 0x080FFFFF (0x100000) |
0x08120000 | 0x081BFFFF | 0xA0000 | MEM0 | IOSU kernel |
0x081C0000 | 0x0827FFFF | 0xC0000 | MEM0 | IOSU MCP process |
0x08280000 | 0x082AFFFF | 0x30000 | MEM0 | IOSU CRYPTO process |
0x082C0000 | 0x082DFFFF | 0x20000 | MEM0 | Reserved (IOSU) |
0x0C000000 | 0x0C3FFFFF | 0x400000 | MMIO | Espresso Registers (GX2/DSP/OTP) |
0x0D000000 | 0x0D005FFF | 0x6000 | MMIO | Latte registers (shared with Espresso) |
0x0D006000 | 0x0D00FFFF | 0xA000 | MMIO | Legacy registers (DI/SI/EXI/AI) |
0x0D010000 | 0x0D01FFFF | 0x10000 | MMIO | NAND registers |
0x0D020000 | 0x0D02FFFF | 0x10000 | MMIO | AES registers (has a virtual mapping at 0x0D820000) |
0x0D030000 | 0x0D03FFFF | 0x10000 | MMIO | SHA-1 registers (has a virtual mapping at 0x0D830000) |
0x0D040000 | 0x0D04FFFF | 0x10000 | MMIO | EHCI-0 registers |
0x0D050000 | 0x0D05FFFF | 0x10000 | MMIO | OHCI-0:0 registers |
0x0D060000 | 0x0D06FFFF | 0x10000 | MMIO | OHCI-0:1 registers |
0x0D070000 | 0x0D07FFFF | 0x10000 | MMIO | SDIO registers |
0x0D080000 | 0x0D08FFFF | 0x10000 | MMIO | SDIO registers (802.11 Wireless) |
0x0D100000 | 0x0D10FFFF | 0x10000 | MMIO | SDIO registers (eMMC) |
0x0D110000 | 0x0D11FFFF | 0x10000 | MMIO | SDIO registers (Toucan) |
0x0D120000 | 0x0D12FFFF | 0x10000 | MMIO | EHCI-1 registers |
0x0D130000 | 0x0D13FFFF | 0x10000 | MMIO | OHCI-1:0 registers |
0x0D140000 | 0x0D14FFFF | 0x10000 | MMIO | EHCI-2 registers |
0x0D150000 | 0x0D15FFFF | 0x10000 | MMIO | OHCI-2:0 registers |
0x0D160000 | 0x0D16FFFF | 0x10000 | MMIO | SATA registers |
0x0D180000 | 0x0D18FFFF | 0x10000 | MMIO | AESS registers (has a virtual mapping at 0x0D980000) |
0x0D190000 | 0x0D19FFFF | 0x10000 | MMIO | SHAS-1 registers (has a virtual mapping at 0x0D990000) |
0x0D400000 | 0x0D40FFFF | 0x10000 | SRAM1 | boot1 (mirrored in 0xFFF00000) |
0x0D410000 | 0x0D41FFFF | 0x10000 | SRAM0 | boot0 (mirrored in 0xFFFF0000) |
0x0D800000 | 0x0D805FFF | 0x6000 | MMIO | Latte registers |
0x0D8B0000 | 0x0D8B3FFF | 0x4000 | MMIO | AHMN registers |
0x0D8B4000 | 0x0D8BFFFF | 0xC000 | MMIO | Memory Controller registers |
0x10000000 | 0x100FFFFF | 0x100000 | MEM2 | boot1 warmboot PRSH/PRST |
0x10100000 | 0x104CFFFF | 0x3D0000 | MEM2 | IOSU USB process |
0x10800000 | 0x11EDFFFF | 0x16E0000 | MEM2 | IOSU FS process |
0x11F00000 | 0x1215FFFF | 0x260000 | MEM2 | IOSU PAD process |
0x12300000 | 0x1288FFFF | 0x590000 | MEM2 | IOSU NET process |
0x12900000 | 0x12B6FFFF | 0x270000 | MEM2 | IOSU ACP process |
0x12BC0000 | 0x12EAFFFF | 0x2F0000 | MEM2 | IOSU NSEC process |
0x12EC0000 | 0x1358FFFF | 0x6D0000 | MEM2 | IOSU NIM-BOSS process |
0x13640000 | 0x1393FFFF | 0x300000 | MEM2 | IOSU FPD process |
0x13A40000 | 0x13B9FFFF | 0x160000 | MEM2 | IOSU TEST process |
0x13C00000 | 0x13C70000 | 0x70000 | MEM2 | IOSU AUXIL process |
0x13CC0000 | 0x13D7FFFF | 0xC0000 | MEM2 | IOSU BSP process |
0x13D80000 | 0x13DBFFFF | 0x40000 | MEM2 | IOSU MCP process (debug and recovery mode) |
0x14000000 | 0x1CFFFFFF | 0x9000000 | MEM2 |
MEM2-A: 0x14000000 to 0x1CFFFFFF (0x9000000) |
0x1D000000 | 0x1FAFFFFF | 0x2B00000 | MEM2 | IOSU global heap |
0x1FB00000 | 0x1FDFFFFF | 0x300000 | MEM2 | IOSU global IOB (input/output block) |
0x1FE00000 | 0x1FE3FFFF | 0x40000 | MEM2 | MCP shared region (for IOSU) |
0x1FE40000 | 0x1FFFFFFF | 0x1C0000 | MEM2 | MCP setup region (launch, ramdisk and file system cache) |
0x20000000 | 0x27FFFFFF | 0x8000000 | MEM2 | RAMDISK |
0x28000000 | 0xCFFFFFFF | 0xA8000000 | MEM2 |
MEM2-B: 0x28000000 to 0xCFFFFFFF (0xA8000000). The 0x10000000 vmem is mapped to the following areas depending on the RAMPID: |
0xFFC00000 | 0xFFE7FFFF | 0x280000 | UNK | Used by Cafe OS (codegen and PPC kernel ancast image mirror) |
0xFFF00000 | 0xFFF07FFF | 0x8000 | SRAM1 | C2W (cafe2wii) boot heap (used to store the old Wii SEEPROM data) |
0xFFFE0000 | 0xFFFE7FFF | 0x8000 | SRAM1 | Mirror of SRAM1. Hai C2W uses this one for (some) Hai params instead of the former? IOS80 also uses this one for SEEPROM data despite the data being written to the former. |
0xFFFF0000 | 0xFFFFFFFF | 0x10000 | SRAM0 | IOSU kernel SRAM / C2W (cafe2wii) |