配置 SPI flash
每个 ESP-IDF 应用程序或引导加载程序的二进制文件中都包含一个文件头,其中内置了 CONFIG_ESPTOOLPY_FLASHMODE、CONFIG_ESPTOOLPY_FLASHFREQ、和 CONFIG_ESPTOOLPY_FLASHSIZE。这些是用于在启动时配置 SPI flash。
ROM 中的 一级引导程序 从 flash 中读取 二级引导程序 文件头中的配置信息,并使用这些信息来加载剩余的 二级引导程序。然而,此时系统的时钟速度低于其被配置的速度,并且在这个阶段,只支持部分 flash 模式。因此,当 二级引导程序 运行时,它会从当前应用程序的二进制文件头中读取数据(而不是从引导加载程序的文件头中读取数据),并使用这些数据重新配置 flash。这样的配置流程可让 OTA 更新去更改当前使用的 SPI flash 的配置。
ESP-IDF V4.0 版本之前的引导加载程序使用其自身的文件头来配置 SPI flash,这意味着无法在 OTA 更新时更改 SPI flash 配置。为了与旧引导加载程序兼容,应用程序在其启动期间使用应用程序文件头中的配置信息重新初始化 flash 配置。
|