You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copyright (c) 2013-2017 Peter Andersson (pelleplutt1976 at gmail.com)
5
7
6
8
For legal stuff, see [LICENSE](https://github.com/pellepl/spiffs/blob/master/LICENSE). Basically, you may do whatever you want with the source. Use, modify, sell, print it out, roll it and smoke it - as long as I won't be held responsible.
7
9
@@ -21,34 +23,98 @@ Spiffs is designed with following characteristics in mind:
21
23
- Wear leveling
22
24
23
25
26
+
## BUILDING
27
+
28
+
`mkdir build; make`
29
+
30
+
Otherwise, configure the `builddir` variable towards the top of `makefile` as something opposed to the default `build`. Sanity check on the host via `make test` and refer to `.travis.yml` for the official in-depth testing procedure. See the wiki for [integrating](https://github.com/pellepl/spiffs/wiki/Integrate-spiffs) spiffs into projects and [spiffsimg](https://github.com/nodemcu/nodemcu-firmware/tree/master/tools/spiffsimg) from [nodemcu](https://github.com/nodemcu) is a good example on the subject.
31
+
32
+
24
33
## FEATURES
25
34
26
35
What spiffs does:
27
36
- Specifically designed for low ram usage
28
37
- Uses statically sized ram buffers, independent of number of files
- It can be run on any NOR flash, not only SPI flash - theoretically also on embedded flash of an microprocessor
31
-
- Multiple spiffs configurations can be run on same target - and even on same SPI flash device
39
+
- It can run on any NOR flash, not only SPI flash - theoretically also on embedded flash of a microprocessor
40
+
- Multiple spiffs configurations can run on same target - and even on same SPI flash device
32
41
- Implements static wear leveling
33
42
- Built in file system consistency checks
43
+
- Highly configurable
34
44
35
45
What spiffs does not:
36
46
- Presently, spiffs does not support directories. It produces a flat structure. Creating a file with path *tmp/myfile.txt* will create a file called *tmp/myfile.txt* instead of a *myfile.txt* under directory *tmp*.
37
-
- It is not a realtime stack. One write operation might take much longer than another.
38
-
- Poor scalability. Spiffs is intended for small memory devices - the normal sizes for SPI flashes. Going beyond ~128MB is probably a bad idea. This is a side effect of the design goal to use as little ram as possible.
47
+
- It is not a realtime stack. One write operation might last much longer than another.
48
+
- Poor scalability. Spiffs is intended for small memory devices - the normal sizes for SPI flashes. Going beyond ~128Mbyte is probably a bad idea. This is a side effect of the design goal to use as little ram as possible.
39
49
- Presently, it does not detect or handle bad blocks.
50
+
- One configuration, one binary. There's no generic spiffs binary that handles all types of configurations.
40
51
41
52
42
53
## MORE INFO
43
54
44
-
See the [wiki](https://github.com/pellepl/spiffs/wiki) for configuring, integratingand using spiffs.
55
+
See the [wiki](https://github.com/pellepl/spiffs/wiki) for [configuring](https://github.com/pellepl/spiffs/wiki/Configure-spiffs), [integrating](https://github.com/pellepl/spiffs/wiki/Integrate-spiffs), [using](https://github.com/pellepl/spiffs/wiki/Using-spiffs), and [optimizing](https://github.com/pellepl/spiffs/wiki/Performance-and-Optimizing) spiffs.
45
56
46
57
For design, see [docs/TECH_SPEC](https://github.com/pellepl/spiffs/blob/master/docs/TECH_SPEC).
47
58
48
59
For a generic spi flash driver, see [this](https://github.com/pellepl/spiflash_driver).
49
60
50
61
## HISTORY
51
62
63
+
### 0.3.7
64
+
- fixed prevent seeking to negative offsets #158
65
+
- fixed file descriptor offsets not updated for multiple fds on same file #157
66
+
- fixed cache page not closed for removed files #156
67
+
- fixed a lseek bug when seeking exactly to end of a fully indexed first level LUT #148
68
+
- fixed wear leveling issue #145
69
+
- fixed attempt to write out of bounds in flash #130,
70
+
- set file offset when seeking over end #121 (thanks @sensslen)
71
+
- fixed seeking in virgin files #120 (thanks @sensslen)
72
+
- Optional file metadata #128 (thanks @cesanta)
73
+
- AFL testing framework #100#143 (thanks @pjsg)
74
+
- Testframe updates
75
+
76
+
New API functions:
77
+
-`SPIFFS_update_meta, SPIFFS_fupdate_meta` - updates metadata for a file
78
+
79
+
New config defines:
80
+
-`SPIFFS_OBJ_META_LEN` - enable possibility to add extra metadata to files
81
+
82
+
### 0.3.6
83
+
- Fix range bug in index memory mapping #98
84
+
- Add index memory mapping #97
85
+
- Optimize SPIFFS_read for large files #96
86
+
- Add temporal cache for opening files #95
87
+
- More robust gc #93 (thanks @dismirlian)
88
+
- Fixed a double write of same data in certain cache situations
89
+
- Fixed an open bug in READ_ONLY builds
90
+
- File not visible in SPIFFS_readdir #90 (thanks @benpicco-tmp)
0 commit comments