User Tools

Site Tools


memory_map

Memory map

The gamepad has a pretty simple memory map.

Start End Desc.
0x00000000 0x3FFFFFFF main RAM (4MB, mirrored)
0xE0010000 0xE001FFFF SDIO registers (256 bytes, mirrored)
0xF0000000 ? I/O
0xFFFF0000 ? presumably bootloader

It is not yet known how to access the bootloader or if it exists at FFFF0000. That region reads as zero.

The I/O region only properly supports 32-bit writes. 16-bit and 8-bit writes will cause the incoming data to be repeated across the entire 32-bit register, ie. a 16-bit write of 0x1234 will result in 0x12341234 being written to the entire 32-bit register.

The SDIO region has specific access requirements for each register, and trying to write to a register with the wrong size is simply ignored. TODO: document exactly which registers require which sizes.

I/O map

The I/O region is split into basic blocks for the various hardware components.

Base Desc.
0xF0000000 General registers
0xF0000400 Timers
0xF0000800 ?
0xF0001200 IRQ controller
0xF0001300 IRQ controller
0xF0001400 IRQ controller
0xF0001900 IRQ controller
0xF0004000 DMA
0xF0004400 SPI
0xF0005000 GPIO
0xF0005100 GPIO
0xF0005400 Audio
0xF0005800 I2C general registers
0xF0005C00 I2C bus 1
0xF0006000 I2C bus 2
0xF0006400 I2C bus 3
0xF0006800 I2C bus 4
0xF0009400 Video
0xF0009500 Video
0xF0009600 Video capture?
0xF0009700 Video capture?
memory_map.txt · Last modified: 2024/11/01 15:02 by arisotura

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki