From 47d9c03937aead6a82a9013f008e58c498efd0e5 Mon Sep 17 00:00:00 2001 From: yandld <1453363089@qq.com> Date: Mon, 15 Apr 2024 17:18:00 +0800 Subject: [PATCH] update spi flash mount --- .../mcx/mcxn/frdm-mcxn947/applications/main.c | 2 +- .../mcx/mcxn/frdm-mcxn947/board/SConscript | 4 + .../frdm-mcxn947/board/ports/drv_filesystem.c | 47 ------------ .../board/ports/drv_filesystem_spi_flash.c | 74 +++++++++++++++++++ 4 files changed, 79 insertions(+), 48 deletions(-) delete mode 100644 bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem.c create mode 100644 bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem_spi_flash.c diff --git a/bsp/nxp/mcx/mcxn/frdm-mcxn947/applications/main.c b/bsp/nxp/mcx/mcxn/frdm-mcxn947/applications/main.c index 2609527439..2929981607 100644 --- a/bsp/nxp/mcx/mcxn/frdm-mcxn947/applications/main.c +++ b/bsp/nxp/mcx/mcxn/frdm-mcxn947/applications/main.c @@ -16,7 +16,7 @@ #include #include "drv_pin.h" -#define LEDB_PIN ((0*32)+10) +#define LEDB_PIN ((1*32)+2) #define BUTTON_PIN ((0*32)+23) static void sw_pin_cb(void *args); diff --git a/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/SConscript b/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/SConscript index b59a799e7c..2365014557 100644 --- a/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/SConscript +++ b/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/SConscript @@ -15,6 +15,10 @@ if GetDepend(['BSP_USING_SPI6_SAMPLE']): if GetDepend(['BSP_USING_RW007']): src += Glob('ports/drv_spi_sample_rw007.c') +if GetDepend(['RT_USING_SFUD']): + src += Glob('ports/drv_filesystem_spi_flash.c') + + CPPPATH = [cwd, cwd + '/MCUX_Config/board'] CPPDEFINES = ['DEBUG', 'CPU_MCXN947VDF_cm33_core0'] diff --git a/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem.c b/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem.c deleted file mode 100644 index df9a5ba356..0000000000 --- a/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2006-2024, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2018-12-14 balanceTWK add sdcard port file - * 2021-02-26 Meco Man fix a bug that cannot use fatfs in the main thread at starting up - */ - -#include -#include -#include -#include -#include - -#if DFS_FILESYSTEMS_MAX < 4 -#error "Please define DFS_FILESYSTEMS_MAX more than 4" -#endif -#if DFS_FILESYSTEM_TYPES_MAX < 4 -#error "Please define DFS_FILESYSTEM_TYPES_MAX more than 4" -#endif - -#define DBG_TAG "app.filesystem" -#define DBG_LVL DBG_INFO -#include - - - -static int filesystem_mount(void) -{ -#ifdef RT_USING_SDIO - rt_thread_mdelay(2000); - if (dfs_mount("sd", "/", "elm", 0, NULL) == 0) - { - rt_kprintf("sd mounted to /\n"); - } - else - { - rt_kprintf("sd mount to / failed\n"); - } -#endif - - return RT_EOK; -} -INIT_APP_EXPORT(filesystem_mount); diff --git a/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem_spi_flash.c b/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem_spi_flash.c new file mode 100644 index 0000000000..18d8918fa1 --- /dev/null +++ b/bsp/nxp/mcx/mcxn/frdm-mcxn947/board/ports/drv_filesystem_spi_flash.c @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2006-2024, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-12-14 balanceTWK add sdcard port file + * 2021-02-26 Meco Man fix a bug that cannot use fatfs in the main thread at starting up + */ + +#include +#include +#include "spi_flash_sfud.h" +#include "dfs_fs.h" +#include "dfs.h" +#include "dfs_elm.h" +#include "dfs_file.h" + +#if DFS_FILESYSTEMS_MAX < 4 +#error "Please define DFS_FILESYSTEMS_MAX more than 4" +#endif +#if DFS_FILESYSTEM_TYPES_MAX < 4 +#error "Please define DFS_FILESYSTEM_TYPES_MAX more than 4" +#endif + +#define DBG_TAG "app.filesystem_spi_flash" +#define DBG_LVL DBG_INFO +#include + + +#define W25Q64_SPI_DEVICE_NAME "spi70" +#define W25Q64_SPI_BUS_NAME "spi7" +#define W25Q64_SPI_FLASH_NAME "w25qxx" + +rt_err_t rt_hw_spi_device_attach(const char *bus_name, const char *device_name, rt_uint32_t pin); + +static int filesystem_mount(void) +{ + struct rt_spi_device *spi70 = (struct rt_spi_device *)rt_malloc(sizeof(struct rt_spi_device)); + + if(!spi70) + { + rt_kprintf("spi sample run failed! can't find %s device!\n","spi7"); + return -RT_ERROR; + } + + struct rt_spi_configuration cfg; + cfg.data_width = 8; + cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_3 | RT_SPI_MSB; + cfg.max_hz = 50 * 1000 *1000; + rt_spi_configure(spi70, &cfg); + + /* legcy issue */ + + //rt_spi_bus_attach_device_cspin(spi70, W25Q64_SPI_DEVICE_NAME, W25Q64_SPI_BUS_NAME, 96, RT_NULL); + rt_hw_spi_device_attach(W25Q64_SPI_BUS_NAME, W25Q64_SPI_DEVICE_NAME, 96); + + if(RT_NULL == rt_sfud_flash_probe(W25Q64_SPI_FLASH_NAME, W25Q64_SPI_DEVICE_NAME)) + { + rt_kprintf("Flash sfud Failed!\n"); + return -RT_ERROR; + }; + + if(dfs_mount(W25Q64_SPI_FLASH_NAME, "/", "elm", 0, 0)) + { + rt_kprintf("dfs mount dev:%s failed!\n", W25Q64_SPI_FLASH_NAME); + return -RT_ERROR; + } + + return RT_EOK; + +} +INIT_APP_EXPORT(filesystem_mount);