Skip to content

P01_Flash分区表

P01_Flash分区表-分区表的说明和使用

一、 Arduino中选择和修改分区表

二、PIO中修改分区表

  1. 使用Vscode+Platformio开发ESP32,因为代码量过大,超过了默认的程序分区大小,所以就需要修改默认的分区表以扩大程序分区。

  2. 在PlatformIO中添加、编译分区表

  3. 首先在工程路径下建立一个partition.csv文件.
  4. 然后在工程下的platformio.ini文件中添加编译命令board_build.partitions,在后面输入创建的.csv文件名全称,需要带上文件后缀,如下。

    board_build.partitions = partition.csv

Image + 然后在创建的.csv文件中填写自定义的分区表。

分区表的格式和内容在乐鑫官方的编程指南上写的非常清楚,并且也解释了各个字段对应的功能,同时也列出了好几种格式,,可以在以下链接查看 https://github.com/espressif/arduino-esp32/tree/master/tools/partitions

  • default 4M带OTA
    # 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,
    
  • default8 8M带OTA
    # Name,   Type, SubType, Offset,  Size, Flags
    nvs,      data, nvs,     0x9000,  0x5000,
    otadata,  data, ota,     0xe000,  0x2000,
    app0,     app,  ota_0,   0x10000, 0x330000,
    app1,     app,  ota_1,   0x340000,0x330000,
    spiffs,   data, spiffs,  0x670000,0x190000,
    
  • default16 16M带OTA
    # Name,   Type, SubType, Offset,  Size, Flags
    nvs,      data, nvs,     0x9000,  0x5000,
    otadata,  data, ota,     0xe000,  0x2000,
    app0,     app,  ota_0,   0x10000, 0x640000,
    app1,     app,  ota_1,   0x650000,0x640000,
    spiffs,   data, spiffs,  0xc90000,0x370000,
    
  • no_ota.csv 4M不带OTA

    # Name,   Type, SubType, Offset,  Size, Flags
    nvs,      data, nvs,     0x9000,  0x5000,
    otadata,  data, ota,     0xe000,  0x2000,
    app0,     app,  ota_0,   0x10000, 0x200000,
    spiffs,   data, spiffs,  0x210000,0x1F0000,
    

  • 编译,查看输出flash空间占用即可

三、参考链接

下面附上一些链接: PlatformIO在线说明文档 :https://docs.platformio.org/en/latest/what-is-platformio.html.

PlatformIO中有关ESP32的配置命令,如端口波特率、主频设置、flash模式、分区表编译调用等: https://docs.platformio.org/en/latest/platforms/espressif32.html.

乐鑫有关分区表说明文档:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/partition-tables.html.

github上一些分区表示例:https://github.com/espressif/arduino-esp32/tree/master/tools/partitions.

The End