准备

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

 

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

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

介绍

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

esp32 menuconfig esp32menuconfig设置_默认值

其中:

项目

备注

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

esp32 menuconfig esp32menuconfig设置_自定义_02

项目

默认值

备注

Compiler toolchain path/prefix

xtensa-esp32-elf-

该配置项一般无需配置,除非自己编译交叉编译链时,且使用了跟 xtensa-esp32-elf- 不同的名字。

Python 2 interpreter

python

python 2 解释器的名称,一般默认都是python。

Bootloader config

esp32 menuconfig esp32menuconfig设置_默认值_03

项目

备注

Bootloader log verbosity

Warning

这里可以配置BootLoader的日志打印级别,级别越高,打印出的日志信息量越多,可以根据自己的需要选择合适的级别。

级别排序为:No output < Error < Warning < Info < Debug < Verbose 。

Serial flasher config

esp32 menuconfig esp32menuconfig设置_自定义_04

项目

默认值

备注

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

esp32 menuconfig esp32menuconfig设置_默认值_05

项目

默认值

可选值

备注

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 。

自定义分区可以参考下面的示例

如何修改自定义分区表

esp32 menuconfig esp32menuconfig设置_自定义_06

下面以 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 menuconfig esp32menuconfig设置_esp32 menuconfig_07

ESP32-specific config

esp32 menuconfig esp32menuconfig设置_esp32 menuconfig_08

项目

备注

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

esp32 menuconfig esp32menuconfig设置_默认值_05

项目

备注

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

esp32 menuconfig esp32menuconfig设置_html_10

项目

备注

Default log verbosity

默认日志打印级别,级别越高,打印出的日志信息量越多,可以根据自己的需要选择合适的级别。

级别排序为:No output < Error < Warning < Info < Debug < Verbose 。

Use ANSI terminal colors in log output

是否开启彩色输出,需要您的串口工具支持彩色显示。

LWIP

esp32 menuconfig esp32menuconfig设置_默认值_11

项目

默认值

备注

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.htmlhttp://blog.sina.com.cn/s/blog_53a2ecbf010095db.html

http://www.sudu.cn/info/html/edu/20050101/296180.html

mbedTLS

esp32 menuconfig esp32menuconfig设置_html_12

项目

默认值

备注

TLS maximum message content length

16384 (bytes)

TLS 消息内容最大长度

Enable mbedTLS debugging

NO

是否开启 mbedTLS 调试

SPI Flash driver

esp32 menuconfig esp32menuconfig设置_esp32 menuconfig_13

项目

默认值

备注

Enable operation counters

NO

是否开启SPI Flash 使用统计,开启后可以调用以下几个函数:

spi_flash_reset_counters

spi_flash_dump_counters

spi_flash_get_counters