-
Notifications
You must be signed in to change notification settings - Fork 4
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 |
- The ATEN kernel indicates that AHB starts at 0xb0000000 and APB starts at 0xb8000000.
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.
Overview:
Basics:
Peripherals:
- Memory controller
- UART, SPI/SSPI, I2C, SD
- GPIOs and pinmux
- Ethernet
- USB, LPC, PECI, XBUS
- PWM and Tachometer, ADC
- Graphics
Board specifics: