记录一次脱离Arduino向ESP8266文件系统(SPIFFS)上传打包为固件的文件数据(SPIFFS 映像)的全过程

对于ESP8266文件系统上传文件,个人通常采用Arduino中安装esp8266fs插件的方法:

通过Arduino IDE向闪存文件系统上传文件_arduino怎么创建项目文件夹_Baal Austin的博客-CSDN博客

 

但每次修改文件后再上传都需要打开Arduino使用这个插件,感觉过程比较繁琐,于是想实现自己将文件打包为固件后再上传这一功能。

根据ESP-IDF 编程指南可以知道有spiffsgen.py和mkspiffs两种工具可以生成 SPIFFS 映像(用我通俗的理解叫打包为固件的文件数据)。

g​​​​​​​SPIFFS 文件系统 - ESP32-S2 - — ESP-IDF 编程指南 v4.2 文档

接下来需要分析使用Arduino上传这个过程中调用了什么,以及在调用时传递了哪些参数。我选择使用Process Monitor来进行分析。

[搬运]进程监视器(Process Monitor)3.85完整汉化版 - 『精品软件区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

首先启动Arduino。

启动Process Monitor(启动后会自动开始捕获)。

 

使用Arduino的esp8266fs插件上传文件。

上传完成后停止Process Monitor捕获 。

 

捕获的内容很多,需要筛选重点。将Process Monitor工具栏中的同心圆图标拖拽至Arduino界面。

 

此时会过滤掉与Arduino无关的内容。

 

一次过滤完成。

 

我关注的是进程之间的调用与传递的参数,所以只保留与进程有关的选项。

 

二次过滤完后很明显的发现Arduino是通过调用mkspiffs来生成的 SPIFFS 映像。

 

 下载mkspiffs并学习其命令参数。

https://github.com/igrr/mkspiffs

 

查看Process Monitor详细信息后获得了Arduino调用mkspiffs时的传递参数。

 

简单整理一下得到了该条命令:mkspiffs.exe -c 上传的文件目录 -p 256 -b 4096 -s 45056 生成固件.bin

粘贴进去稍微修改一下写成批处理并放置在mkspiffs所在的同级目录中。

批处理:%~dp0mkspiffs -c %~dp0data -b 4096 -p 256 -s 45056 %~dp0spiffs_%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%--%time:~9,2%.bin

 

执行批处理后对比发现与Arduino生成的映像不一致?

 

于是将Arduino调用的mkspiffs提取出来使用(对比了一下发现Arduino调用的mkspiffs比我下载的mkspiffs时间更新一些,可能是我下载的版本有问题吧,就不纠结这个了)。

重新对比发现完全一致,打包部分至此结束。

 

上传部分使用的是esptool,写为批处理。

为了兼容Arduino的esp8266fs插件,也是在此批处理目录下创建一个名为data的文件夹,将要打包上传的文件放入data中即可。

[自动]生成文件系统数据固件并上传批处理:

set time_flag=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%--%time:~9,2%
%~dp0mkspiffs -c %~dp0data -b 4096 -p 256 -s 0xB000 %~dp0spiffs_%time_flag%.bin
%~dp0esptool.exe --chip esp8266 --baud 115200 write_flash -z 0x1F0000 %~dp0spiffs_%time_flag%.bin
pause

 

[自动]生成文件系统数据固件并上传批处理执行效果:

 

经测试可以成功打包并完成文件上传且可以正常读取文件。

至此,完成脱离Arduino向ESP8266文件系统(SPIFFS)上传打包为固件的文件数据(SPIFFS 映像)的功能。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤在Arduino ESP8266上上文件: 1. 安装ESP8266板支持 在Arduino IDE中,打开菜单“文件”>“首选项”,在“附加开发板管理器网址”中添加以下链接: http://arduino.esp8266.com/stable/package_esp8266com_index.json 然后打开菜单“工具”>“开发板”>“开发板管理器”,搜索“esp8266”,安装“esp8266”板支持。 2. 连接ESP8266开发板 将ESP8266开发板通过USB线连接到电脑上。 3. 选择开发板和端口 打开菜单“工具”>“开发板”,选择正确的ESP8266开发板。 然后打开菜单“工具”>“端口”,选择正确的串口端口。 4. 准备上文件Arduino IDE中打开要上文件,例如“sketch.ino”。 在文件中添加以下代码,将文件内容写入ESP8266的SPIFFS文件系统中: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #include <FS.h> void setup() { SPIFFS.begin(); File file = SPIFFS.open("/test.txt", "w"); if (!file) { Serial.println("Failed to open file for writing"); return; } file.println("Hello World!"); file.close(); } 5. 上文件 打开菜单“工具”>“ESP8266 Sketch Data Upload”,上文件ESP8266的SPIFFS文件系统中。 上完成后,重启ESP8266开发板即可。 注意:上文件时,需要确保ESP8266的SPIFFS文件系统已经初始化。可以通过SPIFFS.begin()函数来初始化。同时,需要在ESP8266开发板上连接WiFi网络,以便通过WiFi访问上文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值