https://github.com/tinygo-org/tinyfs
Embedded filesystems for TinyGo. Currently supports FATfs and LittleFS on microcontrollers with either SDCard or Flash RAM.
https://github.com/tinygo-org/tinyfs
embedded fatfs flash littlefs microcontroller sdcard tinygo
Last synced: 2 months ago
JSON representation
Embedded filesystems for TinyGo. Currently supports FATfs and LittleFS on microcontrollers with either SDCard or Flash RAM.
- Host: GitHub
- URL: https://github.com/tinygo-org/tinyfs
- Owner: tinygo-org
- License: bsd-3-clause
- Created: 2020-07-09T07:25:46.000Z (over 5 years ago)
- Default Branch: release
- Last Pushed: 2025-04-17T07:08:51.000Z (6 months ago)
- Last Synced: 2025-06-06T03:43:20.818Z (4 months ago)
- Topics: embedded, fatfs, flash, littlefs, microcontroller, sdcard, tinygo
- Language: C
- Homepage: https://tinygo.org
- Size: 817 KB
- Stars: 30
- Watchers: 3
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-tinygo - tinyfs - Embedded filesystems for TinyGo like FATfs and LittleFS on microcontrollers. (Embedded Systems / General use)
README
# TinyFS
[](https://github.com/tinygo-org/tinyfs/actions/workflows/build.yml)
TinyFS contains Go implementations of embedded filesystems. The packages in
this module require CGo support and are [TinyGo](https://tinygo.org/) compatible.## Supported hardware
You can use TinyFS with the following embedded hardware configurations:
### Onboard Flash memory
You can use TinyFS on processors that have onboard Flash memory in the area above where the compiled TinyGo program is running.
### External Flash memory
You can use TinyFS on an external Flash memory chip connected via SPI/QSPI hardware interface.
See https://github.com/tinygo-org/drivers/tree/release/flash
### SD card connected via SPI/QPI
You can use TinyFS on an SD card connected via SPI/QSPI hardware interface.
See https://github.com/tinygo-org/drivers/tree/release/sdcard
## LittleFS
The LittleFS file system is specifically designed for embedded applications.
See https://github.com/littlefs-project/littlefs for more information.
### Example
This example runs on the RP2040 using the on-board flash in the available memory above where the program code itself is running:
```
$ tinygo flash -target pico -monitor ./examples/console/littlefs/machine/
Connected to /dev/ttyACM0. Press Ctrl-C to exit.
SPI Configured. Reading flash info
==> lsblk-------------------------------------
Device Information:
-------------------------------------
flash data start: 10017000
flash data end: 10200000
-------------------------------------==> format
Successfully formatted LittleFS filesystem.==> mount
Successfully mounted LittleFS filesystem.==> ls
==> samples
wrote 90 bytes to file0.txt
wrote 90 bytes to file1.txt
wrote 90 bytes to file2.txt
wrote 90 bytes to file3.txt
wrote 90 bytes to file4.txt
==> ls
-rwxrwxrwx 90 file0.txt
-rwxrwxrwx 90 file1.txt
-rwxrwxrwx 90 file2.txt
-rwxrwxrwx 90 file3.txt
-rwxrwxrwx 90 file4.txt
==> cat file3.txt
00000000: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !"#$%&'()*+,-./
00000010: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 0123456789:;<=>?
00000020: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO
00000030: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f PQRSTUVWXYZ[\]^_
00000040: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f `abcdefghijklmno
00000050: 70 71 72 73 74 75 76 77 78 79 pqrstuvwxy
```After unplugging and reconnecting the RP2040 device (a hard restart):
```
$ tinygo monitor
Connected to /dev/ttyACM0. Press Ctrl-C to exit.
SPI Configured. Reading flash info
==> mount
Successfully mounted LittleFS filesystem.==> ls
-rwxrwxrwx 90 file0.txt
-rwxrwxrwx 90 file1.txt
-rwxrwxrwx 90 file2.txt
-rwxrwxrwx 90 file3.txt
-rwxrwxrwx 90 file4.txt
==> cat file3.txt
00000000: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !"#$%&'()*+,-./
00000010: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 0123456789:;<=>?
00000020: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO
00000030: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f PQRSTUVWXYZ[\]^_
00000040: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f `abcdefghijklmno
00000050: 70 71 72 73 74 75 76 77 78 79 pqrstuvwxy
```## FAT FS
The FAT file system is not currently working, due to https://github.com/tinygo-org/tinygo/issues/3460.