当前位置: 首页 > news >正文

【ESP32-menuconfig(1) -- Build Type及Bootloader config】

Build Type Bootloader config

    • menuconfig介绍
    • Build type
      • CONFIG_APP_BUILD_TYPE
      • CONFIG_APP_BUILD_TYPE_PURE_RAM_APP
      • CONFIG_APP_REPRODUCIBLE_BUILD
      • CONFIG_APP_NO_BLOBS
      • CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS
      • CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS
    • Bootloader config
      • Bootloader manager
        • CONFIG_BOOTLOADER_COMPILE_TIME_DATE
        • CONFIG_BOOTLOADER_PROJECT_VER
      • Application Rollback
        • CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE
        • CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK
        • CONFIG_BOOTLOADER_APP_SECURE_VERSION
        • CONFIG_BOOTLOADER_APP_SEC_VER_SIZE_EFUSE_FIELD
        • CONFIG_BOOTLOADER_EFUSE_SECURE_VERSION_EMULATE
      • Bootloader Rollback
        • CONFIG_BOOTLOADER_ANTI_ROLLBACK_ENABLE
        • CONFIG_BOOTLOADER_SECURE_VERSION
      • CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION
      • CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE
      • CONFIG_BOOTLOADER_APP_TEST
        • CONFIG_BOOTLOADER_NUM_PIN_APP_TEST
        • CONFIG_BOOTLOADER_APP_TEST_PIN_LEVEL
      • Log
        • CONFIG_BOOTLOADER_LOG_LEVEL
        • Format
        • Settings
      • Serial Flash Configurations
        • CONFIG_BOOTLOADER_SPI_CUSTOM_WP_PIN
        • CONFIG_BOOTLOADER_SPI_WP_PIN
        • CONFIG_BOOTLOADER_FLASH_DC_AWARE
        • CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT
        • CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH
      • CONFIG_BOOTLOADER_VDDSDIO_BOOST
      • CONFIG_BOOTLOADER_FACTORY_RESET
        • CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET
        • CONFIG_BOOTLOADER_FACTORY_RESET_PIN_LEVEL
        • CONFIG_BOOTLOADER_OTA_DATA_ERASE
        • CONFIG_BOOTLOADER_DATA_FACTORY_RESET
        • CONFIG_BOOTLOADER_HOLD_TIME_GPIO
      • CONFIG_BOOTLOADER_HOLD_TIME_GPIO
      • CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE
      • CONFIG_BOOTLOADER_WDT_ENABLE
        • CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE
        • CONFIG_BOOTLOADER_WDT_TIME_MS
      • CONFIG_BOOTLOADER_WDT_TIME_MS
      • CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP
      • CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON
      • CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS
      • CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC
        • CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC_IN_CRC
        • CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC_SIZE

Bootloader config)

menuconfig介绍

最近的开发中,不可避免的要通过idf.py menuconfig来配置工程,但是官网文档这块做的比较杂,于是我决定自己把menuconfig完整看一遍

首先,简单介绍一下ESP-IDF的menuconfig,ESP-IDF 的 menuconfig 是一个基于 Kconfig 系统的编译时配置工具,用于定制项目功能和硬件设置。它通过文本用户界面(TUI)或图形界面(在支持的 IDE 中)提供交互式配置,生成 sdkconfig 文件,进而影响项目构建和功能实现。

至于menuconfig具体的选项,可以在官方文档网站看到
(备注,这部分文档针对最新版本的V5.5版本,建议非5.5版本的更新到5.5版本,离线的那个5.4.1版本,真的一言难尽,难评)

V5.4版本的文档无配置描述
Alt
V5.5版本新增配置描述
Alt

Configuration Options Reference - ESP32 - — ESP-IDF 编程指南 v5.5 文档

不过内容是全英文的,说实话这也是国产芯片之殇了,英文文档远多于中文,乐鑫已经算做的比较好的了。

接下来我们来逐项分析(翻译)一下
PS:(狗头保命,翻译来自AI,因为量大,所以和我项目无关的内容我基本只复制了,没有验证对不对)
由于内容过多(主要是bootload内容,这篇文章只介绍build type和bootload的内容)
而且我发现,实际menuconfig展示的内容,和文档描述顺序些许不同,但是选项含义应该是覆盖全的,本人学习ESP32不过半个月,具体原因也说不上来

Build type

在这里插入图片描述

CONFIG_APP_BUILD_TYPE

功能:选择应用构建方式(二进制文件+引导加载程序,或仅生成 ELF 文件直接加载到 RAM)。
选项:

CONFIG_APP_BUILD_TYPE_APP_2NDBOOT(默认):生成 FLASH 兼容的二进制文件,包含引导加载程序。
CONFIG_APP_BUILD_TYPE_RAM(实验性):生成 ELF 文件,加载到 RAM,需 JTAG/UART 调试,IRAM/DRAM 限制严格。

CONFIG_APP_BUILD_TYPE_PURE_RAM_APP

功能:禁用外部内存(PSRAM/SPI FLASH)初始化,节省约 26KB RAM,禁用 spi_flash 组件(如 app_update)。

CONFIG_APP_REPRODUCIBLE_BUILD

功能:消除构建中的日期、时间、路径信息,生成一致的二进制文件,自动创建 .gdbinit 文件。
说明:该选项有助于生成一致固件,方便版本控制和调试,但对运行时无直接影响。

CONFIG_APP_NO_BLOBS

功能:禁用 WiFi/Bluetooth 二进制库,WiFi 和 Bluetooth 功能将不可用。

CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS

功能:支持 ESP-IDF v2.1 之前的引导加载程序,增加约 1KB IRAM 使用。

CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS

功能:支持 ESP-IDF v3.1 之前的引导加载程序和分区表(无 MD5 校验)。

Bootloader config

在这里插入图片描述

Bootloader manager

CONFIG_BOOTLOADER_COMPILE_TIME_DATE

功能:引导加载程序是否包含编译时间戳,存储在描述结构中。
适用性:启用有助于固件版本追踪,禁用可生成一致二进制文件。
推荐:生产环境中禁用,调试时启用。
原因:生产环境需一致性,调试时时间戳便于追踪。

CONFIG_BOOTLOADER_PROJECT_VER

功能:设置引导加载程序版本号(uint32_t),存储在描述结构中。
范围:0 到 4294967295,默认 1。

Application Rollback

CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE

功能:支持应用回滚,OTA 更新后标记新应用为 PENDING_VERIFY,需用户代码确认有效性,否则回滚到上一版本。

CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK

功能:防止回滚到较低安全版本的固件,基于 eFuse 存储的安全版本号。
适用性:增强安全性,防止使用存在漏洞的旧固件。推荐启用

CONFIG_BOOTLOADER_APP_SECURE_VERSION

功能:设置应用的安全版本号,存储在 eFuse 中,引导加载程序选择更高或相等版本的应用。
适用性:与反回滚配合使用,需定义 OTA 分区(ota_0 + ota_1)。

CONFIG_BOOTLOADER_APP_SEC_VER_SIZE_EFUSE_FIELD

功能:定义 eFuse 安全版本字段大小(ESP32S3 为 16 位)。
适用性:决定安全版本号的最大值,影响可升级次数。

CONFIG_BOOTLOADER_EFUSE_SECURE_VERSION_EMULATE

功能:模拟 eFuse 安全版本读写,仅用于测试,需分区表包含 emul_efuse 分区。
适用性:调试时可用,生产环境禁用以避免模拟漏洞。

Bootloader Rollback

CONFIG_BOOTLOADER_ANTI_ROLLBACK_ENABLE

功能:防止回滚到较低安全版本的引导加载程序,基于 eFuse 安全版本,增强引导加载程序安全性。

CONFIG_BOOTLOADER_SECURE_VERSION

功能:设置引导加载程序的安全版本号,ROM 引导程序检查版本。

CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION

功能:设置引导加载程序编译优化级别。
选项:

SIZE(-Os):优化大小。
DEBUG(-Og):便于调试。
PERF(-O2):优化性能。
NONE(-O0):无优化(已弃用)。

CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE

功能:保护未映射内存区域,防止意外访问触发异常。

CONFIG_BOOTLOADER_APP_TEST

备注:这三个APP_TEST内容一般来说调试时可用,生产环境通常禁用。
功能:通过 GPIO 触发从 TEST 分区启动测试应用

CONFIG_BOOTLOADER_NUM_PIN_APP_TEST

功能:指定测试分区启动的 GPIO 编号

CONFIG_BOOTLOADER_APP_TEST_PIN_LEVEL

功能:设置测试分区 GPIO 触发电平(高/低)。

Log

CONFIG_BOOTLOADER_LOG_LEVEL
CONFIG_BOOTLOADER_LOG_VERSION功能:选择引导加载程序日志版本(V1 或 V2)。CONFIG_BOOTLOADER_LOG_LEVEL功能:设置引导加载程序日志详细级别(无、错误、警告、信息、调试、详细)。
Format
CONFIG_BOOTLOADER_LOG_COLORS功能:启用 ANSI 颜色日志,需终端支持。
适用性:调试时便于阅读日志,生产环境无影响。CONFIG_BOOTLOADER_LOG_COLORS_SUPPORT功能:运行时动态启用颜色日志,增加少量 RAM/FLASH 使用。
适用性:调试时可选,生产环境禁用以节省资源。CONFIG_BOOTLOADER_LOG_TIMESTAMP_SOURCE功能:选择日志时间戳来源(无、毫秒计数)。
选项:NONE:无时间戳,节省资源。CPU_TICKS:从 RTOS 滴答计数,基于 APB 时钟或 REF_TICK。CONFIG_BOOTLOADER_LOG_TIMESTAMP_SUPPORT功能:运行时动态启用时间戳,增加少量 RAM/FLASH 使用。
适用性:调试时提供灵活性,生产时禁用。
Settings
CONFIG_BOOTLOADER_LOG_MODE功能:选择日志模式(文本或二进制)。
选项:TEXT:人类可读,适合调试。BINARY:减少 FLASH 使用(10%-35%),需主机工具解析。

Serial Flash Configurations

CONFIG_BOOTLOADER_SPI_CUSTOM_WP_PIN

功能:自定义 SPI FLASH WP 引脚(用于 QIO/QOUT 模式,eFuse 自定义引脚时)。

CONFIG_BOOTLOADER_SPI_WP_PIN

功能:指定自定义 WP 引脚的 GPIO 编号。

CONFIG_BOOTLOADER_FLASH_DC_AWARE

功能:允许应用调整 SPI FLASH 虚拟周期位以支持更高频率,强制引导加载程序使用 DOUT 模式。
适用性:高频 FLASH 操作可能需要,需验证硬件支持。

CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT

功能:支持 XMC 品牌 FLASH 芯片的启动流程。
适用性:若 FLASH 为 XMC 芯片,需启用;否则可禁用。

CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH

功能:启用对 32 位地址(>16MB)FLASH 的缓存访问,仅限四线 FLASH。

CONFIG_BOOTLOADER_VDDSDIO_BOOST

功能:设置 VDDSDIO LDO 电压,1.8V 时可提升至 1.9V 防止 FLASH 编程 brownout。
选项:

1_8V
1_9V

CONFIG_BOOTLOADER_FACTORY_RESET

功能:通过 GPIO 触发工厂重置,清除数据分区并从工厂分区启动。
适用性:便于设备恢复出厂设置,需定义 GPIO。

CONFIG_BOOTLOADER_NUM_PIN_FACTORY_RESET

功能:指定工厂重置 GPIO 编号,启用内部上拉。

CONFIG_BOOTLOADER_FACTORY_RESET_PIN_LEVEL

功能:设置工厂重置 GPIO 触发电平(高/低)。
选项:

LOW:低电平触发。
HIGH:高电平触发。
CONFIG_BOOTLOADER_OTA_DATA_ERASE

功能:工厂重置时清除 OTA 数据,从工厂分区或 OTA0 启动。

CONFIG_BOOTLOADER_DATA_FACTORY_RESET

功能:指定工厂重置时清除的分区(如 NVS、phy_init)。

CONFIG_BOOTLOADER_HOLD_TIME_GPIO

功能:设置工厂重置或测试模式 GPIO 保持时间(秒)。
适用性:确保触发可靠,需测试时间设置。

CONFIG_BOOTLOADER_HOLD_TIME_GPIO

功能:设置工厂重置或测试模式 GPIO 保持时间(秒)。

CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE

功能:保护未映射内存区域,防止意外访问触发异常。

CONFIG_BOOTLOADER_WDT_ENABLE

功能:启用 RTC 看门狗,防止启动代码因电源不稳定锁死。

CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE

功能:允许用户代码禁用 RTC 看门狗。
适用性:需用户代码手动管理 WDT(如调用 wdt_hal_feed 或 wdt_hal_disable)。

CONFIG_BOOTLOADER_WDT_TIME_MS

功能:设置 RTC 看门狗超时时间(ms,0-120000,默认 9000)。

CONFIG_BOOTLOADER_WDT_TIME_MS

功能:设置 RTC 看门狗超时时间(ms,0-120000,默认 9000)。

CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP

功能:从深度睡眠唤醒时跳过固件校验(校验和、SHA256、签名)。

CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON

功能:上电重置时跳过固件校验。

CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS

功能:始终跳过固件校验。

CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC

功能:在 RTC FAST 内存中保留自定义数据区域,重启后保留(除断电)。

CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC_IN_CRC

功能:自定义 RTC 内存是否包含在 CRC 计算中。

CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC_SIZE

功能:设置 RTC FAST 内存自定义区域大小(需 4 字节对齐)。

http://www.xdnf.cn/news/1264789.html

相关文章:

  • FreeRTOS入门知识(初识RTOS)(一)
  • WinForm 实战 (进度条):用 ProgressBar+Timer 打造动态进度展示功能
  • BBH详解:面向大模型的高阶推理评估基准与数据集分析
  • TyDi QA:面向语言类型多样性的信息检索问答基准
  • 柠檬笔试——野猪骑士
  • Python的七大框架对比分析
  • 若依前后端分离版学习笔记(七)—— Mybatis,分页,数据源的配置及使用
  • Day01 项目概述,环境搭建
  • 【代码随想录day 14】 力扣 104.二叉树的最大深度
  • 【Nginx基础①】 | VS Code Remote SSH 环境下的静态资源与反向代理配置实践
  • 防御保护09
  • 【Unity3D实例-功能-跳跃】角色跳跃
  • 文件结构树的├、└、─ 符号
  • 机器学习及其KNN算法
  • 力扣 hot100 Day69
  • ISL9V3040D3ST-F085C一款安森美 ON生产的汽车点火IGBT模块,绝缘栅双极型晶体管ISL9V3040D3ST汽车点火电路中的线圈驱动器
  • P1044 [NOIP 2003 普及组] 栈
  • 项目一系列-第4章 在线接口文档 代码模板改造
  • day070-Jenkins自动化与部署java、前端代码
  • 深入解析K-means聚类:从原理到调优实战
  • 第七章:数据持久化 —— `chrome.storage` 的记忆魔法
  • Netty-Rest搭建笔记
  • 【感知机】感知机(perceptron)学习算法例题及详解
  • 在 Elasticsearch/Kibana (ELK Stack) 中搜索包含竖线 (|)​​ 这类特殊字符的日志消息 (msg 字段) ​确实需要转义
  • 基于LLM的Chat应用测试方法探索:系统化评估与持续优化
  • java分布式定时任务
  • B4263 [GESP202503 四级] 荒地开垦 题解
  • 操作系统:多线程模型(Multithreading Models)与超线程技术(Hyperthreading)
  • 飞算JavaAI深度解析:专为Java生态而生的智能引擎
  • YOLO-Count:用于文本到图像生成的可微分目标计数