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

Build Type Bootloader config


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 字节对齐)。

基于C2000 DSP的电力电子、电机驱动和数字滤波器的仿真模型构建及其C代码实现方法。首先,在MATLAB/Simulink环境中创建电力电子系统的仿真模型,如三相逆变器,重点讨论了PWM生成模块中死区时间的设置及其对输出波形的影响。接着,深入探讨了C2000 DSP内部各关键模块(如ADC、DAC、PWM定时器)的具体配置步骤,特别是EPWM模块采用上下计数模式以确保对称波形的生成。此外,还讲解了数字滤波器的设计流程,从MATLAB中的参数设定到最终转换为适用于嵌入式系统的高效C代码。文中强调了硬件在环(HIL)和支持快速原型设计(RCP)的重要性,并分享了一些实际项目中常见的陷阱及解决方案,如PCB布局不当导致的ADC采样异常等问题。最后,针对中断服务程序(ISR)提出了优化建议,避免因ISR执行时间过长而引起的系统不稳定现象。 适合人群:从事电力电子、电机控制系统开发的技术人员,尤其是那些希望深入了解C2000 DSP应用细节的研发工程师。 使用场景及目标:①掌握利用MATLAB/Simulink进行电力电子设备仿真的技巧;②学会正确配置C2000 DSP的各项外设资源;③能够独立完成从理论设计到实际产品落地全过程中的各个环节,包括但不限于数字滤波器设计、PWM信号生成、ADC采样同步等。 其他说明:文中提供了大量实用的代码片段和技术提示,帮助读者更好地理解和实践相关知识点。同时,也提到了一些常见错误案例,有助于开发者规避潜在风险。
### 配置 ESP32-S3-Korvo-2 的开发环境 为了成功配置并运行基于 ESP32-S3-Korvo-2 的开发环境,以下是详细的说明: #### 1. 硬件需求 ESP32-S3-Korvo-2 是一款支持 AI 功能的开发板,其内置了音频输入模块。因此,在硬件方面,只需准备好该开发板即可满足基本需求[^1]。 #### 2. 软件准备 软件部分主要涉及以下几个方面的准备工作: - **安装工具链**:需要下载并安装适用于 ESP32-S3 的 IDF 工具链(Espressif IoT Development Framework)。可以通过 Espressif 官方网站获取最新版本。 - **克隆项目仓库**:访问 ESP-Skainet GitHub 仓库,并将其克隆到本地环境中。这一步可以确保获得最新的源码以及相关依赖文件。 #### 3. 设置开发板参数 由于默认情况下可能不会自动识别 ESP32-S3-Korvo-2 开发板,所以需要手动调整 `menuconfig` 中的相关选项来适配目标设备。具体操作如下: 进入项目的根目录后执行命令 `idf.py menuconfig` 打开配置界面。导航至路径 `Component config -> Audio HAL -> Select audio board` 并从中选取对应项——即 `CONFIG_AUDIO_BOARD_ESP32_S3_KORVO_2` 来指定当前使用的硬件平台为 Korvo-2 版本[^2]。 #### 4. 编译与烧录固件 完成上述步骤之后就可以开始编译整个工程项目了。通过终端依次运行以下两条指令实现这一过程: ```bash idf.py build idf.py flash monitor ``` 以上流程能够帮助开发者顺利搭建起针对 ESP32-S3-Korvo-2 的工作框架,从而进一步探索更多高级特性比如语音唤醒、自然语言处理等功能。 ```python import esptool esptool.main(['--chip', 'esp32s3', '--port', '/dev/ttyUSB0', 'write_flash', '-z', '--flash_mode', 'dio', '--flash_freq', '80m', '--flash_size', 'detect', '0x1000', './build/bootloader/bootloader.bin', '0x8000', './build/partition_table/partition-table.bin', '0x10000', './build/esp-skainet-example.bin']) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值