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.

Accessing DDR from PRU-ICSS

Hi,

I want to use the DCAN interface on PRU-ICSS to send/receive data present on DDR RAM at a fixed physical address. 

  • Address of DDR is 0x8000_0000 to 0x9000_0000(256MiB)
  • My buffer is present at 0x8FF0_0000 to 0x9000_0000 (1MiB)

 As soon as I access the hardware address 0x8FF0_0000 the PRU-ICSS goes into some faulty state and becomes unresponsive.

Is there some other way to access DDR from PRU-ICSS ?

Rakesh 

  • Hi Rakesh,

    There is no DCAN interface on the AM335X PRU_ICSS.

  • Hi Bieser,

    Thanks for your help...

    I'm referring to am335xPruReferenceGuide.pdf page number 25 Section 5.2.1 Constant Table. In entry no 14 and 15 the base addresses for DCAN0 and DCAN1 is available. Doesn't it mean it is accessible from PRU-ICSS.

    Also referring to the Am335x Technical Reference Manual Page number 4659 , Section 23.2 shows DCAN0 interrupt to PRU-ICSS and in section 23.2.1 DCAN Connectivity Attributes , Interrupt Requests the types are
    Intr0 (DCANx_INT0) – Error, Status, Msg Object interrupt
    Intr1 (DCANx_INT1) – Msg Object interrupt
    Uerr (DCANx_PARITY) – Parity error interrupt
    All DCAN0 interrupts to MPU Subsystem and PRU-ICSS
    All DCAN1 interrupts to only MPU Subsystem

    Through this interface i want to wait for DCAN0 interrupts on PRU-ICSS and then process incoming packets and write it to reserved memory on DDR.

    Do you foresee any issue in this approach?

    Rakesh

  • Hi Bieser,

    Waiting for any response from your side !!
    Did you mean to say DCAN0 will not be accessible from PRU-ICSS ?

    That's crucial for me.

    -Rakesh

  • I have asked the factory team about this, but so far there has been no feedback.

  • Hi Rakesh,

    The PRU-ICSS has several peripherals available inside the subsystem.  As Biser mentioned, there is not a DCAN module inside this subsystem.  However, AM335x at the SoC level does have two DCAN interfaces.  It sounds like you are trying to access these DCAN modules via the PRU.  

    The PRU can access both the DCAN modules and DDR.  Please refer to this PRU FAQ, which addresses the question "Why does my PRU firmware hang when reading or writing to an address external to the PRU Subsystem?"

    Please note that there are access latencies when reading memories outside of the PRU-ICSS.  This are discussed and summarized on this AM335x-specific wiki page

    Regards,

    Melissa

  • Hi Melissa,

    Thanks for your help.

    Yes I am trying to access SOC level DCAN interfaces from PRU. Im able to enable OCP Master Port through PASM code but was unable to do it in C. I intend to enable OCP master port through C4 entry in Constant Table. Is there a way to access Constant Tables from C.


    Regards

    Rakesh

  • Hi Rakesh,

    Yes, it is possible to access the Constant Table from C.

    There are several C examples in the new PRU software package on ti.com.  The PRU_access_const_table example in this package would be a good starting point.  

    Regards,

    Melissa