NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

PRUSS Memory Map

From Texas Instruments Wiki
Jump to: navigation, search

Content is no longer maintained and is being kept for reference only!
For the most up to date PRU-ICSS collateral click here

^ Up to main Programmable Realtime Unit Subsystem Table of Contents

This article is part of a collection of articles describing the PRU subsystem included in OMAP-L1x8/C674m/AM18xx devices (where m is an even number).  To navigate to the main page for the PRU subsystem click on the link above.

Local Memory Map[edit]

The PRUSS comprises various distinct addressable regions. Externally the subsystem presents a single 64Kbyte range of addresses. The internal interconnect bus (also called switched central resource, or SCR) of the PRUSS decodes accesses for each of the individual regions. The PRUSS memory map is documented in Table 1 (Instruction Space) and in Table 2 (Data Space). Note that these two memory maps are implemented inside the PRUSS and are local to the components of the PRUSS.

Local Instruction Memory Map[edit]

Table 1 – Local Instruction Space Memory Map
Start Address End Address PRU0 PRU1
0x00000000 0x00000FFF PRU0 Instruction RAM PRU1 Instruction RAM


Local Data Memory Map[edit]

Table 2 – Local Data Space Memory Map
Start Address End Address PRU0 PRU1
0x00000000 0x000001FF Data RAM 0* Data RAM 1*
0x00000200 0x00001FFF Reserved Reserved
0x00002000 0x000021FF Data RAM 1* Data RAM 0*
0x00002200 0x00003FFF Reserved Reserved
0x00004000 0x00006FFF INTC Registers INTC Registers
0x00007000 0x000077FF PRU0 Registers PRU0 Registers
0x00007800 0x00007FFF PRU1 Registers PRU1 Registers
0x00008000 0x0000FFFF Reserved Reserved
0x00010000 0xFFFFFFFF Reserved Reserved
*Note that PRU0 accesses Data RAM0 at address 0x00000000, also PRU1 accesses Data RAM1 at address 0x00000000. Data RAM0 is intended to be the primary data memory for PRU0 and Data RAM1 is intended to be the primary data memory for PRU1. However for passing information between PRUs, each PRU can access the data ram of the other PRU at address 0x00002000.


Global Memory Map[edit]

The global view of the PRUSS internal memories and control ports is documented in Table 3. The offset addresses of each region are implemented inside the PRUSS but the global device memory mapping places the PRUSS slave port in the address range 0x01C30000-0x01C3FFFF. The PRU0 and PRU1 can use either the local or global addresses to access their internal memories, but using the local addresses will provide access time several cycles faster than using the global addresses. This is because when accessing via the global address the access needs to be routed through the switch fabric outside PRUSS and back in through the PRUSS slave port.

Table 3 – Subsystem Global Memory Map
Registers
Start Address End Address Region
0x01C30000 0x01C301FF Data RAM 0
0x01C30200 0x01C31FFF Reserved
0x01C32000 0x01C321FF Data RAM 1
0x01C32200 0x01C33FFF Reserved
0x01C34000 0x01C36FFF INTC Registers
0x01C37000 0x01C377FF PRU0 Registers
0x01C37800 0x01C37FFF PRU1 Registers
0x01C38000 0x01C38FFF PRU0 Instruction RAM
0x01C39000 0x01C3BFFF Reserved
0x01C3C000 0x01C3CFFF PRU1 Instruction RAM
0x01C3D000 0x01C3FFFF Reserved

Each of the PRUs can access the rest of the device memory (including memory mapped peripheral and configuration registers) using the global memory space addresses. Please refer to the device's System Reference Guide or datasheet for device specific memory mapping.


Return to Subsystem Documentation[edit]

Click here.

E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article PRUSS Memory Map here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article PRUSS Memory Map here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article PRUSS Memory Map here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article PRUSS Memory Map here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article PRUSS Memory Map here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article PRUSS Memory Map here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article PRUSS Memory Map here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article PRUSS Memory Map here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article PRUSS Memory Map here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity