Very confused about PRU local and global memory map

I am doing some tests using PRU assembly to figure out the architecture of PRU but I am very confused about memory map explained in the manual “AM335x PRU-ICSS Reference Guide” and here are the points.

  1. I am sending one char to the UART0 using the global address 0x44e0_9000 and it works fine. I am doing that using the OCP slave port.

  2. I try to do the same using the local address 0x0002_8000 (table 5, page 19) without use the OCP slave but it doesn’t work.

  3. I don’t understand based on the table 6 (Global memory map offset addresses) how to obtain the global address 0x44e0_9000.

I am supposing that there is only one UART0, the same is used by ARM and PRUs (maybe it’s not true).

The ICSS has it’s own local UART. It is not related to UART0 of the SoC peripherals that you use in (1).

From global memory point of view:
UART0 is at 0x44e0_9000
ICSS UART is at 0x4a328_0000


That explain everything!

Thank you.