From a4a7f1d8b7ee68750c88169066cd5e8df7bc8c07 Mon Sep 17 00:00:00 2001 From: KonstantinKondrashov Date: Wed, 15 Jun 2022 15:31:33 +0800 Subject: [PATCH] bootloader_efuse: Adds IRAM_ATTR for efuse API Fixes startup of app for case: bootloader with 40Mhz and app with 80Mhz (ESPTOOLPY_FLASHFREQ) Closes https://github.com/espressif/esp-idf/issues/9156 --- components/bootloader_support/src/bootloader_efuse_esp32.c | 5 +++-- components/bootloader_support/src/bootloader_efuse_esp32c3.c | 5 +++-- components/bootloader_support/src/bootloader_efuse_esp32s2.c | 5 +++-- components/bootloader_support/src/bootloader_efuse_esp32s3.c | 5 +++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/components/bootloader_support/src/bootloader_efuse_esp32.c b/components/bootloader_support/src/bootloader_efuse_esp32.c index 945d482f30..8fde536915 100644 --- a/components/bootloader_support/src/bootloader_efuse_esp32.c +++ b/components/bootloader_support/src/bootloader_efuse_esp32.c @@ -16,8 +16,9 @@ #include "bootloader_clock.h" #include "soc/efuse_reg.h" #include "soc/apb_ctrl_reg.h" +#include "esp_attr.h" -uint8_t bootloader_common_get_chip_revision(void) +IRAM_ATTR uint8_t bootloader_common_get_chip_revision(void) { uint8_t eco_bit0, eco_bit1, eco_bit2; eco_bit0 = (REG_READ(EFUSE_BLK0_RDATA3_REG) & 0xF000) >> 15; @@ -45,7 +46,7 @@ uint8_t bootloader_common_get_chip_revision(void) return chip_ver; } -uint32_t bootloader_common_get_chip_ver_pkg(void) +IRAM_ATTR uint32_t bootloader_common_get_chip_ver_pkg(void) { uint32_t pkg_version = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG); uint32_t pkg_version_4bit = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG_4BIT); diff --git a/components/bootloader_support/src/bootloader_efuse_esp32c3.c b/components/bootloader_support/src/bootloader_efuse_esp32c3.c index df0fa290d3..504c7e62be 100644 --- a/components/bootloader_support/src/bootloader_efuse_esp32c3.c +++ b/components/bootloader_support/src/bootloader_efuse_esp32c3.c @@ -14,14 +14,15 @@ #include #include "soc/efuse_reg.h" +#include "esp_attr.h" -uint8_t bootloader_common_get_chip_revision(void) +IRAM_ATTR uint8_t bootloader_common_get_chip_revision(void) { // should return the same value as esp_efuse_get_chip_ver() return REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_WAFER_VERSION); } -uint32_t bootloader_common_get_chip_ver_pkg(void) +IRAM_ATTR uint32_t bootloader_common_get_chip_ver_pkg(void) { // should return the same value as esp_efuse_get_pkg_ver() return REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PKG_VERSION); diff --git a/components/bootloader_support/src/bootloader_efuse_esp32s2.c b/components/bootloader_support/src/bootloader_efuse_esp32s2.c index 766a87d2c9..f054633623 100644 --- a/components/bootloader_support/src/bootloader_efuse_esp32s2.c +++ b/components/bootloader_support/src/bootloader_efuse_esp32s2.c @@ -16,15 +16,16 @@ #include "bootloader_clock.h" #include "bootloader_common.h" #include "soc/efuse_reg.h" +#include "esp_attr.h" -uint8_t bootloader_common_get_chip_revision(void) +IRAM_ATTR uint8_t bootloader_common_get_chip_revision(void) { // should return the same value as esp_efuse_get_chip_ver() return REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_WAFER_VERSION); return 0; } -uint32_t bootloader_common_get_chip_ver_pkg(void) +IRAM_ATTR uint32_t bootloader_common_get_chip_ver_pkg(void) { // should return the same value as esp_efuse_get_pkg_ver() return REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_4_REG, EFUSE_PKG_VERSION); diff --git a/components/bootloader_support/src/bootloader_efuse_esp32s3.c b/components/bootloader_support/src/bootloader_efuse_esp32s3.c index 19b1056be4..8a816ec711 100644 --- a/components/bootloader_support/src/bootloader_efuse_esp32s3.c +++ b/components/bootloader_support/src/bootloader_efuse_esp32s3.c @@ -13,15 +13,16 @@ // limitations under the License. #include +#include "esp_attr.h" -uint8_t bootloader_common_get_chip_revision(void) +IRAM_ATTR uint8_t bootloader_common_get_chip_revision(void) { // should return the same value as esp_efuse_get_chip_ver() /* No other revisions for ESP32-S3 */ return 0; } -uint32_t bootloader_common_get_chip_ver_pkg(void) +IRAM_ATTR uint32_t bootloader_common_get_chip_ver_pkg(void) { // should return the same value as esp_efuse_get_pkg_ver() return 0;