mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
fix(bootloader): add legacy retained memory CRC calculation
* Closes https://github.com/espressif/esp-idf/issues/12849 In former versions of ESP-IDF, the user custom memory data in the retained memory was taken into account during the CRC calculation. This was changed in a later commit, the custom memory was ignored, therefore this can seen as a breaking change. This commit gives the possibility to choose between the former (legacy) or new way of calculating the CRC.
This commit is contained in:
parent
91630fab36
commit
75eb489105
@ -461,6 +461,21 @@ menu "Bootloader config"
|
|||||||
(The application and bootoloader must be compiled with the same option).
|
(The application and bootoloader must be compiled with the same option).
|
||||||
The RTC FAST memory has access only through PRO_CPU.
|
The RTC FAST memory has access only through PRO_CPU.
|
||||||
|
|
||||||
|
config BOOTLOADER_CUSTOM_RESERVE_RTC_IN_CRC
|
||||||
|
bool "Include custom memory in the CRC calculation"
|
||||||
|
depends on BOOTLOADER_CUSTOM_RESERVE_RTC
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
This option allows the customer to use the legacy bootloader behavior when the
|
||||||
|
RTC FAST memory CRC calculation takes place. When this option is enabled, the
|
||||||
|
allocated user custom data will be taken into account in the CRC calculcation.
|
||||||
|
This means that any change to the custom data would need a CRC update to prevent
|
||||||
|
the bootloader from marking this data as corrupted.
|
||||||
|
If this option is disabled, the custom data will not be taken into account when
|
||||||
|
calculating the RTC FAST memory CRC. The user custom data can be changed freely,
|
||||||
|
without the need to update the CRC.
|
||||||
|
THIS OPTION MUST BE THE SAME FOR BOTH THE BOOTLOADER AND THE APPLICATION BUILDS.
|
||||||
|
|
||||||
config BOOTLOADER_CUSTOM_RESERVE_RTC_SIZE
|
config BOOTLOADER_CUSTOM_RESERVE_RTC_SIZE
|
||||||
hex "Size in bytes for custom purposes"
|
hex "Size in bytes for custom purposes"
|
||||||
default 0
|
default 0
|
||||||
|
@ -121,7 +121,7 @@ int bootloader_common_select_otadata(const esp_ota_select_entry_t *two_otadata,
|
|||||||
#if CONFIG_BOOTLOADER_RESERVE_RTC_MEM
|
#if CONFIG_BOOTLOADER_RESERVE_RTC_MEM
|
||||||
|
|
||||||
static uint32_t rtc_retain_mem_size(void) {
|
static uint32_t rtc_retain_mem_size(void) {
|
||||||
#ifdef CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC
|
#if CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC && !CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC_IN_CRC
|
||||||
/* A custom memory has been reserved by the user, do not consider this memory into CRC calculation as it may change without
|
/* A custom memory has been reserved by the user, do not consider this memory into CRC calculation as it may change without
|
||||||
* the have the user updating the CRC. Return the offset of the custom field, which is equivalent to size of the structure
|
* the have the user updating the CRC. Return the offset of the custom field, which is equivalent to size of the structure
|
||||||
* minus the size of everything after (including) `custom` */
|
* minus the size of everything after (including) `custom` */
|
||||||
|
Loading…
Reference in New Issue
Block a user