合宙ESP32C3基于Arduino IDE框架下配置分区表
- 关于VSCode PIO配置分区表可以参考示例文章《合宙ESP32C3基于VSCode PIO开发初探教程》
- 有关
Arduino IDE
安装ESP32C3
可以阅览《合宙ESP32C3 Arduino 初探教程》 - 《Arduino ESP32 flash各型号分区表配置详略整理》
自定义下的新增分区表选项
示例代码
void setup() {
Serial.begin(115200);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(12, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(13, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(12, LOW); // turn the LED off by making the voltage LOW
digitalWrite(13, HIGH);
delay(1000);
Serial.printf("getHeapSize= %d \n",ESP.getHeapSize());
delay(10);
Serial.printf("getFreeHeap= %d \n",ESP.getFreeHeap());
delay(10);
Serial.printf("getChipRevision= %d \n",ESP.getChipRevision()); // 3
delay(10);
Serial.printf("getChipRevision= %s \n",ESP.getChipModel()); //ESP32-C3
delay(10);
Serial.printf("getChipCores= %d Core\n",ESP.getChipCores()); // 1
delay(10);
Serial.printf("getCpuFreqMHz= %d MHz\n",ESP.getCpuFreqMHz()); //160
delay(10);
// Serial.printf("getSdkVersion= %s \n",ESP.getSdkVersion());
// Serial.printf("getFlashChipSize= %s \n",ESP.getFlashChipSize());
// Serial.printf("getFlashChipSpeed= %s \n",ESP.getFlashChipSpeed());
Serial.printf("getSketchSize= %d bytes\n",ESP.getSketchSize()); //250128
delay(10);
Serial.printf("getFreeSketchSpace= %d bytes\n",ESP.getFreeSketchSpace()); //13631488 bytes
delay(10);
Serial.printf("getSketchMD5= %s \n",ESP.getSketchMD5().c_str());//acaaaa867e2263c1f83c0daef8474855
delay(10);
uint32_t flash_Size = ESP.getFlashChipSize();
Serial.printf("getFlashChipSize= %d \n",flash_Size); //16777216
delay(10);
Serial.printf("getFlashChipSpeed= %d \n",ESP.getFlashChipSpeed()); //80000000
delay(10);
FlashMode_t flash_Mode = ESP.getFlashChipMode();
Serial.printf("Flash mode: %s\n", (flash_Mode == FM_QIO ? "QIO" : flash_Mode == FM_QOUT ? "QOUT" : flash_Mode == FM_DIO ? "DIO" : flash_Mode == FM_DOUT ? "DOUT" : "UNKNOWN"));
delay(1000);
}
项目使用了 237250 字节,占用了 (5%) 程序存储空间。最大为 4194304 字节。
全局变量使用了10216字节,(3%)的动态内存,余留317464字节局部变量。最大为327680字节。
- 串口打印信息
配置方法和过程
- 首先确定手上的开发板硬件配置,也就是flash容量大小,需要确定,才能进一步进行分区表配置,可以通过上面的示例代码烧录后,查看串口打印信息,可以看到
flash
容量,
- 找到Arduino框架下的ESP32固件分区表文件位置:
C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\tools\partitions
该文件夹下有不同容量的分区表,
- 找到ESP32主板信息文件位置:
C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6
- 打开
Boards.txt
,文件,找到esp32C3
型号位置
- 根据前面的分区表文件夹的不同配置文件,添加配置信息到
Boards.txt
文件中的对应型号位置
例如;我将合宙esp32C3的外置
spi flash
替换成了16MB
的了,我的分配方案;
esp32c3.menu.PartitionScheme.app4M_spiffs12M=16M Flash (4MB APP/12MB SPIFFS)
esp32c3.menu.PartitionScheme.app4M_spiffs12M.build.partitions=app4M_spiffs12M
esp32c3.menu.PartitionScheme.app4M_spiffs12M.upload.maximum_size=4194304
- 在
Arduino IDE
菜单下看到的内容就是:
- 里面有很多配置方案,可以依照里面现有的配置,依葫芦画瓢即可。
分区表当然也可以根据个人需求自定义调整分区容量,分配时注意:总容量不能大于
flash
自身容量,一般只需调整用户代码区(app0
)大小和SPIFFS
或者FATFS
,前面的NVS
和otadata
建议不要动。