espressif / arduino-esp32

Arduino core for the ESP32
GNU Lesser General Public License v2.1
13.73k stars 7.43k forks source link

SPIFFS Mounting Causing Error #10499

Closed alogusAdam closed 1 month ago

alogusAdam commented 1 month ago

Board

ESP32 Dev Module

Device Description

DevKitC (4MB)

Hardware Configuration

No Connections

Version

v3.0.6

IDE Name

Arduino IDE

Operating System

Windows 11

Flash frequency

80MHz

PSRAM enabled

no

Upload speed

921600

Description

Whenever I attempt to mount SPIFFS with SPIFFS.begin(true);, the following message prints over and over again in the serial monitor:

E (1030) task_wdt: esp_task_wdt_reset(763): task not found E (1030) task_wdt: esp_task_wdt_reset(763): task not found E (1062) task_wdt: esp_task_wdt_reset(763): task not found E (1063) task_wdt: esp_task_wdt_reset(763): task not found E (1064) task_wdt: esp_task_wdt_reset(763): task not found E (1066) task_wdt: esp_task_wdt_reset(763): task not found E (1102) task_wdt: esp_task_wdt_reset(763): task not found E (1103) task_wdt: esp_task_wdt_reset(763): task not found E (1103) task_wdt: esp_task_wdt_reset(763): task not found E (1134) task_wdt: esp_task_wdt_reset(763): task not found E (1135) task_wdt: esp_task_wdt_reset(763): task not found E (1136) task_wdt: esp_task_wdt_reset(763): task not found E (1138) task_wdt: esp_task_wdt_reset(763): task not found E (1175) task_wdt: esp_task_wdt_reset(763): task not found

and the SPIFFS mount fails. I am running into this issue with all sorts of firmware that uses SPIFFS and used to work without any problems. To simplify things, I am running the SPIFFS_Test.ino example and running into the same issue. I have tried this on multiple boards, updated Arduino IDE to the latest version, and updated the ESP32 board package to the latest version, none of which resolve the issue. When SPIFFS.begin(false); is run, the error does not print, but SPIFFS mount fails.

Sketch

#include "FS.h"
#include "SPIFFS.h"

/* You only need to format SPIFFS the first time you run a
   test or else use the SPIFFS plugin to create a partition
   https://github.com/me-no-dev/arduino-esp32fs-plugin */
#define FORMAT_SPIFFS_IF_FAILED true

void listDir(fs::FS &fs, const char *dirname, uint8_t levels) {
  Serial.printf("Listing directory: %s\r\n", dirname);

  File root = fs.open(dirname);
  if (!root) {
    Serial.println("- failed to open directory");
    return;
  }
  if (!root.isDirectory()) {
    Serial.println(" - not a directory");
    return;
  }

  File file = root.openNextFile();
  while (file) {
    if (file.isDirectory()) {
      Serial.print("  DIR : ");
      Serial.println(file.name());
      if (levels) {
        listDir(fs, file.path(), levels - 1);
      }
    } else {
      Serial.print("  FILE: ");
      Serial.print(file.name());
      Serial.print("\tSIZE: ");
      Serial.println(file.size());
    }
    file = root.openNextFile();
  }
}

void readFile(fs::FS &fs, const char *path) {
  Serial.printf("Reading file: %s\r\n", path);

  File file = fs.open(path);
  if (!file || file.isDirectory()) {
    Serial.println("- failed to open file for reading");
    return;
  }

  Serial.println("- read from file:");
  while (file.available()) {
    Serial.write(file.read());
  }
  file.close();
}

void writeFile(fs::FS &fs, const char *path, const char *message) {
  Serial.printf("Writing file: %s\r\n", path);

  File file = fs.open(path, FILE_WRITE);
  if (!file) {
    Serial.println("- failed to open file for writing");
    return;
  }
  if (file.print(message)) {
    Serial.println("- file written");
  } else {
    Serial.println("- write failed");
  }
  file.close();
}

void appendFile(fs::FS &fs, const char *path, const char *message) {
  Serial.printf("Appending to file: %s\r\n", path);

  File file = fs.open(path, FILE_APPEND);
  if (!file) {
    Serial.println("- failed to open file for appending");
    return;
  }
  if (file.print(message)) {
    Serial.println("- message appended");
  } else {
    Serial.println("- append failed");
  }
  file.close();
}

void renameFile(fs::FS &fs, const char *path1, const char *path2) {
  Serial.printf("Renaming file %s to %s\r\n", path1, path2);
  if (fs.rename(path1, path2)) {
    Serial.println("- file renamed");
  } else {
    Serial.println("- rename failed");
  }
}

void deleteFile(fs::FS &fs, const char *path) {
  Serial.printf("Deleting file: %s\r\n", path);
  if (fs.remove(path)) {
    Serial.println("- file deleted");
  } else {
    Serial.println("- delete failed");
  }
}

void testFileIO(fs::FS &fs, const char *path) {
  Serial.printf("Testing file I/O with %s\r\n", path);

  static uint8_t buf[512];
  size_t len = 0;
  File file = fs.open(path, FILE_WRITE);
  if (!file) {
    Serial.println("- failed to open file for writing");
    return;
  }

  size_t i;
  Serial.print("- writing");
  uint32_t start = millis();
  for (i = 0; i < 2048; i++) {
    if ((i & 0x001F) == 0x001F) {
      Serial.print(".");
    }
    file.write(buf, 512);
  }
  Serial.println("");
  uint32_t end = millis() - start;
  Serial.printf(" - %u bytes written in %lu ms\r\n", 2048 * 512, end);
  file.close();

  file = fs.open(path);
  start = millis();
  end = start;
  i = 0;
  if (file && !file.isDirectory()) {
    len = file.size();
    size_t flen = len;
    start = millis();
    Serial.print("- reading");
    while (len) {
      size_t toRead = len;
      if (toRead > 512) {
        toRead = 512;
      }
      file.read(buf, toRead);
      if ((i++ & 0x001F) == 0x001F) {
        Serial.print(".");
      }
      len -= toRead;
    }
    Serial.println("");
    end = millis() - start;
    Serial.printf("- %u bytes read in %lu ms\r\n", flen, end);
    file.close();
  } else {
    Serial.println("- failed to open file for reading");
  }
}

void setup() {
  Serial.begin(115200);
  if (!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)) {
    Serial.println("SPIFFS Mount Failed");
    return;
  }

  listDir(SPIFFS, "/", 0);
  writeFile(SPIFFS, "/hello.txt", "Hello ");
  appendFile(SPIFFS, "/hello.txt", "World!\r\n");
  readFile(SPIFFS, "/hello.txt");
  renameFile(SPIFFS, "/hello.txt", "/foo.txt");
  readFile(SPIFFS, "/foo.txt");
  deleteFile(SPIFFS, "/foo.txt");
  testFileIO(SPIFFS, "/test.txt");
  deleteFile(SPIFFS, "/test.txt");
  Serial.println("Test complete");
}

void loop() {}

Debug Message

E (1184) task_wdt: esp_task_wdt_reset(763): task not found
E (1185) task_wdt: esp_task_wdt_reset(763): task not found
E (1186) task_wdt: esp_task_wdt_reset(763): task not found
E (1188) task_wdt: esp_task_wdt_reset(763): task not found
E (1224) task_wdt: esp_task_wdt_reset(763): task not found
E (1225) task_wdt: esp_task_wdt_reset(763): task not found
E (1225) task_wdt: esp_task_wdt_reset(763): task not found
E (1257) task_wdt: esp_task_wdt_reset(763): task not found
E (1258) task_wdt: esp_task_wdt_reset(763): task not found
E (1259) task_wdt: esp_task_wdt_reset(763): task not found
E (1261) task_wdt: esp_task_wdt_reset(763): task not found
E (1296) task_wdt: esp_task_wdt_reset(763): task not found
E (1297) task_wdt: esp_task_wdt_reset(763): task not found
E (1297) task_wdt: esp_task_wdt_reset(763): task not found
E (1329) task_wdt: esp_task_wdt_reset(763): task not found

Other Steps to Reproduce

The following settings were used in Arduino IDE: Board: "ESP32 Dev Module" CPU Frequency: "240MHz (WiFi/BT)" Core Debug Level: "None" Tried setting this to verbose with no additional info gained Erase All Flash Before Sketch Upload: "Disabled" Tried setting to true and got the same results Events Run On: "Core 1" Flash Frequency: "80MHz" Flash Mode: "QIO" Flash Size: "4MB (32Mb)" JTAG Adapter: "Disabled" Arduino Runs On: "Core 1" Partition Scheme: "Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)" PSRAM: "Disabled" Upload Speed: "921600" Zigbee Mode: "Disabled"

I have checked existing issues, online documentation and the Troubleshooting Guide

alogusAdam commented 1 month ago

Not exactly sure what the issue was here, but it ran fine when compiled and uploaded from another computer. I deleted the folder at "C:/Users//AppData/Roaming/arduino-ide", and this seems to have resolved the issue.