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.

Linux/AM5728: Heavy video load causes audio issues

Part Number: AM5728

Tool/software: Linux

Hi. We have developed linux( Three display and Video processing and rendering with 3D GPU) and rtos( audio processing engine( audio effect, mixing, reverb with various FFT ).

PCM is shared on CMEM between linux and rtos.

Sound of DSP(C66x) is very good, when linux only run on multi audio player and don't run on Video processing and rendering with 3D GPU.

but When  Linux running on multi audio player, Three display, Video processing and rendering with 3D GPU, Sound of DSP(C66x)  with McASP is broken.

and, we test it as below .

- When  Linux running on multi audio player,  Three display and Video processing, Sound of DSP(C66x)  with McASP is good. sometimes Sound have glitch.

- When  Linux running on multi audio player, Three display, Video processing and rendering with 3D GPU, Sound of DSP(C66x)  with McASP is broken.

we wonder that Memory bandwidth enough.

./glsdkstatcoll -f config.ini

EMIF1 cmd_pend 86% data 51%
EMIF2 cmd_pend 83% data 50%

How does it make good sound with linux full use many IPs(DSS, 3DGPU, 2DGPU, IVA-HD) ?

If DSP have highest prioriy  on PEG of DMM and other many IPs(DSS, 3DGPU, 2DGPU, IVA-HD) have lowest prioriy, Is it sound pretty good ?

 - Is it right, we want how to settings. (ex. IVA 4-bit ConnID is 3 at Table 14-10(ConnID Values) of TRM, but IVA 4-bit ConnID is E at e3e sites, and then we don't know proper ConnID  ).

If you have other solution, please kindly answer me.

Thanks a lot.

  • The software team have been notified. They will respond here.
  • Yes, playing with DMM peg priority settings will be good step to resolve the audio DDR resource access starvation issue.

    Below snippet from TRM on ConnID value. Use the 8-bit ConnID value from the Table 14-10 for each master and then use it's 6 MSB values for PEG priority mapping. So for example, IVA  has 0x3A as 8 bit ConnID. When you use the 6 most significant bit of it, it becomes 0xE. Hope this helps. 

    15.2.3.5.3.3 PEG Description

    The PEG is a dynamic software-programmable, initiator-indexed table of priorities. Its unique role is to

    bind a priority to an initiator on the fly. The mapping of each initiator to the table (split into eight registers)

    is based on its 6-MSB group ConnID (see Section 14.2.3.2.2, L3_MAIN Connectivity Matrix, in

    Chapter 14, Interconnect).

    DDR bandwidth on AM5728 is 8528 MBytes/sec. It should hit 60% throughput for practical scenario but if we be conservative and assume that it has 50% throughput (i.e 4264 MBytes/sec). So if your application is demanding more than 5 Gbytes/sec of DDR bandwidth, you will need to play with DDR access priority settings for the masters sensitive to processing timings. 

  • Hi. i tryed it with your help.
    i found a litte more performance on DSP.
    but, also sound have glitches.

    we need 2D GPU(Vivante), 3D GPU, IVA-HD and VPE have lower priority than DSP.
    How do we it ?

    Thanks a lot.
  • Here's the snippet from section 15.2.3.5.3.3 PEG Description of TRM

    The 64 priority entries are software-programmable with the DMM_PEG_PRIO_k register. A priority of 0

    defines the highest priority and a priority of 7 defines the lowest priority. At reset, all priorities are set to 4.

    So by default all the IPs have priority set to 4. If you have set DSP priority to 0, that means it already has higher priority than rest of the masters.