kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'bugfix/fix_memory_miss_bug_v4.4' into 'release/v4.4'
esp32c3/esp32s3: Fix cpu crash bug when wakeup from lightsleep for memory data miss (backport v4.4) See merge request espressif/esp-idf!17826pull/9137/head
commit
ae6c52e9f9
|
@ -59,6 +59,8 @@ void rtc_sleep_init(rtc_sleep_config_t cfg)
|
||||||
rtc_sleep_pu_config_t pu_cfg = RTC_SLEEP_PU_CONFIG_ALL(1);
|
rtc_sleep_pu_config_t pu_cfg = RTC_SLEEP_PU_CONFIG_ALL(1);
|
||||||
rtc_sleep_pu(pu_cfg);
|
rtc_sleep_pu(pu_cfg);
|
||||||
}
|
}
|
||||||
|
/* mem force pu */
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_LSLP_MEM_FORCE_PU);
|
||||||
if (cfg.wifi_pd_en) {
|
if (cfg.wifi_pd_en) {
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_PD_EN);
|
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_PD_EN);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
*/
|
*/
|
||||||
void rtc_sleep_pu(rtc_sleep_pu_config_t cfg)
|
void rtc_sleep_pu(rtc_sleep_pu_config_t cfg)
|
||||||
{
|
{
|
||||||
#if !CONFIG_IDF_ENV_FPGA
|
|
||||||
REG_SET_FIELD(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_LSLP_MEM_FORCE_PU, cfg.dig_fpu);
|
REG_SET_FIELD(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_LSLP_MEM_FORCE_PU, cfg.dig_fpu);
|
||||||
REG_SET_FIELD(RTC_CNTL_PWC_REG, RTC_CNTL_FASTMEM_FORCE_LPU, cfg.rtc_fpu);
|
REG_SET_FIELD(RTC_CNTL_PWC_REG, RTC_CNTL_FASTMEM_FORCE_LPU, cfg.rtc_fpu);
|
||||||
REG_SET_FIELD(RTC_CNTL_PWC_REG, RTC_CNTL_SLOWMEM_FORCE_LPU, cfg.rtc_fpu);
|
REG_SET_FIELD(RTC_CNTL_PWC_REG, RTC_CNTL_SLOWMEM_FORCE_LPU, cfg.rtc_fpu);
|
||||||
|
@ -42,7 +41,6 @@ void rtc_sleep_pu(rtc_sleep_pu_config_t cfg)
|
||||||
REG_SET_FIELD(NRXPD_CTRL, NRX_DEMAP_FORCE_PU, cfg.nrx_fpu);
|
REG_SET_FIELD(NRXPD_CTRL, NRX_DEMAP_FORCE_PU, cfg.nrx_fpu);
|
||||||
REG_SET_FIELD(FE_GEN_CTRL, FE_IQ_EST_FORCE_PU, cfg.fe_fpu);
|
REG_SET_FIELD(FE_GEN_CTRL, FE_IQ_EST_FORCE_PU, cfg.fe_fpu);
|
||||||
REG_SET_FIELD(FE2_TX_INTERP_CTRL, FE2_TX_INF_FORCE_PU, cfg.fe_fpu);
|
REG_SET_FIELD(FE2_TX_INTERP_CTRL, FE2_TX_INF_FORCE_PU, cfg.fe_fpu);
|
||||||
#endif
|
|
||||||
if (cfg.sram_fpu) {
|
if (cfg.sram_fpu) {
|
||||||
REG_SET_FIELD(SYSCON_MEM_POWER_UP_REG, SYSCON_SRAM_POWER_UP, SYSCON_SRAM_POWER_UP);
|
REG_SET_FIELD(SYSCON_MEM_POWER_UP_REG, SYSCON_SRAM_POWER_UP, SYSCON_SRAM_POWER_UP);
|
||||||
} else {
|
} else {
|
||||||
|
@ -61,7 +59,8 @@ void rtc_sleep_init(rtc_sleep_config_t cfg)
|
||||||
rtc_sleep_pu_config_t pu_cfg = RTC_SLEEP_PU_CONFIG_ALL(1);
|
rtc_sleep_pu_config_t pu_cfg = RTC_SLEEP_PU_CONFIG_ALL(1);
|
||||||
rtc_sleep_pu(pu_cfg);
|
rtc_sleep_pu(pu_cfg);
|
||||||
}
|
}
|
||||||
|
/* mem force pu */
|
||||||
|
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_LSLP_MEM_FORCE_PU);
|
||||||
if (cfg.wifi_pd_en) {
|
if (cfg.wifi_pd_en) {
|
||||||
REG_CLR_BIT(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_WIFI_FORCE_NOISO | RTC_CNTL_WIFI_FORCE_ISO);
|
REG_CLR_BIT(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_WIFI_FORCE_NOISO | RTC_CNTL_WIFI_FORCE_ISO);
|
||||||
REG_CLR_BIT(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_FORCE_PU);
|
REG_CLR_BIT(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_FORCE_PU);
|
||||||
|
|
|
@ -58,9 +58,8 @@ extern "C" {
|
||||||
|
|
||||||
/* Approximate mapping of voltages to RTC_CNTL_DBIAS_WAK, RTC_CNTL_DBIAS_SLP,
|
/* Approximate mapping of voltages to RTC_CNTL_DBIAS_WAK, RTC_CNTL_DBIAS_SLP,
|
||||||
* RTC_CNTL_DIG_DBIAS_WAK, RTC_CNTL_DIG_DBIAS_SLP values.
|
* RTC_CNTL_DIG_DBIAS_WAK, RTC_CNTL_DIG_DBIAS_SLP values.
|
||||||
* Valid if RTC_CNTL_DBG_ATTEN is 0.
|
|
||||||
*/
|
*/
|
||||||
#define RTC_CNTL_DBIAS_SLP 0 //sleep dig_dbias & rtc_dbias
|
#define RTC_CNTL_DBIAS_SLP 5 //sleep dig_dbias & rtc_dbias
|
||||||
#define RTC_CNTL_DBIAS_0V90 13 //digital voltage
|
#define RTC_CNTL_DBIAS_0V90 13 //digital voltage
|
||||||
#define RTC_CNTL_DBIAS_0V95 16
|
#define RTC_CNTL_DBIAS_0V95 16
|
||||||
#define RTC_CNTL_DBIAS_1V00 18
|
#define RTC_CNTL_DBIAS_1V00 18
|
||||||
|
@ -105,7 +104,7 @@ extern "C" {
|
||||||
/*
|
/*
|
||||||
set sleep_init default param
|
set sleep_init default param
|
||||||
*/
|
*/
|
||||||
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT 3
|
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_DEFAULT 5
|
||||||
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_NODROP 0
|
#define RTC_CNTL_DBG_ATTEN_LIGHTSLEEP_NODROP 0
|
||||||
#define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT 15
|
#define RTC_CNTL_DBG_ATTEN_DEEPSLEEP_DEFAULT 15
|
||||||
#define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT 0
|
#define RTC_CNTL_DBG_ATTEN_MONITOR_DEFAULT 0
|
||||||
|
|
|
@ -59,9 +59,8 @@ extern "C" {
|
||||||
|
|
||||||
/* Approximate mapping of voltages to RTC_CNTL_DBIAS_WAK, RTC_CNTL_DBIAS_SLP,
|
/* Approximate mapping of voltages to RTC_CNTL_DBIAS_WAK, RTC_CNTL_DBIAS_SLP,
|
||||||
* RTC_CNTL_DIG_DBIAS_WAK, RTC_CNTL_DIG_DBIAS_SLP values.
|
* RTC_CNTL_DIG_DBIAS_WAK, RTC_CNTL_DIG_DBIAS_SLP values.
|
||||||
* Valid if RTC_CNTL_DBG_ATTEN is 0.
|
|
||||||
*/
|
*/
|
||||||
#define RTC_CNTL_DBIAS_SLP 0 ///< sleep dig_dbias & rtc_dbias
|
#define RTC_CNTL_DBIAS_SLP 5 ///< sleep dig_dbias & rtc_dbias
|
||||||
#define RTC_CNTL_DBIAS_0V90 13 ///< digital voltage
|
#define RTC_CNTL_DBIAS_0V90 13 ///< digital voltage
|
||||||
#define RTC_CNTL_DBIAS_0V95 16
|
#define RTC_CNTL_DBIAS_0V95 16
|
||||||
#define RTC_CNTL_DBIAS_1V00 18
|
#define RTC_CNTL_DBIAS_1V00 18
|
||||||
|
|
Ładowanie…
Reference in New Issue