This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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. I know that TI does not support such information but maybe someone is willing to reply.

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.

I don't understand based on the table 6 (Global memory map offset addresses) how to obtain the global address 0x44e0_9000, I have no idea how can I map 0x0002_8000 to 0x44e0_9000. I would like to know how to determine the local address based on global address.

Sincerely,

Jorge Ventura

  • Hi Jorge,

    The UART0 at address 0x44e0_9000 is one of the standard UARTs outside of the PRU-ICSS subsystem.  The PRU local memory map only includes memory blocks located inside the PRU-ICSS subsystem and the UART at local address 0x0002_8000 is the UART within the subsystem (see Figure 2 in the "AM335x PRU-ICSS Reference Guide").   Therefore, the local address 0x0002_8000 maps to global address 0x4A30_0000 (PRU-ICSS base address) + 0x0002_8000, or 0x4A32_8000.

    Regards,

    Melissa