mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-11 10:23:59 -04:00
AP_HAL_ChibiOS: add support for littlefs
This commit is contained in:
parent
7c101a0846
commit
25e8277fda
@ -21,7 +21,7 @@
|
||||
#include <AP_HAL_Empty/AP_HAL_Empty_Namespace.h>
|
||||
#include <AP_HAL_ChibiOS/AP_HAL_ChibiOS_Namespace.h>
|
||||
#include "hwdef/common/halconf.h"
|
||||
#ifdef USE_POSIX
|
||||
#ifdef USE_POSIX_FATFS
|
||||
#include <ff.h>
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user