Merge branch 'bugfix/anti_rollback_without_test_app' into 'master'

bootloader: Anti-rollback mode doesn't run test_app

See merge request espressif/esp-idf!12225
This commit is contained in:
Angus Gratton
2021-02-09 14:16:51 +08:00
3 changed files with 6 additions and 4 deletions

View File

@@ -153,6 +153,7 @@ menu "Bootloader config"
config BOOTLOADER_APP_TEST
bool "GPIO triggers boot from test app partition"
default N
depends on !BOOTLOADER_APP_ANTI_ROLLBACK
help
Allows to run the test app from "TEST" partition.
A boot from "test" partition will occur if there is a GPIO input pulled low while device starts up.

View File

@@ -477,7 +477,7 @@ void bootloader_utility_load_boot_image(const bootloader_state_t *bs, int start_
esp_image_metadata_t image_data;
if (start_index == TEST_APP_INDEX) {
if (try_load_partition(&bs->test, &image_data)) {
if (check_anti_rollback(&bs->test) && try_load_partition(&bs->test, &image_data)) {
load_image(&image_data);
} else {
ESP_LOGE(TAG, "No bootable test partition in the partition table");
@@ -513,7 +513,7 @@ void bootloader_utility_load_boot_image(const bootloader_state_t *bs, int start_
log_invalid_app_partition(index);
}
if (try_load_partition(&bs->test, &image_data)) {
if (check_anti_rollback(&bs->test) && try_load_partition(&bs->test, &image_data)) {
ESP_LOGW(TAG, "Falling back to test app as only bootable partition");
load_image(&image_data);
}

View File

@@ -14,10 +14,11 @@ if(NOT BOOTLOADER_BUILD)
# If anti-rollback option is set then factory partition should not be in Partition Table.
# In this case, should be used the partition table with two ota app without the factory.
partition_table_get_partition_info(factory_offset "--partition-type app --partition-subtype factory" "offset")
if(CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK AND factory_offset)
partition_table_get_partition_info(test_offset "--partition-type app --partition-subtype test" "offset")
if(CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK AND (factory_offset OR test_offset))
fail_at_build_time(check_table_contents "\
ERROR: Anti-rollback option is enabled. Partition table should \
consist of two ota app without factory partition.")
consist of two ota app without factory or test partitions.")
add_dependencies(app check_table_contents)
endif()