https://www.instructables.com/id/Using-ESP8266-SPIFFS/
介绍
您是否知道每个ESP8266都允许您对系统闪存进行分区,以便您可以使用它来存储代码并支持文件系统?
该归档系统可用于存储不经常变化的数据,例如; 网页,配置,传感器校准数据等
这个简短的Instructable详细介绍了如何使用SPIFF,配置您的Arduino IDE直接将文件上传到您的ESP8266并计算您的设备有多少闪存。
。
我需要哪些部件?
系统入门要求;
- 您的Arduino IDE已设置为ESP8266编程(设置Arduino IDE以编程ESP8266-01)
- ESP8266-01编程设备(带条板的实用电路结构,第9步)
- 一个ESP8266-01
。
我需要什么软件?
- Arduino IDE 1.6.9
。
我需要什么技能?
要设置系统,请使用源代码(提供),您将需要以下内容;
- 了解Arduino及其IDE,
- 有关ESP8266的一些知识,
- 一些耐心。
。
主题涵盖
- 什么是SPIFFS,
- 安装Arduino ESP8266文件系统上传器,
- 我怎么知道我的ESP8266有多少闪存?
- 如何将文件上传到ESP8266 SPIFFS,
- 如何测试SPIFFS并查看其运行情况,
- 结论,
- 使用的参考文献。
。
注1:实际上ESP8266闪存也支持OTA更新,但是这个Instructable的范围仅限于SPIFFS功能。
注2:虽然给出的示例使用ESP8266-01,但它与ESP8266-07,ESP8266-12,ESP8266-12E,ESP8266-13一样,与Instructable图像所暗示的一样。
第1步:那么什么是SPIFFS
SPIFFS
SPI闪存归档系统的代表是针对受限嵌入式微处理器系统上具有少量RAM的SPI闪存设备而设计的。
SPIFFS的作用:
- 专为低压头使用而设计
- 使用静态大小的ram缓冲区,与文件数无关
- Posix-like api:打开,关闭,读取,写入,搜索,统计等
- 实现静态磨损均衡,以延长系统闪存的使用寿命
SPIFFS不做什么:
- SPIFFS不支持目录并使用平面结构。使用路径tmp / myfile.txt创建文件将创建一个名为tmp / myfile.txt的文件,而不是目录tmp下的myfile.txt。
- 它不是实时堆栈。一次写入操作可能比另一次更长。因此,最好在启动,关闭或未安排时间关键活动时使用。
- 目前,它没有检测或处理坏块。
。
第2步:安装Arduino ESP8266文件系统上传器
要安装Arduino ESP8266文件系统上传器,请执行以下操作:
- 去这里下载ESP8266FS-0.2.0.zip的”副本,
- 解压缩文件,
- 将esp8266fs.jar文件放入Arduino工具目录(路径看起来像[home_dir] \ Arduino \ tools \ ESP8266FS \ tool \ esp8266fs.jar),
- 在我的情况下(如上面的图1);
- C:\ Users \ Win 7 \ Documents \ Arduino \ tools \ ESP8266FS \ tool
- 我需要创造;
- 工具\ ESP8266FS \工具\
- 下;
- C:\ Users \ Win 7 \ Documents \ Arduino \
- 重启Arduino IDE。
。
如果你说得对,你会在上面的图2中的\'工具\'下看到一个新的菜单项\'ESP8266 Sketch Data Upload\'。
第3步:我如何判断我的ESP8266有多少闪存?
鉴于大多数这些ESP8266设备都来自中国供应商,这些供应商在发布清晰简洁的产品数据方面不太乐意,有一种方法可以确定你的闪存有多大来读取芯片细节(假设它们没有被擦洗)并且携带外出搜索。我为我的两个ESP8266-01做了这个;
- BergMicro 25Q80ASSIG 1602:8M /位
- 华邦25Q80DVSIG 1626:8M /位
前者和后者都是1M字节。这种识别方法存在的问题是它根本不适用于ESP8266型号,它可以容纳RF屏蔽层下的所有有源元件,如ESP8266-07和ESP8266-12E等。
因此,我发现最可靠和最快捷的方法是使用CheckFlashConfig.ino\'草图对器件进行编程,并查看串行监视器的输出,如上面的图1所示。
。
。
您可以从这里下载完整的Arduino ESP8266 Core;
和来自这里的CheckFlashConfig来源;
或者,复制如下。
。
附件
第4步:如何将文件上传到ESP8266 SPIFFS
执行以下操作将文件上传到ESP8266 SPIFFS;
- 确保在草图目录中有一个名为“data”的子目录,
- 将要上传的文件放入“数据”目录中,
- 从“工具”菜单中,选择正确的ESP8266设备,然后选择带有所需SPIFFS的“闪存大小”即。\'1M(256K SPIFFS)\'。见上面的图片1和2,
- 确保关闭串行监视器对话框,
- 准备ESP8266设备进行上传;
- 按住\'Flash\',
- 脉冲\'重置\'
- 发布\'Flash\',
- 从工具菜单中选择\'ESP8266草图数据上传\',见图3,图像顶部,
- 上传完成后。Arduino IDE消息窗口将显示100%上传。见图3底部的图片。
。
注1:如果出现错误消息,例如图4中的消息,则表明“SPIFFS上载失败!” 。尝试拔出/重新插入设备的USB转串口适配器(FTDI)并重复步骤1 ... 7。
注2: SPIFFS内容可以独立于程序代码上传。
注3:如果更改“Flash Size”,则需要重新加载程序代码和SPIFFS。
。
第5步:如何测试您的SPIFFS并查看它的实际应用
要查看SPIFF的工作示例,请执行以下操作:
- 下载下面的\'SPIFFsUsage.ino\'草图,
- 解压缩并将其放入Arduino草图目录中
- 我在这里; C:\ Users \ Win 7 \ Documents \ Arduino \ My Progs
- 你会注意到有一个名为\'data\'的子目录,其中的文件名是\'testfile.txt\'。
- 选择目标系统的闪存几何和您需要的代码空间/ SPIFF大小分割(工具 - >闪存大小),
- 确保关闭串行监视器对话框,
- 将文本文件上传到ESP8266设备,如上面步骤4中所述,
- 打开串口监视器对话框,将波特率设置为115200,
- 将\'SPIFFsUsage.ino\'上传到ESP8266设备。
完成上传后,代码将执行,您的串行监视器对话框将显示上面的图1中的文本。
它用于显示\'testfile.txt\'的内容;
- 已成功上传,
- 位于文件系统中,
- 打开阅读,
- 读取直到文件结束,
- 关闭,
- 打开追加,
- 写入文件的一行,
- 该文件已被重新读取,将最近附加的行显示在文件末尾。
。
注意:如果ESP8266断电或复位,则每次连续执行时都会自动添加并显示新线。
附件
第6步:结论
使用SPIFFS是存储不经常更改的数据的好方法,尽管不应考虑需要许多写访问的应用程序,因为它最终会导致闪存失败。这里给出了闪存可能持续多长时间的典型工作示例。
使用板载文件系统可节省I / O数量,其中SPI SD卡功能正被考虑用于I / O受限设备,例如ESP8266-01,这是一种非常简单的方式来添加辅助存储而无需4 / I / O线。
第7步:使用的参考
SPIFFS(SPI Flash文件系统)
SPIFFS WiKi
常问问题
整合spiffs
配置spiffs
使用spiffs
性能和优化
SPIFFS GIT HUB主页
Arduino ESP8266文件系统上传器
将草图数据文件夹打包到SPIFFS文件系统映像中的Arduino插件,并将图像上传到ESP8266闪存。使用以下Arduino IDE版本进行测试:1.6.5-r2,1.6.6
GITHUB URL
资源
- HTTPS://github.com/esp8266/arduino-esp8266fs-plug ...
- HTTPS://github.com/esp8266/arduino-esp8266fs-plug ...
最新
但适用于Arduino IDE 1.6.12
Arduino论坛SPIFFs的例子
Arduino CORE
Arduino GIT HUB核心
CheckFlashConfig来源
闪光磨损的工作示例
有关SPIFFS的更多详细信息
。