flush flash filesystem once a second
This commit is contained in:
parent
8543695f9d
commit
2459eabd66
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
#include "audio_dma.h"
|
#include "audio_dma.h"
|
||||||
#include "tick.h"
|
#include "tick.h"
|
||||||
|
#include "supervisor/filesystem.h"
|
||||||
#include "supervisor/usb.h"
|
#include "supervisor/usb.h"
|
||||||
|
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
|
@ -53,6 +54,7 @@ void run_background_tasks(void) {
|
||||||
#if CIRCUITPY_NETWORK
|
#if CIRCUITPY_NETWORK
|
||||||
network_module_background();
|
network_module_background();
|
||||||
#endif
|
#endif
|
||||||
|
filesystem_background();
|
||||||
usb_background();
|
usb_background();
|
||||||
assert_heap_ok();
|
assert_heap_ok();
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
|
#include "supervisor/filesystem.h"
|
||||||
#include "supervisor/usb.h"
|
#include "supervisor/usb.h"
|
||||||
#include "supervisor/shared/stack.h"
|
#include "supervisor/shared/stack.h"
|
||||||
|
|
||||||
|
@ -33,6 +34,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void run_background_tasks(void) {
|
void run_background_tasks(void) {
|
||||||
|
filesystem_background();
|
||||||
usb_background();
|
usb_background();
|
||||||
|
|
||||||
#ifdef CIRCUITPY_DISPLAYIO
|
#ifdef CIRCUITPY_DISPLAYIO
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include "tick.h"
|
#include "tick.h"
|
||||||
|
|
||||||
#include "supervisor/shared/autoreload.h"
|
#include "supervisor/shared/autoreload.h"
|
||||||
|
#include "supervisor/filesystem.h"
|
||||||
#include "shared-module/gamepad/__init__.h"
|
#include "shared-module/gamepad/__init__.h"
|
||||||
#include "shared-bindings/microcontroller/Processor.h"
|
#include "shared-bindings/microcontroller/Processor.h"
|
||||||
#include "nrf.h"
|
#include "nrf.h"
|
||||||
|
@ -39,14 +40,17 @@ void SysTick_Handler(void) {
|
||||||
// (every millisecond).
|
// (every millisecond).
|
||||||
ticks_ms += 1;
|
ticks_ms += 1;
|
||||||
|
|
||||||
#ifdef CIRCUITPY_AUTORELOAD_DELAY_MS
|
#if CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS > 0
|
||||||
autoreload_tick();
|
filesystem_tick();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CIRCUITPY_GAMEPAD_TICKS
|
#ifdef CIRCUITPY_AUTORELOAD_DELAY_MS
|
||||||
|
autoreload_tick();
|
||||||
|
#endif
|
||||||
|
#ifdef CIRCUITPY_GAMEPAD_TICKS
|
||||||
if (!(ticks_ms & CIRCUITPY_GAMEPAD_TICKS)) {
|
if (!(ticks_ms & CIRCUITPY_GAMEPAD_TICKS)) {
|
||||||
gamepad_tick();
|
gamepad_tick();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void tick_init() {
|
void tick_init() {
|
||||||
|
|
|
@ -592,6 +592,7 @@ void run_background_tasks(void);
|
||||||
#define MICROPY_VM_HOOK_RETURN run_background_tasks();
|
#define MICROPY_VM_HOOK_RETURN run_background_tasks();
|
||||||
|
|
||||||
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
||||||
|
#define CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS 1000
|
||||||
#define CIRCUITPY_BOOT_OUTPUT_FILE "/boot_out.txt"
|
#define CIRCUITPY_BOOT_OUTPUT_FILE "/boot_out.txt"
|
||||||
|
|
||||||
#endif // __INCLUDED_MPCONFIG_CIRCUITPY_H
|
#endif // __INCLUDED_MPCONFIG_CIRCUITPY_H
|
||||||
|
|
|
@ -31,6 +31,10 @@
|
||||||
|
|
||||||
#include "extmod/vfs_fat.h"
|
#include "extmod/vfs_fat.h"
|
||||||
|
|
||||||
|
extern volatile bool filesystem_flush_requested;
|
||||||
|
|
||||||
|
void filesystem_background(void);
|
||||||
|
void filesystem_tick(void);
|
||||||
void filesystem_init(bool create_allowed, bool force_create);
|
void filesystem_init(bool create_allowed, bool force_create);
|
||||||
void filesystem_flush(void);
|
void filesystem_flush(void);
|
||||||
bool filesystem_present(void);
|
bool filesystem_present(void);
|
||||||
|
|
|
@ -29,9 +29,10 @@
|
||||||
#include "py/mphal.h"
|
#include "py/mphal.h"
|
||||||
#include "py/reload.h"
|
#include "py/reload.h"
|
||||||
|
|
||||||
volatile uint32_t autoreload_delay_ms = 0;
|
static volatile uint32_t autoreload_delay_ms = 0;
|
||||||
bool autoreload_enabled = false;
|
static bool autoreload_enabled = false;
|
||||||
static bool autoreload_suspended = false;
|
static bool autoreload_suspended = false;
|
||||||
|
|
||||||
volatile bool reload_requested = false;
|
volatile bool reload_requested = false;
|
||||||
|
|
||||||
inline void autoreload_tick() {
|
inline void autoreload_tick() {
|
||||||
|
|
|
@ -37,6 +37,30 @@
|
||||||
static mp_vfs_mount_t _mp_vfs;
|
static mp_vfs_mount_t _mp_vfs;
|
||||||
static fs_user_mount_t _internal_vfs;
|
static fs_user_mount_t _internal_vfs;
|
||||||
|
|
||||||
|
static volatile uint32_t filesystem_flush_interval_ms = CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS;
|
||||||
|
volatile bool filesystem_flush_requested = false;
|
||||||
|
|
||||||
|
void filesystem_background(void) {
|
||||||
|
if (filesystem_flush_requested) {
|
||||||
|
filesystem_flush();
|
||||||
|
filesystem_flush_requested = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void filesystem_tick(void) {
|
||||||
|
if (filesystem_flush_interval_ms == 0) {
|
||||||
|
// 0 means not turned on.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (filesystem_flush_interval_ms == 1) {
|
||||||
|
filesystem_flush_requested = true;
|
||||||
|
filesystem_flush_interval_ms = CIRCUITPY_FILESYSTEM_FLUSH_INTERVAL_MS;
|
||||||
|
} else {
|
||||||
|
filesystem_flush_interval_ms--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void make_empty_file(FATFS *fatfs, const char *path) {
|
static void make_empty_file(FATFS *fatfs, const char *path) {
|
||||||
FIL fp;
|
FIL fp;
|
||||||
f_open(fatfs, &fp, path, FA_WRITE | FA_CREATE_ALWAYS);
|
f_open(fatfs, &fp, path, FA_WRITE | FA_CREATE_ALWAYS);
|
||||||
|
|
Loading…
Reference in New Issue