拓冰建站拓冰建站
首页 / 资讯中心 / 正文

arduino-esp32 SPIFFS.begin() 挂载失败报错 -10025 怎么解决?

arduino-esp32 SPIFFS.begin() 挂载失败报错 -10025 怎么解决【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32在 arduino-esp32 项目中用 Arduino IDE 烧录 sketch 后串口里出现下面这段输出说明SPIFFS.begin()挂载 SPIFFS 分区失败E (588) SPIFFS: mount failed, -10025 [E][SPIFFS.cpp:47] begin(): Mounting SPIFFS failed! Error: -1以上是官方 排障文档 中记录的报错示例。官方给出的处理方式是在begin调用中启用挂载失败时强制格式化format on fail。本文按 arduino-esp32 仓库中的文档和示例代码给出从确认分区表到修改代码、再到串口验证的完整路径。适用环境是已安装 arduino-esp32 核心、能正常上传 sketch 的 ESP32 系列开发板。这个报错对应什么调用SPIFFS.begin()的完整原型见 troubleshooting.rstbool begin(bool formatOnFailfalse, const char * basePath/spiffs, uint8_t maxOpenFiles10, const char * partitionLabelNULL);注意第一个参数formatOnFail默认是false即挂载失败时不会自动格式化直接返回失败并打印上面的错误。SPIFFS 库本身随核心提供见 libraries/SPIFFS/library.propertiesnameSPIFFSarchitecturesesp32。先确认分区表里有 spiffs 分区在改代码之前先检查当前开发板的分区方案是否包含 SPIFFS 分区这是文件系统能挂载的前提各芯片的默认分区方案都带有 spiffs 分区。以 boards.txt 为例默认项显示为Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)即 APP 之外还分出了 1.5MB 的 SPIFFS 空间。分区表教程对spiffs子类型的说明它定义 SPI flash 文件系统分区适合存放较大的文件会做磨损均衡wear leveling和文件系统一致性检查SPIFFS 不支持 flash encryption。如果你在使用自定义分区表CSV 中必须有data, spiffs这一行分区。仓库内 tools/partitions 目录提供了现成的分区表示例例如default_8MB.csv的 spiffs 行# Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x5000, otadata, data, ota, 0xe000, 0x2000, app0, app, ota_0, 0x10000, 0x330000, app1, app, ota_1, 0x340000,0x330000, spiffs, data, spiffs, 0x670000,0x190000,自定义分区表最简单的用法把partitions.csv文件放在和 sketch 相同的文件夹里构建系统会自动选用它替代预定义分区表见 partition_table.rst。如果 CSV 里没有 spiffs 分区SPIFFS.begin()必然挂载失败。确认分区表无误后再进入下一步改代码。修改代码挂载失败时强制格式化官方 troubleshooting.rst 对该报错的解决方案是一句话在begin方法中传入true启用 format on failSPIFFS.begin(true);仓库自带的 SPIFFS_Test 示例 采用了同样的做法并说明了适用条件——其开头注释写明You only need to format SPIFFS the first time you run a test or else use the SPIFFS plugin to create a partition即格式化通常在首次运行时需要。按示例整理出的最小修改如下代码取自 SPIFFS_Test.ino#include Arduino.h #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 */ #define FORMAT_SPIFFS_IF_FAILED true void setup() { Serial.begin(115200); if (!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)) { Serial.println(SPIFFS Mount Failed); return; } // 挂载成功继续文件读写 } void loop() {}改动后重新上传 sketch。首次运行时若之前挂载失败是因为分区未被初始化formatOnFailtrue会按文档所述在失败时强制执行格式化让挂载得以进行。验证挂载是否成功验证依据是 SPIFFS_Test 示例 自身的输出逻辑打开串口监视器波特率 115200与示例中Serial.begin(115200)一致后失败标志只要SPIFFS.begin()返回false示例会打印SPIFFS Mount Failed。如果修改后仍看到这行输出以及开头的mount failed, -10025说明问题仍在回到上一节检查当前分区方案是否真的包含 spiffs 分区。成功路径示例在setup()中依次执行目录列出、写文件、追加、读文件、重命名、删除和一组文件 I/O 读写测试。文档示例中这些步骤会依次打印Listing directory: /、Writing file: /hello.txt、- file written、Reading file: /hello.txt等过程行读写测试打印写入/读取的字节数与耗时数值随硬件和分区状态变化最后打印Test complete。看到这个流程跑完、且没有SPIFFS Mount Failed即说明挂载已成功文件系统可正常读写。限制说明partition_table.rst 明确指出 SPIFFS 不支持 flash encryption。如果你的数据分区依赖加密需要改用其他文件系统文档中对加密场景推荐的是支持加密的 NVS/FAT 方案。官方排障文档针对-10025这个挂载失败错误给出的处理方式只有format on fail这一项没有列出其他根因若启用后仍失败可参照文档结尾的 Further Help 一节继续排查。【免费下载链接】arduino-esp32Arduino core for the ESP32 family of SoCs项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门