mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-07 22:54:33 +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)
|
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.
|
// no separate soc_caps.h for the single core variant.
|
||||||
bool is_single_core = false;
|
if (!(chip_info.cores > 1)) {
|
||||||
#if CONFIG_IDF_TARGET_ESP32
|
ESP_EARLY_LOGE(TAG, "Running on single core variant of a chip, but app is built with multi-core support.");
|
||||||
is_single_core = REG_GET_BIT(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_DIS_APP_CPU);
|
ESP_EARLY_LOGE(TAG, "Check that CONFIG_FREERTOS_UNICORE is enabled in menuconfig");
|
||||||
#endif
|
abort();
|
||||||
if (!is_single_core) {
|
}
|
||||||
|
|
||||||
ESP_EARLY_LOGI(TAG, "Starting app cpu, entry point is %p", call_start_cpu1);
|
ESP_EARLY_LOGI(TAG, "Starting app cpu, entry point is %p", call_start_cpu1);
|
||||||
|
|
||||||
#if CONFIG_IDF_TARGET_ESP32
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
Cache_Flush(1);
|
Cache_Flush(1);
|
||||||
Cache_Read_Enable(1);
|
Cache_Read_Enable(1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
esp_cpu_unstall(1);
|
esp_cpu_unstall(1);
|
||||||
|
|
||||||
// Enable clock and reset APP CPU. Note that OpenOCD may have already
|
// Enable clock and reset APP CPU. Note that OpenOCD may have already
|
||||||
@@ -238,7 +243,7 @@ static void start_other_core(void)
|
|||||||
#endif
|
#endif
|
||||||
ets_set_appcpu_boot_addr((uint32_t)call_start_cpu1);
|
ets_set_appcpu_boot_addr((uint32_t)call_start_cpu1);
|
||||||
|
|
||||||
volatile bool cpus_up = false;
|
bool cpus_up = false;
|
||||||
|
|
||||||
while (!cpus_up) {
|
while (!cpus_up) {
|
||||||
cpus_up = true;
|
cpus_up = true;
|
||||||
@@ -248,7 +253,6 @@ static void start_other_core(void)
|
|||||||
esp_rom_delay_us(100);
|
esp_rom_delay_us(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif // !CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE
|
#endif // !CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE
|
||||||
|
|
||||||
static void intr_matrix_clear(void)
|
static void intr_matrix_clear(void)
|
||||||
|
@@ -534,15 +534,6 @@ void esp_startup_start_app(void)
|
|||||||
#endif
|
#endif
|
||||||
#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_startup_start_app_common();
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Starting scheduler on PRO CPU.");
|
ESP_LOGI(TAG, "Starting scheduler on PRO CPU.");
|
||||||
|
Reference in New Issue
Block a user