我正在尝试在我的 PC 上构建 LittleFS 文件系统二进制文件并将其闪存到我的 WeMos D1 Mini Pro (16MB) ESP8266。
我在 ESP 上使用了以下代码
代码:
全选 LittleFS.begin()
FSInfo info;
LittleFS.info(info);
Serial.print("LittleFS block size:");
Serial.println(info.blockSize);
Serial.print("LittleFS total bytes:");
Serial.println(info.totalBytes);
确定块大小和总字节数,分别给了我“8192”和“14655488”。`14655488 / 8192 = 1789` 所以我在下面的 python 中使用 `1789` 作为块大小:
代码:
全选from littlefs import LittleFS
fs = LittleFS(block_size=8192, block_count=1789)
with open( 'index.html', 'rb' ) as f:
data = f.read()
with fs.open( '/index.html', 'w') as fh:
fh.write( data )
with open('fs.bin', 'wb') as fh:
fh.write(fs.context.buffer)
这将创建一个 14655488 字节的 .bin 文件。
然后我查看了 `boards.txt` 并找到了这些行:
代码:
全选d1_mini_pro.menu.eesz.16M14M=16MB (FS:14MB OTA:~1019KB)
d1_mini_pro.menu.eesz.16M14M.build.flash_size=16M
d1_mini_pro.menu.eesz.16M14M.build.flash_size_bytes=0x1000000
d1_mini_pro.menu.eesz.16M14M.build.flash_ld=eagle.flash.16m14m.ld
d1_mini_pro.menu.eesz.16M14M.build.spiffs_pagesize=256
d1_mini_pro.menu.eesz.16M14M.upload.maximum_size=1044464
d1_mini_pro.menu.eesz.16M14M.build.rfcal_addr=0xFFC000
d1_mini_pro.menu.eesz.16M14M.build.spiffs_start=0x200000
d1_mini_pro.menu.eesz.16M14M.build.spiffs_end=0xFFA000
d1_mini_pro.menu.eesz.16M14M.build.spiffs_blocksize=8192
这确认了块大小并给出了 SPIFFS(但 LittleFS 在这里是等效的,对吧?)起始地址为 `0x200000`
然后我使用:
`python upload.py --chip esp8266 --port COM6 --baud 460800 write_flash 0x200000 fs .bin`
输出:
代码:
全选esptool.py v2.8
Serial port COM6
Connec
ting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:6e:19:90
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 16MB
Compressed 14655488 bytes to 215596...
Writing at 0x00234000... (100 %)
Wrote 14655488 bytes (215596 compressed) at 0x00200000 in 56.7 seconds (effective 2067.0 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
但是,当我使用如下代码时
代码:
全选Dir root = LittleFS.openDir("/");
while (root.next())
{
Serial.print(root.fileName());
}
我什么也得不到,而且
代码:
全选LittleFS.exists("/index.html")
返回假。
我做错了什么,或者我该如何调试?
我正在通过 Visual Studio Code 上传我的固件(不是文件系统),我使用的板配置是
代码:
全选"xtal=80,vt=flash,exception=legacy,ssl=all,eesz=16M14M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=921600"
如果我在十六进制编辑器中打开 `bin`,我可以看到:
这是 html 文件中的一些 javascript。
如果我这样做:
代码:
全选 uint32_t b;
ESP.flashRead(0x006C2800 + 0x200000, &b, 1);
Serial.println(b);
然后它返回 `115`/`0x73`,所以看起来二进制文件已经成功闪现,所以这让我觉得二进制文件在错误的地方闪现,或者它被损坏/无效......