feat(bootloader): Support recovery bootloader for ESP32S31 and ESP32P4

This commit is contained in:
Konstantin Kondrashov
2026-05-08 16:45:14 +03:00
parent d9cfb2908a
commit e8609f59a8
24 changed files with 159 additions and 73 deletions
@@ -16,9 +16,9 @@ components/app_update/test_apps:
temporary: true
reason: not supported yet # TODO: [ESP32C61] IDF-12784
disable_test:
- if: CONFIG_NAME == "recovery_bootloader" and SOC_RECOVERY_BOOTLOADER_SUPPORTED == 1 and IDF_TARGET == "esp32c61"
- if: CONFIG_NAME == "recovery_bootloader" and SOC_RECOVERY_BOOTLOADER_SUPPORTED == 1 and IDF_TARGET in ["esp32s31"]
temporary: true
reason: lack of runners # TODO: [ESP32C61] IDF-13165
reason: lack of runners # TODO: IDFCI-10334
depends_components:
- app_update
- bootloader_support
@@ -71,7 +71,8 @@ def test_app_update_with_rollback(dut: Dut) -> None:
['recovery_bootloader'],
indirect=True,
)
@idf_parametrize('target', ['esp32c5'], indirect=['target'])
@idf_parametrize('target', ['esp32c5', 'esp32c61', 'esp32p4', 'esp32s31'], indirect=['target'])
@pytest.mark.temp_skip_ci(targets=['esp32s31'], reason='lack of dedicated runners')
def test_recovery_bootloader_update(dut: Dut) -> None:
try:
dut.run_all_single_board_cases(group='recovery_bootloader', timeout=90)
@@ -0,0 +1,3 @@
# ESP32P4 supports the Recovery bootloader feature in ROM from rev3.0
CONFIG_IDF_TARGET="esp32p4"
CONFIG_ESP32P4_REV_MIN_300=y
@@ -0,0 +1,2 @@
# ESP32S31 supports the Recovery bootloader feature in ROM
CONFIG_IDF_TARGET="esp32s31"
@@ -0,0 +1,3 @@
CONFIG_IDF_TARGET="esp32c61"
CONFIG_BOOTLOADER_NUM_PIN_APP_TEST=18
CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET=19
@@ -0,0 +1,3 @@
CONFIG_IDF_TARGET="esp32s31"
CONFIG_BOOTLOADER_NUM_PIN_APP_TEST=18
CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET=4