======如何配置 ESP32 Menuconfig====== =====准备===== 我们可以有2种方式进入menuconfig模式 1 在 Eclipse 界面启动 ** MenuConfig ** Target (需参照[[:ai_ide_use|]] IDF章节); 2 打开 Cygwin.bat, 进入工程目录,执行 ** make menuconfig** 指令。 这 2 种方法最终实现的效果都是一致的,您可以根据自己的需要进行选择。 =====介绍===== 执行 ** make menuconfig ** 后,界面显示如下: {{esp32:examples:menuconfig:menuconfig_show.png|}} 其中: ^ 项目 ^ 备注 ^ |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:examples:menuconfig:sdktool.png|}} ^ 项目 ^ 默认值 ^ 备注 ^ |Compiler toolchain path/prefix| xtensa-esp32-elf- | 该配置项一般无需配置,除非自己编译交叉编译链时,且使用了跟 xtensa-esp32-elf- 不同的名字。 | |Python 2 interpreter| python | python 2 解释器的名称,一般默认都是python。 | =====Bootloader config===== {{esp32:examples:menuconfig:bootloader_show.png|}} ^ 项目 ^ 备注 ^ |Bootloader log verbosity|Warning| 这里可以配置BootLoader的日志打印级别,级别越高,打印出的日志信息量越多,可以根据自己的需要选择合适的级别。\\ 级别排序为:No output < Error < Warning < Info < Debug < Verbose 。| =====Serial flasher config===== {{esp32:examples:menuconfig:serial_flash_config.png}} ^ 项目 ^ 默认值 ^ 备注 ^ |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:examples:menuconfig:partition_table.png|}} ^ 项目 ^ 默认值 ^ 可选值 ^ 备注 ^ | 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:examples:menuconfig:partition_table_custom.png|}} 下面以 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:examples:menuconfig:component_config.png|}} ====ESP32-specific config==== {{esp32:examples:menuconfig:esp32_specific_config.png|}} ^ 项目 ^ 备注 ^ |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:examples:menuconfig:partition_table.png|}} ^ 项目 ^ 备注 ^ |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:examples:menuconfig:log_output.png|}} ^ 项目 ^ 备注 ^ |Default log verbosity|默认日志打印级别,级别越高,打印出的日志信息量越多,可以根据自己的需要选择合适的级别。\\ 级别排序为:No output < Error < Warning < Info < Debug < Verbose 。| |Use ANSI terminal colors in log output|是否开启彩色输出,需要您的串口工具支持彩色显示。| ====LWIP==== {{esp32:examples:menuconfig:lwip.png|}} ^ 项目 ^ 默认值 ^ 备注 ^ |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==== {{esp32:examples:menuconfig:mbedtls.png|}} ^ 项目 ^ 默认值 ^ 备注 ^ |TLS maximum message content length| 16384 (bytes) | TLS 消息内容最大长度 | |Enable mbedTLS debugging | NO | 是否开启 mbedTLS 调试| ====SPI Flash driver==== {{esp32:examples:menuconfig:spi_flash_driver.png|}} ^ 项目 ^ 默认值 ^ 备注 ^ |Enable operation counters| NO | 是否开启SPI Flash 使用统计,开启后可以调用以下几个函数:\\ spi_flash_reset_counters \\ spi_flash_dump_counters \\ spi_flash_get_counters|