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.

AM6548: ICSSG Accelerated Data Movement

Part Number: AM6548

Hi,

I try to test different ways of how to move data from ICSSG to MSMC. To be more specific, I would like to move data from ICSSG0 Data RAM0 (local adress 0x0) to MSMC DDRAM (0x8000 0000).

For now I used the memcpy.asm function, which calls the SBBO instruction. Depending on the blocksize of the data to transfer, I get transfer rates from 30 MB/s to 270 MB/s.

Q1: I assume this instruction (SBBO) use the NAVPSS PSI-L  (See Figure 6-111. PRU_ICSSG Integration). Is this correct?

Q2: Would CBASS0 Interconnect provide a higher transfer rate to MSMC DDR?

Reading 6.4.5.2.3.1 I suppose Q2 is true, therefore:

Q3: Which modules/subsystems are involved to move data from ICSSG Data RAM0 to MSMC DDR via CBASS0 Interconnect?
Which instances do I have to configure properly to get it work?
Is there any (example) code/driver/csl functionality which helps me to get this working?

I just need to get a starting point. I've read Chapter 10 (DMA) briefly but have not yet gained the knowledge to know what to do to establish this data transfer path from ICSSG to MSMC.

Best regards,

Thomas

  • Hi,

    Please post what software you are using, and which version?
  • Sorry I forgot to mention this: I use CCS 8.2 and pdk 1.0.3 for am65xx. To move the data from ICSSG0 to MSMSC I would use a PRU or RTU.
    On the R5 A53 is (for now) no linux used.

  • Thomas,

    Ans 1: That is correct - this instruction (SBBO) use the NAVPSS PSI-L.

    Ans 2: Yes, see TRM (rev. C) 6.4.6.3.1 XFR2VBUS Hardware Accelerator:
    The XFR2VBUS is a simple hardware accelerator wich is used to get the lowest read round trip latency from MSMC and to decouple the latency seen by the PRU. Each XFR2VBUS instance is connected to the CBASS0.

    Ans3: XFR2VBUS Hardware Accelerator, see 6.4.6.3.1.6 Programming Model. The basicio.h PDK drv/emac/firmware/icss_eth/src may help.

    Regards,
    Garrett
  • Thank you for your quick reply Garrett.

    I think I've got a rough idea how it should work with XFR2VBUS interface. To test it, I tried the PRU C Compiler Intrinsic __xout(); (See www.ti.com/.../spruhv7b.pdf Table 5-3).

    I don't want to write pure assembler at this stage, just test if my idea works.

    However, Compiler give me an Error at this line:
    __xout(XFR2VBUS_WR_ID0, 3, 0, &dmemBuf);

    "../main.c", line 149: error #29: expected an expression
    "../main.c", line 149: error #167: too few arguments in function call
    "../main.c", line 149: error #18: expected a ")"
    "../main.c", line 149: error #29: expected an expression

    I use the PRU TI Compiler v2.3.1

    What do I miss, that the PRU Compiler Intrinsics for RegisterTransfer are not recognized?
  • Hi,

    meanwhile I could fix the #29 compiler issue: Don't use macro for intrinsics.
    The data transfer works so far with XFR2VBUS. However, without assembler it makes in performance point of view less sense to use it.