diff --git a/Ubiquitous/XiUOS/board/aiit-arm32-board/Kconfig b/Ubiquitous/XiUOS/board/aiit-arm32-board/Kconfig index 5ded0a288..ed0e802b7 100644 --- a/Ubiquitous/XiUOS/board/aiit-arm32-board/Kconfig +++ b/Ubiquitous/XiUOS/board/aiit-arm32-board/Kconfig @@ -51,6 +51,12 @@ menu "aiit-arm32-board feature" endif endmenu + menu "config board peripheral" + config MOUNT_SDCARD + bool "mount cd card" + default n + select BSP_USING_SDIO + endmenu endmenu endmenu diff --git a/Ubiquitous/XiUOS/board/aiit-arm32-board/board.c b/Ubiquitous/XiUOS/board/aiit-arm32-board/board.c index b25c2266a..5bad81d7c 100644 --- a/Ubiquitous/XiUOS/board/aiit-arm32-board/board.c +++ b/Ubiquitous/XiUOS/board/aiit-arm32-board/board.c @@ -150,6 +150,24 @@ struct InitSequenceDesc _board_init[] = { " NONE ",NONE }, }; +#if defined(FS_VFS) && defined(MOUNT_SDCARD) +#include + +/** + * @description: Mount SD card + * @return 0 + */ +int MountSDCard(void) +{ + if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, FSTYPE_FATFS, "/") == 0) + DBG("sd card mount to '/'"); + else + SYS_WARN("sd card mount to '/' failed!"); + + return 0; +} +#endif + void InitBoardHardware() { int i = 0; diff --git a/Ubiquitous/XiUOS/board/aiit-riscv64-board/Kconfig b/Ubiquitous/XiUOS/board/aiit-riscv64-board/Kconfig index 53ce37e90..65db341b6 100644 --- a/Ubiquitous/XiUOS/board/aiit-riscv64-board/Kconfig +++ b/Ubiquitous/XiUOS/board/aiit-riscv64-board/Kconfig @@ -53,6 +53,13 @@ menu "aiit-riscv64-board feature" endif endmenu + menu "config board peripheral" + config MOUNT_SDCARD + bool "mount cd card" + default n + select BSP_USING_SDIO + endmenu + endmenu config __STACKSIZE__ diff --git a/Ubiquitous/XiUOS/board/aiit-riscv64-board/board.c b/Ubiquitous/XiUOS/board/aiit-riscv64-board/board.c index f92e554fc..17f15197c 100644 --- a/Ubiquitous/XiUOS/board/aiit-riscv64-board/board.c +++ b/Ubiquitous/XiUOS/board/aiit-riscv64-board/board.c @@ -64,6 +64,28 @@ extern int HwRtcInit(void); extern int HwTouchBusInit(void); extern int HwCh376Init(void); +#if defined(FS_VFS) && defined(MOUNT_SDCARD) +#include + +/** + * @description: Mount SD card + * @return 0 + */ +/** + * @description: Mount SD card + * @return 0 + */ +int MountSDCard(void) +{ + if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, FSTYPE_CH376, "/") == 0) + DBG("sd card mount to '/'"); + else + SYS_WARN("sd card mount to '/' failed!"); + + return 0; +} +#endif + void init_bss(void) { unsigned int *dst; diff --git a/Ubiquitous/XiUOS/board/kd233/Kconfig b/Ubiquitous/XiUOS/board/kd233/Kconfig index a416411f6..d65c31c13 100644 --- a/Ubiquitous/XiUOS/board/kd233/Kconfig +++ b/Ubiquitous/XiUOS/board/kd233/Kconfig @@ -58,6 +58,15 @@ menu "kd233 feature" endmenu + menu "config board peripheral" + config MOUNT_SDCARD + bool "mount cd card" + default n + select BSP_USING_SPI + select BSP_USING_SPI1 + select RESOURCES_SPI_SD + endmenu + endmenu config __STACKSIZE__ diff --git a/Ubiquitous/XiUOS/board/kd233/board.c b/Ubiquitous/XiUOS/board/kd233/board.c index 0aedededd..8bcb43525 100644 --- a/Ubiquitous/XiUOS/board/kd233/board.c +++ b/Ubiquitous/XiUOS/board/kd233/board.c @@ -62,6 +62,32 @@ extern int HwWdtInit(void); extern int HwLcdInit(void); extern int HwTimerInit(void); +#if defined(FS_VFS) && defined (MOUNT_SDCARD) +#include +#include +extern SpiSdDeviceType SpiSdInit(struct Bus *bus, const char *dev_name, const char *drv_name, const char *sd_name); + +/** + * @description: Mount SD card + * @return 0 + */ +int MountSDCard(void) +{ + struct Bus *spi_bus; + spi_bus = BusFind(SPI_BUS_NAME_1); + + if (NONE == SpiSdInit(spi_bus, SPI_1_DEVICE_NAME_0, SPI_1_DRV_NAME, SPI_SD_NAME)) { + KPrintf("MountSDCard SpiSdInit error!\n"); + return 0; + } + + if (EOK == MountFilesystem(SPI_BUS_NAME_1, SPI_SD_NAME, SPI_1_DRV_NAME, FSTYPE_FATFS, "/")) + KPrintf("SPI SD card fatfs mounted\n"); + + return 0; +} +#endif + void InitBss(void) { unsigned int *dst; diff --git a/Ubiquitous/XiUOS/kernel/thread/init.c b/Ubiquitous/XiUOS/kernel/thread/init.c index 6369e3529..6621d1c09 100644 --- a/Ubiquitous/XiUOS/kernel/thread/init.c +++ b/Ubiquitous/XiUOS/kernel/thread/init.c @@ -100,11 +100,15 @@ struct InitSequenceDesc components_init[] = }; struct InitSequenceDesc env_init[] = { -#ifdef ARCH_RISCV -#if defined (RESOURCES_SPI_SD)|| defined(RESOURCES_SDIO ) +// #ifdef ARCH_RISCV +// #if defined (RESOURCES_SPI_SD)|| defined(RESOURCES_SDIO ) +// { "MountSDCard", MountSDCard }, +// #endif +// #endif +#ifdef MOUNT_SDCARD { "MountSDCard", MountSDCard }, #endif -#endif + #ifdef FS_VFS_MNTTABLE { "DfsMountTable", DfsMountTable }, #endif