From 2c13dc999b2b1289c579c4c9bae86a89468630b3 Mon Sep 17 00:00:00 2001 From: "sober.song" Date: Fri, 29 Dec 2023 18:18:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DUI=E8=8E=B7=E5=8F=96=E5=8F=AF?= =?UTF-8?q?=E7=94=A8=E5=AD=98=E5=82=A8=E8=AE=BE=E5=A4=87=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/System/SF_SysStrgMng.c | 36 +++++++++++-------- .../cardv/SrcCode/System/SF_SysStrgMng.h | 2 +- .../source/cardv/SrcCode/System/SysStrg_Exe.c | 4 +-- .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 7 +++- .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 4 +++ .../driver/na51089/include/sf_sd_common.h | 2 +- .../driver/na51089/source/mcu/sf_sd_common.c | 4 +-- 7 files changed, 36 insertions(+), 23 deletions(-) diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c index 933376c03..ad41d2d44 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.c @@ -34,6 +34,9 @@ SF_THREAD_S MMCMonitorTskCfg = }; +#define MIN_DISK_FREE_SIZE_MB 30 + + SF_ST_MMC_DEV *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; SF_ST_MMC_DEV *pMMCDev = NULL; @@ -48,22 +51,21 @@ SF_ST_MMC_DEV *SF_GetMMCDev(void) return pMMCDev; } -void SF_StrgInit(void) -{ - for(int i = 0; i < MMC_DEV_MAX_NUM; i++) - { +void SF_StrgInit(void) { + for (int i = 0; i < MMC_DEV_MAX_NUM; i++) { sf_mmc_dev[i] = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV)); - if(sf_mmc_dev[i] == NULL) { + if (sf_mmc_dev[i] == NULL) { MLOGD("SF_StrgInit Failed, id = %d\n", i); + // Handle malloc failure + exit(EXIT_FAILURE); } - sf_mmc_dev[i]->dcf_handle = -1; - sf_mmc_dev[i]->dev_type = MMC_DEV_NO; - sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO_EXIST; - sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED; - sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; - sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_OFF; + sf_mmc_dev[i]->dcf_handle = -1; + sf_mmc_dev[i]->dev_type = MMC_DEV_NO; + sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO_EXIST; + sf_mmc_dev[i]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED; + sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; + sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_OFF; } - pMMCDev = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV)); } void SF_StrgUnInit(void) @@ -101,7 +103,7 @@ static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev) diskFree = diskFree/1024/1024; - if(diskFree < 30) /* 30MB */ + if(diskFree < MIN_DISK_FREE_SIZE_MB) /* 30MB */ { ret = 1; } @@ -196,7 +198,7 @@ void SF_StrgRegister(SF_MESSAGE_BUF_S *pMessageBuf) } } - for(int i = 0; i < 2; i++) + for(int i = 0; i < MMC_DEV_MAX_NUM; i++) { MLOGD("node:%d, mount:%d, loop:%d\n", sf_mmc_dev[i]->node, sf_mmc_dev[i]->moumted_state, @@ -321,6 +323,7 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void) else { MLOGD("Strg Check, workable_dev = %d\n", workable_dev); + SF_SetMMCDev(sf_mmc_dev[workable_dev]); return sf_mmc_dev[workable_dev]; } } @@ -339,6 +342,9 @@ static void* mmc_monitoring_thread(void *arg) int sf_mmc_dev_check_start(void) { +#if USE_MMC_DEV_CHECK + SF_StrgInit();// 初始化sf_mmc设备Obj +#endif int ret = pthread_create(&MMCMonitorTskCfg.TskId, NULL, mmc_monitoring_thread, NULL); if(ret != SF_SUCCESS) { @@ -346,7 +352,7 @@ int sf_mmc_dev_check_start(void) return ret; } MMCMonitorTskCfg.IsRun = 1; - MLOGD("mmc_dev check create success!\n"); + MLOGD("00 mmc_dev check create success!\n"); return 0; } diff --git a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h index d28c801c5..3f41d8abe 100755 --- a/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h +++ b/code/application/source/cardv/SrcCode/System/SF_SysStrgMng.h @@ -32,7 +32,7 @@ #define EMMC_DEVICE_NAME "/dev/mmcblk1p1" #define EMMC_MOUNT_ROOT "/mnt/sd2" -#define USE_MMC_DEV_CHECK (0) +#define USE_MMC_DEV_CHECK (1) typedef enum { diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 86478ac7a..85c5e0acb 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -348,9 +348,7 @@ void System_OnStrgInit_FS(void) GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool); #endif } -#if USE_MMC_DEV_CHECK - SF_StrgInit();// 初始化sf_mmc设备Obj -#endif + #if !defined(__FREERTOS) GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_FS_TYPE, FileSys_GetOPS_Linux()); //for FILE_CFG_FS_TYPE, DevID is don't care 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 f8a5f4f93..2259f0f55 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -866,14 +866,18 @@ static DCF_HANDLE MovieFast_Get_DCF_Handle(void) //#else //return g_dcf_hdl; //#endif +#if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { DBG_ERR("No MMC_Dev Can use!\n"); return -1; } - DBG_WRN("photofast 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; +#else + return g_dcf_hdl; +#endif } INT32 MovieFast_Wait_FileSys(UINT32 timeout_ms) { @@ -931,6 +935,7 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) DBG_ERR("Exceed max dcf file!\r\n"); pFileName[0] = '\0'; } else { + DBG_DUMP("%s\n", __FUNCTION__); DCF_HANDLE handle = MovieFast_Get_DCF_Handle(); DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID); if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2) 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 ed8ad953c..4d157c2e5 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -936,6 +936,7 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle() //#else //return g_dcf_hdl; //#endif +#if USE_RTOS_MMC_CHECK SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev->dcf_handle < 0) { @@ -944,6 +945,9 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle() } DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle); return mmc_dev->dcf_handle; +#else + return g_dcf_hdl; +#endif } INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms) { diff --git a/rtos/code/driver/na51089/include/sf_sd_common.h b/rtos/code/driver/na51089/include/sf_sd_common.h index 75255f960..bbaa6574b 100755 --- a/rtos/code/driver/na51089/include/sf_sd_common.h +++ b/rtos/code/driver/na51089/include/sf_sd_common.h @@ -22,7 +22,7 @@ #define MMC_DEV_MAX_NUM (2) -#define USE_RTOS_MMC_CHECK (0) +#define USE_RTOS_MMC_CHECK (1) typedef enum { 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 d6cd8ccae..72bc63846 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c +++ b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c @@ -164,15 +164,16 @@ static UINT32 sf_rtos_mmc_dev_space_check_full(MMC_DEV_TYPE mmc_dev) diskFree = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE); } - diskFree = diskFree/1024/1024; if(diskFree < 30) /* 30MB */ { + IsCardFull = TRUE; ret = 1; } else { + IsCardFull = FALSE; ret = 0; } DBG_WRN("[%d]sd card diskFree=%lluM, ret = %d\n", __LINE__, diskFree, ret); @@ -198,7 +199,6 @@ int SF_RtosStrgRegister(int devid, int mounted_state) else sf_rtos_mmc_dev[devid]->loop_state = MMC_DEV_LOOP_STATE_OFF; - DBG_WRN("devid = %d, state = %d\n", devid, mounted_state); return 0; }