如何配置 ESP32 Menuconfig

准备

我们可以有2种方式进入menuconfig模式

1 在 Eclipse 界面启动 MenuConfig Target (需参照如何使用安信可 ESP 系列一体化开发环境 IDF章节);

2 打开 Cygwin.bat, 进入工程目录,执行 make menuconfig 指令。

这 2 种方法最终实现的效果都是一致的,您可以根据自己的需要进行选择。

介绍

执行 make menuconfig 后,界面显示如下:

其中:

项目 备注
SDK tool configuration 配置SDK 开发工具链的信息,一般未编译自己工具链时不用修改
Bootloader config 配置BootLoader 启动时的日志打印级别
Serial flasher config 配置串口下载时使用的端口、波特率、Flash 模式、Flash 频率、是否压缩上传等
Partition Table 配置分区信息,可选择默认分区配置或自定义分区配置
Component config 组件配置 包含ESP32的特殊配置、WiFi配置、BLE配置、FreeRTOS配置、LWIP配置、日志配置、SPI配置、用户程序自定义配置等

下面分开讲解每一项的配置意义,所有的备注均为个人理解,请尽量以配置菜单中的【Help】菜单显示为准。

SDK tool configuration

项目 默认值 备注
Compiler toolchain path/prefix xtensa-esp32-elf- 该配置项一般无需配置,除非自己编译交叉编译链时,且使用了跟 xtensa-esp32-elf- 不同的名字。
Python 2 interpreter python python 2 解释器的名称,一般默认都是python。

Bootloader config

项目 备注
Bootloader log verbosityWarning 这里可以配置BootLoader的日志打印级别,级别越高,打印出的日志信息量越多,可以根据自己的需要选择合适的级别。
级别排序为:No output < Error < Warning < Info < Debug < Verbose 。

Serial flasher config

项目 默认值 备注
Default serial port /dev/ttyUSB0 windows 下的 COM1 对应 cygwin 下的/dev/ttyS0 ,COM2 对应 ttyS1,以此类推。
Default baud rate 921600您可以选择 230400/921600/2M/Other baud rate ,如果您选择了 Other baud rate,则需要在下面手动输入您认为可用的下载速率,ESP32 目前最大的下载速率为 1152000.
Use compressed upload 是否选择压缩上传,可以提升固件下载时的速度。
Flash SPI mode DIO SPI运行模式,推荐DIO方式
Flash SPI speed 40MHZ SPI 速率,需要根据自己的 Flash 型号进行配置,部分型号的Flash不支持过高的速率。

Partition Table

项目 默认值 可选值 备注
Partition Table Single factory app, no OTA Single factory app, no OTA
Factory app, two OTA definitions
Custom partition table CSV
默认分区文件地址为:components/partition_table
一般使用Single factory app, no OTA 。
自定义分区可以参考下面的示例

如何修改自定义分区表

下面以 NodeMCU 的 spiffs 分区为例:

1 勾选 Custom partition table CSV

2 在 Custom partition table CSV 中输入自定义的分区信息文件名:partitions-2MB.csv

3 在工程的根目录下建立 partitions-2MB.csv文件(参考 components/platform/partitions-2MB.csv)

# Espressif ESP32 Partition Table
# Name Type SubType Offset Size
factory app factory 0x10000 1M
rfdata data rf 0x110000 256K
wifidata data wifi 0x150000 256K
# 0xC2 ⇒ NodeMCU 0x0 ⇒ Spiffs
spiffs 0xC2 0x0 448K

4 编译下载。

具体的分区使用详情可以参考 https://github.com/espressif/esp-idf/blob/master/docs/partition-tables.rst

Component config

ESP32-specific config

项目 备注
CPU frequency (240 MHz) 可选择 80/160/240MHZ,CPU 频率越大,运行速率越高,但越容易发生不稳定现象。
Select stack to enable (WiFi or BT) 可选择开启 WiFi 或 BT 功能,当前 ESP32 的 WiFi 和 BT 尚不能共存,仅可保留一项。
Reserve memory for two cores
Use TRAX tracing feature 是否使用ESP32的追踪特性,会占用16K的内存(每个核),建议关闭
Use external SPI SRAM chip as main memory 是否使用外部 SPI SRAM 作为主内存?
System event queue size 系统事件的队列大小,默认为 32
Event loop task stack size 系统事件任务的堆栈大小,默认为 2048
Main task stack size 主任务的堆栈大小,默认为 4096
Standard-out output adds carriage return before newline 标准输出数据时添加一个回车符(在输出 LF 前添加 CR)
Enable Ultra Low Power (ULP) Coprocessor 启用超低功耗协处理器

FreeRTOS

项目 备注
Run FreeRTOS only on first core 默认FreeRTOS运行在两个核上,若需要使用其它进程控制另外一个核,则可以启用该选项。建议禁止
Xtensa timer to use as the FreeRTOS tick source FreeRTOS 的心跳时钟源,默认即可
Tick rate (Hz) FreeRTOS 的心跳速率,取值范围为 1~1000
Halt when an SMP-untested function is called 当对称多处理器单元测试函数被调用时停止运行(此项翻译不确定)
Check for stack overflow 检查堆栈溢出
Amount of thread local storage pointers 本地可以存储的线程指针数目,默认为1,取值范围为 1~256,使用 WiFi 栈时至少为 1
Panic handler behaviour 发生异常时如何处理:
Print registers and halt
Print registers and reboot
Silent reboot
Invoke GDBStub
Make exception and panic handlers JTAG/OCD aware 发生异常时若检测到 JTAG OCD 调试器,直接将调试器停止在异常指令的位置
FreeRTOS assertions 是否使用 configASSERT()
Stop program on scheduler start when JTAG/OCD is detected 检测到连接调试器时,停止调度器的自动开始
Enable heap memory debug 开启后可以显示出 Heap 的分布,可以发现内存的崩溃
Debug FreeRTOS internals 调试 FreeRTOS 内部组件,可以打印的信息以供调试

Log output

项目 备注
Default log verbosity默认日志打印级别,级别越高,打印出的日志信息量越多,可以根据自己的需要选择合适的级别。
级别排序为:No output < Error < Warning < Info < Debug < Verbose 。
Use ANSI terminal colors in log output是否开启彩色输出,需要您的串口工具支持彩色显示。

LWIP

项目 默认值 备注
Max number of open sockets 4 同时开启 sockets 的最大数目,取值为 1~16,过大会消耗过多内存
Index for thread-local-storage pointer for lwip 0 线程本地指针索引,默认即可
Enable SO_REUSEADDR option NO 是否使能 SO_REUSEADDR 选项,关于该选项的作用可以参考以下几个链接:
http://www.cnblogs.com/mydomain/archive/2011/08/23/2150567.html
http://blog.sina.com.cn/s/blog_53a2ecbf010095db.html
http://www.sudu.cn/info/html/edu/20050101/296180.html

mbedTLS

项目 默认值 备注
TLS maximum message content length 16384 (bytes) TLS 消息内容最大长度
Enable mbedTLS debugging NO 是否开启 mbedTLS 调试

SPI Flash driver

项目 默认值 备注
Enable operation counters NO 是否开启SPI Flash 使用统计,开启后可以调用以下几个函数:
spi_flash_reset_counters
spi_flash_dump_counters
spi_flash_get_counters