mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-09 20:41:14 +00:00
spiffs: Add esp_spiffs_check() function
esp_spiffs_check() exposes SPIFFS_check() functionality to the user
This commit is contained in:
@@ -20,6 +20,11 @@ SPIFFS partition size is set in partitions_example.csv file. See [Partition Tabl
|
||||
|
||||
This example does not require any special hardware, and can be run on any common development board.
|
||||
|
||||
### Configure the project
|
||||
|
||||
* Open the project configuration menu (`idf.py menuconfig`)
|
||||
* Configure SPIFFS settings under "SPIFFS Example menu". See note about `esp_spiffs_check` function on [SPIFFS Filesystem](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/storage/spiffs.html) page.
|
||||
|
||||
### Build and flash
|
||||
|
||||
Replace PORT with serial port name:
|
||||
|
9
examples/storage/spiffs/main/Kconfig.projbuild
Normal file
9
examples/storage/spiffs/main/Kconfig.projbuild
Normal file
@@ -0,0 +1,9 @@
|
||||
menu "SPIFFS Example menu"
|
||||
|
||||
config EXAMPLE_SPIFFS_CHECK_ON_START
|
||||
bool "Run SPIFFS_check on every start-up"
|
||||
default y
|
||||
help
|
||||
If this config item is set, esp_spiffs_check() will be run on every start-up.
|
||||
Slow on large flash sizes.
|
||||
endmenu
|
@@ -42,14 +42,42 @@ void app_main(void)
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_EXAMPLE_SPIFFS_CHECK_ON_START
|
||||
ESP_LOGI(TAG, "Performing SPIFFS_check().");
|
||||
ret = esp_spiffs_check(conf.partition_label);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "SPIFFS_check() failed (%s)", esp_err_to_name(ret));
|
||||
return;
|
||||
} else {
|
||||
ESP_LOGI(TAG, "SPIFFS_check() successful");
|
||||
}
|
||||
#endif
|
||||
|
||||
size_t total = 0, used = 0;
|
||||
ret = esp_spiffs_info(conf.partition_label, &total, &used);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to get SPIFFS partition information (%s)", esp_err_to_name(ret));
|
||||
ESP_LOGE(TAG, "Failed to get SPIFFS partition information (%s). Formatting...", esp_err_to_name(ret));
|
||||
esp_spiffs_format(conf.partition_label);
|
||||
return;
|
||||
} else {
|
||||
ESP_LOGI(TAG, "Partition size: total: %d, used: %d", total, used);
|
||||
}
|
||||
|
||||
#
|
||||
// Check consistency of reported partiton size info.
|
||||
if (used > total) {
|
||||
ESP_LOGW(TAG, "Number of used bytes cannot be larger than total. Performing SPIFFS_check().");
|
||||
ret = esp_spiffs_check(conf.partition_label);
|
||||
// Could be also used to mend broken files, to clean unreferenced pages, etc.
|
||||
// More info at https://github.com/pellepl/spiffs/wiki/FAQ#powerlosses-contd-when-should-i-run-spiffs_check
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "SPIFFS_check() failed (%s)", esp_err_to_name(ret));
|
||||
return;
|
||||
} else {
|
||||
ESP_LOGI(TAG, "SPIFFS_check() successful");
|
||||
}
|
||||
}
|
||||
|
||||
// Use POSIX and C standard library functions to work with files.
|
||||
// First create a file.
|
||||
ESP_LOGI(TAG, "Opening file");
|
||||
|
Reference in New Issue
Block a user