From 72c115a00b6e755b8e512ccc7c92f2c5de5eb5bd Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Sat, 30 Dec 2023 18:53:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DRTOS=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=AD=BB=E6=9C=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/System/SF_SysStrgMng.c | 3 +- .../source/cardv/SrcCode/System/sys_filesys.c | 18 ++++---- .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 25 +++++++---- .../SrcCode/UIApp/Photo/UIAppPhoto_Exe.c | 14 +++++-- .../SrcCode/UIApp/Photo/UIStorageCheck.c | 42 +++++++++++++------ .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 21 +++++++--- .../UIApp/PhotoFast/PhotoFastSliceEncode.c | 11 +++-- .../driver/na51089/source/mcu/sf_sd_common.c | 40 ++++-------------- 8 files changed, 100 insertions(+), 74 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c index d784db1c9..8dad83164 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c @@ -332,9 +332,8 @@ static void* mmc_monitoring_thread(void *arg) { while(MMCMonitorTskCfg.IsRun) { -#if USE_MMC_DEV_CHECK pMMCDev = SF_StrgCheckWorkableDev(); -#endif + sf_sleep_ms(1000); } return NULL; diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c index 80f9c79fc..e5c4ee958 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -90,7 +90,7 @@ static void card_insert_job2(void) int ret; FILE_TSK_INIT_PARAM Param = {0}; FS_HANDLE StrgDXH2; - UINT32 start_sector = 8192 ; /* linux cmd fdisk can list partition info */ + UINT32 start_sector = 16 ; /* linux cmd fdisk can list partition info */ UINT32 totoal_sectors = 0; StrgDXH2 = (FS_HANDLE)sdio2_getStorageObject(STRG_OBJ_FAT1); STORAGE_OBJ* pStrg = sdio2_getStorageObject(STRG_OBJ_FAT1); @@ -146,9 +146,6 @@ static void sys_detect_card_task(void) #if defined(_EMBMEM_EMMC_) THREAD_ENTRY(); -#if USE_RTOS_MMC_CHECK - SF_RtosStrgInit(); -#endif card_insert_job(); THREAD_RETURN(0); @@ -181,9 +178,9 @@ static void sys_detect_card_task(void) vTaskDelay(pdMS_TO_TICKS(1000)); } -#if USE_RTOS_MMC_CHECK - SF_RtosStrgUnInit(); -#endif +//#if USE_RTOS_MMC_CHECK + //SF_RtosStrgUnInit(); +//#endif THREAD_RETURN(0); #endif } @@ -232,6 +229,11 @@ void filesys_init(void) vos_task_resume(task_hdl2); } #endif + +#if USE_RTOS_MMC_CHECK + SF_RtosStrgInit(); +#endif + #if 0 if (FST_STA_OK != FileSys_Init(FileSys_GetOPS_uITRON())) { @@ -317,4 +319,4 @@ void sf_log_open(void) #endif } -#endif \ No newline at end of file +#endif diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index 2259f0f55..e1a4f1c60 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -866,17 +866,25 @@ static DCF_HANDLE MovieFast_Get_DCF_Handle(void) //#else //return g_dcf_hdl; //#endif + SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); + SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); + #if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev ==NULL) { DBG_ERR("No MMC_Dev Can use!\n"); return -1; } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return -1; + } DBG_WRN("Moviefast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle); return mmc_dev->dcf_handle; #else - return g_dcf_hdl; + return g_dcf_hdl2; #endif } INT32 MovieFast_Wait_FileSys(UINT32 timeout_ms) @@ -1179,9 +1187,12 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3 #if HUNTING_CAMERA_MCU == ENABLE #if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev != NULL) { - DBG_ERR("No MMC_Dev Can use!\n"); + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + } } else { @@ -1195,7 +1206,7 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3 } } #else - snprintf(tmp, sizeof(tmp), "%c%s%s", 'A', MOVIE_THUMB_PATH, thumb_current_path); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%c%s%s", 'B', MOVIE_THUMB_PATH, thumb_current_path); /* DCF 8.3 naming rule */ #endif #else snprintf(tmp, sizeof(tmp), "%s%s", MOVIE_THUMB_PATH, (thumb_current_path + (length - 12))); /* DCF 8.3 naming rule */ @@ -1310,7 +1321,7 @@ THREAD_RETTYPE MovieFast_InitFileNamingThread(void *arg) #endif { #if USE_RTOS_MMC_CHECK - SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl); + //SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl); #endif fastboot_set_done(BOOT_INIT_FILENAMINGOK); } @@ -1353,7 +1364,7 @@ THREAD_RETTYPE MovieFast_InitFileNamingThread2(void *arg) #endif { #if USE_RTOS_MMC_CHECK - SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl2); + //SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl2); #endif fastboot_set_done(BOOT_INIT_FILENAMINGOK_2); } diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index 97a5875c3..e4a14bfcc 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -624,19 +624,25 @@ UINT32 PhotoExe_GetFreePicNum(void) UINT32 CaptureSize; UINT32 size; -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev ==NULL) { DBG_ERR("No MMC_Dev Can use!\n"); - return FALSE; + return 0; } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return 0; + } + #endif #if (FILESIZE_ALIGN_FUNC) reserveSize += FS_ALIGN_RESERVED_SIZE; #endif -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK if(mmc_dev->dev_type == MMC_DEV_SD) { diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c b/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c index c8bfd5e97..ff7e2834b 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIStorageCheck.c @@ -58,14 +58,20 @@ void UIStorageCheck_ResetFileReachMax(void) static BOOL check_CurrDir_writable(void) { -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev ==NULL) { DBG_ERR("No MMC_Dev Can use!\n"); return FALSE; } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return FALSE; + } + #endif UINT32 useFileDB = 0; useFileDB = UI_GetData(FL_IsUseFileDB); @@ -76,7 +82,7 @@ static BOOL check_CurrDir_writable(void) #if (USE_DCF == ENABLE) UINT32 CurrDirID; SDCFDIRINFO dirinfo = {0}; -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK CurrDirID = DCF_GetDBInfoEx(mmc_dev->dcf_handle, DCF_INFO_CUR_DIR_ID); if (CurrDirID) { if (DCF_GetDirInfoEx(mmc_dev->dcf_handle, CurrDirID, &dirinfo)) { @@ -108,14 +114,20 @@ static BOOL check_CurrDir_writable(void) BOOL UIStorageCheck_DCIMWritable(void) { -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev ==NULL) { DBG_ERR("No MMC_Dev Can use!\n"); return FALSE; } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return FALSE; + } + #endif UINT32 useFileDB = 0; useFileDB = UI_GetData(FL_IsUseFileDB); @@ -125,7 +137,7 @@ BOOL UIStorageCheck_DCIMWritable(void) INT32 uiStatus = 0; UINT8 ucAttrib = 0; BOOL ret = FALSE; - #if USE_RTOS_MMC_CHECK + #if 0//USE_RTOS_MMC_CHECK if(mmc_dev->dev_type == MMC_DEV_SD) { uiStatus = FileSys_GetAttrib("A:\\DCIM", &ucAttrib); @@ -175,7 +187,7 @@ static BOOL UIStrgCheckFolderFull(DCF_HANDLE DcfHandle) return TRUE; } bIsFileReachMax = FALSE; -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId); #else ret = DCF_GetNextID(&DCF_DirId, &DCF_FileId); @@ -216,7 +228,7 @@ static BOOL UIStrgCheckFull(UINT32 *pFreeCount) static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id) { -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK if(dev_id == MMC_DEV_SD) { @@ -247,14 +259,20 @@ static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id) BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount) { -#if USE_RTOS_MMC_CHECK +#if 0//USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev ==NULL) { DBG_ERR("No MMC_Dev Can use!\n"); return FALSE; } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return FALSE; + } + #endif UINT32 useFileDB = 0; useFileDB = UI_GetData(FL_IsUseFileDB); @@ -266,7 +284,7 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount) if (useFileDB) { return FALSE; } else { - #if USE_RTOS_MMC_CHECK + #if 0//USE_RTOS_MMC_CHECK UIStrgCheckFolderFull(mmc_dev->dcf_handle); #else UIStrgCheckFolderFull(0); @@ -286,7 +304,7 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount) break; case STORAGE_CHECK_ERROR: - #if USE_RTOS_MMC_CHECK + #if 0//USE_RTOS_MMC_CHECK UIStrgCheckErr(mmc_dev->dev_type); #else UIStrgCheckErr(0); diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c index 4d157c2e5..d50543ea2 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -748,7 +748,7 @@ INT32 PhotoFast_FileNaming_Open(void) DCF_ScanObjEx(g_dcf_hdl); #if USE_RTOS_MMC_CHECK - SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); + //SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); #endif } else{ @@ -780,7 +780,7 @@ INT32 PhotoFast_FileNaming_Open2(void) DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2); DCF_ScanObjEx(g_dcf_hdl2); #if USE_RTOS_MMC_CHECK - SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); + //SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); #endif } else{ @@ -812,8 +812,8 @@ INT32 PhotoFast_FileNaming_Close(void) } #if USE_RTOS_MMC_CHECK - SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); - SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); + //SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); + //SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); #endif return 0; } @@ -936,17 +936,26 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle() //#else //return g_dcf_hdl; //#endif + + SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); + SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); #if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev ==NULL) { DBG_ERR("No MMC_Dev Can use!\n"); return -1; } + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + return -1; + } + DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle); return mmc_dev->dcf_handle; #else - return g_dcf_hdl; + return g_dcf_hdl2; #endif } INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c index b3f0dd3bb..ab1ca152d 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c @@ -2248,7 +2248,7 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data) if(param->cnt >= param->max_cnt) break; #if SF_NO_SD_SEND == ENABLE - if(PhotoFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){ + if(PhotoFast_Wait_FileSys(1) != E_OK){ goto EXIT; } #endif @@ -2391,9 +2391,12 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) #if HUNTING_CAMERA_MCU == ENABLE #if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); - if(mmc_dev->dcf_handle < 0) + if(mmc_dev != NULL) { - DBG_ERR("No MMC_Dev Can use!\n"); + if(mmc_dev->dcf_handle < 0) + { + DBG_ERR("dcf_handle err\n"); + } } else { @@ -2407,7 +2410,7 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) } } #else - snprintf(tmp, sizeof(tmp), "%c%s%s", 'A', PHOTO_THUMB_PATH, file_path); /* DCF 8.3 naming rule */ + snprintf(tmp, sizeof(tmp), "%c%s%s", 'B', PHOTO_THUMB_PATH, file_path); /* DCF 8.3 naming rule */ #endif #else UINT32 length = strlen(file_path); diff --git a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c index 72bc63846..79d703e9b 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c +++ b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c @@ -176,7 +176,7 @@ static UINT32 sf_rtos_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev) IsCardFull = FALSE; ret = 0; } - DBG_WRN("[%d]sd card diskFree=%lluM, ret = %d\n", __LINE__, diskFree, ret); + DBG_WRN("[strg_id:%d]diskFree=%lluM, ret = %d\n", mmc_dev, diskFree, ret); return ret; } @@ -214,27 +214,6 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void) { MMC_DEV_TYPE workable_dev = MMC_DEV_NO; - UINT32 isfull = 0; - isfull = sf_rtos_mmc_dev_space_check_full(MMC_DEV_SD); - if(isfull == 1) - { - sf_rtos_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH; - } - else if(isfull == 0) - { - sf_rtos_mmc_dev[MMC_DEV_SD]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; - } - - isfull = sf_rtos_mmc_dev_space_check_full(MMC_DEV_EMMC); - if(isfull == 1) - { - sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_NO_ENOUGH; - } - else if(isfull == 0) - { - sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; - } - if((sf_rtos_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) && (sf_rtos_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED)) { @@ -242,7 +221,7 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void) } else if(sf_rtos_mmc_dev[MMC_DEV_SD]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) { - if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + if(!sf_rtos_mmc_dev_space_check_full(MMC_DEV_EMMC)) { workable_dev = MMC_DEV_EMMC; } @@ -256,7 +235,7 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void) } else if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->moumted_state == MMC_DEV_MOUNT_STATE_UNMOUNTED) { - if(sf_rtos_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + if(!sf_rtos_mmc_dev_space_check_full(MMC_DEV_SD)) { workable_dev = MMC_DEV_SD; } @@ -270,16 +249,16 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void) } else { - if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH && - sf_rtos_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + if(!sf_rtos_mmc_dev_space_check_full(MMC_DEV_EMMC) && + !sf_rtos_mmc_dev_space_check_full(MMC_DEV_SD)) { workable_dev = MMC_DEV_EMMC; } - else if(sf_rtos_mmc_dev[MMC_DEV_EMMC]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + else if(!sf_rtos_mmc_dev_space_check_full(MMC_DEV_EMMC)) { workable_dev = MMC_DEV_EMMC; } - else if(sf_rtos_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) + else if(!sf_rtos_mmc_dev_space_check_full(MMC_DEV_SD)) { workable_dev = MMC_DEV_SD; } @@ -297,12 +276,11 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void) for(int i = 0; i < 2; i++) { sf_rtos_mmc_dev[i]->dev_type = workable_dev; - DBG_WRN("mount:%d, space:%d\n", sf_rtos_mmc_dev[i]->moumted_state, - sf_rtos_mmc_dev[i]->space_state); + DBG_WRN("mount:%d\n", sf_rtos_mmc_dev[i]->moumted_state); } if(workable_dev == MMC_DEV_NO) { - return sf_rtos_mmc_dev[MMC_DEV_EMMC]; + return NULL; } else {