diff --git a/.gitmodules b/.gitmodules index d882a1488..dcc3b8dd1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "Ubiquitous/Nuttx_Fusion_XiUOS/nuttx"] path = Ubiquitous/Nuttx_Fusion_XiUOS/nuttx url = https://code.gitlink.org.cn/wgzAIIT/incubator-nuttx.git +[submodule "Ubiquitous/XiZi/fs/lwext4/lwext4_submodule"] + path = Ubiquitous/XiZi/fs/lwext4/lwext4_submodule + url = https://gitlink.org.cn/xuos/lwext4_filesystem_support_XiUOS.git diff --git a/Ubiquitous/XiZi/board/ok1052-c/Kconfig b/Ubiquitous/XiZi/board/ok1052-c/Kconfig index 5f685a174..62afaf430 100644 --- a/Ubiquitous/XiZi/board/ok1052-c/Kconfig +++ b/Ubiquitous/XiZi/board/ok1052-c/Kconfig @@ -44,7 +44,6 @@ menu "ok1052-c feature" config MOUNT_SDCARD bool "mount cd card" default n - select BSP_USING_SDIO endmenu endmenu diff --git a/Ubiquitous/XiZi/board/ok1052-c/board.c b/Ubiquitous/XiZi/board/ok1052-c/board.c index 363c8424c..5b1174a39 100644 --- a/Ubiquitous/XiZi/board/ok1052-c/board.c +++ b/Ubiquitous/XiZi/board/ok1052-c/board.c @@ -41,30 +41,6 @@ extern int ExtSramInit(void); #endif #endif -#if defined(FS_VFS) && defined(MOUNT_SDCARD) -#include - -// SD card mount flag 1: OK -int sd_mount_flag = 0; - -/** - * @description: Mount SD card - * @return 0 - */ -int MountSDCard(void) -{ - if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, FSTYPE_FATFS, "/") == 0) - { - sd_mount_flag = 1; - KPrintf("sd card mount to '/'"); - } - else - KPrintf("sd card mount to '/' failed!"); - - return 0; -} -#endif - #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED #include "fsl_lpi2c.h" #endif /* SDK_I2C_BASED_COMPONENT_USED */ diff --git a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/include/connect_sdio.h b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/include/connect_sdio.h index 768e0ac3a..501c14422 100644 --- a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/include/connect_sdio.h +++ b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/include/connect_sdio.h @@ -27,11 +27,14 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { #endif +#define SD_CARD_STACK_SIZE 2048 + int Imxrt1052HwSdioInit(void); #ifdef __cplusplus diff --git a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/Kconfig b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/Kconfig index 56ebba209..c2ceb303d 100644 --- a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/Kconfig +++ b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/Kconfig @@ -10,4 +10,15 @@ if BSP_USING_SDIO config SDIO_DEVICE_NAME string "sdio device name" default "sdio_dev" + + config MOUNT_SDCARD_FS + bool "mount cd card file system" + default n + select MOUNT_SDCARD + + if MOUNT_SDCARD_FS + config MOUNT_SDCARD_FS_TYPE + int "choose file system type : FATFS(0) LWEXT4(3)" + default 0 + endif endif diff --git a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/connect_sdio.c b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/connect_sdio.c index b29bc4fe6..bebbce78a 100644 --- a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/connect_sdio.c +++ b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/sdio/connect_sdio.c @@ -104,9 +104,6 @@ static const sdmmchost_card_switch_voltage_func_t s_sdcard_voltage_switch = { }; #endif -/*! @brief SD card detect flag */ -static volatile bool s_card_inserted = false; - /*! @brief Card descriptor. */ static sd_card_t g_sd; static int sd_lock = -1; @@ -142,11 +139,6 @@ static void BoardPowerOnSdCard(void) BOARD_USDHC_SDCARD_POWER_CONTROL(1); } -static void SdcardDetectCallBack(bool is_inserted, void *user_data) -{ - s_card_inserted = is_inserted; -} - static void CardInformationLog(sd_card_t *card) { NULL_PARAM_CHECK(card); @@ -261,6 +253,19 @@ static uint32 SdioWrite(void *dev, struct BusBlockWriteParam *write_param) return write_param->size; } +static int SdioControl(struct HardwareDev *dev, struct HalDevBlockParam *block_param) +{ + NULL_PARAM_CHECK(dev); + + if (OPER_BLK_GETGEOME == block_param->cmd) { + block_param->dev_block.size_perbank = g_sd.blockSize; + block_param->dev_block.block_size = g_sd.blockSize; + block_param->dev_block.bank_num = g_sd.blockCount; + } + + return EOK; +} + static struct SdioDevDone dev_done = { SdioOpen, @@ -269,10 +274,126 @@ static struct SdioDevDone dev_done = SdioRead, }; +#if defined(FS_VFS) && defined(MOUNT_SDCARD_FS) +#include + +int sd_mount_flag = 0; + +/** + * @description: Mount SD card + * @return 0 + */ +static int MountSDCardFs(enum FilesystemType fs_type) +{ + if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, fs_type, "/") == 0) { + sd_mount_flag = 1; + KPrintf("Sd card mount to '/'"); + } else { + KPrintf("Sd card mount to '/' failed!"); + } + + return 0; +} +#endif + +static void SdCardAttach(void) +{ + bool is_read_only; + static sd_card_t *card = &g_sd; + + KPrintf("\r\nCard inserted.\r\n"); + /* reset host once card re-plug in */ + SD_HostReset(&(card->host)); + /* power on the card */ + SD_PowerOnCard(card->host.base, card->usrParam.pwr); + KPrintf("Power on done\n"); + + /* Init card. */ + if (SD_CardInit(card)) { + KPrintf("\r\nSD card init failed.\r\n"); + return; + } + + /* card information log */ + CardInformationLog(card); + + /* Check if card is readonly. */ + is_read_only = SD_CheckReadOnly(card); + +#ifdef MOUNT_SDCARD_FS + /*mount file system*/ + MountSDCardFs(MOUNT_SDCARD_FS_TYPE); +#endif +} + +static void SdCardDetach(void) +{ + /*unmount file system*/ + KPrintf("\r\nCard detect extracted.\r\n"); + +#ifdef MOUNT_SDCARD_FS + UnmountFileSystem("/"); +#endif +} + +static uint8 SdCardReadCd(void) +{ + BusType pin; + + pin = BusFind(PIN_BUS_NAME); + + pin->owner_haldev = BusFindDevice(pin, PIN_DEVICE_NAME); + + struct PinStat PinStat; + + struct BusBlockReadParam read_param; + read_param.buffer = (void *)&PinStat; + + PinStat.pin = IMXRT_GET_PIN(2, 28); + + return BusDevReadData(pin->owner_haldev, &read_param); +} + +static void SdCardTask(void* parameter) +{ + static int sd_card_status = 0; + + while (1) { + if (!SdCardReadCd()) { + if (!sd_card_status) { + SdCardAttach(); + sd_card_status = 1; + } + } else { + if (sd_card_status) { + SdCardDetach(); + sd_card_status = 0; + } + } + } +} + +#ifdef MOUNT_SDCARD +int MountSDCard() +{ + int sd_card_task = 0; + sd_card_task = KTaskCreate("sd_card", SdCardTask, NONE, + SD_CARD_STACK_SIZE, 8); + if(sd_card_task < 0) { + KPrintf("sd_card_task create failed ...%s %d.\n", __FUNCTION__,__LINE__); + return ERROR; + } + + StartupKTask(sd_card_task); + + return EOK; +} +#endif + + int Imxrt1052HwSdioInit(void) { x_err_t ret = EOK; - bool is_read_only; static struct SdioBus sdio_bus; static struct SdioDriver sdio_drv; @@ -305,35 +426,6 @@ int Imxrt1052HwSdioInit(void) return ERROR; } - KPrintf("\r\nPlease insert a card into board.\r\n"); - - /* power off card */ - SD_PowerOffCard(card->host.base, card->usrParam.pwr); - - if (SD_WaitCardDetectStatus(SD_HOST_BASEADDR, &s_sdcard_detect, true) == kStatus_Success) { - KPrintf("\r\nCard inserted.\r\n"); - /* reset host once card re-plug in */ - SD_HostReset(&(card->host)); - /* power on the card */ - SD_PowerOnCard(card->host.base, card->usrParam.pwr); - KPrintf("power on done\n"); - } else { - KPrintf("\r\nCard detect fail.\r\n"); - return ERROR; - } - - /* Init card. */ - if (SD_CardInit(card)) { - KPrintf("\r\nSD card init failed.\r\n"); - return ERROR; - } - - /* card information log */ - CardInformationLog(card); - - /* Check if card is readonly. */ - is_read_only = SD_CheckReadOnly(card); - ret = SdioBusInit(&sdio_bus, SDIO_BUS_NAME); if (ret != EOK) { KPrintf("Sdio bus init error %d\n", ret); @@ -352,6 +444,7 @@ int Imxrt1052HwSdioInit(void) } sdio_dev.dev_done = &dev_done; + sdio_dev.haldev.dev_block_control = SdioControl; ret = SdioDeviceRegister(&sdio_dev, SDIO_DEVICE_NAME); if (ret != EOK) { KPrintf("Sdio device register error %d\n", ret); diff --git a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/usb/nxp_usb_driver/host_msd_command.c b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/usb/nxp_usb_driver/host_msd_command.c index 78cb4af70..7bab0d1bc 100644 --- a/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/usb/nxp_usb_driver/host_msd_command.c +++ b/Ubiquitous/XiZi/board/ok1052-c/third_party_driver/usb/nxp_usb_driver/host_msd_command.c @@ -15,8 +15,8 @@ */ /************************************************* -File name: usb_misc.h -Description: modify usb_echo to KPrintf +File name: host_msd_command.c +Description: modify usb msd command test function Others: take SDK_2.6.1_MIMXRT1052xxxxB/boards/evkbimxrt1050/usb_examples/usb_host_msd_command for references History: 1. Date: 2022-02-10 diff --git a/Ubiquitous/XiZi/board/xidatong/Kconfig b/Ubiquitous/XiZi/board/xidatong/Kconfig index fedc84638..9653b4851 100644 --- a/Ubiquitous/XiZi/board/xidatong/Kconfig +++ b/Ubiquitous/XiZi/board/xidatong/Kconfig @@ -42,9 +42,8 @@ menu "xidatong feature" menu "config board peripheral" config MOUNT_SDCARD - bool "mount cd card" + bool "mount sd card" default n - select BSP_USING_SDIO endmenu endmenu diff --git a/Ubiquitous/XiZi/board/xidatong/board.c b/Ubiquitous/XiZi/board/xidatong/board.c index 54a2f1966..add8b5c4c 100644 --- a/Ubiquitous/XiZi/board/xidatong/board.c +++ b/Ubiquitous/XiZi/board/xidatong/board.c @@ -29,24 +29,6 @@ Modification: #include "board.h" #include "pin_mux.h" -#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) - KPrintf("sd card mount to '/'"); - else - KPrintf("sd card mount to '/' failed!"); - - return 0; -} -#endif - #if defined(SDK_I2C_BASED_COMPONENT_USED) && SDK_I2C_BASED_COMPONENT_USED #include "fsl_lpi2c.h" #endif /* SDK_I2C_BASED_COMPONENT_USED */ diff --git a/Ubiquitous/XiZi/board/xidatong/third_party_driver/include/connect_sdio.h b/Ubiquitous/XiZi/board/xidatong/third_party_driver/include/connect_sdio.h index 6adf230c8..f76b1a46f 100644 --- a/Ubiquitous/XiZi/board/xidatong/third_party_driver/include/connect_sdio.h +++ b/Ubiquitous/XiZi/board/xidatong/third_party_driver/include/connect_sdio.h @@ -27,11 +27,14 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { #endif +#define SD_CARD_STACK_SIZE 2048 + int Imxrt1052HwSdioInit(void); #ifdef __cplusplus diff --git a/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/Kconfig b/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/Kconfig index 56ebba209..c2ceb303d 100644 --- a/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/Kconfig +++ b/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/Kconfig @@ -10,4 +10,15 @@ if BSP_USING_SDIO config SDIO_DEVICE_NAME string "sdio device name" default "sdio_dev" + + config MOUNT_SDCARD_FS + bool "mount cd card file system" + default n + select MOUNT_SDCARD + + if MOUNT_SDCARD_FS + config MOUNT_SDCARD_FS_TYPE + int "choose file system type : FATFS(0) LWEXT4(3)" + default 0 + endif endif diff --git a/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/connect_sdio.c b/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/connect_sdio.c index 431e3fc98..841ed2fc2 100644 --- a/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/connect_sdio.c +++ b/Ubiquitous/XiZi/board/xidatong/third_party_driver/sdio/connect_sdio.c @@ -104,9 +104,6 @@ static const sdmmchost_card_switch_voltage_func_t s_sdcard_voltage_switch = { }; #endif -/*! @brief SD card detect flag */ -static volatile bool s_card_inserted = false; - /*! @brief Card descriptor. */ static sd_card_t g_sd; static int sd_lock = -1; @@ -142,11 +139,6 @@ static void BoardPowerOnSdCard(void) BOARD_USDHC_SDCARD_POWER_CONTROL(1); } -static void SdcardDetectCallBack(bool is_inserted, void *user_data) -{ - s_card_inserted = is_inserted; -} - static void CardInformationLog(sd_card_t *card) { NULL_PARAM_CHECK(card); @@ -261,6 +253,19 @@ static uint32 SdioWrite(void *dev, struct BusBlockWriteParam *write_param) return write_param->size; } +static int SdioControl(struct HardwareDev *dev, struct HalDevBlockParam *block_param) +{ + NULL_PARAM_CHECK(dev); + + if (OPER_BLK_GETGEOME == block_param->cmd) { + block_param->dev_block.size_perbank = g_sd.blockSize; + block_param->dev_block.block_size = g_sd.blockSize; + block_param->dev_block.bank_num = g_sd.blockCount; + } + + return EOK; +} + static struct SdioDevDone dev_done = { SdioOpen, @@ -269,10 +274,121 @@ static struct SdioDevDone dev_done = SdioRead, }; +#if defined(FS_VFS) && defined(MOUNT_SDCARD_FS) +#include + +/** + * @description: Mount SD card + * @return 0 + */ +static int MountSDCardFs(enum FilesystemType fs_type) +{ + if (MountFilesystem(SDIO_BUS_NAME, SDIO_DEVICE_NAME, SDIO_DRIVER_NAME, fs_type, "/") == 0) + KPrintf("Sd card mount to '/'"); + else + KPrintf("Sd card mount to '/' failed!"); + + return 0; +} +#endif + +static void SdCardAttach(void) +{ + bool is_read_only; + static sd_card_t *card = &g_sd; + + KPrintf("\r\nCard inserted.\r\n"); + /* reset host once card re-plug in */ + SD_HostReset(&(card->host)); + /* power on the card */ + SD_PowerOnCard(card->host.base, card->usrParam.pwr); + KPrintf("Power on done\n"); + + /* Init card. */ + if (SD_CardInit(card)) { + KPrintf("\r\nSD card init failed.\r\n"); + return; + } + + /* card information log */ + CardInformationLog(card); + + /* Check if card is readonly. */ + is_read_only = SD_CheckReadOnly(card); + +#ifdef MOUNT_SDCARD_FS + /*mount file system*/ + MountSDCardFs(MOUNT_SDCARD_FS_TYPE); +#endif +} + +static void SdCardDetach(void) +{ + /*unmount file system*/ + KPrintf("\r\nCard detect extracted.\r\n"); + +#ifdef MOUNT_SDCARD_FS + UnmountFileSystem("/"); +#endif +} + +static uint8 SdCardReadCd(void) +{ + BusType pin; + + pin = BusFind(PIN_BUS_NAME); + + pin->owner_haldev = BusFindDevice(pin, PIN_DEVICE_NAME); + + struct PinStat PinStat; + + struct BusBlockReadParam read_param; + read_param.buffer = (void *)&PinStat; + + PinStat.pin = IMXRT_GET_PIN(2, 28); + + return BusDevReadData(pin->owner_haldev, &read_param); +} + +static void SdCardTask(void* parameter) +{ + static int sd_card_status = 0; + + while (1) { + if (!SdCardReadCd()) { + if (!sd_card_status) { + SdCardAttach(); + sd_card_status = 1; + } + } else { + if (sd_card_status) { + SdCardDetach(); + sd_card_status = 0; + } + } + } +} + +#ifdef MOUNT_SDCARD +int MountSDCard() +{ + int sd_card_task = 0; + sd_card_task = KTaskCreate("sd_card", SdCardTask, NONE, + SD_CARD_STACK_SIZE, 8); + if(sd_card_task < 0) { + KPrintf("sd_card_task create failed ...%s %d.\n", __FUNCTION__,__LINE__); + return ERROR; + } + + StartupKTask(sd_card_task); + + return EOK; +} +#endif + int Imxrt1052HwSdioInit(void) { x_err_t ret = EOK; - bool is_read_only; static struct SdioBus sdio_bus; static struct SdioDriver sdio_drv; @@ -304,35 +420,6 @@ int Imxrt1052HwSdioInit(void) KPrintf("\r\nSD host init fail\r\n"); return ERROR; } - - KPrintf("\r\nPlease insert a card into board.\r\n"); - - /* power off card */ - SD_PowerOffCard(card->host.base, card->usrParam.pwr); - - if (SD_WaitCardDetectStatus(SD_HOST_BASEADDR, &s_sdcard_detect, true) == kStatus_Success) { - KPrintf("\r\nCard inserted.\r\n"); - /* reset host once card re-plug in */ - SD_HostReset(&(card->host)); - /* power on the card */ - SD_PowerOnCard(card->host.base, card->usrParam.pwr); - KPrintf("power on done\n"); - } else { - KPrintf("\r\nCard detect fail.\r\n"); - return ERROR; - } - - /* Init card. */ - if (SD_CardInit(card)) { - KPrintf("\r\nSD card init failed.\r\n"); - return ERROR; - } - - /* card information log */ - CardInformationLog(card); - - /* Check if card is readonly. */ - is_read_only = SD_CheckReadOnly(card); ret = SdioBusInit(&sdio_bus, SDIO_BUS_NAME); if (ret != EOK) { @@ -352,6 +439,7 @@ int Imxrt1052HwSdioInit(void) } sdio_dev.dev_done = &dev_done; + sdio_dev.haldev.dev_block_control = SdioControl; ret = SdioDeviceRegister(&sdio_dev, SDIO_DEVICE_NAME); if (ret != EOK) { KPrintf("Sdio device register error %d\n", ret); diff --git a/Ubiquitous/XiZi/board/xidatong/third_party_driver/usb/nxp_usb_driver/host_msd_command.c b/Ubiquitous/XiZi/board/xidatong/third_party_driver/usb/nxp_usb_driver/host_msd_command.c index 78cb4af70..7bab0d1bc 100644 --- a/Ubiquitous/XiZi/board/xidatong/third_party_driver/usb/nxp_usb_driver/host_msd_command.c +++ b/Ubiquitous/XiZi/board/xidatong/third_party_driver/usb/nxp_usb_driver/host_msd_command.c @@ -15,8 +15,8 @@ */ /************************************************* -File name: usb_misc.h -Description: modify usb_echo to KPrintf +File name: host_msd_command.c +Description: modify usb msd command test function Others: take SDK_2.6.1_MIMXRT1052xxxxB/boards/evkbimxrt1050/usb_examples/usb_host_msd_command for references History: 1. Date: 2022-02-10 diff --git a/Ubiquitous/XiZi/fs/lwext4/Kconfig b/Ubiquitous/XiZi/fs/lwext4/Kconfig index e69de29bb..afa4938f1 100644 --- a/Ubiquitous/XiZi/fs/lwext4/Kconfig +++ b/Ubiquitous/XiZi/fs/lwext4/Kconfig @@ -0,0 +1,7 @@ +config CONFIG_USE_DEFAULT_CFG + int + default 1 + +config CONFIG_HAVE_OWN_OFLAGS + int + default 0 diff --git a/Ubiquitous/XiZi/fs/lwext4/Makefile b/Ubiquitous/XiZi/fs/lwext4/Makefile index 15357b7bc..6c25f1470 100644 --- a/Ubiquitous/XiZi/fs/lwext4/Makefile +++ b/Ubiquitous/XiZi/fs/lwext4/Makefile @@ -1,4 +1,3 @@ +SRC_DIR := lwext4_submodule - - -include $(KERNEL_ROOT)/compiler.mk \ No newline at end of file +include $(KERNEL_ROOT)/compiler.mk diff --git a/Ubiquitous/XiZi/fs/lwext4/lwext4_submodule b/Ubiquitous/XiZi/fs/lwext4/lwext4_submodule new file mode 160000 index 000000000..1eba3cfed --- /dev/null +++ b/Ubiquitous/XiZi/fs/lwext4/lwext4_submodule @@ -0,0 +1 @@ +Subproject commit 1eba3cfeda305e5c735827805e90f5f1c8043394 diff --git a/Ubiquitous/XiZi/fs/shared/include/iot-vfs.h b/Ubiquitous/XiZi/fs/shared/include/iot-vfs.h index bc61255da..d1531e5c2 100644 --- a/Ubiquitous/XiZi/fs/shared/include/iot-vfs.h +++ b/Ubiquitous/XiZi/fs/shared/include/iot-vfs.h @@ -24,6 +24,9 @@ enum FilesystemType FSTYPE_FATFS = 0, FSTYPE_IOTDEVICEFILE, FSTYPE_CH376, +#ifdef FS_LWEXT4 + FSTYPE_LWEXT4, +#endif FSTYPE_END, }; diff --git a/Ubiquitous/XiZi/kernel/include/xs_init.h b/Ubiquitous/XiZi/kernel/include/xs_init.h index 745377e91..09e813178 100644 --- a/Ubiquitous/XiZi/kernel/include/xs_init.h +++ b/Ubiquitous/XiZi/kernel/include/xs_init.h @@ -40,6 +40,7 @@ extern int FlashW25qxxSpiDeviceInit(void); extern int LoraSx12xxSpiDeviceInit(void); extern int FatfsInit(void); extern int Ch376fsInit(void); +extern int Lwext4Init(void); extern int LibcSystemInit(void); extern int RtcNtpSyncInit(void); extern int MountSDCard(void); diff --git a/Ubiquitous/XiZi/kernel/thread/init.c b/Ubiquitous/XiZi/kernel/thread/init.c index 4813111cd..00e255d26 100644 --- a/Ubiquitous/XiZi/kernel/thread/init.c +++ b/Ubiquitous/XiZi/kernel/thread/init.c @@ -95,6 +95,9 @@ struct InitSequenceDesc components_init[] = #endif #ifdef FS_CH376 { "ch376", Ch376fsInit }, +#endif +#ifdef FS_LWEXT4 + { "lwext4", Lwext4Init }, #endif { "libc_system", LibcSystemInit }, #ifdef RTC_SYNC_USING_NTP diff --git a/Ubiquitous/XiZi/path_kernel.mk b/Ubiquitous/XiZi/path_kernel.mk index 3c5d630d2..91a7f3e45 100755 --- a/Ubiquitous/XiZi/path_kernel.mk +++ b/Ubiquitous/XiZi/path_kernel.mk @@ -354,6 +354,12 @@ ifeq ($(CONFIG_LIB_NEWLIB),y) KERNELPATHS += -I$(KERNEL_ROOT)/lib/newlib/include # endif +ifeq ($(CONFIG_FS_LWEXT4),y) +KERNELPATHS += -I$(KERNEL_ROOT)/fs/lwext4/lwext4_submodule/blockdev/xiuos # +KERNELPATHS += -I$(KERNEL_ROOT)/fs/lwext4/lwext4_submodule/include # +KERNELPATHS += -I$(KERNEL_ROOT)/fs/lwext4/lwext4_submodule/include/misc +endif + ifeq ($(ARCH), risc-v) KERNELPATHS +=-I$(KERNEL_ROOT)/arch/risc-v/shared