Skip to content

Commit 5818ee3

Browse files
committed
changes to update firmware from sd card using mlff
1 parent 6d1d502 commit 5818ee3

22 files changed

+129
-52
lines changed

lib/FileSystem/fnFsLittleFS.cpp

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,10 @@ bool FileSystemLittleFS::start()
223223
// strlcpy(_basepath, "/flash", sizeof(_basepath));
224224

225225
esp_vfs_littlefs_conf_t conf = {
226-
.base_path = "",
227-
.partition_label = "storage",
228-
.format_if_mount_failed = false,
229-
.dont_mount = false
226+
.base_path = "",
227+
.partition_label = "storage",
228+
.format_if_mount_failed = false,
229+
.dont_mount = false
230230
};
231231

232232
esp_err_t e = esp_vfs_littlefs_register(&conf);
@@ -236,7 +236,7 @@ bool FileSystemLittleFS::start()
236236
#ifdef DEBUG
237237
Debug_printv("Failed to mount LittleFS partition, err = %d\r\n", e);
238238
#endif
239-
_started = false;
239+
//_started = false;
240240
}
241241
else
242242
{
@@ -254,4 +254,34 @@ bool FileSystemLittleFS::start()
254254
return _started;
255255
}
256256

257+
258+
bool FileSystemLittleFS::stop()
259+
{
260+
if(!_started)
261+
return true;
262+
263+
esp_err_t e = esp_vfs_littlefs_unregister("storage");
264+
265+
if (e != ESP_OK)
266+
{
267+
#ifdef DEBUG
268+
Debug_printv("Failed to unmount LittleFS partition, err = %d\r\n", e);
269+
#endif
270+
}
271+
else
272+
{
273+
_started = false;
274+
#ifdef DEBUG
275+
Debug_println("LittleFS unmounted.");
276+
/*
277+
size_t total = 0, used = 0;
278+
esp_littlefs_info(NULL, &total, &used);
279+
Debug_printv(" partition size: %u, used: %u, free: %u\r\n", total, used, total-used);
280+
*/
281+
#endif
282+
}
283+
284+
return !_started;
285+
}
286+
257287
#endif // FLASH_LITTLEFS

lib/FileSystem/fnFsLittleFS.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class FileSystemLittleFS : public FileSystem
1414
public:
1515
FileSystemLittleFS();
1616
bool start();
17+
bool stop();
1718

1819
fsType type() override { return FSTYPE_LITTLEFS; };
1920
const char * typestring() override { return type_to_string(FSTYPE_LITTLEFS); };

lib/FileSystem/fnFsSPIFFS.cpp

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,18 +174,18 @@ bool FileSystemSPIFFS::start()
174174

175175
#ifdef ESP_PLATFORM
176176
esp_vfs_spiffs_conf_t conf = {
177-
.base_path = _basepath,
178-
.partition_label = "storage",
179-
.max_files = 10, // from SPIFFS.h
180-
.format_if_mount_failed = false
177+
.base_path = _basepath,
178+
.partition_label = "storage",
179+
.max_files = 10, // from SPIFFS.h
180+
.format_if_mount_failed = false
181181
};
182182

183183
esp_err_t e = esp_vfs_spiffs_register(&conf);
184184

185185
if (e != ESP_OK)
186186
{
187187
Debug_printf("Failed to mount SPIFFS partition, err = %d\r\n", e);
188-
_started = false;
188+
//_started = false;
189189
}
190190
else
191191
#endif // ESP_PLATFORM
@@ -204,4 +204,33 @@ bool FileSystemSPIFFS::start()
204204
return _started;
205205
}
206206

207+
bool FileSystemSPIFFS::stop()
208+
{
209+
if(!_started)
210+
return true;
211+
212+
#ifdef ESP_PLATFORM
213+
esp_err_t e = esp_vfs_spiffs_unregister("storage");
214+
215+
if (e != ESP_OK)
216+
{
217+
Debug_printf("Failed to unmount SPIFFS partition, err = %d\r\n", e);
218+
}
219+
else
220+
#endif // ESP_PLATFORM
221+
{
222+
_started = false;
223+
Debug_println("SPIFFS unmounted.");
224+
#ifdef DEBUG
225+
/*
226+
size_t total = 0, used = 0;
227+
esp_spiffs_info(NULL, &total, &used);
228+
Debug_printf(" partition size: %u, used: %u, free: %u\r\n", total, used, total-used);
229+
*/
230+
#endif
231+
}
232+
233+
return !_started;
234+
}
235+
207236
#endif // FLASH_SPIFFS

lib/FileSystem/fnFsSPIFFS.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class FileSystemSPIFFS : public FileSystem
1414
public:
1515
FileSystemSPIFFS();
1616
bool start();
17+
bool stop();
1718

1819
fsType type() override { return FSTYPE_SPIFFS; };
1920
const char * typestring() override { return type_to_string(FSTYPE_SPIFFS); };

lib/fuji/fujiCmd.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
#define FUJICMD_GET_DEVICE1_FULLPATH 0xA0
7878
#define FUJICMD_STATUS 0x53
7979
#define FUJICMD_HSIO_INDEX 0x3F
80+
#define FUJICMD_UPDATE_FIRMWARE 0x10
8081
#define FUJICMD_SEND_ERROR 0x02
8182
#define FUJICMD_SEND_RESPONSE 0x01
8283
#define FUJICMD_DEVICE_READY 0x00

lib/hardware/fnSystem.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
#endif
3131
#include <soc/rtc.h>
3232

33+
#include <mlff.h>
34+
3335
// ESP_PLATFORM
3436
#else
3537
// !ESP_PLATFORM
@@ -507,6 +509,18 @@ void SystemManager::update_hostname(const char *hostname)
507509
}
508510
}
509511

512+
void SystemManager::update_firmware()
513+
{
514+
Serial.printf("Stopping flash filesystem...\r\n");
515+
fsFlash.stop();
516+
517+
Serial.println("Flash bin files from '/sd/.bin/'");
518+
mlff_update(PIN_SD_HOST_CS, PIN_SD_HOST_MISO, PIN_SD_HOST_MOSI, PIN_SD_HOST_SCK);
519+
520+
Serial.println("Reboot to run update app and flash 'main.*.bin'...");
521+
reboot();
522+
}
523+
510524
const char *SystemManager::get_current_time_str()
511525
{
512526
time_t tt = time(nullptr);

lib/hardware/fnSystem.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ class SystemManager
140140
const char *get_current_time_str();
141141
void update_timezone(const char *timezone);
142142
void update_hostname(const char *hostname);
143+
void update_firmware();
143144

144145
const char *get_fujinet_version(bool shortVersionOnly = false);
145146

sdkconfig.defaults

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,9 +1197,9 @@ CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
11971197
# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
11981198
# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
11991199
CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
1200-
CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
1200+
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS is not set
12011201
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
1202-
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
1202+
CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED=y
12031203
# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set
12041204
# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set
12051205
# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set

sdkconfig.fujiapple-iec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,9 +1683,9 @@ CONFIG_MMU_PAGE_SIZE=0x10000
16831683
# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
16841684
# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
16851685
CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
1686-
CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
1686+
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS is not set
16871687
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
1688-
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
1688+
CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED=y
16891689
# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set
16901690
# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
16911691
CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y

sdkconfig.fujiapple-rev0

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2121,9 +2121,9 @@ CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50
21212121
# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
21222122
# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
21232123
CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
2124-
CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
2124+
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS is not set
21252125
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
2126-
# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
2126+
CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED=y
21272127
# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set
21282128
# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
21292129
CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y
@@ -2716,9 +2716,9 @@ CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
27162716
# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
27172717
CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
27182718
CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
2719-
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
2719+
# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS is not set
27202720
# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
2721-
# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
2721+
CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED=y
27222722
# CONFIG_ESP32_ULP_COPROC_ENABLED is not set
27232723
CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
27242724
CONFIG_SUPPORT_TERMIOS=y

0 commit comments

Comments
 (0)