Проверка размера во флэш-памяти Esp32

Недавно я купил Esp32 и провожу некоторые тесты с использованием Arduino IDE. В одном из тестов я записываю много файлов .txt с некоторым текстом внутри них во флэш-память, однако я хотел бы знать, как я могу проверить оставшееся место во флэш-памяти. Я проверяю пространство флэш-памяти с помощью Serial.println(ОСОБЕННО getFlashChipSize ());Однако возвращаемое значение всегда одно и то же.

Это правильная команда для проверки? Почему он всегда имеет одно и то же значение?

, 👍1


3 ответа


Лучший ответ:

2

Это правильная команда для проверки? Почему он всегда имеет одно и то же значение?

Единственный способ изменить этот размер-это отсоединить банку от верхней части модуля ESP32, затем отсоединить флэш-чип и заменить его на другой емкостью.

Свободное пространство не зависит от микросхемы флэш-памяти. Это функция файловой системы, которую вы используете для хранения своих данных, будь то SPIFFS или FAT.

Вам следует ознакомиться с руководством по файловой системе, которую вы используете, чтобы узнать, какие функции существуют для использования пространства.

,

Просматривая исходный код, я нахожу методы! https://github.com/espressif/arduino-esp32/blob/master/libraries/SPIFFS/src/SPIFFS.cpp, @user2831852


0

Serial.println(ОСОБЕННО getFlashChipSize()); не возвращайте физический размер флеш, он просто возвращает размер прошивки, который вы выбрали в размере флеш Arduino IDE. Просто попробуйте установить размер флэш "2 МБ (16 МБ)". И в результате получается "2097152"

,

И если вы хотите увеличить размер файловой системы, вы можете создать свою собственную таблицу разделов. Посмотрите на разделы.csv, @whogarden


2

Файловая система ESP32 хранится в части флэш-памяти и управляется библиотекой SPIFFS (SPI Flash File System). Вы можете использовать функцию SPIFFS.info() для получения информации о файловой системе, включая общий размер и используемый размер.

Предположим, что у вас есть SPIFFS:

#include <ESP.h>
#include <SPIFFS.h>

void setup() {
  Serial.begin(9600);
  delay(1000);
  
  // Инициализировать файловую систему SPIFFS
  if (!SPIFFS.begin(true)) {
    Serial.println("Initialization failed!");
    return;
  }
  
  // размер скомпилированной программы
  uint32_t program_size = ESP.getSketchSize();
  
  // размер файловой системы
  FSInfo fs_info;
  SPIFFS.info(fs_info);
  uint32_t file_system_size = fs_info.totalBytes;
  
  // используемый размер файловой системы
  uint32_t file_system_used = fs_info.usedBytes;
  
  // свободный размер во флеш-памяти
  uint32_t free_size = ESP.getFlashChipSize() - program_size - file_system_size + file_system_used;
  
  Serial.print("Program size: ");
  Serial.print(program_size);
  Serial.println(" bytes");
  
  Serial.print("File system size: ");
  Serial.print(file_system_size);
  Serial.println(" bytes");
  
  Serial.print("File system used: ");
  Serial.print(file_system_used);
  Serial.println(" bytes");
  
  Serial.print("Free space: ");
  Serial.print(free_size);
  Serial.println(" bytes");
}

void loop() {
  // Здесь ничего не делаем
}
,