diff --git a/boards/px4/fmu-v6xrt/default.px4board b/boards/px4/fmu-v6xrt/default.px4board index b5e2e23af38c..f7e24cb6e7ec 100644 --- a/boards/px4/fmu-v6xrt/default.px4board +++ b/boards/px4/fmu-v6xrt/default.px4board @@ -6,6 +6,7 @@ CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS3" CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS2" CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS5" CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS6" +CONFIG_BOARD_PARAM_FILE="/fs/fram/mtd_params" CONFIG_DRIVERS_ADC_BOARD_ADC=y CONFIG_DRIVERS_BAROMETER_BMP388=y CONFIG_DRIVERS_BAROMETER_MS5611=y diff --git a/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig b/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig index d5cec45e5907..2b2a54c1146e 100644 --- a/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig +++ b/boards/px4/fmu-v6xrt/nuttx-config/nsh/defconfig @@ -62,6 +62,10 @@ CONFIG_FS_BINFS=y CONFIG_FS_CROMFS=y CONFIG_FS_FAT=y CONFIG_FS_FATTIME=y +CONFIG_FS_LITTLEFS=y +CONFIG_FS_LITTLEFS_LOOKAHEAD_SIZE=8 +CONFIG_FS_LITTLEFS_PROGRAM_SIZE_FACTOR=1 +CONFIG_FS_LITTLEFS_READ_SIZE_FACTOR=4 CONFIG_FS_PROCFS=y CONFIG_FS_PROCFS_MAX_TASKS=64 CONFIG_FS_PROCFS_REGISTER=y diff --git a/boards/px4/fmu-v6xrt/src/imxrt_flexspi_fram.c b/boards/px4/fmu-v6xrt/src/imxrt_flexspi_fram.c index d0f71c7e4337..2aeabb08f90c 100644 --- a/boards/px4/fmu-v6xrt/src/imxrt_flexspi_fram.c +++ b/boards/px4/fmu-v6xrt/src/imxrt_flexspi_fram.c @@ -661,6 +661,7 @@ int flexspi_attach(mtd_instance_s *instance) int imxrt_flexspi_fram_initialize(void) { uint8_t vendor_id; + struct mtd_dev_s *mtd_dev = &g_flexspi_nor.mtd; int ret = -ENODEV; /* Configure multiplexed pins as connected on the board */ @@ -690,6 +691,34 @@ int imxrt_flexspi_fram_initialize(void) } } + /* Register the MTD driver so that it can be accessed from the + * VFS. + */ + + ret = register_mtddriver("/dev/fram", mtd_dev, 0755, NULL); + + if (ret < 0) { + syslog(LOG_ERR, "ERROR: Failed to register MTD driver: %d\n", + ret); + } + + /* mtd_dev->ioctl(mtd_dev, MTDIOC_BULKERASE, 0); */ + +#ifdef CONFIG_FS_LITTLEFS + + /* Mount the LittleFS file system */ + + ret = nx_mount("/dev/fram", "/mnt/lfs", "littlefs", 0, + "autoformat"); + + if (ret < 0) { + syslog(LOG_ERR, + "ERROR: Failed to mount LittleFS at /mnt/lfs: %d\n", + ret); + } + +#endif + return ret; } #endif /* CONFIG_IMXRT_FLEXSPI */ diff --git a/boards/px4/fmu-v6xrt/src/init.c b/boards/px4/fmu-v6xrt/src/init.c index 4b2edbc658ff..326f5ae4d9d8 100644 --- a/boards/px4/fmu-v6xrt/src/init.c +++ b/boards/px4/fmu-v6xrt/src/init.c @@ -483,6 +483,10 @@ __EXPORT int board_app_initialize(uintptr_t arg) #endif +#ifdef CONFIG_IMXRT_FLEXSPI + imxrt_flexspi_fram_initialize(); +#endif + #ifdef CONFIG_IMXRT_ENET imxrt_netinitialize(0); #endif diff --git a/boards/px4/fmu-v6xrt/src/mtd.cpp b/boards/px4/fmu-v6xrt/src/mtd.cpp index 9cd1795a519a..cf0519ebdeb0 100644 --- a/boards/px4/fmu-v6xrt/src/mtd.cpp +++ b/boards/px4/fmu-v6xrt/src/mtd.cpp @@ -47,25 +47,6 @@ static const px4_mft_device_t i2c6 = { // 24LC64T on BASE 8K 32 X 2 .devid = PX4_MK_I2C_DEVID(6, 0x51) }; - -static const px4_mtd_entry_t fmum_fram = { - .device = &qspi_flash, - .npart = 2, - .partd = { - { - .type = MTD_PARAMETERS, - .path = "/fs/mtd_params", - .nblocks = 32 - }, - { - .type = MTD_WAYPOINTS, - .path = "/fs/mtd_waypoints", - .nblocks = 32 - - } - }, -}; - static const px4_mtd_entry_t base_eeprom = { .device = &i2c6, .npart = 2, @@ -109,7 +90,6 @@ static const px4_mtd_entry_t imu_eeprom = { static const px4_mtd_manifest_t board_mtd_config = { .nconfigs = 3, .entries = { - &fmum_fram, &base_eeprom, &imu_eeprom } diff --git a/platforms/nuttx/src/px4/common/px4_mtd.cpp b/platforms/nuttx/src/px4/common/px4_mtd.cpp index 24d88ed3d89a..f4b347672232 100644 --- a/platforms/nuttx/src/px4/common/px4_mtd.cpp +++ b/platforms/nuttx/src/px4/common/px4_mtd.cpp @@ -351,11 +351,6 @@ int px4_mtd_config(const px4_mtd_manifest_t *mft_mtd) } else if (mtd_list->entries[num_entry]->device->bus_type == px4_mft_device_t::SPI) { rv = ramtron_attach(*instances[i]); -#if defined(HAS_FLEXSPI) - - } else if (mtd_list->entries[num_entry]->device->bus_type == px4_mft_device_t::FLEXSPI) { - rv = flexspi_attach(instances[i]); -#endif } else if (mtd_list->entries[num_entry]->device->bus_type == px4_mft_device_t::ONCHIP) { instances[i]->n_partitions_current++;