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.

TDA3XEVM: IPU PM States: IPU CPU Idle

Part Number: TDA3XEVM

Hi,

I am using TDA3x hardware.

I was trying to put one of the IPU cores; M4_0 to put into idle by using starterware_01080124\pm\pmlib\pmlib_cpuidle_m4.h and using this function  PMLIBCpuIdle() while keeping my other IPU cores M4_1 alive.

I am following CASE 2: IPU CPU Idle (C0 Idle and C1 Active or C0 Active and C1 Idle) from ADAS_Power_Management_Application_Note pdf document.

Snippet of the portion of the code is as follow. My queries are

  • How can I check if my M4_0 core is successfully go into idle?
  • If my core is in idle, will I still be able to connect to that core in ccs?
  • If the core is in idle mode, will it still be executing tasks or will the program counter gets stuck at the CpuIdle() function?
  • What are the mechanism I can use to wakeup the core M4_0 that is in idle

  • Hi Myat,

    The M4 would be stuck in the WFE/WFI instruction if the CPU is able to successfully enter Idle state. For the whole IPU subsystem to be clock gated the other core would also need to execute WFI/WFE.

    If the core is idle you would still be able to connect to CCS.

    The program counter would be stuck in the WFI/WFE instruction. When you connect and then start single stepping, it would start from the next instruction from WFE/WFI.

    Interrupts can be used to wake up the M4 from the WFE/WFI instruction.
    The interrupts needs to be marked as Wake up capable through the IPU_WUGEN module if you also place the IPU to standby and lower power states.

    Thanks and Regards,
    Piyali
  • Hi Piyali,

    Thank you for your sharing. M4_0 is not stuck at WFE/WFI instruction. I have logged CSR continental driver monitoring ticket OMAPS00344273 as I would like to have teleco meeting and ask for support

    Can I know what are a few things I can check why CPU is not able to sccessfully enter idle state?

    Do I have to do any additional pre-step before I called CPUIdle function? I followed starterware example and put in a few pre-step before I called idle function as attached in snippet 

  • Hi Myat,


    As a test can you please also have the IPU1_1 execute the WFI/WFE instruction. If the CPU is not able to enter idle, there is a possibility there is a pending interrupt or exception. We can have a debug session to look into what is happening. I'll respond in the CSR. 

    Thanks and Regards,

    Piyali

  • Hi Myat,

    As discussed in the debug call, you need to enable the TDA3xx specific IPU power management which is currently commented out, be able to place the CPU idle in a loop to make sure only the relevant message is being able to wakeup the IPU core.

    Additionally, summarizing the debug call discussions, the DSP can be taken into auto clock gate with the DSP executing the IDLE and programming the CLKSTCTRL registers. Similar sequence can be followed for EVE.

    Thanks and Regards,
    Piyali