Hello,
I'm testing littlefs on an EEPROM device.
My low-level driver works perfectly: data written can be read back exactly the same.
Configuration:
- read_size = 32
- prog_size = 32
- block_size = 128
- cache_size = 32
- lookahead_size = 16
But during mounting, I get:
lfs.c:2100:debug: Bad block at 0x0
lfs.c:2106:warn: Superblock 0x0 has become unwritable
lfs.c:1383:error: Corrupted dir pair at {0x1, 0x0}
Full log:
[LFS] Test start
[LFS READ] block=1, off=0, size=32
[LFS READ] addr=0x0080 Data:08 00 01 00 01 00 01 00 01 00 64 01 F4 65 FF FF 09 03 84 05 14 06 A4 08 34 13 88 13 88 C5 FF FF
[LFS READ] complete, read 32 bytes
[LFS ERASE] block=0
[LFS WRITE] block=0, off=0, size=128
[LFS WRITE] pages=0,addr=0x0000,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] pages=1,addr=0x0020,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] pages=2,addr=0x0040,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] pages=3,addr=0x0060,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] complete, wrote 128 bytes
[LFS ERASE] block=0 erased (0xFF)
[LFS READ] block=0, off=64, size=32
[LFS READ] addr=0x0040 Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS READ] complete, read 32 bytes
[LFS WRITE] block=0, off=0, size=32
[LFS WRITE] pages=0,addr=0x0000,Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS WRITE] complete, wrote 32 bytes
[LFS WRITE] block=0, off=32, size=32
[LFS WRITE] pages=0,addr=0x0020,Data:00 1A BE BF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] complete, wrote 32 bytes
[LFS SYNC]
[LFS READ] block=0, off=0, size=32
[LFS READ] addr=0x0000 Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS READ] complete, read 32 bytes
[LFS READ] block=0, off=32, size=32
[LFS READ] addr=0x0020 Data:00 1A BE BF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS READ] complete, read 32 bytes
../lfs.c:2100:debug: Bad block at 0x0
../lfs.c:2106:warn: Superblock 0x0 has become unwritable
[LFS READ] block=0, off=0, size=32
[LFS READ] addr=0x0000 Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS READ] complete, read 32 bytes
[LFS READ] block=1, off=0, size=32
[LFS READ] addr=0x0080 Data:08 00 01 00 01 00 01 00 01 00 64 01 F4 65 FF FF 09 03 84 05 14 06 A4 08 34 13 88 13 88 C5 FF FF
[LFS READ] complete, read 32 bytes
[LFS READ] block=0, off=0, size=32
[LFS READ] addr=0x0000 Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS READ] complete, read 32 bytes
../lfs.c:1383:error: Corrupted dir pair at {0x1, 0x0}
[LFS] Mount failed, formatting... err=-84
All write/read operations are correct, but littlefs still marks block 0 as bad.
Questions:
- Is block_size=128 supported on EEPROM?
- What is the root cause of this error?
- What is the correct configuration for EEPROM?
Thank you very much for your help!
Hello,
I'm testing littlefs on an EEPROM device.
My low-level driver works perfectly: data written can be read back exactly the same.
Configuration:
But during mounting, I get:
lfs.c:2100:debug: Bad block at 0x0
lfs.c:2106:warn: Superblock 0x0 has become unwritable
lfs.c:1383:error: Corrupted dir pair at {0x1, 0x0}
Full log:
[LFS] Test start
[LFS READ] block=1, off=0, size=32
[LFS READ] addr=0x0080 Data:08 00 01 00 01 00 01 00 01 00 64 01 F4 65 FF FF 09 03 84 05 14 06 A4 08 34 13 88 13 88 C5 FF FF
[LFS READ] complete, read 32 bytes
[LFS ERASE] block=0
[LFS WRITE] block=0, off=0, size=128
[LFS WRITE] pages=0,addr=0x0000,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] pages=1,addr=0x0020,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] pages=2,addr=0x0040,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] pages=3,addr=0x0060,Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] complete, wrote 128 bytes
[LFS ERASE] block=0 erased (0xFF)
[LFS READ] block=0, off=64, size=32
[LFS READ] addr=0x0040 Data:FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS READ] complete, read 32 bytes
[LFS WRITE] block=0, off=0, size=32
[LFS WRITE] pages=0,addr=0x0000,Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS WRITE] complete, wrote 32 bytes
[LFS WRITE] block=0, off=32, size=32
[LFS WRITE] pages=0,addr=0x0020,Data:00 1A BE BF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS WRITE] complete, wrote 32 bytes
[LFS SYNC]
[LFS READ] block=0, off=0, size=32
[LFS READ] addr=0x0000 Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS READ] complete, read 32 bytes
[LFS READ] block=0, off=32, size=32
[LFS READ] addr=0x0020 Data:00 1A BE BF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
[LFS READ] complete, read 32 bytes
../lfs.c:2100:debug: Bad block at 0x0
../lfs.c:2106:warn: Superblock 0x0 has become unwritable
[LFS READ] block=0, off=0, size=32
[LFS READ] addr=0x0000 Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS READ] complete, read 32 bytes
[LFS READ] block=1, off=0, size=32
[LFS READ] addr=0x0080 Data:08 00 01 00 01 00 01 00 01 00 64 01 F4 65 FF FF 09 03 84 05 14 06 A4 08 34 13 88 13 88 C5 FF FF
[LFS READ] complete, read 32 bytes
[LFS READ] block=0, off=0, size=32
[LFS READ] addr=0x0000 Data:53 FD 20 0F 6C 69 74 74 6C 65 66 73 00 E1 01 F6 80 F6 40 F6 FF F6 FF FF FE F6 00 EF 20 20 F4 20
[LFS READ] complete, read 32 bytes
../lfs.c:1383:error: Corrupted dir pair at {0x1, 0x0}
[LFS] Mount failed, formatting... err=-84
All write/read operations are correct, but littlefs still marks block 0 as bad.
Questions:
Thank you very much for your help!