Skip to content

Memory map

Jonathan Neuschäfer edited this page Dec 15, 2021 · 36 revisions

The same memory map exists at 0x00000000 and 0x80000000, with the difference that the first alias is for cached access, and the second is for uncached access.

cached uncached name description
0x00000000 0x80000000 internal RAM (0x2000 bytes)
0x00002000 0x80002000 DRAM (repeats to fill address space until 0x20000000)
-- 0xb0000000 GCR System Global Control Registers
-- 0xb0000200 CLK Clock Registers
-- 0xb0001000 MC Memory controller
-- 0xb0002000 MAC1 Ethernet MAC 1
-- 0xb0003000 MAC2 Ethernet MAC 2
-- 0xb0004000 GDMA DMA engine (?)
-- 0xb0005000 USB2 USB 2.0 device controller
-- 0xb0006000 USB1 USB 1.1 device controller
-- 0xb0007000 SDHC SD Card host controller
-- 0xb0018000 VCD video capture device
-- 0xb8000000 UART0 UART0
-- 0xb8000100 UART1 UART1
-- 0xb8000200 PECI PECI controller
-- 0xb8000300 GFXI graphics interface
-- 0xb8000400 SSPI secondary SPI controller
-- 0xb8001000 TIMER Timers
-- 0xb8002000 AIC Interrupt controller
-- 0xb8003000 GPIO GPIOs
-- 0xb8004000 TACH0 tachometer 0
-- 0xb8005000 TACH1 tachometer 1
-- 0xb8006000 I2C I2C controllers
-- 0xb8007000 PWM Pulse-width modulation
-- 0xb8008000 KCS IPMI KCS and POST code monitor
-- 0xb8009000 ADC Analog-digital converter
-- 0xb800a000 RNG Random number generator
-- 0xb800b000 AES AES engine
0x40000000 0xc0000000 memory-mapped SPI flash
0x44000000 0xc4000000 XBUS external bus (XBUS)
0x46000000 0xc6000000 internal RAM, 0x400 bytes
-- 0xc8000000 FIU boot SPI flash controller
-- 0xc8001000 SHM Shared memory controller
0x7fff0000 0xffff0000 Boot ROM

Buses

  • The ATEN kernel indicates that AHB starts at 0xb0000000 and APB starts at 0xb8000000.

ATEN kernel

The ATEN kernel installs the following mappings, to be used from the kernel and from userspace:

physical virtual size description
0xb0000000 0xf0010000 0x00010000 (64k) AHB, I/O devices
0xb0010000 0xf0020000 0x00010000 (64k) VCD
0xb8000000 0xf0030000 0x00010000 (64k) APB, more I/O devices
0x06400000 0xf0100000 0x02000000 (32M) VCD memory, part of RAM

Note that the VCDMEM mapping is longer than it should be: 0x06400000 + 0x02000000 = 0x08400000. As a result, the first 4 MiB of RAM are also accessible to all userspace.

References