Merge branch 'feature/support_abort_on_lp_core' into 'master'

lp-core: Added support for abort() function on the LP core

See merge request espressif/esp-idf!24204
This commit is contained in:
Sudeep Mohanty
2023-06-20 19:08:49 +08:00
2 changed files with 21 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ extern "C" {
#endif
#include <stdint.h>
#include <stdlib.h>
/**
@@ -53,6 +54,11 @@ void ulp_lp_core_delay_cycles(uint32_t cycles);
*/
__attribute__((__noreturn__)) void ulp_lp_core_halt(void);
/**
* @brief The LP core puts itself to sleep and disables all wakeup sources.
*/
__attribute__((__noreturn__)) void ulp_lp_core_stop_lp_core(void);
#ifdef __cplusplus
}
#endif

View File

@@ -63,3 +63,18 @@ void ulp_lp_core_halt(void)
while(1);
}
void ulp_lp_core_stop_lp_core(void)
{
/* Disable wake-up source and put lp core to sleep */
REG_SET_FIELD(PMU_LP_CPU_PWR1_REG, PMU_LP_CPU_WAKEUP_EN, 0);
REG_SET_FIELD(PMU_LP_CPU_PWR1_REG, PMU_LP_CPU_SLEEP_REQ, 1);
}
void __attribute__((noreturn)) abort(void)
{
/* Stop the LP Core */
ulp_lp_core_stop_lp_core();
while (1);
}