Closed
Description
环境描述:
ESP8266 + 4M Bytes SPI FLASH 【W25Q32】+ SDK release/v3.2
分区定义:
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 512K,
storage, data, spiffs, , 448K,
操作步骤:
- 使用esptools.py工具先整体擦除Flash;
- 创建spiffs文件系统镜像目录:
mkdir spiffs_root
vim hello.txt 【随便写了一串字符串在文件里】 - 使用如下命令制作spiffs文件系统镜像:
python ./tools/spiffsgen.py 0x70000 spiffs_root/ spiffs.bin - 在storage分区烧写文件系统镜像:
python ./tools/esptool.py --chip esp8266 --port /dev/ttyUSB0 --baud 115200 write_flash -z 0x90000 spiffs.bin - 改写SPIFFS_CHECK_RES宏函数,打印相关错误信息:
#define SPIFFS_CHECK_RES(res)
do {
if ((res) < SPIFFS_OK)
{
printf("Err!! file: %s, func: %s, line: %d, ErrNo: %d\n\n", FILE, func, LINE, res);
return (res);
}
} while (0); - make menuconfig将Log out等级设置为Debug模式,并打开SPIFFS的所有输出;
- 改写example/storage/spiffs/main/spiffs_example_main.c :
7.1 挂载spiffs;
7.2 POSSIX 或 C 编写open("/spiffs/hello.txt",...),read(fd, ...); - make flash && make monitor;
- 输出如下日志:
D (701) SPIFFS: read: load objix page 0001:0000 for data spix:0000
D (711) SPIFFS: read: offset:0 rd:20 data spix:0000 is data_pix:ff00 addr:00ff0005
Err!! file: /root/esp/ESP8266_RTOS_SDK/components/spiffs/spiffs/src/spiffs_nucleus.c, func: spiffs_object_read, line: 2036, ErrNo: -10016
D (741) SPIFFS: SPIFFS_clearerr
Note:
spiffs的问题库上找到一条类似的问题描述: pellepl/spiffs#160
他的环境是MSP430 + IAR,由于地址对齐问题引发,他使能cache可以read;然而我在ESP8266上各种折腾也不能成功读出文件,我有尝试使用esptools.py工具读Flash,读出来的内容和写进去的内容一致。
Metadata
Metadata
Assignees
Labels
No labels