当前位置: 首页 > 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.dtcms.com/a/321218.html

相关文章:

  • Vue 项目安全设置方案:XSS/CSRF 防护指南
  • 浅谈:如何复现修复Bug?
  • OpenCV 3 终极指南:创建炫酷自定义窗口与图像显示的艺术
  • 【代码随想录day 14】 力扣 111.二叉树的最小深度
  • Cesium 无人机视角飞行漫游,截屏
  • RabbitMQ详情介绍—七种工作模式
  • springmvc4+hibernate4整合框架的搭建
  • 库函数版独立按键用位运算方式实现(STC8)
  • Array Description(Dynamic programming)
  • 【网络编程】IO多路转接——epoll
  • Java文件读写(IO、NIO)
  • 第39周——训练自己的数据集
  • 汇编语言和高级语言的差异
  • BGP综合实验练习作业
  • Fabarta个人专属智能体:三维搜索链+动态大纲重构教材开发范式
  • Omron(欧姆龙)SysmacStudio软件下载,定期更新(最新更新到1.63升级包)
  • npm run 常见脚本
  • BGP协议笔记
  • 【新启航】航空飞机起落架深孔型腔的内轮廓测量方法探究 - 激光频率梳 3D 轮廓检测
  • 2025华数杯数学建模A题【 多孔膜光反射性能的优化与控制】原创论文讲解(含完整python代码)
  • 避免“卡脖子”!如何减少内存I/O延迟对程序的影响?
  • 机器学习——支持向量机(SVM)实战案例
  • 操作系统-实验-进程
  • 机器学习之支持向量机(原理)
  • svm的一些应用
  • 怎么查看Linux I2C总线挂载了那些设备?
  • springboot整合rabbitMQ的示例
  • Elasticsearch:在向量搜索中使用 Direct IO
  • 解码华为云安全“铁三角”:用“分层防御”化解安全挑战
  • 微软披露Exchange Server漏洞:攻击者可静默获取混合部署环境云访问权限