diff --git a/components/bootloader_support/src/bootloader_random.c b/components/bootloader_support/src/bootloader_random.c index fe2c7e6c10..2a1d242d4b 100644 --- a/components/bootloader_support/src/bootloader_random.c +++ b/components/bootloader_support/src/bootloader_random.c @@ -40,9 +40,7 @@ void bootloader_fill_random(void *buffer, size_t length) { uint8_t *buffer_bytes = (uint8_t *)buffer; uint32_t random; -#if CONFIG_IDF_TARGET_ESP32 uint32_t start, now; -#endif assert(buffer != NULL); @@ -55,17 +53,12 @@ void bootloader_fill_random(void *buffer, size_t length) as-is, we repeatedly read the RNG register and XOR all values. */ -#if CONFIG_IDF_TARGET_ESP32 random = REG_READ(WDEV_RND_REG); RSR(CCOUNT, start); do { random ^= REG_READ(WDEV_RND_REG); RSR(CCOUNT, now); } while (now - start < 80 * 32 * 2); /* extra factor of 2 is precautionary */ -#elif CONFIG_IDF_TARGET_ESP32S2 - // ToDo: Get random from register - random = 12345678; -#endif } buffer_bytes[i] = random >> ((i % 4) * 8); } diff --git a/components/esp32s2/cpu_start.c b/components/esp32s2/cpu_start.c index ae18101fc3..81f5886b83 100644 --- a/components/esp32s2/cpu_start.c +++ b/components/esp32s2/cpu_start.c @@ -68,6 +68,7 @@ #include "esp_pm.h" #include "esp_private/pm_impl.h" #include "trax.h" +#include "esp_ota_ops.h" #include "esp_efuse.h" #include "bootloader_mem.h" @@ -165,6 +166,26 @@ void IRAM_ATTR call_start_cpu0(void) #endif ESP_EARLY_LOGI(TAG, "Pro cpu up."); + if (LOG_LOCAL_LEVEL >= ESP_LOG_INFO) { + const esp_app_desc_t *app_desc = esp_ota_get_app_description(); + ESP_EARLY_LOGI(TAG, "Application information:"); +#ifndef CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR + ESP_EARLY_LOGI(TAG, "Project name: %s", app_desc->project_name); +#endif +#ifndef CONFIG_APP_EXCLUDE_PROJECT_VER_VAR + ESP_EARLY_LOGI(TAG, "App version: %s", app_desc->version); +#endif +#ifdef CONFIG_BOOTLOADER_APP_SECURE_VERSION + ESP_EARLY_LOGI(TAG, "Secure version: %d", app_desc->secure_version); +#endif +#ifdef CONFIG_APP_COMPILE_TIME_DATE + ESP_EARLY_LOGI(TAG, "Compile time: %s %s", app_desc->date, app_desc->time); +#endif + char buf[17]; + esp_ota_get_app_elf_sha256(buf, sizeof(buf)); + ESP_EARLY_LOGI(TAG, "ELF file SHA256: %s...", buf); + ESP_EARLY_LOGI(TAG, "ESP-IDF: %s", app_desc->idf_ver); + } ESP_EARLY_LOGI(TAG, "Single core mode"); #if CONFIG_SPIRAM_MEMTEST @@ -198,14 +219,7 @@ void IRAM_ATTR call_start_cpu0(void) esp_enable_cache_wrap(icache_wrap_enable, dcache_wrap_enable); #endif - /* Initialize heap allocator. WARNING: This *needs* to happen *after* the app cpu has booted. - If the heap allocator is initialized first, it will put free memory linked list items into - memory also used by the ROM. Starting the app cpu will let its ROM initialize that memory, - corrupting those linked lists. Initializing the allocator *after* the app cpu has booted - works around this problem. - With SPI RAM enabled, there's a second reason: half of the SPI RAM will be managed by the - app CPU, and when that is not up yet, the memory will be inaccessible and heap_caps_init may - fail initializing it properly. */ + /* Initialize heap allocator */ heap_caps_init(); ESP_EARLY_LOGI(TAG, "Pro cpu start user code");