esp32将partitions.csv文件启用到工程项目中的配置

在ESP32项目里,partitions.csv 文件用于定义闪存的分区表,它规定了不同类型数据(如代码、文件系统、OTA 分区等)在闪存中的存储位置和大小。下面为你详细介绍如何将 partitions.csv 文件集成到工程项目中以及相应的配置步骤。

1. 创建或准备 partitions.csv 文件

首先,你需要有一个 partitions.csv 文件。你可以手动创建该文件,也可以基于ESP-IDF提供的示例文件进行修改。下面是一个简单的 partitions.csv 文件示例:

# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x140000,
app1,     app,  ota_1,   0x150000,0x140000,
spiffs,   data, spiffs,  0x290000,0x170000,

这个示例定义了多个分区,包括NVS(非易失性存储)、OTA数据、两个OTA应用分区和一个SPIFFS(SPI Flash文件系统)分区。

2. 将 partitions.csv 文件添加到项目中

把 partitions.csv 文件放置在项目的根目录或者特定的配置目录下。通常,建议将其放在项目根目录,这样便于管理和引用。

3. 配置项目以使用自定义的分区表

在ESP-IDF项目中,你可以通过以下两种常见方式配置项目使用自定义的 partitions.csv 文件:

方式一:使用 idf.py menuconfig
  • 打开终端,进入项目的根目录。
  • 运行以下命令打开项目配置菜单:
idf.py menuconfig
  • 在配置菜单中,导航到 Partition Table 选项:
    • Partition Table -> Custom partition table CSV
  • 输入你自定义的 partitions.csv 文件的路径,通常直接输入文件名即可(如果文件在项目根目录)。
  • 保存配置并退出菜单。
方式二:在 sdkconfig 文件中手动配置
  • 打开项目根目录下的 sdkconfig 文件。
  • 找到并修改以下配置项:
CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"

这两行配置指定使用自定义的分区表,并指明了分区表文件的名称。

4. 编译和烧录项目

完成上述配置后,就可以编译和烧录项目了。在终端中运行以下命令:

idf.py build
idf.py -p /dev/ttyUSB0 flash  # 请将 /dev/ttyUSB0 替换为你的ESP32设备的实际串口设备路径

编译过程中,ESP-IDF会根据你指定的 partitions.csv 文件生成相应的分区表,并将其烧录到ESP32的闪存中。

验证分区表配置

烧录完成后,你可以通过以下方式验证分区表是否正确配置:

  • 在代码中使用ESP-IDF提供的分区表API获取分区信息并打印输出。示例代码如下:
#include "esp_partition.h"
#include "esp_log.h"

void app_main()
{
    const esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_0, NULL);
    if (partition != NULL) {
        ESP_LOGI("Partition", "Found OTA app0 partition at offset 0x%x, size 0x%x", partition->address, partition->size);
    } else {
        ESP_LOGE("Partition", "OTA app0 partition not found");
    }
}
  • 运行代码后,查看日志输出,确保分区信息与 partitions.csv 文件中的定义一致。

通过以上步骤,你就可以将 partitions.csv 文件成功集成到ESP32工程项目中,并完成相应的配置。

FQBN: esp32:esp32:esp32s3 Using board 'esp32s3' from platform in folder: C:\Users\DMQ\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3 Using core 'esp32' from platform in folder: C:\Users\DMQ\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.3 cmd /c if exist "C:\\Users\\DMQ\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2025227-23596-36gql5.tz7wq\\sketch_mar27c\\partitions.csv" COPY /y "C:\\Users\\DMQ\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2025227-23596-36gql5.tz7wq\\sketch_mar27c\\partitions.csv" "C:\\Users\\DMQ\\AppData\\Local\\arduino\\sketches\\5A6456AFF5B9F20529C8CCE5C31D9F05\\partitions.csv" cmd /c if not exist "C:\\Users\\DMQ\\AppData\\Local\\arduino\\sketches\\5A6456AFF5B9F20529C8CCE5C31D9F05\\partitions.csv" if exist "C:\\Users\\DMQ\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.3\\variants\\esp32s3\\partitions.csv" COPY "C:\\Users\\DMQ\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.3\\variants\\esp32s3\\partitions.csv" "C:\\Users\\DMQ\\AppData\\Local\\arduino\\sketches\\5A6456AFF5B9F20529C8CCE5C31D9F05\\partitions.csv" cmd /c if not exist "C:\\Users\\DMQ\\AppData\\Local\\arduino\\sketches\\5A6456AFF5B9F20529C8CCE5C31D9F05\\partitions.csv" COPY "C:\\Users\\DMQ\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.3\\tools\\partitions\\default.csv" "C:\\Users\\DMQ\\AppData\\Local\\arduino\\sketches\\5A6456AFF5B9F20529C8CCE5C31D9F05\\partitions.csv" cmd /c IF EXIST "C:\\Users\\DMQ\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2025227-23596-36gql5.tz7wq\\sketch_mar27c\\bootloader.bin" ( COPY /y "C:\\Users\\DMQ\\AppData\\Local\\Temp\\.arduinoIDE-unsaved2025227-23596-36gql5.tz7wq\\sketch_mar27c\\bootloader.bin" "C:\\Users\\DMQ\\AppData\\Local\\arduino\\sketches\\5A6456AFF5B9F20529C8CCE5C31D9F05\\sketch_mar27c.ino.bootloader.bin" ) ELSE ( IF EXIST "C:\\Users\\DMQ\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.3\\variants\\esp32s3\\bootloader.bin" ( COPY "C:\\Users\\DMQ\\AppData\\L
03-28
FQBN: esp32:esp32:esp32s3:FlashMode=qio120,FlashSize=16M,PartitionScheme=app3M_fat9M_16MB,PSRAM=opi Using board 'esp32s3' from platform in folder: C:\Users\徐文强\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.1 Using core 'esp32' from platform in folder: C:\Users\徐文强\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.1.1 cmd /c if exist "D:\\Ardino\\Ardino IDE Project\\hello_world\\partitions.csv" COPY /y "D:\\Ardino\\Ardino IDE Project\\hello_world\\partitions.csv" "C:\\Users\\XWQ\\AppData\\Local\\arduino\\sketches\\FF1BDEE124F5ADDB883DC3C5AC946448\\partitions.csv" cmd /c if not exist "C:\\Users\\XWQ\\AppData\\Local\\arduino\\sketches\\FF1BDEE124F5ADDB883DC3C5AC946448\\partitions.csv" if exist "C:\\Users\\徐文强\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.1\\variants\\esp32s3\\partitions.csv" COPY "C:\\Users\\徐文强\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.1\\variants\\esp32s3\\partitions.csv" "C:\\Users\\XWQ\\AppData\\Local\\arduino\\sketches\\FF1BDEE124F5ADDB883DC3C5AC946448\\partitions.csv" cmd /c if not exist "C:\\Users\\XWQ\\AppData\\Local\\arduino\\sketches\\FF1BDEE124F5ADDB883DC3C5AC946448\\partitions.csv" COPY "C:\\Users\\徐文强\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.1\\tools\\partitions\\app3M_fat9M_16MB.csv" "C:\\Users\\XWQ\\AppData\\Local\\arduino\\sketches\\FF1BDEE124F5ADDB883DC3C5AC946448\\partitions.csv" cmd /c IF EXIST "D:\\Ardino\\Ardino IDE Project\\hello_world\\bootloader.bin" ( COPY /y "D:\\Ardino\\Ardino IDE Project\\hello_world\\bootloader.bin" "C:\\Users\\XWQ\\AppData\\Local\\arduino\\sketches\\FF1BDEE124F5ADDB883DC3C5AC946448\\hello_world.ino.bootloader.bin" ) ELSE ( IF EXIST "C:\\Users\\徐文强\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.1\\variants\\esp32s3\\bootloader.bin" ( COPY "C:\\Users\\徐文强\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\3.1.1\\variants\\esp32s3\\bootloader.bin" "C:\\Users\\XWQ\\AppData\\Local\\arduino\\ske
03-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值