SPRUHZ7K August 2015 – April 2024 AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL
The PRU-ICSS Global Instruction Memory Map is documented in Table 30-9.
The global view of the PRU-ICSS internal memories and control ports is shown in Table 30-10. The offset addresses of each region are implemented inside the PRU-ICSS but the global device L3_MAIN memory mapping places the PRU-ICSS slave port in the address range shown in the external PRU-ICSS host L3_MAIN memory map.
The global memory map is with respect to the Host point of view (i.e. device MPU Cortex-A15, DSP1, etc. view of PRU-ICSS1/PRU-ICSS2 in the L3_MAIN memory space), but it can also be accessed by the PRU-ICSS1/PRU-ICSS2 itself. This is implemented via L3_MAIN redirecting PRU-ICSS master port traffic in the address range (0x0008_0000 - 0x000B_FFFF) to the PRU-ICSS slave port when PMAO_PRU0/PMAO_PRU1 = '0b1'. Note that PRU0 and PRU1 can use either the local or global addresses to access their internal memories, but using the local addresses provides access time several cycles faster than using the global addresses. This is because when accessing via the global address the access has to be routed through the L3_MAIN switch fabric outside PRU-ICSS and back in through the PRU-ICSS slave port.
Example 1: PRU1 accesses its own data RAM - Data_RAM1 in the global space:
Example 2: PRU1 accesses PRU0 data RAM - Data_RAM0 in the global space:
Example 3: DSP1 accesses the PRU0_IRAM in the global memory space to load instructions to be executed by the PRU0 upon boot time:
Example 4: PRU0 accesses a non-PRU-ICSS peripheral in the global space (address offset >= 0x2000_0000):
Example 5: PRUSS1_PRU1 host configures the PRU-ICSS2 module PRUSS2_MII_RT:
Each of the PRU cores can access the rest of the device memory (including memory mapped peripheral and configuration registers) using the global memory space addresses. For details on the L3_MAIN base address of the PRU-ICSS slave configuration memory space, refer to the Chapter 2, Memory Mapping.
| Start Address | Target | Range |
|---|---|---|
| 0x0003_4000 | PRU0 IRAM | 12 KiB |
| 0x0003_8000 | PRU1 IRAM | 12 KiB |
| Offset Address | Target |
|---|---|
| 0x0000_0000 | Data 8 KiB RAM0 |
| 0x0000_2000 | Data 8 KiB RAM1 |
| 0x0001_0000 | Data 32 KiB RAM2 (shared) |
| 0x0002_0000 | PRUSS_INTC |
| 0x0002_2000 | PRU0 Control |
| 0x0002_2400 | PRU0 Debug |
| 0x0002_4000 | PRU1 Control |
| 0x0002_4400 | PRU1 Debug |
| 0x0002_6000 | CFG |
| 0x0002_8000 | UART0 |
| 0x0002_A000 | Reserved |
| 0x0002_C000 | Reserved |
| 0x0002_E000 | IEP |
| 0x0003_0000 | eCAP0 |
| 0x0003_2000 | MII_RT_CFG |
| 0x0003_2400 | MII_MDIO |
| 0x0003_4000 | PRU0 12 KiB IRAM |
| 0x0003_8000 | PRU1 12 KiB IRAM |
| 0x0004_0000 | External PRU-ICSS |
PRU-ICSS2 UART and eCAP are not supported on the AM570x family of devices.
PRU-ICSS2 IEP I/Os are not pinned out on AM570x. However, some internal features (such as the IEP timer) are still supported.
The 0x0008_0000-offset-subtraction feature must be enabled only in case of PRU global accesses (0x0008_0000 - 0x000B_FFFF) to resources within the PRU subsystem. The PMAO feature must be disabled when accessing PRU-ICSS external locations.