Memory Map

This table reports the “Top-Level” memory address map as seen by the core. The Peripheral and eFPGA domains are address ranges which support a set of memory mapped peripherals and the eFPGA resources respectively. As shown in the Block Diagram, there are two non-interleaved memory banks. Typically these memories are used for code-store and the stack, although there is no requirement for this. The interleaved memory is typically used for program data-store and micro-DMA data buffers.

Description

Address Start

Address End

Boot ROM**

0x1A00-0000

0x1A03-FFFF

Peripheral Domain

0x1A10-0000

0x1A2F-FFFF

eFPGA Domain

0x1A30-0000

0x1A3F-FFFF

Non-Interleaved Memory Bank 0

0x1C00-0000

0x1C00-7FFF

Non-Interleaved Memory Bank 1

0x1C00-8000

0x1C00-FFFF

Interleaved Memory

0x1C010000

0x1C07FFFF

Memory locations in the peripheral domain are used to access Control and Status Registers (CSRs) used to control the CORE-V-MCU IP blocks.

CORE-V-MCU IP Block

Address Start

Address End

APB Frequency-locked loop

0x1A10-0000

0x1A10-0FFC

APB GPIOs

0x1A10-1000

0x1A10-1FFC

uDMA

0x1A10-2000

0x1A10-3FFC

uDMA UART0

0x1A10-2080

0x1A10-20FC

uDMA UART1

0x1A10-2100

0x1A10-217C

uDMA QSPI0

0x1A10-2180

0x1A10-21FC

uDMA QSPI1

0x1A10-2200

0x1A10-227C

uDMA I2CM0

0x1A10-2280

0x1A10-22FC

uDMA I2CM1

0x1A10-2300

0x1A10-237C

uDMA SDIO

0x1A10-2380

0x1A10-23FC

uDMA CAMERA

0x1A10-2400

0x1A10-247C

APB SoC Controller

0x1A10-4000

0x1A10-4FFC

APB Advanced Timer

0x1A10-5000

0x1A10-5FFC

APB SoC Event Controller

0x1A10-6000

0x1A10-6FFC

APB I2CS

0x1A10-7000

0x1A10-7FFC

APB Timer

0x1A10-B000

0x1A10-BFFC

stdout emulator

0x1A10-F000

0x1A10-FFFC

Debug

0x1A11-0000

0x1A11-FFFC

eFPGA configuration

0x1A20-0000

0x1A2F-0000

Note that the stdout emulator works only with RTL simulation and not with FPGA or ASIC implementations.

CSR Access Types:

Access Type

Description

RW

Read & Write

RO

Read Only

RC

Read & Clear after read

WO

Write Only

WC

Write Clears (value ignored; always writes a 0)

WS

Write Sets (value ignored; always writes a 1)

RW1S

Read & on Write bits with 1 get set, bits with 0 left unchanged

RW1C

Read & on Write bits with 1 get cleared, bits with 0 left unchanged

RW0C

Read & on Write bits with 0 get cleared, bits with 1 left unchanged

Implementation Details

The Top-level address map is defined in core-v-mcu/rtl/includes/soc_mem_map.svh.

The Peripheral Domain memory map is reported below as described in core-v-mcu/rtl/includes/periph_bus_defines.svh.

The memory map of the Debug region of the Peripheral Domain is documented as part of the PULP debug system. With the Overview, the Debug Memory Map gives the offsets within the Debug region of the various parts of the debug module.