fix(psram): Do not abort if PSRAM is not found

Also add to heap in app_main
This commit is contained in:
me-no-dev 2024-10-01 15:43:05 +03:00
parent c980fdc996
commit 482c0a3c26
3 changed files with 21 additions and 6 deletions

View file

@ -255,7 +255,8 @@ extern bool btInUse();
#if CONFIG_SPIRAM_SUPPORT || CONFIG_SPIRAM
#ifndef CONFIG_SPIRAM_BOOT_INIT
ESP_SYSTEM_INIT_FN(init_psram_new, CORE, BIT(0), 99) {
return psramInit() ? ESP_OK : ESP_FAIL;
psramInit();
return ESP_OK;
}
#endif
#endif
@ -263,6 +264,11 @@ ESP_SYSTEM_INIT_FN(init_psram_new, CORE, BIT(0), 99) {
void initArduino() {
//init proper ref tick value for PLL (uncomment if REF_TICK is different than 1MHz)
//ESP_REG(APB_CTRL_PLL_TICK_CONF_REG) = APB_CLK_FREQ / REF_CLK_FREQ - 1;
#if CONFIG_SPIRAM_SUPPORT || CONFIG_SPIRAM
#ifndef CONFIG_SPIRAM_BOOT_INIT
psramAddToHeap();
#endif
#endif
#ifdef CONFIG_APP_ROLLBACK_ENABLE
if (!verifyRollbackLater()) {
const esp_partition_t *running = esp_ota_get_running_partition();

View file

@ -81,17 +81,25 @@ bool psramInit() {
ESP_EARLY_LOGE(TAG, "PSRAM test failed!");
return false;
}
ESP_EARLY_LOGI(TAG, "PSRAM enabled");
#endif /* CONFIG_SPIRAM_BOOT_INIT */
spiramDetected = true;
return true;
}
bool psramAddToHeap() {
if (!spiramDetected) {
log_e("PSRAM not initialized!");
return false;
}
if (esp_psram_extram_add_to_heap_allocator() != ESP_OK) {
spiramFailed = true;
ESP_EARLY_LOGE(TAG, "PSRAM could not be added to the heap!");
log_e("PSRAM could not be added to the heap!");
return false;
}
#if CONFIG_SPIRAM_USE_MALLOC && !CONFIG_ARDUINO_ISR_IRAM
heap_caps_malloc_extmem_enable(CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL);
#endif
ESP_EARLY_LOGI(TAG, "PSRAM enabled");
#endif /* CONFIG_SPIRAM_BOOT_INIT */
spiramDetected = true;
log_i("PSRAM added to the heap.");
return true;
}

View file

@ -31,6 +31,7 @@ extern "C" {
#endif
bool psramInit();
bool psramAddToHeap();
bool psramFound();
void *ps_malloc(size_t size);