Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove BOOTLOADER_BUILD flag from Espressif hal #362

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,44 +47,43 @@
#define ESP_BOOTLOADER_SPIFLASH_QE_GD_SR2 BIT1 // QE position when you write 8 bits(for SR2) at one time.
#define ESP_BOOTLOADER_SPIFLASH_QE_SR1_2BYTE BIT9 // QE position when you write 16 bits at one time.

#ifndef BOOTLOADER_BUILD
/* Normal app version maps to spi_flash_mmap.h operations...
*/
static const char *TAG = "bootloader_mmap";
static const char *ZTAG = "sys_mmap";

static spi_flash_mmap_handle_t map;

uint32_t bootloader_mmap_get_free_pages(void)
uint32_t sys_mmap_get_free_pages(void)
{
return spi_flash_mmap_get_free_pages(SPI_FLASH_MMAP_DATA);
}

const void *bootloader_mmap(uint32_t src_addr, uint32_t size)
const void *sys_mmap(uint32_t src_addr, uint32_t size)
{
if (map) {
ESP_EARLY_LOGE(TAG, "tried to bootloader_mmap twice");
ESP_EARLY_LOGE(ZTAG, "tried to bootloader_mmap twice");
return NULL; /* existing mapping in use... */
}
const void *result = NULL;
uint32_t src_page = src_addr & ~(SPI_FLASH_MMU_PAGE_SIZE - 1);
size += (src_addr - src_page);
esp_err_t err = spi_flash_mmap(src_page, size, SPI_FLASH_MMAP_DATA, &result, &map);
if (err != ESP_OK) {
ESP_EARLY_LOGE(TAG, "spi_flash_mmap failed: 0x%x", err);
ESP_EARLY_LOGE(ZTAG, "spi_flash_mmap failed: 0x%x", err);
return NULL;
}
return (void *)((intptr_t)result + (src_addr - src_page));
}

void bootloader_munmap(const void *mapping)
void sys_munmap(const void *mapping)
{
if (mapping && map) {
spi_flash_munmap(map);
}
map = 0;
}

esp_err_t bootloader_flash_read(size_t src, void *dest, size_t size, bool allow_decrypt)
esp_err_t sys_flash_read(size_t src, void *dest, size_t size, bool allow_decrypt)
{
if (allow_decrypt && esp_flash_encryption_enabled()) {
return esp_flash_read_encrypted(NULL, src, dest, size);
Expand All @@ -93,7 +92,7 @@ esp_err_t bootloader_flash_read(size_t src, void *dest, size_t size, bool allow_
}
}

esp_err_t bootloader_flash_write(size_t dest_addr, void *src, size_t size, bool write_encrypted)
esp_err_t sys_flash_write(size_t dest_addr, void *src, size_t size, bool write_encrypted)
{
if (write_encrypted && !ENCRYPTION_IS_VIRTUAL) {
return esp_flash_write_encrypted(NULL, dest_addr, src, size);
Expand All @@ -102,19 +101,18 @@ esp_err_t bootloader_flash_write(size_t dest_addr, void *src, size_t size, bool
}
}

esp_err_t bootloader_flash_erase_sector(size_t sector)
esp_err_t sys_flash_erase_sector(size_t sector)
{
// Will de-dependency IDF-5025
return esp_flash_erase_region(NULL, sector * SPI_FLASH_SEC_SIZE, SPI_FLASH_SEC_SIZE);
}

esp_err_t bootloader_flash_erase_range(uint32_t start_addr, uint32_t size)
esp_err_t sys_flash_erase_range(uint32_t start_addr, uint32_t size)
{
// Will de-dependency IDF-5025
return esp_flash_erase_region(NULL, start_addr, size);
}

#else //BOOTLOADER_BUILD
/* Bootloader version, uses ROM functions only */
#if CONFIG_IDF_TARGET_ESP32
#include "esp32/rom/cache.h"
Expand Down Expand Up @@ -267,6 +265,16 @@ static esp_err_t spi_to_esp_err(esp_rom_spiflash_result_t r)
}
}


#if 0//defined(CONFIG_ESPTOOLPY_FLASHMODE_QIO) || defined(CONFIG_ESPTOOLPY_FLASHMODE_QOUT)

esp_err_t bootloader_flash_read(size_t src_addr, void *dest, size_t size, bool allow_decrypt)
{
return sys_flash_read(src_addr, dest, size, allow_decrypt);
}

#else

static esp_err_t bootloader_flash_read_no_decrypt(size_t src_addr, void *dest, size_t size)
{
#if CONFIG_IDF_TARGET_ESP32
Expand Down Expand Up @@ -358,6 +366,8 @@ esp_err_t bootloader_flash_read(size_t src_addr, void *dest, size_t size, bool a
}
}

#endif /* defined(CONFIG_ESPTOOLPY_FLASHMODE_QIO) || defined(CONFIG_ESPTOOLPY_FLASHMODE_QOUT) */

esp_err_t bootloader_flash_write(size_t dest_addr, void *src, size_t size, bool write_encrypted)
{
esp_err_t err;
Expand Down Expand Up @@ -444,8 +454,6 @@ void bootloader_flash_32bits_address_map_enable(esp_rom_spiflash_read_mode_t fla
}
#endif

#endif // BOOTLOADER_BUILD


FORCE_INLINE_ATTR bool is_issi_chip(const esp_rom_spiflash_chip_t* chip)
{
Expand Down Expand Up @@ -649,12 +657,8 @@ void bootloader_spi_flash_reset(void)
#define XMC_SUPPORT CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT
#define XMC_VENDOR_ID 0x20

#if BOOTLOADER_BUILD
#define BOOTLOADER_FLASH_LOG(level, ...) ESP_EARLY_LOG##level(TAG, ##__VA_ARGS__)
#else
static DRAM_ATTR char bootloader_flash_tag[] = "bootloader_flash";
#define BOOTLOADER_FLASH_LOG(level, ...) ESP_DRAM_LOG##level(bootloader_flash_tag, ##__VA_ARGS__)
#endif

#if XMC_SUPPORT
//strictly check the model
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include "esp_attr.h"
#include "esp_err.h"
#include "soc/soc_caps.h"
#ifndef BOOTLOADER_BUILD
#ifndef CONFIG_MCUBOOT
#include "spi_flash_mmap.h"
#endif
#include "hal/efuse_ll.h"
Expand Down
2 changes: 1 addition & 1 deletion components/bootloader_support/include/esp_image_format.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ typedef struct {
typedef enum {
ESP_IMAGE_VERIFY, /* Verify image contents, not load to memory, load metadata. Print errors. */
ESP_IMAGE_VERIFY_SILENT, /* Verify image contents, not load to memory, load metadata. Don't print errors. */
#ifdef BOOTLOADER_BUILD
#ifdef CONFIG_MCUBOOT
ESP_IMAGE_LOAD, /* Verify image contents, load to memory, load metadata. Print errors. */
ESP_IMAGE_LOAD_NO_VALIDATE, /* Not verify image contents, load to memory, load metadata. Print errors. */
#endif
Expand Down
8 changes: 4 additions & 4 deletions components/bootloader_support/include/esp_secure_boot.h
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,7 @@ typedef struct {
*/
void esp_secure_boot_init_checks(void);

#if !BOOTLOADER_BUILD && (CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME || CONFIG_SECURE_SIGNED_APPS_ECDSA_V2_SCHEME)
#if !CONFIG_MCUBOOT && (CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME || CONFIG_SECURE_SIGNED_APPS_ECDSA_V2_SCHEME)

/** @brief Scan the current running app for signature blocks
*
Expand All @@ -260,7 +260,7 @@ void esp_secure_boot_init_checks(void);
*/
esp_err_t esp_secure_boot_get_signature_blocks_for_running_app(bool digest_public_keys, esp_image_sig_public_key_digests_t *public_key_digests);

#endif // !BOOTLOADER_BUILD && (CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME || CONFIG_SECURE_SIGNED_APPS_ECDSA_V2_SCHEME)
#endif // !CONFIG_MCUBOOT && (CONFIG_SECURE_SIGNED_APPS_RSA_SCHEME || CONFIG_SECURE_SIGNED_APPS_ECDSA_V2_SCHEME)

/** @brief Set all secure eFuse features related to secure_boot
*
Expand All @@ -283,7 +283,7 @@ esp_err_t esp_secure_boot_enable_secure_features(void);
bool esp_secure_boot_cfg_verify_release_mode(void);


#if !defined(BOOTLOADER_BUILD) && SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY && CONFIG_SECURE_BOOT_V2_ENABLED
#if !defined(CONFIG_MCUBOOT) && SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY && CONFIG_SECURE_BOOT_V2_ENABLED

/** @brief Returns the verification status of the image pointed by the part_pos argument against the public key digest present at index `efuse_digest_index`
*
Expand All @@ -297,7 +297,7 @@ bool esp_secure_boot_cfg_verify_release_mode(void);
*/
esp_err_t esp_secure_boot_verify_with_efuse_digest_index(int efuse_digest_index, esp_partition_pos_t *part_pos);

#endif // !defined(BOOTLOADER_BUILD) && SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY && CONFIG_SECURE_BOOT_V2_ENABLED
#endif // !defined(CONFIG_MCUBOOT) && SOC_SUPPORT_SECURE_BOOT_REVOKE_KEY && CONFIG_SECURE_BOOT_V2_ENABLED

#ifdef __cplusplus
}
Expand Down
4 changes: 2 additions & 2 deletions components/bootloader_support/src/bootloader_clock_loader.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

#include "soc/rtc.h"

#ifdef BOOTLOADER_BUILD
#ifdef CONFIG_MCUBOOT

int esp_clk_apb_freq(void)
{
return rtc_clk_apb_freq_get();
}

#endif // BOOTLOADER_BUILD
#endif // CONFIG_MCUBOOT
Original file line number Diff line number Diff line change
Expand Up @@ -212,14 +212,14 @@ void bootloader_common_update_rtc_retain_mem(esp_partition_pos_t* partition, boo

rtc_retain_mem_t* bootloader_common_get_rtc_retain_mem(void)
{
#ifdef BOOTLOADER_BUILD
#ifdef CONFIG_MCUBOOT
#define RTC_RETAIN_MEM_ADDR (SOC_RTC_DRAM_HIGH - sizeof(rtc_retain_mem_t))
static rtc_retain_mem_t *const s_bootloader_retain_mem = (rtc_retain_mem_t *)RTC_RETAIN_MEM_ADDR;
return s_bootloader_retain_mem;
#else
static __attribute__((section(".bootloader_data_rtc_mem"))) rtc_retain_mem_t s_bootloader_retain_mem;
return &s_bootloader_retain_mem;
#endif // !BOOTLOADER_BUILD
#endif // !CONFIG_MCUBOOT
}

#endif // CONFIG_BOOTLOADER_RESERVE_RTC_MEM
4 changes: 2 additions & 2 deletions components/bootloader_support/src/bootloader_random.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#include "hal/lp_timer_hal.h"
#endif

#ifndef BOOTLOADER_BUILD
#ifndef CONFIG_MCUBOOT
#include "esp_random.h"
#include "esp_private/periph_ctrl.h"

Expand Down Expand Up @@ -100,4 +100,4 @@ void bootloader_random_disable()

#endif // CONFIG_IDF_ENV_FPGA

#endif // BOOTLOADER_BUILD
#endif // CONFIG_MCUBOOT
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#include "esp_private/regi2c_ctrl.h"
#include "hal/adc_ll.h"

#ifndef BOOTLOADER_BUILD
#ifndef CONFIG_MCUBOOT
#include "esp_private/periph_ctrl.h"
#endif

Expand All @@ -25,11 +25,11 @@ void bootloader_random_enable(void)
/* Ensure the Wifi clock for RNG modiule is enabled following a soft reset. This should always be the case already
(this clock is never disabled while the CPU is running), this is a "belt and braces" type check.
*/
#ifdef BOOTLOADER_BUILD
#ifdef CONFIG_MCUBOOT
DPORT_SET_PERI_REG_MASK(DPORT_WIFI_CLK_EN_REG, DPORT_WIFI_CLK_RNG_EN);
#else
periph_module_enable(PERIPH_RNG_MODULE);
#endif // BOOTLOADER_BUILD
#endif // CONFIG_MCUBOOT

// Enable 8M clock source for RNG (this is actually enough to produce strong random results,
// but enabling the SAR ADC as well adds some insurance.)
Expand Down
6 changes: 3 additions & 3 deletions components/bootloader_support/src/bootloader_utility.c
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ static bool try_load_partition(const esp_partition_pos_t *partition, esp_image_m
ESP_LOGD(TAG, "Can't boot from zero-length partition");
return false;
}
#ifdef BOOTLOADER_BUILD
#ifdef CONFIG_MCUBOOT
if (bootloader_load_image(partition, data) == ESP_OK) {
ESP_LOGI(TAG, "Loaded app from partition at offset 0x%x",
partition->offset);
Expand Down Expand Up @@ -916,7 +916,7 @@ static void set_cache_and_start_app(

void bootloader_reset(void)
{
#ifdef BOOTLOADER_BUILD
#ifdef CONFIG_MCUBOOT
bootloader_atexit();
esp_rom_delay_us(1000); /* Allow last byte to leave FIFO */
esp_rom_software_reset_system();
Expand All @@ -928,7 +928,7 @@ void bootloader_reset(void)

void bootloader_atexit(void)
{
#ifdef BOOTLOADER_BUILD
#ifdef CONFIG_MCUBOOT
bootloader_console_deinit();
#else
abort();
Expand Down
Loading