Hello !
I can see power management example works and I can wakeup from PowerDown mode as expected.
But when I migrate to RTOS environment and try to put MCU to PowerDown mode on Secure side :
/* POWER DOWN */
POWER_EnterPowerDown(
(kPDRUNCFG_PD_LDOMEM | kPDRUNCFG_PD_FRO32K),
0x7FFF,
WAKEUP_GPIO_GLOBALINT0 | WAKEUP_GPIO_GLOBALINT1 |
WAKEUP_RTC_LITE_ALARM_WAKEUP
| WAKEUP_FLEXCOMM3 | WAKEUP_OS_EVENT_TIMER,
1);
BOARD_BootClockFRO12M();
BOARD_BootClockPLL150M();
BOARD_InitDebugConsole();
I can't wakeup by using any wakeup source.
I try to use library libpower_hardrabi_s and libpower_hardabi .
GINTx interrupts processed on Secure side and others on nonsecure.
I wondering what kind of extra libraries and configurations are need for enable Power-Down mode in case
of real environment where TZ and secure/nonsecure partitioning in use ?
Regards,
Eugene
Hello Eugene,
Could you please show me how you implemented the power down function from the secure side?
Best Regards,
Sabina
Hi sabinabruce !
I have tried Powerdown by using freertos_mpu_s/ns example.
At any side ( s/ns) it is not possible to wakeup MCU back by any source.
GINTx interrupts served on secure side, RTC/OS_EVENT timer on nonsecure side.
I try to link power and/or power_s libs, result the same.
Powerlib version is 0x10000.
Could you confirm what exact powerlib version and modification should be taken in use
in environment where trustzone is activated.
I think freertos_mpu_s/ns is good example for testing.
Regards,
Eugene
Hi Sabina !
It is normal nsc function
secureportNON_SECURE_CALLABLE void RTOS_EnterPowerDown(void) { .. }
but it called in rtos tickless implementation at place of macro
configPOST_SLEEP_PROCESSING(xExpectedIdleTime);
and at that point all interrupts are disabled by __disable_irq();
What is all preconditions for this Power API call ?
RTOS require disabled interrupts.
Regards,
Eugene