@@ -60,8 +60,12 @@ def _parse_ld_sizes(ldscript_path):
6060
6161 appsize_re = re .compile (
6262 r"irom0_0_seg\s*:.+len\s*=\s*(0x[\da-f]+)" , flags = re .I )
63- spiffs_re = re .compile (
64- r"PROVIDE\s*\(\s*_SPIFFS_(\w+)\s*=\s*(0x[\da-f]+)\s*\)" , flags = re .I )
63+ filesystem_re = re .compile (
64+ r"PROVIDE\s*\(\s*_%s_(\w+)\s*=\s*(0x[\da-f]+)\s*\)" % "FS"
65+ if "arduino" in env .subst ("$PIOFRAMEWORK" )
66+ else "SPIFFS" ,
67+ flags = re .I ,
68+ )
6569 with open (ldscript_path ) as fp :
6670 for line in fp .readlines ():
6771 line = line .strip ()
@@ -71,9 +75,9 @@ def _parse_ld_sizes(ldscript_path):
7175 if match :
7276 result ['app_size' ] = _parse_size (match .group (1 ))
7377 continue
74- match = spiffs_re .search (line )
78+ match = filesystem_re .search (line )
7579 if match :
76- result ['spiffs_ %s' % match .group (1 )] = _parse_size (
80+ result ['fs_ %s' % match .group (1 )] = _parse_size (
7781 match .group (2 ))
7882 return result
7983
@@ -85,19 +89,19 @@ def _get_flash_size(env):
8589 return "%dM" % (ldsizes ['flash_size' ] / 1048576 )
8690
8791
88- def fetch_spiffs_size (env ):
92+ def fetch_fs_size (env ):
8993 ldsizes = _parse_ld_sizes (env .GetActualLDScript ())
9094 for key in ldsizes :
91- if key .startswith ("spiffs_ " ):
95+ if key .startswith ("fs_ " ):
9296 env [key .upper ()] = ldsizes [key ]
9397
9498 assert all ([
9599 k in env
96- for k in ["SPIFFS_START " , "SPIFFS_END " , "SPIFFS_PAGE " , "SPIFFS_BLOCK " ]
100+ for k in ["FS_START " , "FS_END " , "FS_PAGE " , "FS_BLOCK " ]
97101 ])
98102
99103 # esptool flash starts from 0
100- for k in ("SPIFFS_START " , "SPIFFS_END " ):
104+ for k in ("FS_START " , "FS_END " ):
101105 _value = 0
102106 if env [k ] < 0x40300000 :
103107 _value = env [k ] & 0xFFFFF
@@ -111,8 +115,8 @@ def fetch_spiffs_size(env):
111115 env [k ] = _value
112116
113117
114- def __fetch_spiffs_size (target , source , env ):
115- fetch_spiffs_size (env )
118+ def __fetch_fs_size (target , source , env ):
119+ fetch_fs_size (env )
116120 return (target , source )
117121
118122
@@ -140,6 +144,8 @@ def get_esptoolpy_reset_flags(resetmethod):
140144env = DefaultEnvironment ()
141145env .SConscript ("compat.py" , exports = "env" )
142146platform = env .PioPlatform ()
147+ board = env .BoardConfig ()
148+ filesystem = board .get ("build.filesystem" , "spiffs" )
143149
144150env .Replace (
145151 __get_flash_size = _get_flash_size ,
@@ -157,10 +163,16 @@ def get_esptoolpy_reset_flags(resetmethod):
157163 ARFLAGS = ["rc" ],
158164
159165 #
160- # Misc
166+ # Filesystem
161167 #
162168
163- MKSPIFFSTOOL = "mkspiffs" ,
169+ MKFSTOOL = "mk%s" % filesystem ,
170+ ESP8266_FS_IMAGE_NAME = env .get ("ESP8266_FS_IMAGE_NAME" , env .get (
171+ "SPIFFSNAME" , filesystem )),
172+
173+ #
174+ # Misc
175+ #
164176
165177 SIZEPROGREGEXP = r"^(?:\.irom0\.text|\.text|\.text1|\.data|\.rodata|)\s+([0-9]+).*" ,
166178 SIZEDATAREGEXP = r"^(?:\.data|\.rodata|\.bss)\s+([0-9]+).*" ,
@@ -195,14 +207,14 @@ def get_esptoolpy_reset_flags(resetmethod):
195207 BUILDERS = dict (
196208 DataToBin = Builder (
197209 action = env .VerboseAction (" " .join ([
198- '"$MKSPIFFSTOOL "' ,
210+ '"$MKFSTOOL "' ,
199211 "-c" , "$SOURCES" ,
200- "-p" , "$SPIFFS_PAGE " ,
201- "-b" , "$SPIFFS_BLOCK " ,
202- "-s" , "${SPIFFS_END - SPIFFS_START }" ,
212+ "-p" , "$FS_PAGE " ,
213+ "-b" , "$FS_BLOCK " ,
214+ "-s" , "${FS_END - FS_START }" ,
203215 "$TARGET"
204- ]), "Building SPIFFS image from '$SOURCES' directory to $TARGET" ),
205- emitter = __fetch_spiffs_size ,
216+ ]), "Building file system image from '$SOURCES' directory to $TARGET" ),
217+ emitter = __fetch_fs_size ,
206218 source_factory = env .Dir ,
207219 suffix = ".bin"
208220 )
@@ -211,22 +223,25 @@ def get_esptoolpy_reset_flags(resetmethod):
211223
212224
213225#
214- # Target: Build executable and linkable firmware or SPIFFS image
226+ # Target: Build executable and linkable firmware or file system image
215227#
216228
217229target_elf = None
218230if "nobuild" in COMMAND_LINE_TARGETS :
219231 target_elf = join ("$BUILD_DIR" , "${PROGNAME}.elf" )
220232 if set (["uploadfs" , "uploadfsota" ]) & set (COMMAND_LINE_TARGETS ):
221- fetch_spiffs_size (env )
222- target_firm = join ("$BUILD_DIR" , "%s .bin" % env . get ( "SPIFFSNAME" , "spiffs" ) )
233+ fetch_fs_size (env )
234+ target_firm = join ("$BUILD_DIR" , "${ESP8266_FS_IMAGE_NAME} .bin" )
223235 else :
224236 target_firm = join ("$BUILD_DIR" , "${PROGNAME}.bin" )
225237else :
226238 target_elf = env .BuildProgram ()
227239 if set (["buildfs" , "uploadfs" , "uploadfsota" ]) & set (COMMAND_LINE_TARGETS ):
240+ if filesystem not in ("littlefs" , "spiffs" ):
241+ sys .stderr .write ("Filesystem %s is not supported!\n " % filesystem )
242+ env .Exit (1 )
228243 target_firm = env .DataToBin (
229- join ("$BUILD_DIR" , env . get ( "SPIFFSNAME" , "spiffs" ) ), "$PROJECTDATA_DIR" )
244+ join ("$BUILD_DIR" , "${ESP8266_FS_IMAGE_NAME}" ), "$PROJECTDATA_DIR" )
230245 AlwaysBuild (target_firm )
231246 else :
232247 target_firm = env .ElfToBin (
@@ -260,7 +275,7 @@ def get_esptoolpy_reset_flags(resetmethod):
260275)
261276
262277#
263- # Target: Upload firmware or SPIFFS image
278+ # Target: Upload firmware or filesystem image
264279#
265280
266281upload_protocol = env .subst ("$UPLOAD_PROTOCOL" )
@@ -318,7 +333,7 @@ def get_esptoolpy_reset_flags(resetmethod):
318333 "--port" , '"$UPLOAD_PORT"' ,
319334 "--baud" , "$UPLOAD_SPEED" ,
320335 "write_flash" ,
321- "$SPIFFS_START "
336+ "$FS_START "
322337 ],
323338 UPLOADCMD = '"$PYTHONEXE" "$UPLOADER" $UPLOADERFLAGS $SOURCE' ,
324339 )
0 commit comments