diff --git a/components/bootloader/Kconfig.projbuild b/components/bootloader/Kconfig.projbuild index 3c015c795f..71ffe78cc2 100644 --- a/components/bootloader/Kconfig.projbuild +++ b/components/bootloader/Kconfig.projbuild @@ -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. diff --git a/components/bootloader_support/src/bootloader_utility.c b/components/bootloader_support/src/bootloader_utility.c index 9899511e38..fc6b9a3eb8 100644 --- a/components/bootloader_support/src/bootloader_utility.c +++ b/components/bootloader_support/src/bootloader_utility.c @@ -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); } diff --git a/components/esptool_py/CMakeLists.txt b/components/esptool_py/CMakeLists.txt index 90ccadcf7e..3b588b7c91 100644 --- a/components/esptool_py/CMakeLists.txt +++ b/components/esptool_py/CMakeLists.txt @@ -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()