准备
我们可以有2种方式进入menuconfig模式
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 verbosity | Warning | 这里可以配置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.htmlhttp://blog.sina.com.cn/s/blog_53a2ecbf010095db.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 |