Hi Reinier,
1) Yes, PWRM_sleepDSP() calls PMI_sleepCPU() to perform the actual transition in/out of sleep. Some pseudo code for the flow:
- TSK_disable()
- notify clients registered for pre-sleep notification
- SWI_disable()
- HWI_disable()
- call PMI_sleepCPU() to transition in/out of sleep
- HWI_restore()
- SWI_restore()
- notify clients registered for post-sleep notification
- TSK_restore()
2) Yes, I expect bypassing the PLLs and putting the mDDR into self-refresh to have a biggest impact versus freezing the cache and clock gating.
3) I don’t know what else to recommend for the mDDR consumption, other than maybe contacting that manufacturer to resolve how to get the numbers shown in the datasheet.
4) Yes, PWRM_setDependency() and PWRM_releaseDependency() will trigger LPSC transitions to activate and deactivate the individual modules. These functions make calls to two PMI-layer functions to perform the actual transitions: PMI_setModuleState() and PMI_getModuleState(). Some pseudo code for PWRM_setDependency():
- validate the resource ID
- SWI_disable()
- read the reference count for the resource
- if resource is already activated, simply increment its reference count
- else {
- call PMI_setModuleState() to initiate the LPSC transition to the active state
- call PMI_getModuleState() until the module has transitioned to the active state
- set resource’s reference count to ‘1’
}
- SWI_enable()
PWRM_releaseDependency() has a slightly different flow, but makes similar calls to PMI_setModuleState() and PMI_getModuleState() to transition the LPSC to the inactive state.
Regards,
Scott
↧
Forum Post: RE: Lowest possible power consumption on C6748
↧