feat(app_update): add API for checking the spi mode compatibility

New API to check the SPI flash mode from the incoming firmware image
during OTA updates could prevent bootloader/app incompatibility of
DIO vs QIO flash modes.

More information:
 - https://github.com/espressif/esp-hosted-mcu/issues/143#issuecomment-3741753788
 - https://github.com/espressif/esp-idf/issues/9674#issuecomment-1232533757
 - https://github.com/espressif/esp-idf/issues/9542#issuecomment-1211317354
This commit is contained in:
Mahavir Jain
2026-01-18 19:01:20 +05:30
parent 1837390102
commit 21f8ca5e6f
11 changed files with 131 additions and 26 deletions
@@ -125,6 +125,10 @@ The ``DROM`` segment of the application binary starts with the :cpp:type:`esp_ap
* ``time`` and ``date``: compile time and date
* ``idf_ver``: version of ESP-IDF [#f1]_
* ``app_elf_sha256``: contains SHA256 hash for the application ELF file
* ``min_efuse_blk_rev_full``: minimal eFuse block revision supported by the image, in format: major * 100 + minor
* ``max_efuse_blk_rev_full``: maximal eFuse block revision supported by the image, in format: major * 100 + minor
* ``mmu_page_size``: MMU page size in log base 2 format
* ``spi_flash_mode``: SPI flash mode as per ``CONFIG_ESPTOOLPY_FLASHMODE_VAL`` for compatibility check during OTA
.. [#f1] The maximum length is 32 characters, including null-termination character. For example, if the length of ``PROJECT_NAME`` exceeds 31 characters, the excess characters will be disregarded.
@@ -125,6 +125,10 @@
* ``time````date``:编译时间和日期
* ``idf_ver``ESP-IDF 的版本 [#f1]_
* ``app_elf_sha256``:包含应用程序 ELF 文件的 sha256 哈希
* ``min_efuse_blk_rev_full``:镜像支持的最小 eFuse 块版本,格式为:major * 100 + minor
* ``max_efuse_blk_rev_full``:镜像支持的最大 eFuse 块版本,格式为:major * 100 + minor
* ``mmu_page_size``:MMU 页大小,以 log2 格式表示
* ``spi_flash_mode``SPI flash 模式,取自 ``CONFIG_ESPTOOLPY_FLASHMODE_VAL``,用于 OTA 过程中的兼容性检查
.. [#f1] 最大长度为 32 个字符,其中包括 null 终止符。也就是说,如果 ``PROJECT_NAME`` 的长度超过 31 个字符,超出的字符将被忽略。