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.

AWR2944P: question about advframe config time

Part Number: AWR2944P

Tool/software:

Hi Expert:
I'm currently encountering a lengthy configuration time when using 2x44p for waveform configuration. When executing the same configuration via MSS, it takes only 91us to invoke rlSetAdvFrameConfig. However, when performing waveform configuration on the DSP side, invoking rlSetAdvFrameConfig requires 13ms. Due to spatial and timing constraints, we can only conduct waveform configuration on the DSP. After observation, I've found that the excessive time for subframe invocation is primarily due to the extended duration of rlDriverCmdSendRetry. Have you ever encountered a similar phenomenon, and what solutions are available to address this issue?
Best regards,
Patrick
  • Hi Patrick,

    For this API usage can you let me know if the function/task that calls this API what is priority? I am suspecting that may be some other higher priority tasks is taking precedence over this. Also the DSP core actually runs at a higher frequency than the MSS core so the timings should be very comparable and should not have this discrepancy. 

    Also, can you let me know in which memory range does the code section sit? Is it DSS_L2 or L3 memory range? Are those memory range cached or non cached?

    Thanks,

    Pradipta. 

  • Hi Pradipta

    Firstly, the priority is set at level 6, which is classified as high priority. The code section in question is located within the DSS L2 range. Could you please guide me on how to determine whether this memory range is cached or non-cached?
    Secondly, within the same DSP task, I attempted to configure the profile and other WFP settings. This process did not consume excessive time, taking less than 1 ms. However, the function rlSetAdvFrameConfig resulted in a significantly longer duration of over 13 ms. 
    Thank you very much for your attention to this matter. I look forward to your valuable response.
    Best regards,
    Patrick
  • Hi Patrick,

    The linker file should give us an idea if the L2 is cached or not. Also, for Adv frame config can you share what is parameter set you are passing. The same parameter set on MSS is taking lower time if my understanding of the issue is correct. 

    Thanks,

    Pradipta. 

  • Hi Pradipta

     the L2 is shown as blow, I didn't see any cache.  

     00800000 00800000 0002a4e0 0002a4e0 r-x
    00800000 00800000 00000200 00000200 r-x .text:vectors
    00800200 00800200 0002a2e0 0002a2e0 r-x .text
    0082a500 0082a500 0000c120 00004c00 rw-
    0082a500 0082a500 00004c00 00004c00 rw- .task_stack
    0082f100 0082f100 00004520 00000000 rw- .far
    00833620 00833620 00002000 00000000 rw- .stack
    00835620 00835620 00001000 00000000 rw- .sysmem  

    the paramset:

        /* Populate the frame configuration: */
        advFrameCfg.frameSeq.numOfSubFrames = 2;
        advFrameCfg.frameSeq.forceProfile = 1;
        advFrameCfg.frameSeq.numFrames = 1;
        advFrameCfg.frameSeq.triggerSelect = 1;
        advFrameCfg.frameSeq.frameTrigDelay = 0;
        advFrameCfg.frameData.numSubFrames = 2;

        /* Populate the sub_frame configuration: */
        subFrameNum = 0;    

        /* Initialize the sub_frame configuration: */
        memset ((void *)&advFrameCfg.frameSeq.subFrameCfg[subFrameNum], 0, sizeof(rlSubFrameCfg_t));

        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].forceProfileIdx = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdx = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfChirps = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numLoops = 768;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].burstPeriodicity = (uint32_t)(40 * 1000000 / 5);
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdxOffset = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurst = 1;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurstLoops = 1;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].subFramePeriodicity = (uint32_t)(40 * 1000000 / 5);
        subFrameNum = 1;    

        /* Initialize the sub_frame configuration: */
       // memset ((void *)&advFrameCfg.frameSeq.subFrameCfg[subFrameNum], 0, sizeof(rlSubFrameCfg_t));

        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].forceProfileIdx = 1;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdx = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfChirps = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numLoops = 384;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].burstPeriodicity = (uint32_t)(12 * 1000000 / 5);
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].chirpStartIdxOffset = 0;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurst = 1;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].numOfBurstLoops = 1;
        advFrameCfg.frameSeq.subFrameCfg[subFrameNum].subFramePeriodicity = (uint32_t)(12 * 1000000 / 5);
    Best regards,
    Patrick
  • Hi Patrick,

    A couple of things here.

    1) Caching the L2 should help speed up the process as for MSS the MSS_L2 is cached. 

    2) When the DSS sends out the message over mailbox to RSS, the RSS will reply with message which has to read by the DSS to complete the Command response protocol and end the communication. Please verify the response is also read at a higher priority than other tasks. Since the difference time is very high it is very likely some other task takes up the execution in between leading to this delay. 

    Is there a way in our debugging you can check which tasks are executing when on the DSP?

    Thanks,

    Pradipta. 

  • Hi Pradipta

    I check all task for DSP, the waveform config task has the highest priority  ,and after change miscCtl  from 3 to 7,frame config time change from 13ms to 1.7ms, but it still take more time than mss . Are there any other configs that needs to be added.

        /* enable advanced chirp configuration */
        stRFMiscCnf.miscCtl = 3U;  
  • Hi Patrick,

    Any updates on the Points 1 and 2 as mentioned in my previous post?

    Thanks,

    Pradipta.