Partition в SPIFF микроконтроллера Espressif ESP32

Запись в SPIFF микроконтроллера Espressif ESP32 может приводить к потере данных. Чтобы этого избежать нужно делить память SPIFF на партиции. В файле партиций пишем:

spiffs,   data, spiffs,  0x411000,0x240000,
spiffs2,  data, spiffs,  0x651000,0x0C0000,

С первой партицией работаем также, как и работали. В нее идет запись. Вот так инициализируем вторую при старте:

#ifdef TWO_SPIFFS_PARTITIONS
  esp_vfs_spiffs_conf_t conf = {
    .base_path = "/spiffs2",
    .partition_label = "spiffs2",
    .max_files = 10,
    .format_if_mount_failed = false
  };
  esp_err_t err = esp_vfs_spiffs_register(&conf);
  if(err != ESP_OK){
    MH_LOGE("Mounting SPIFFS2 failed! Error: %d", err);
  }
#endif

Открываем файлы через fopen(«/spiffs2/filename», mode). Для детектирования повреждения партиции есть следующие способы:

  • Не получается смонтировать партицию.
  • Свободное место в партиции сильно отличается от того, что должно быть.

Если партиция повреждена, то форматируем:

bool SPIFFSFS::format()
{
    disableCore0WDT();
    esp_err_t err = esp_spiffs_format(partitionLabel_);
    enableCore0WDT();
    if(err){
        log_e("Formatting SPIFFS failed! Error: %d", err);
        return false;
    }
    return true;
}
Spread the love
Запись опубликована в рубрике IT рецепты с метками , . Добавьте в закладки постоянную ссылку.

Обсуждение закрыто.