记录一次脱离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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值