mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-07 06:34:34 +02:00
esp32: App can boot on FPGA image
Includes fix for detecting ESP32 ECO3 on FPGA
This commit is contained in:
@@ -27,6 +27,11 @@ uint8_t bootloader_common_get_chip_revision(void)
|
|||||||
case 3:
|
case 3:
|
||||||
chip_ver = 2;
|
chip_ver = 2;
|
||||||
break;
|
break;
|
||||||
|
#if CONFIG_IDF_ENV_FPGA
|
||||||
|
case 4: /* Empty efuses, but APB_CTRL_DATE_REG bit is set */
|
||||||
|
chip_ver = 3;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case 7:
|
case 7:
|
||||||
chip_ver = 3;
|
chip_ver = 3;
|
||||||
break;
|
break;
|
||||||
|
@@ -40,10 +40,14 @@ menu "ESP32-specific"
|
|||||||
|
|
||||||
choice ESP32_DEFAULT_CPU_FREQ_MHZ
|
choice ESP32_DEFAULT_CPU_FREQ_MHZ
|
||||||
prompt "CPU frequency"
|
prompt "CPU frequency"
|
||||||
|
default ESP32_DEFAULT_CPU_FREQ_40 if IDF_ENV_FPGA
|
||||||
default ESP32_DEFAULT_CPU_FREQ_160
|
default ESP32_DEFAULT_CPU_FREQ_160
|
||||||
help
|
help
|
||||||
CPU frequency to be set on application startup.
|
CPU frequency to be set on application startup.
|
||||||
|
|
||||||
|
config ESP32_DEFAULT_CPU_FREQ_40
|
||||||
|
bool "40 MHz"
|
||||||
|
depends on IDF_ENV_FPGA
|
||||||
config ESP32_DEFAULT_CPU_FREQ_80
|
config ESP32_DEFAULT_CPU_FREQ_80
|
||||||
bool "80 MHz"
|
bool "80 MHz"
|
||||||
config ESP32_DEFAULT_CPU_FREQ_160
|
config ESP32_DEFAULT_CPU_FREQ_160
|
||||||
@@ -54,6 +58,7 @@ menu "ESP32-specific"
|
|||||||
|
|
||||||
config ESP32_DEFAULT_CPU_FREQ_MHZ
|
config ESP32_DEFAULT_CPU_FREQ_MHZ
|
||||||
int
|
int
|
||||||
|
default 40 if ESP32_DEFAULT_CPU_FREQ_40
|
||||||
default 80 if ESP32_DEFAULT_CPU_FREQ_80
|
default 80 if ESP32_DEFAULT_CPU_FREQ_80
|
||||||
default 160 if ESP32_DEFAULT_CPU_FREQ_160
|
default 160 if ESP32_DEFAULT_CPU_FREQ_160
|
||||||
default 240 if ESP32_DEFAULT_CPU_FREQ_240
|
default 240 if ESP32_DEFAULT_CPU_FREQ_240
|
||||||
|
@@ -768,6 +768,9 @@ void rtc_clk_apb_freq_update(uint32_t apb_freq)
|
|||||||
|
|
||||||
uint32_t rtc_clk_apb_freq_get(void)
|
uint32_t rtc_clk_apb_freq_get(void)
|
||||||
{
|
{
|
||||||
|
#if CONFIG_IDF_ENV_FPGA
|
||||||
|
return CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ * MHZ;
|
||||||
|
#endif // CONFIG_IDF_ENV_FPGA
|
||||||
uint32_t freq_hz = reg_val_to_clk_val(READ_PERI_REG(RTC_APB_FREQ_REG)) << 12;
|
uint32_t freq_hz = reg_val_to_clk_val(READ_PERI_REG(RTC_APB_FREQ_REG)) << 12;
|
||||||
// round to the nearest MHz
|
// round to the nearest MHz
|
||||||
freq_hz += MHZ / 2;
|
freq_hz += MHZ / 2;
|
||||||
|
@@ -140,7 +140,9 @@ void rtc_clk_init(rtc_clk_config_t cfg)
|
|||||||
|
|
||||||
static rtc_xtal_freq_t rtc_clk_xtal_freq_estimate(void)
|
static rtc_xtal_freq_t rtc_clk_xtal_freq_estimate(void)
|
||||||
{
|
{
|
||||||
#ifndef CONFIG_IDF_ENV_FPGA
|
#if CONFIG_IDF_ENV_FPGA
|
||||||
|
return RTC_XTAL_FREQ_40M;
|
||||||
|
#endif // CONFIG_IDF_ENV_FPGA
|
||||||
/* Enable 8M/256 clock if needed */
|
/* Enable 8M/256 clock if needed */
|
||||||
const bool clk_8m_enabled = rtc_clk_8m_enabled();
|
const bool clk_8m_enabled = rtc_clk_8m_enabled();
|
||||||
const bool clk_8md256_enabled = rtc_clk_8md256_enabled();
|
const bool clk_8md256_enabled = rtc_clk_8md256_enabled();
|
||||||
@@ -173,8 +175,4 @@ static rtc_xtal_freq_t rtc_clk_xtal_freq_estimate(void)
|
|||||||
}
|
}
|
||||||
/* Restore 8M and 8md256 clocks to original state */
|
/* Restore 8M and 8md256 clocks to original state */
|
||||||
rtc_clk_8m_enable(clk_8m_enabled, clk_8md256_enabled);
|
rtc_clk_8m_enable(clk_8m_enabled, clk_8md256_enabled);
|
||||||
|
|
||||||
#else // CONFIG_IDF_ENV_FPGA
|
|
||||||
return RTC_XTAL_FREQ_40M;
|
|
||||||
#endif // CONFIG_IDF_ENV_FPGA
|
|
||||||
}
|
}
|
||||||
|
@@ -13,6 +13,9 @@
|
|||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
#include "soc/soc.h"
|
#include "soc/soc.h"
|
||||||
|
#ifndef CONFIG_IDF_TARGET_ESP32
|
||||||
|
#include "soc/system_reg.h"
|
||||||
|
#endif // not CONFIG_IDF_TARGET_ESP32
|
||||||
#include "soc/rtc.h"
|
#include "soc/rtc.h"
|
||||||
#include "soc/rtc_cntl_reg.h"
|
#include "soc/rtc_cntl_reg.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
|
Reference in New Issue
Block a user