/* * SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #include "hw_init.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include const static char *TAG = "hw_init"; int hardware_init(void) { int err = 0; soc_hw_init(); ana_reset_config(); super_wdt_auto_feed(); #ifdef CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE esp_cpu_configure_region_protection(); #endif bootloader_clock_configure(); #ifdef CONFIG_ESP_CONSOLE /* initialize console, from now on, we can log */ esp_console_init(); print_banner(); #endif /* CONFIG_ESP_CONSOLE */ cache_hal_init(); mmu_hal_init(); flash_update_id(); err = bootloader_flash_xmc_startup(); if (err != 0) { ESP_EARLY_LOGE(TAG, "failed when running XMC startup flow, reboot!"); return err; } err = read_bootloader_header(); if (err != 0) { return err; } err = check_bootloader_validity(); if (err != 0) { return err; } err = init_spi_flash(); if (err != 0) { return err; } check_wdt_reset(); config_wdt(); soc_random_enable(); return 0; }