ESP8266 SPIFFS大概结构如下图所示:
我个人很喜欢ESP8266这个板,主要是由于它提供了一系列价格低廉、高可用的IoT开发及接入方案。你是否知道在ESP8266的系统闪存可以用来存储代码甚至是文件吗?
这个文件系统可以让我们存储一些变更频率不频繁的文件例如网页、配置或者是某些固化的数据等。芯片内置这样的小型文件系统后ESP8266就相当于是一块Arduino+WIFI+SD扩展板的功能了,但价格上却只需要比Arduino低上很多。正因为了它我们就能在里面植入一些其它的固件用于支持像Lua或者Micropython这样的脚本类语言引擎以简化嵌入式设备的编程。
它就是SPIFFs - SPI Flash Filing System!
作者:梁睿坤
链接:https://www.jianshu.com/p/014bcae94c8b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
环境配置:
安装一个IDE插件
https://github.com/esp8266/arduino-esp8266fs-plugin/releases/tag/0.2.0
把ESP8266FS-0.20和源码下下来,在次感谢大神的开源精神,真伟大!
源码解压出来一看是JAVA写的,不管这个了,咱们直接用提供的插件就可以了,
解压出来有一个.jar文件,然后把它放到D:\Program Files (x86)\Arduino\tools下,然后冲昂起Arduino就可以看到这个插件了。
实际上没看到!不知道为什么。
而且开发板还不到ESP8266,如下图:
找出没有看到ESP8266 SKetch Data Upload的菜单原因了:
D:\Program Files (x86)\Arduino\tools下应该建一个文件夹ESP8266FS,
ESP8266FS里再建一个文件夹tool,然把那个.jar文件放到新建的文件夹tool里头就可以了,如下图:
找不到开发板里的ESP8266的原因是:
把电脑所连接的WIFI断开然后再连接就好了!
注:在使用SPIFFS功能之前需要在文件内引用头文件:
#include “FS.h”
使用SPIFFS
ESP8266FS插件其实只是在当前项目目录下创建了一个data目录,我们只要将需要上传到芯片文件系统的内容放置在这个 data目录中就可以了,然后点击ESP8266 Skech Data Upload Arduino IDE就会将这个目录的文件写入到SPIFFS中了。要注意的是文件的大小不能超过板子SPIFFS的大小,否则会上传失败。
我们就尝试将一个index.html网页文件放到data目录,然后将其上传到ESP8266中,接下来用以下的代码将SPIFFS中的index.html读出来:
#include"FS.h"
void setup()
{
Serial.begin(115200);
bool ok = SPIFFS.begin();
if (ok)
{
Serial.println("ok"); //检查文件是否存在
bool exist = SPIFFS.exists("/index.html");
if (exist)
{
Serial.println("The file exists!");
File f = SPIFFS.open("/index.html", "r");
if (!f)
{
// 在打开过程中出现问题f就会为空
Serial.println("Some thing went wrong trying to open the file...");
} else
{
int s = f.size();
Serial.printf("Size=%d\r\n", s); //读取index.html的文本内容
String data = f.readString();
Serial.println(data);
//关闭文件 f.close();
}
}else
{
Serial.println("No such file found.");
}
}
}
void loop()
{
// put your main code here, to run repeatedly:
}
作者:梁睿坤
链接:https://www.jianshu.com/p/014bcae94c8b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。