Part Number: AM5728
Hallo,
I have two bare metal applications on AM5728, one for DSP1 and one for IPU1_0.
They are started with remoteproc under linux.
Both are using peripherals like UART, SPI etc.
They access the peripherals either over library
UARTModuleReset( SOC_UART9_BASE );
or directly
HWREG( SOC_UART9_BASE + UART_THR ) = character_to_send;
Where the module address is defined at the pdk (cslr_soc_aliases.h)
#define SOC_UART9_BASE (CSL_IPU_UART9_REGS)
#define CSL_IPU_UART9_REGS (0x48424000U)
#define SOC_UART9_BASE (CSL_DSP_UART9_REGS)
#define CSL_DSP_UART9_REGS (0x48424000U)
This works while the resource table for the DSP1 tells the MMU to map the peripheral spaces from pa to va straight forward:
#define L4_PERIPHERAL_L4PER1 0x48000000
#define DSP_PERIPHERAL_L4PER1 0x48000000
#define L4_PERIPHERAL_L4PER2 0x48400000
#define DSP_PERIPHERAL_L4PER2 0x48400000
#define L4_PERIPHERAL_L4PER3 0x48800000
#define DSP_PERIPHERAL_L4PER3 0x48800000
Not so for the IPU.
The resource table maps the peripheral space from pa 0x40000000 to va 0x60000000.
#define L4_PERIPHERAL_L4PER1 0x48000000
#define IPU_PERIPHERAL_L4PER1 0x68000000
#define L4_PERIPHERAL_L4PER2 0x48400000
#define IPU_PERIPHERAL_L4PER2 0x68400000
#define L4_PERIPHERAL_L4PER3 0x48800000
#define IPU_PERIPHERAL_L4PER3 0x68800000
How can the IPU access the peripherals on for example CSL_IPU_UART9_REGS = (0x48424000U) when they shall be accessed at e.g. 0x68424000 ?
Thanks for explanation.