hello,
Trying to migrate an old project to latest code. I have this config
after migration.
$ ag LITTLEFS .config
1928:CONFIG_FS_LITTLEFS=y
1929:CONFIG_FS_LITTLEFS_PROGRAM_SIZE_FACTOR=1
1930:CONFIG_FS_LITTLEFS_READ_SIZE_FACTOR=1
1931:CONFIG_FS_LITTLEFS_BLOCK_SIZE_FACTOR=1
1932:CONFIG_FS_LITTLEFS_CACHE_SIZE_FACTOR=4
1933:CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE=0
1934:CONFIG_FS_LITTLEFS_BLOCK_CYCLE=200
1935:CONFIG_FS_LITTLEFS_NAME_MAX=32
1936:CONFIG_FS_LITTLEFS_FILE_MAX=2147483647
1937:CONFIG_FS_LITTLEFS_ATTR_MAX=1022
I can not mount a blank mtd partition on a sst26, cpu is stm32f429
I see make.defs has version 2.5.1
and cmakelists has version 2.4.0
So much for modern build systems, nuttx is not rigorous enough to
maintain both in sync, as warned by me and others when people wanted cmake.
Here is what happens at runtime with 2.4.0 (fs/littlefs/Make.defs
changed manually and nuttx rebuilt):
NuttShell (NSH) NuttX-12.4.0
nsh> mount -t littlefs -o forceformat /dev/storage /storage
find_blockdriver: pathname="/dev/storage"
find_blockdriver: /dev/storage is a MTD
lfs_format: lfs_format(0x200088e8, 0x2000889c {.context=0x20008858,
.read=0x802ef89, .prog=0x802f01d, .erase=0x802f0b1, .sync=0x802f12f,
.read_size=256, .prog_size=256, .block_size=4096, .block_count=1536,
.block_cycles=200, .cache_size=1024, .lookahead_size=192,
.read_buffer=0, .prog_buffer=0, .lookahead_buffer=0, .name_max=0,
.file_max=0, .attr_max=0})
sst26_bread: startblock: 00002010 nblocks: 1
sst26_read: offset: 00201000 nbytes: 256
sst26_read: return nbytes: 256
sst26_erase: startblock: 00000200 nblocks: 1
sst26_sectorerase: sector: 00000200
sst26_writeenable: Enabled
_assert: Current Version: NuttX 12.4.0 d4d49e9645-dirty Mar 19 2024
01:04:47 arm
_assert: Assertion failed panic: at file: armv7-m/arm_hardfault.c:175
task: nsh process: nsh 0x801b7c5
up_dump_register: R0: 00000000 R1: 00000000 R2: 00000001 R3: 00200000
up_dump_register: R4: 00000000 R5: 00000000 R6: 00000000 FP: 00000000
up_dump_register: R8: 00000000 SB: 00000000 SL: 00000000 R11: 00000000
up_dump_register: IP: 80000000 SP: 20007ac8 LR: 0803a101 PC: 0803a11e
up_dump_register: xPSR: 21000000 PRIMASK: 00000001 CONTROL: 00000000
up_dump_register: EXC_RETURN: fffffff9
dump_stacks: ERROR: Stack pointer is not within the stack
dump_stack: User Stack:
dump_stack: base: 0x8050749
dump_stack: size: 00002000
That is definitely not a good stack pointer. LFS 2.4 does not work.
.name_max=0, .file_max=0, .attr_max=0 are very suspicious.
Trying again with 2.5.1 I get this:
NuttShell (NSH) NuttX-12.4.0
nsh> mount -t littlefs -o forceformat /dev/storage /storage
find_blockdriver: pathname="/dev/storage"
find_blockdriver: /dev/storage is a MTD
lfs_format: lfs_format(0x200088e8, 0x2000889c {.context=0x20008858,
.read=0x802ef89, .prog=0x802f01d, .erase=0x802f0b1, .sync=0x802f12f,
.read_size=256, .prog_size=256, .block_size=4096, .block_count=1536,
.block_cycles=200, .cache_size=1024, .lookahead_size=192,
.read_buffer=0, .prog_buffer=0, .lookahead_buffer=0, .name_max=0,
.file_max=0, .attr_max=0})
sst26_bread: startblock: 00002010 nblocks: 1
sst26_read: offset: 00201000 nbytes: 256
sst26_read: return nbytes: 256
sst26_erase: startblock: 00000200 nblocks: 1
sst26_sectorerase: sector: 00000200
sst26_writeenable: Enabled
sst26_waitwritecomplete: Complete
sst26_sectorerase: Erased
sst26_bread: startblock: 00002001 nblocks: 1
sst26_read: offset: 00200100 nbytes: 256
sst26_read: return nbytes: 256
sst26_bwrite: startblock: 00002000 nblocks: 1
sst26_pagewrite: page: 00002000 offset: 00200000
sst26_writeenable: Enabled
sst26_waitwritecomplete: Complete
sst26_pagewrite: Written
sst26_ioctl: cmd: 1293
sst26_ioctl: return -25
sst26_bread: startblock: 00002000 nblocks: 1
sst26_read: offset: 00200000 nbytes: 256
sst26_read: return nbytes: 256
sst26_erase: startblock: 00000201 nblocks: 1
sst26_sectorerase: sector: 00000201
sst26_writeenable: Enabled
sst26_waitwritecomplete: Complete
sst26_sectorerase: Erased
sst26_bread: startblock: 00002011 nblocks: 1
sst26_read: offset: 00201100 nbytes: 256
sst26_read: return nbytes: 256
sst26_bwrite: startblock: 00002010 nblocks: 1
sst26_pagewrite: page: 00002010 offset: 00201000
sst26_writeenable: Enabled
sst26_waitwritecomplete: Complete
sst26_pagewrite: Written
sst26_ioctl: cmd: 1293
sst26_ioctl: return -25
sst26_bread: startblock: 00002010 nblocks: 1
sst26_read: offset: 00201000 nbytes: 256
sst26_read: return nbytes: 256
sst26_bread: startblock: 00002000 nblocks: 1
sst26_read: offset: 00200000 nbytes: 256
sst26_read: return nbytes: 256
sst26_bread: startblock: 00002010 nblocks: 1
sst26_read: offset: 00201000 nbytes: 256
sst26_read: return nbytes: 256
sst26_bread: startblock: 00002011 nblocks: 4
sst26_read: offset: 00201100 nbytes: 1024
sst26_read: return nbytes: 1024
lfs_format: lfs_format -> 0
lfs_mount: lfs_mount(0x200088e8, 0x2000889c {.context=0x20008858,
.read=0x802ef89, .prog=0x802f01d, .erase=0x802f0b1, .sync=0x802f12f,
.read_size=256, .prog_size=256, .block_size=4096, .block_count=1536,
.block_cycles=200, .cache_size=1024, .lookahead_size=192,
.read_buffer=0, .prog_buffer=0, .lookahead_buffer=0, .name_max=0,
.file_max=0, .attr_max=0})
sst26_bread: startblock: 00002000 nblocks: 1
sst26_read: offset: 00200000 nbytes: 256
sst26_read: return nbytes: 256
sst26_bread: startblock: 00002010 nblocks: 1
sst26_read: offset: 00201000 nbytes: 256
sst26_read: return nbytes: 256
sst26_bread: startblock: 00002011 nblocks: 4
sst26_read: offset: 00201100 nbytes: 1024
sst26_read: return nbytes: 1024
sst26_bread: startblock: 00002010 nblocks: 1
sst26_read: offset: 00201000 nbytes: 256
sst26_read: return nbytes: 256
lfs_mount: lfs_mount -> 0
_assert: Current Version: NuttX 12.4.0 d4d49e9645-dirty Mar 19 2024
01:12:31 arm
_assert: Assertion failed panic: at file: armv7-m/arm_hardfault.c:175
task: process: Kernel 0x801b7c5
up_dump_register: R0: 08051c0c R1: 02aea540 R2: 00000050 R3: 02aea540
up_dump_register: R4: 00000001 R5: 20000154 R6: 00000000 FP: 00000000
up_dump_register: R8: 00000000 SB: 00000000 SL: 00000000 R11: 00000000
up_dump_register: IP: a0000000 SP: 20008238 LR: 08012fb7 PC: 08012f36
up_dump_register: xPSR: 01000000 PRIMASK: 00000000 CONTROL: 00000000
up_dump_register: EXC_RETURN: fffffff9
dump_stacks: ERROR: Stack pointer is not within the stack
dump_stack: User Stack:
dump_stack: base: 0x1
dump_stack: size: 00002000
stack_dump: 0x1: 81200040 af080000 af080000 af080000 af080000 af080000
af080000 af080000
stack_dump: 0x21: af080000 af080000 af080000 af080000 af080000 af080000
af080000 af080000
stack_dump: 0x41: af080000 af080000 af080000 af080000 af080000 af080000
af080000 af080000
stack_dump: 0x61: af080000 af080000 af080000 af080000 af080000 af080000
af080000 44080000
stack_dump: 0x81: c00000f2 d00000f6 44d000f8 c00004f2 000000f6 4e468668
ce5008f6 440000f2
stack_dump: 0xa1: c00100f2 010100f6 00477060 fdbf00bf ffffffe7 ffffffff
ffffffff ffffffff
stack_dump: 0xc1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0xe1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x101: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x121: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x141: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x161: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x181: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x1a1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x1c1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x1e1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x201: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x221: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x241: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x261: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x281: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x2a1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x2c1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x2e1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x301: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x321: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x341: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x361: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x381: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x3a1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x3c1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x3e1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x401: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x421: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x441: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x461: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x481: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x4a1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x4c1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x4e1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x501: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x521: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x541: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x561: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x581: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x5a1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x5c1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x5e1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x601: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x621: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x641: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x661: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x681: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x6a1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x6c1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x6e1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x701: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x721: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x741: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x761: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x781: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x7a1: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ffffffff ffffffff
stack_dump: 0x7c1: ffffffff ffffffff ffffffff ffffffff 00000000 00000000
00000000 00000000
dump_tasks: PID GROUP PRI POLICY TYPE NPX STATE EVENT
SIGMASK STACKBASE STACKSIZE COMMAND
dump_task: 0 0 0 FIFO Kthread - Ready 0000000000000000
0x20005c6c 992 Idle_Task
dump_task: 1 1 224 RR Kthread - Waiting Semaphore
0000000000000000 0x20006f78 1968 hpwork 0x20004230 0x20004244
dump_task: 2 7 100 RR Task - Running 0000000000000000
0x1 2000
Even better !
Dont tell me to increase stack - this is a builtin command, and the
memory is deeply corrupted.
Please fix this mess. Last time I checked littlefs was around version
2.2 and it worked, we have it in prod.
NuttX master branch is not a personal playground, it has to stay stable
for *everyone*.
Extremely long checks when sending pull requests should ensure this.
They dont.
If tests are useless , then committers should be more careful, and tests
improved.
Dont tell me to send fixes - I did not break this. I'm just tired that
NuttX always breaks when doing the simplest upgrades. You never know
what will explode, but it is sure to blow up in your face!
But NuttX is a mess, no change, and little hope for improvement.
Best solution for me at dayjob is to avoid upgrading NuttX, and plan to
use another stable OS to avoid technical debt.
Best solution for my personal project is not to use NuttX.
Shame. I know the reasons are bad management.
Sebatien