mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-07 14:44:32 +02:00
esp_system: check early for single core variant
This commit is contained in:
@@ -202,19 +202,24 @@ void IRAM_ATTR call_start_cpu1(void)
|
||||
|
||||
static void start_other_core(void)
|
||||
{
|
||||
// If not the single core variant of ESP32 - check this since there is
|
||||
esp_chip_info_t chip_info;
|
||||
esp_chip_info(&chip_info);
|
||||
|
||||
// If not the single core variant of a target - check this since there is
|
||||
// no separate soc_caps.h for the single core variant.
|
||||
bool is_single_core = false;
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
is_single_core = REG_GET_BIT(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_DIS_APP_CPU);
|
||||
#endif
|
||||
if (!is_single_core) {
|
||||
if (!(chip_info.cores > 1)) {
|
||||
ESP_EARLY_LOGE(TAG, "Running on single core variant of a chip, but app is built with multi-core support.");
|
||||
ESP_EARLY_LOGE(TAG, "Check that CONFIG_FREERTOS_UNICORE is enabled in menuconfig");
|
||||
abort();
|
||||
}
|
||||
|
||||
ESP_EARLY_LOGI(TAG, "Starting app cpu, entry point is %p", call_start_cpu1);
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
Cache_Flush(1);
|
||||
Cache_Read_Enable(1);
|
||||
#endif
|
||||
|
||||
esp_cpu_unstall(1);
|
||||
|
||||
// Enable clock and reset APP CPU. Note that OpenOCD may have already
|
||||
@@ -238,7 +243,7 @@ static void start_other_core(void)
|
||||
#endif
|
||||
ets_set_appcpu_boot_addr((uint32_t)call_start_cpu1);
|
||||
|
||||
volatile bool cpus_up = false;
|
||||
bool cpus_up = false;
|
||||
|
||||
while (!cpus_up) {
|
||||
cpus_up = true;
|
||||
@@ -248,7 +253,6 @@ static void start_other_core(void)
|
||||
esp_rom_delay_us(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif // !CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE
|
||||
|
||||
static void intr_matrix_clear(void)
|
||||
|
@@ -534,15 +534,6 @@ void esp_startup_start_app(void)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// ESP32 has single core variants. Check that FreeRTOS has been configured properly.
|
||||
#if CONFIG_IDF_TARGET_ESP32 && !CONFIG_FREERTOS_UNICORE
|
||||
if (REG_GET_BIT(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_DIS_APP_CPU)) {
|
||||
ESP_EARLY_LOGE(TAG, "Running on single core chip, but FreeRTOS is built with dual core support.");
|
||||
ESP_EARLY_LOGE(TAG, "Please enable CONFIG_FREERTOS_UNICORE option in menuconfig.");
|
||||
abort();
|
||||
}
|
||||
#endif // CONFIG_IDF_TARGET_ESP32 && !CONFIG_FREERTOS_UNICORE
|
||||
|
||||
esp_startup_start_app_common();
|
||||
|
||||
ESP_LOGI(TAG, "Starting scheduler on PRO CPU.");
|
||||
|
Reference in New Issue
Block a user