diff --git a/libraries/AP_HAL_ChibiOS/HAL_ChibiOS_Class.h b/libraries/AP_HAL_ChibiOS/HAL_ChibiOS_Class.h index 4ed88397bf..4f0ff4ca8c 100644 --- a/libraries/AP_HAL_ChibiOS/HAL_ChibiOS_Class.h +++ b/libraries/AP_HAL_ChibiOS/HAL_ChibiOS_Class.h @@ -21,7 +21,7 @@ #include #include #include "hwdef/common/halconf.h" -#ifdef USE_POSIX +#ifdef USE_POSIX_FATFS #include #endif #include diff --git a/libraries/AP_HAL_ChibiOS/Storage.cpp b/libraries/AP_HAL_ChibiOS/Storage.cpp index dc0ce2f074..39f4540cc0 100644 --- a/libraries/AP_HAL_ChibiOS/Storage.cpp +++ b/libraries/AP_HAL_ChibiOS/Storage.cpp @@ -128,7 +128,7 @@ void Storage::_storage_open(void) void Storage::_save_backup(void) { #ifdef USE_POSIX - // allow for fallback to microSD based storage + // allow for fallback to microSD or dataflash based storage // create the backup directory if need be int ret; const char* _storage_bak_directory = HAL_STORAGE_BACKUP_FOLDER; diff --git a/libraries/AP_HAL_ChibiOS/hwdef/common/malloc.c b/libraries/AP_HAL_ChibiOS/hwdef/common/malloc.c index 97b837b12a..b733b20e71 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/common/malloc.c +++ b/libraries/AP_HAL_ChibiOS/hwdef/common/malloc.c @@ -585,7 +585,7 @@ void __wrap__free_r(void *rptr, void *ptr) return free(ptr); } -#ifdef USE_POSIX +#ifdef USE_POSIX_FATFS /* allocation functions for FATFS */ @@ -615,7 +615,7 @@ void ff_memfree(void* mblock) { free(mblock); } -#endif // USE_POSIX +#endif // USE_POSIX_FATFS /* return true if a memory region is safe for a DMA operation diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py index 211e4443c7..e9f227d635 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py @@ -762,6 +762,13 @@ class ChibiOSHWDef(object): f.write('#define HAL_CANFD_SUPPORTED %d\n' % canfd_supported) self.env_vars['HAL_CANFD_SUPPORTED'] = canfd_supported + def has_dataflash_spi(self): + '''check for dataflash connected to spi bus''' + for dev in self.spidev: + if(dev[0] == 'dataflash'): + return True + return False + def has_sdcard_spi(self): '''check for sdcard connected to spi bus''' for dev in self.spidev: @@ -943,13 +950,15 @@ class ChibiOSHWDef(object): f.write('#define HAL_STDOUT_BAUDRATE %u\n\n' % self.get_config('STDOUT_BAUDRATE', type=int)) if self.have_type_prefix('SDIO'): f.write('// SDIO available, enable POSIX filesystem support\n') - f.write('#define USE_POSIX\n\n') + f.write('#define USE_POSIX\n') + f.write('#define USE_POSIX_FATFS\n\n') f.write('#define HAL_USE_SDC TRUE\n') self.build_flags.append('USE_FATFS=yes') self.env_vars['WITH_FATFS'] = "1" elif self.have_type_prefix('SDMMC2'): f.write('// SDMMC2 available, enable POSIX filesystem support\n') - f.write('#define USE_POSIX\n\n') + f.write('#define USE_POSIX\n') + f.write('#define USE_POSIX_FATFS\n\n') f.write('#define HAL_USE_SDC TRUE\n') f.write('#define STM32_SDC_USE_SDMMC2 TRUE\n') f.write('#define HAL_USE_SDMMC 1\n') @@ -957,7 +966,8 @@ class ChibiOSHWDef(object): self.env_vars['WITH_FATFS'] = "1" elif self.have_type_prefix('SDMMC'): f.write('// SDMMC available, enable POSIX filesystem support\n') - f.write('#define USE_POSIX\n\n') + f.write('#define USE_POSIX\n') + f.write('#define USE_POSIX_FATFS\n\n') f.write('#define HAL_USE_SDC TRUE\n') f.write('#define STM32_SDC_USE_SDMMC1 TRUE\n') f.write('#define HAL_USE_SDMMC 1\n') @@ -965,12 +975,21 @@ class ChibiOSHWDef(object): self.env_vars['WITH_FATFS'] = "1" elif self.has_sdcard_spi(): f.write('// MMC via SPI available, enable POSIX filesystem support\n') - f.write('#define USE_POSIX\n\n') + f.write('#define USE_POSIX\n') + f.write('#define USE_POSIX_FATFS\n\n') f.write('#define HAL_USE_MMC_SPI TRUE\n') f.write('#define HAL_USE_SDC FALSE\n') f.write('#define HAL_SDCARD_SPI_HOOK TRUE\n') self.build_flags.append('USE_FATFS=yes') self.env_vars['WITH_FATFS'] = "1" + elif self.has_dataflash_spi(): + f.write('// Dataflash memory via SPI available, enable POSIX filesystem support\n') + f.write('#define USE_POSIX\n') + f.write('#define USE_POSIX_LITTLEFS\n\n') + f.write('#define HAL_USE_SDC FALSE\n') + self.build_flags.append('USE_FATFS=no') + self.env_vars['WITH_LITTLEFS'] = "1" + self.env_vars['DISABLE_SCRIPTING'] = True else: f.write('#define HAL_USE_SDC FALSE\n') self.build_flags.append('USE_FATFS=no') diff --git a/libraries/AP_HAL_ChibiOS/sdcard.cpp b/libraries/AP_HAL_ChibiOS/sdcard.cpp index 922440826b..e275096057 100644 --- a/libraries/AP_HAL_ChibiOS/sdcard.cpp +++ b/libraries/AP_HAL_ChibiOS/sdcard.cpp @@ -26,7 +26,7 @@ extern const AP_HAL::HAL& hal; -#ifdef USE_POSIX +#ifdef USE_POSIX_FATFS static FATFS SDC_FS; // FATFS object #ifndef HAL_BOOTLOADER_BUILD static HAL_Semaphore sem; @@ -54,7 +54,7 @@ static SPIConfig highspeed; */ bool sdcard_init() { -#ifdef USE_POSIX +#ifdef USE_POSIX_FATFS #ifndef HAL_BOOTLOADER_BUILD WITH_SEMAPHORE(sem); @@ -150,7 +150,7 @@ bool sdcard_init() } #endif sdcard_running = false; -#endif // USE_POSIX +#endif // USE_POSIX_FATFS return false; } @@ -159,7 +159,7 @@ bool sdcard_init() */ void sdcard_stop(void) { -#ifdef USE_POSIX +#ifdef USE_POSIX_FATFS // unmount f_mount(nullptr, "/", 1); #endif @@ -185,7 +185,7 @@ void sdcard_stop(void) bool sdcard_retry(void) { -#ifdef USE_POSIX +#ifdef USE_POSIX_FATFS if (!sdcard_running) { if (sdcard_init()) { #if AP_FILESYSTEM_FILE_WRITING_ENABLED