使用ESP8266 SPIFFS

时间:2024-03-07 14:15:20

https://www.instructables.com/id/Using-ESP8266-SPIFFS/

 

介绍

您是否知道每个ESP8266都允许您对系统闪存进行分区,以便您可以使用它来存储代码并支持文件系统?

该归档系统可用于存储不经常变化的数据,例如; 网页,配置,传感器校准数据等

这个简短的Instructable详细介绍了如何使用SPIFF,配置您的Arduino IDE直接将文件上传到您的ESP8266并计算您的设备有多少闪存。

我需要哪些部件?
系统入门要求;

  1. 您的Arduino IDE已设置为ESP8266编程(设置Arduino IDE以编程ESP8266-01
  2. ESP8266-01编程设备(带条板的实用电路结构,第9步
  3. 一个ESP8266-01

我需要什么软件?

  • Arduino IDE 1.6.9

我需要什么技能?
要设置系统,请使用源代码(提供),您将需要以下内容;

  1. 了解Arduino及其IDE,
  2. 有关ESP8266的一些知识,
  3. 一些耐心。

主题涵盖

  1. 什么是SPIFFS,
  2. 安装Arduino ESP8266文件系统上传器,
  3. 我怎么知道我的ESP8266有多少闪存?
  4. 如何将文件上传到ESP8266 SPIFFS,
  5. 如何测试SPIFFS并查看其运行情况,
  6. 结论,
  7. 使用的参考文献。

注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文件系统上传器的图片
安装Arduino ESP8266文件系统上传器的图片

要安装Arduino ESP8266文件系统上传器,请执行以下操作:

  1. 这里下载ESP8266FS-0.2.0.zip的”副本,
  2. 解压缩文件,
  3. 将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 \
  4. 重启Arduino IDE。

如果你说得对,你会在上面的图2中的\'工具\'下看到一个新的菜单项\'ESP8266 Sketch Data Upload\'

第3步:我如何判断我的ESP8266有多少闪存?

图片我怎样才能知道我的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的图片
如何将文件上传到ESP8266 SPIFFS的图片
如何将文件上传到ESP8266 SPIFFS的图片
如何将文件上传到ESP8266 SPIFFS的图片

执行以下操作将文件上传到ESP8266 SPIFFS;

  1. 确保在草图目录中有一个名为“data”的子目录,
  2. 将要上传的文件放入“数据”目录中,
  3. 从“工具”菜单中,选择正确的ESP8266设备,然后选择带有所需SPIFFS的“闪存大小”即。\'1M(256K SPIFFS)\'。见上面的图片1和2,
  4. 确保关闭串行监视器对话框,
  5. 准备ESP8266设备进行上传;
    1. 按住\'Flash\',
    2. 脉冲\'重置\'
    3. 发布\'Flash\',
  6. 从工具菜单中选择\'ESP8266草图数据上传\',见图3,图像顶部,
  7. 上传完成后。Arduino IDE消息窗口将显示100%上传。见图3底部的图片。

注1:如果出现错误消息,例如图4中的消息,则表明“SPIFFS上载失败!” 尝试拔出/重新插入设备的USB转串口适配器(FTDI)并重复步骤1 ... 7。

注2: SPIFFS内容可以独立于程序代码上传。

注3:如果更改“Flash Size”,则需要重新加载程序代码和SPIFFS。

第5步:如何测试您的SPIFFS并查看它的实际应用

如何测试您的SPIFFS并看到它的实际应用的图片

要查看SPIFF的工作示例,请执行以下操作:

  1. 下载下面的\'SPIFFsUsage.ino\'草图,
  2. 解压缩并将其放入Arduino草图目录中
    • 我在这里; C:\ Users \ Win 7 \ Documents \ Arduino \ My Progs
    • 你会注意到有一个名为\'data\'的子目录,其中的文件名是\'testfile.txt\'。
  3. 选择目标系统的闪存几何和您需要的代码空间/ SPIFF大小分割(工具 - >闪存大小),
  4. 确保关闭串行监视器对话框,
  5. 将文本文件上传到ESP8266设备,如上面步骤4中所述,
  6. 打开串口监视器对话框,将波特率设置为115200,
  7. 将\'SPIFFsUsage.ino\'上传到ESP8266设备。

完成上传后,代码将执行,您的串行监视器对话框将显示上面的图1中的文本。

它用于显示\'testfile.txt\'的内容;

  1. 已成功上传,
  2. 位于文件系统中,
  3. 打开阅读,
  4. 读取直到文件结束,
  5. 关闭,
  6. 打开追加,
  7. 写入文件的一行,
  8. 该文件已被重新读取,将最近附加的行显示在文件末尾。

注意:如果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

资源

最新

但适用于Arduino IDE 1.6.12

Arduino论坛SPIFFs的例子

Arduino CORE

Arduino GIT HUB核心

CheckFlashConfig来源

闪光磨损的工作示例

有关SPIFFS的更多详细信息