Address Map
Because the address range might be updated, Efinix recommends that you always refer to the parameter name when referencing an address in firmware, not by the actual address. The parameter names and address mappings are defined in /embedded_sw/<module>/bsp/efinix/EfxSapphireSoc/include/soc.h.
| Device | Parameter | Size | Interrupt ID | Region |
|---|---|---|---|---|
| Off-chip memory | SYSTEM_DDR_BMB | 3.7 GB | – | Cache |
| AXI user master | SYSTEM_AXI_A_BMB | 256 MB | – | I/O |
| User timer 0 | SYSTEM_USER_TIMER_0_CTRL | 4 K | 19 | I/O |
| User timer 1 | SYSTEM_USER_TIMER_1_CTRL | 4 K | 20 | I/O |
| CLINT timer | SYSTEM_CLINT_CTRL | 4 K | – | I/O |
| PLIC | SYSTEM_PLIC_CTRL | 4 MB | – | I/O |
| On-chip BRAM | SYSTEM_RAM_A_BMB | 16 KB | – | Cache |
| External interrupt | – | – | [A]: 1 [B]: 2 [C]: 3 [D]: 4 [E]:
5 [F]: 6 [G]: 7 [H]: 8 [I]:
9 [J]: 10 [K]: 11 [L]:
12 [M]: 13 [N]: 14 [O]:
15 [P]: 16 [Q]: 17 [R]:
18 [S]: 19 [T]: 20 [U]:
21 [V]: 22 [W]: 23 [X]:
24 |
I/O |
volatile. The compiler recognizes this as a
memory-mapped I/O register without optimizing the read/write access. An example of
the casting is shown by the following
command:*((volatile u32*) address);
For the cached regions, the burst length is equivalent to an AXI burst length of 8. For the I/O region, the burst length is equivalent to an AXI burst length of 1. The AXI user master is compatible with AXI-Lite by disconnecting unused outputs and driving a constant 1 to the input port.
The following figure shows the default address map and the corresponding software parameters for modules in the memory space.
The following figure shows the default address map and the corresponding software parameters for I/O.