lwext4
littlefs
Our great sponsors
lwext4 | littlefs | |
---|---|---|
4 | 29 | |
442 | 4,755 | |
- | 3.2% | |
0.0 | 8.2 | |
27 days ago | 15 days ago | |
C | C | |
GNU General Public License v3.0 or later | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
lwext4
-
Alternative to FAT for SD cards?
For MCUs the problem is more likely to be finding something sufficiently small to fit in flash. The linux kernel filesystem code is too big and depends on too many other parts of the kernel but there are embedded oriented implementations like https://github.com/gkostka/lwext4 (though I've never tried it)
There is lwext4, might give that a try then.
littlefs
-
Littlefs – a little fail-safe filesystem designed for microcontrollers
Pointers correctly round-trip through unrelated pointer types, provided the alignment for both types is compatible.
At least one bit does look a bit questionable: lfs_mlist is treated as the common initial sequence of lfs_dir and lfs_file, even though it isn't, and common initial sequences only apply to union fields anyway. Example cast of struct dir * to struct lfs_mlist * (probably valid of itself, assuming the alignment is compatible): https://github.com/littlefs-project/littlefs/blob/c733d9ec57... then use struct dir as if it were actually a struct lfs_mlist: https://github.com/littlefs-project/littlefs/blob/c733d9ec57...
(There's other occurrences of the same kind of thing.)
Strictly speaking, I think this might be unfixable without a bunch of work, but so much stuff does this kind of operation that any compiler that doesn't do what you expect will have been fixed by now. (Assuming you're not one of those people who is going to pop up and tell us with a straight face that what we should expect is for the compiler to do absolutely anything - except, perhaps, for having it generate correct code, which would be defective behaviour that should be eliminated.) Maybe improve the odds by using lfs_mlist as the common initial sequence of both structs, and fingers crossed that the compiler considers the union rules to apply to this case too. Or compile with -fno-strict-aliasing.
-
I made a tachometer/hour meter for my outboard engine using the PIO
Also, it looks like you're writing to the flash every second the engine is running. Do you have an idea of what the endurance of that might be? I'm not too familiar with this but supposedly the flash on the Pico is good for at least 100K program/erase cycles and Micropython uses LittleFS on RP2040 which does wear leveling. I looked for more official info and the rp2 port code backs that up with a note: "the flash requires the programming size to be aligned to 256 bytes". And the littlefs readme does say it does wear leveling and other good stuff.
- SPI Flash file system vs writing my own fifo?
-
Small MicroSD module for project
Rather easy to add LittleFS for file storage onto the NOR flash. https://github.com/littlefs-project/littlefs
- CircuitPython – The easiest way to program microcontrollers
-
Hacker News top posts: Feb 18, 2022
Littlefs – A little fail-safe filesystem designed for microcontrollers\ (31 comments)
-
Littlefs – A little fail-safe filesystem designed for microcontrollers
Is that an issue with Arduino? This PR [0] suggests a R/W compile is around 13k (or R/O for 5k) on an M0. I don't know if there'd be a big difference compiling for AVR though.
-
Trouble with variable seek times in SPIFFS
LittleFS [sic, it's littlefs] is the future. It's much faster for most things. You might check it out.
What are some alternatives?
spiffs - Wear-leveled SPI flash file system for embedded devices
lvgl - Embedded graphics library to create beautiful UIs for any MCU, MPU and display type.
zephyr - Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
uf2 - UF2 file format specification
STORfs - Open source file system for small embedded systems
extfstools - Tools for extracting files from ext2,3,4 filesystem images
btrfs - Haskell bindings to the btrfs API
ltfs - Reference implementation of the LTFS format Spec for stand alone tape drive
bekantfirmware - Programmable position memory for IKEA BEKANT adjustable sit/stand desk
InfiniTime - Firmware for Pinetime smartwatch written in C++ and based on FreeRTOS
ksmbd-tools - ksmbd kernel server userspace utilities