我用spiffsimg创建了一个包含多个lua文件的文件:
# ./spiffsimg -f lua.img -c 262144 -r lua.script
f 4227 init.lua
f 413 cfg.lua
f 2233 setupWifi.lua
f 7498 configServer.lua
f 558 cfgForm.htm
f 4255 setupConfig.lua
f 14192 main.lua
#
然后我使用esptool.py将NodeMCU固件和包含lua文件的文件刷新到esp8266(NodeMCU开发工具包):
c:\esptool-master>c:\Python27\python esptool.py -p COM7 write_flash -fs 32m -fm dio 0x00000 nodemcu-dev-9-modules-2016-07-18-12-06-36-integer.bin 0x78000 lua.img
esptool.py v1.0.2-dev
Connecting...
Running Cesanta flasher stub...
Flash params set to 0x0240
Writing 446464 @ 0x0... 446464 (100 %)
Wrote 446464 bytes at 0x0 in 38.9 seconds (91.9 kbit/s)...
Writing 262144 @ 0x78000... 262144 (100 %)
Wrote 262144 bytes at 0x78000 in 22.8 seconds (91.9 kbit/s)...
Leaving...
然后我运行ESPLorer来检查状态并得到:
PORT OPEN 115200
Communication with MCU..Got answer! AutoDetect firmware...
Can't autodetect firmware, because proper answer not received.
NodeMCU custom build by frightanic.com
branch: dev
commit: b21b3e08aad633ccfd5fd29066400a06bb699ae2
SSL: true
modules: file,gpio,http,net,node,rtctime,tmr,uart,wifi
build built on: 2016-07-18 12:05
powered by Lua 5.1.4 on SDK 1.5.4(baaeaebb)
lua: cannot open init.lua
>
----------------------------
No files found.
----------------------------
>
Total : 3455015 bytes
Used : 0 bytes
Remain: 3455015 bytes
NodeMCU固件正确闪烁,但无法找到lua文件 .
我已经尝试过闪存到其他位置(0x84000,0x7c000),但我只是根据github上的读取线程来猜测这些位置 .
我使用NodeMCU file.fscfg()例程来获取flash地址和大小 . 如果我只刷新NodeMCU固件,我会得到以下信息:
print (file.fscfg())
524288 3653632
534288是0x80000,所以我尝试只将spiffsimg文件(lua.img)闪存到0x8000,然后运行相同的print语句并得到:
print (file.fscfg())
786432 3391488
闪存地址增加了lua.img中的确切字节数 - 我不明白,为什么闪存地址会改变? file.fscfg返回的第一个数字不是起始闪存地址,而是结束闪存地址吗?
闪存图像文件的正确地址是什么,包含由spiffsimg创建的lua文件?
2 回答
发现spiffsimg的版本here将提供正确的地址,用于刷新包含lua文件的图像文件 .
不要使用this版本的spiffsimg,因为它已经过时了 .
要安装spiffsimg实用程序,需要下载并安装整个nodemcu-firmware软件包(进入linux环境,使用make安装 - 注意:make在我的debian linux框中生成错误,但我能够进入 . ./tools/spiffsimg子目录并在该目录中找到的Makefile上运行make以创建该实用程序) .
spiffsimg指令发现here非常清楚,但有一个例外:您指定的文件名与-f参数一起需要包含字符%x . %x将替换为图像文件应闪烁的地址 .
例如,命令
将在本地目录中创建一个文件,名称如下:80000-luaFiles.img . 这意味着您应该在ESP8266上的地址0x80000处安装该映像文件 .
我有理由相信可以从the docs中提取正确的答案 .
再往下走了一点
但是,'s a slight mismatch between the two statements. We may have a bug in the docs. If 936524 then I' d预计最终名称将不再包含
0x
.此外,在构建固件时可以定义固定的SPIFFS位置 .