修复RTOS存储文件死机问题

This commit is contained in:
sober.song 2023-12-30 18:53:53 +08:00
parent 50ad347fc8
commit 72c115a00b
8 changed files with 100 additions and 74 deletions

View File

@ -332,9 +332,8 @@ static void* mmc_monitoring_thread(void *arg)
{ {
while(MMCMonitorTskCfg.IsRun) while(MMCMonitorTskCfg.IsRun)
{ {
#if USE_MMC_DEV_CHECK
pMMCDev = SF_StrgCheckWorkableDev(); pMMCDev = SF_StrgCheckWorkableDev();
#endif
sf_sleep_ms(1000); sf_sleep_ms(1000);
} }
return NULL; return NULL;

View File

@ -90,7 +90,7 @@ static void card_insert_job2(void)
int ret; int ret;
FILE_TSK_INIT_PARAM Param = {0}; FILE_TSK_INIT_PARAM Param = {0};
FS_HANDLE StrgDXH2; 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; UINT32 totoal_sectors = 0;
StrgDXH2 = (FS_HANDLE)sdio2_getStorageObject(STRG_OBJ_FAT1); StrgDXH2 = (FS_HANDLE)sdio2_getStorageObject(STRG_OBJ_FAT1);
STORAGE_OBJ* pStrg = 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_) #if defined(_EMBMEM_EMMC_)
THREAD_ENTRY(); THREAD_ENTRY();
#if USE_RTOS_MMC_CHECK
SF_RtosStrgInit();
#endif
card_insert_job(); card_insert_job();
THREAD_RETURN(0); THREAD_RETURN(0);
@ -181,9 +178,9 @@ static void sys_detect_card_task(void)
vTaskDelay(pdMS_TO_TICKS(1000)); vTaskDelay(pdMS_TO_TICKS(1000));
} }
#if USE_RTOS_MMC_CHECK //#if USE_RTOS_MMC_CHECK
SF_RtosStrgUnInit(); //SF_RtosStrgUnInit();
#endif //#endif
THREAD_RETURN(0); THREAD_RETURN(0);
#endif #endif
} }
@ -232,6 +229,11 @@ void filesys_init(void)
vos_task_resume(task_hdl2); vos_task_resume(task_hdl2);
} }
#endif #endif
#if USE_RTOS_MMC_CHECK
SF_RtosStrgInit();
#endif
#if 0 #if 0
if (FST_STA_OK != FileSys_Init(FileSys_GetOPS_uITRON())) { if (FST_STA_OK != FileSys_Init(FileSys_GetOPS_uITRON())) {
@ -317,4 +319,4 @@ void sf_log_open(void)
#endif #endif
} }
#endif #endif

View File

@ -866,17 +866,25 @@ static DCF_HANDLE MovieFast_Get_DCF_Handle(void)
//#else //#else
//return g_dcf_hdl; //return g_dcf_hdl;
//#endif //#endif
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); 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"); DBG_ERR("No MMC_Dev Can use!\n");
return -1; 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); DBG_WRN("Moviefast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle; return mmc_dev->dcf_handle;
#else #else
return g_dcf_hdl; return g_dcf_hdl2;
#endif #endif
} }
INT32 MovieFast_Wait_FileSys(UINT32 timeout_ms) 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 HUNTING_CAMERA_MCU == ENABLE
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); 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 else
{ {
@ -1195,7 +1206,7 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3
} }
} }
#else #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 #endif
#else #else
snprintf(tmp, sizeof(tmp), "%s%s", MOVIE_THUMB_PATH, (thumb_current_path + (length - 12))); /* DCF 8.3 naming rule */ 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 #endif
{ {
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl); //SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl);
#endif #endif
fastboot_set_done(BOOT_INIT_FILENAMINGOK); fastboot_set_done(BOOT_INIT_FILENAMINGOK);
} }
@ -1353,7 +1364,7 @@ THREAD_RETTYPE MovieFast_InitFileNamingThread2(void *arg)
#endif #endif
{ {
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl2); //SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl2);
#endif #endif
fastboot_set_done(BOOT_INIT_FILENAMINGOK_2); fastboot_set_done(BOOT_INIT_FILENAMINGOK_2);
} }

View File

@ -624,19 +624,25 @@ UINT32 PhotoExe_GetFreePicNum(void)
UINT32 CaptureSize; UINT32 CaptureSize;
UINT32 size; UINT32 size;
#if USE_RTOS_MMC_CHECK #if 0//USE_RTOS_MMC_CHECK
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); 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"); 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 #endif
#if (FILESIZE_ALIGN_FUNC) #if (FILESIZE_ALIGN_FUNC)
reserveSize += FS_ALIGN_RESERVED_SIZE; reserveSize += FS_ALIGN_RESERVED_SIZE;
#endif #endif
#if USE_RTOS_MMC_CHECK #if 0//USE_RTOS_MMC_CHECK
if(mmc_dev->dev_type == MMC_DEV_SD) if(mmc_dev->dev_type == MMC_DEV_SD)
{ {

View File

@ -58,14 +58,20 @@ void UIStorageCheck_ResetFileReachMax(void)
static BOOL check_CurrDir_writable(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(); 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"); DBG_ERR("No MMC_Dev Can use!\n");
return FALSE; return FALSE;
} }
if(mmc_dev->dcf_handle < 0)
{
DBG_ERR("dcf_handle err\n");
return FALSE;
}
#endif #endif
UINT32 useFileDB = 0; UINT32 useFileDB = 0;
useFileDB = UI_GetData(FL_IsUseFileDB); useFileDB = UI_GetData(FL_IsUseFileDB);
@ -76,7 +82,7 @@ static BOOL check_CurrDir_writable(void)
#if (USE_DCF == ENABLE) #if (USE_DCF == ENABLE)
UINT32 CurrDirID; UINT32 CurrDirID;
SDCFDIRINFO dirinfo = {0}; 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); CurrDirID = DCF_GetDBInfoEx(mmc_dev->dcf_handle, DCF_INFO_CUR_DIR_ID);
if (CurrDirID) { if (CurrDirID) {
if (DCF_GetDirInfoEx(mmc_dev->dcf_handle, CurrDirID, &dirinfo)) { if (DCF_GetDirInfoEx(mmc_dev->dcf_handle, CurrDirID, &dirinfo)) {
@ -108,14 +114,20 @@ static BOOL check_CurrDir_writable(void)
BOOL UIStorageCheck_DCIMWritable(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(); 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"); DBG_ERR("No MMC_Dev Can use!\n");
return FALSE; return FALSE;
} }
if(mmc_dev->dcf_handle < 0)
{
DBG_ERR("dcf_handle err\n");
return FALSE;
}
#endif #endif
UINT32 useFileDB = 0; UINT32 useFileDB = 0;
useFileDB = UI_GetData(FL_IsUseFileDB); useFileDB = UI_GetData(FL_IsUseFileDB);
@ -125,7 +137,7 @@ BOOL UIStorageCheck_DCIMWritable(void)
INT32 uiStatus = 0; INT32 uiStatus = 0;
UINT8 ucAttrib = 0; UINT8 ucAttrib = 0;
BOOL ret = FALSE; BOOL ret = FALSE;
#if USE_RTOS_MMC_CHECK #if 0//USE_RTOS_MMC_CHECK
if(mmc_dev->dev_type == MMC_DEV_SD) if(mmc_dev->dev_type == MMC_DEV_SD)
{ {
uiStatus = FileSys_GetAttrib("A:\\DCIM", &ucAttrib); uiStatus = FileSys_GetAttrib("A:\\DCIM", &ucAttrib);
@ -175,7 +187,7 @@ static BOOL UIStrgCheckFolderFull(DCF_HANDLE DcfHandle)
return TRUE; return TRUE;
} }
bIsFileReachMax = FALSE; bIsFileReachMax = FALSE;
#if USE_RTOS_MMC_CHECK #if 0//USE_RTOS_MMC_CHECK
ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId); ret = DCF_GetNextIDEx(DcfHandle, &DCF_DirId, &DCF_FileId);
#else #else
ret = DCF_GetNextID(&DCF_DirId, &DCF_FileId); ret = DCF_GetNextID(&DCF_DirId, &DCF_FileId);
@ -216,7 +228,7 @@ static BOOL UIStrgCheckFull(UINT32 *pFreeCount)
static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id) 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) if(dev_id == MMC_DEV_SD)
{ {
@ -247,14 +259,20 @@ static BOOL UIStrgCheckErr(MMC_DEV_TYPE dev_id)
BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount) 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(); 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"); DBG_ERR("No MMC_Dev Can use!\n");
return FALSE; return FALSE;
} }
if(mmc_dev->dcf_handle < 0)
{
DBG_ERR("dcf_handle err\n");
return FALSE;
}
#endif #endif
UINT32 useFileDB = 0; UINT32 useFileDB = 0;
useFileDB = UI_GetData(FL_IsUseFileDB); useFileDB = UI_GetData(FL_IsUseFileDB);
@ -266,7 +284,7 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
if (useFileDB) { if (useFileDB) {
return FALSE; return FALSE;
} else { } else {
#if USE_RTOS_MMC_CHECK #if 0//USE_RTOS_MMC_CHECK
UIStrgCheckFolderFull(mmc_dev->dcf_handle); UIStrgCheckFolderFull(mmc_dev->dcf_handle);
#else #else
UIStrgCheckFolderFull(0); UIStrgCheckFolderFull(0);
@ -286,7 +304,7 @@ BOOL UIStorageCheck(UINT32 uiCheckItem, UINT32 *pFreeCount)
break; break;
case STORAGE_CHECK_ERROR: case STORAGE_CHECK_ERROR:
#if USE_RTOS_MMC_CHECK #if 0//USE_RTOS_MMC_CHECK
UIStrgCheckErr(mmc_dev->dev_type); UIStrgCheckErr(mmc_dev->dev_type);
#else #else
UIStrgCheckErr(0); UIStrgCheckErr(0);

View File

@ -748,7 +748,7 @@ INT32 PhotoFast_FileNaming_Open(void)
DCF_ScanObjEx(g_dcf_hdl); DCF_ScanObjEx(g_dcf_hdl);
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); //SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
#endif #endif
} }
else{ else{
@ -780,7 +780,7 @@ INT32 PhotoFast_FileNaming_Open2(void)
DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2); DBG_WRN("DCF_ScanObjEx emmc handle=%d\n", g_dcf_hdl2);
DCF_ScanObjEx(g_dcf_hdl2); DCF_ScanObjEx(g_dcf_hdl2);
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); //SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
#endif #endif
} }
else{ else{
@ -812,8 +812,8 @@ INT32 PhotoFast_FileNaming_Close(void)
} }
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl); //SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2); //SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
#endif #endif
return 0; return 0;
} }
@ -936,17 +936,26 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle()
//#else //#else
//return g_dcf_hdl; //return g_dcf_hdl;
//#endif //#endif
SF_RtosStrgSetDcfHandle(MMC_DEV_SD, g_dcf_hdl);
SF_RtosStrgSetDcfHandle(MMC_DEV_EMMC, g_dcf_hdl2);
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); 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"); DBG_ERR("No MMC_Dev Can use!\n");
return -1; 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); DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle; return mmc_dev->dcf_handle;
#else #else
return g_dcf_hdl; return g_dcf_hdl2;
#endif #endif
} }
INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms) INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms)

View File

@ -2248,7 +2248,7 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data)
if(param->cnt >= param->max_cnt) if(param->cnt >= param->max_cnt)
break; break;
#if SF_NO_SD_SEND == ENABLE #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; goto EXIT;
} }
#endif #endif
@ -2391,9 +2391,12 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data)
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
#if USE_RTOS_MMC_CHECK #if USE_RTOS_MMC_CHECK
SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); 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 else
{ {
@ -2407,7 +2410,7 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data)
} }
} }
#else #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 #endif
#else #else
UINT32 length = strlen(file_path); UINT32 length = strlen(file_path);

View File

@ -176,7 +176,7 @@ static UINT32 sf_rtos_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev)
IsCardFull = FALSE; IsCardFull = FALSE;
ret = 0; 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; return ret;
} }
@ -214,27 +214,6 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
{ {
MMC_DEV_TYPE workable_dev = MMC_DEV_NO; 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) && 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)) (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) 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; 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) 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; workable_dev = MMC_DEV_SD;
} }
@ -270,16 +249,16 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
} }
else else
{ {
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) &&
sf_rtos_mmc_dev[MMC_DEV_SD]->space_state == MMC_DEV_SPACE_STATE_ENOUGH) !sf_rtos_mmc_dev_space_check_full(MMC_DEV_SD))
{ {
workable_dev = MMC_DEV_EMMC; 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; 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; workable_dev = MMC_DEV_SD;
} }
@ -297,12 +276,11 @@ SF_RTOS_ST_MMC_DEV *SF_RtosStrgCheckWorkableDev(void)
for(int i = 0; i < 2; i++) for(int i = 0; i < 2; i++)
{ {
sf_rtos_mmc_dev[i]->dev_type = workable_dev; sf_rtos_mmc_dev[i]->dev_type = workable_dev;
DBG_WRN("mount:%d, space:%d\n", sf_rtos_mmc_dev[i]->moumted_state, DBG_WRN("mount:%d\n", sf_rtos_mmc_dev[i]->moumted_state);
sf_rtos_mmc_dev[i]->space_state);
} }
if(workable_dev == MMC_DEV_NO) if(workable_dev == MMC_DEV_NO)
{ {
return sf_rtos_mmc_dev[MMC_DEV_EMMC]; return NULL;
} }
else else
{ {