Проверка размера во флэш-памяти Esp32
Недавно я купил Esp32 и провожу некоторые тесты с использованием Arduino IDE.
В одном из тестов я записываю много файлов .txt с некоторым текстом внутри них во флэш-память, однако я хотел бы знать, как я могу проверить оставшееся место во флэш-памяти. Я проверяю пространство флэш-памяти с помощью Serial.println(ОСОБЕННО getFlashChipSize ());
Однако возвращаемое значение всегда одно и то же.
Это правильная команда для проверки? Почему он всегда имеет одно и то же значение?
@user2831852, 👍1
3 ответа
Лучший ответ:
Это правильная команда для проверки? Почему он всегда имеет одно и то же значение?
Единственный способ изменить этот размер-это отсоединить банку от верхней части модуля ESP32, затем отсоединить флэш-чип и заменить его на другой емкостью.
Свободное пространство не зависит от микросхемы флэш-памяти. Это функция файловой системы, которую вы используете для хранения своих данных, будь то SPIFFS или FAT.
Вам следует ознакомиться с руководством по файловой системе, которую вы используете, чтобы узнать, какие функции существуют для использования пространства.
Serial.println(ОСОБЕННО getFlashChipSize()); не возвращайте физический размер флеш, он просто возвращает размер прошивки, который вы выбрали в размере флеш Arduino IDE. Просто попробуйте установить размер флэш "2 МБ (16 МБ)". И в результате получается "2097152"
И если вы хотите увеличить размер файловой системы, вы можете создать свою собственную таблицу разделов. Посмотрите на разделы.csv, @whogarden
Файловая система 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() {
// Здесь ничего не делаем
}
- ESP32 в Arduino-IDE с FS.h и SPIFFS
- Программаторы для этой платы отсутствуют - Программирование ESP32 Cam с помощью Ardunio IDE
- Установка значения float до двух знаков после запятой
- ESP32-CAM первый: 0x8 TG1WDT_SYS_RESET загрузочный цикл
- esp32 Stack canary watchpoint срабатывает
- Ошибка Cast from 'char*' to 'uint8_t {aka unsigned char}' loses precision [-fpermissive]
- WindowsError(31, "Устройство, подключенное к системе, не функционирует") в arduino
- Как очистить кучу памяти в esp32
Просматривая исходный код, я нахожу методы! https://github.com/espressif/arduino-esp32/blob/master/libraries/SPIFFS/src/SPIFFS.cpp, @user2831852