User Tools

Site Tools


memory_map

This is an old revision of the document!


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
0xF0004C00 UART
0xF0005000 GPIO
0xF0005100 GPIO
0xF0005200 ???
0xF0005400 Audio
0xF0005800 I2C general registers
0xF0005900 I2C bus 0?
0xF0005C00 I2C bus 1
0xF0005D00 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.1742165490.txt.gz · Last modified: 2025/03/16 22:51 by arisotura

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki