Merge branch 'Branch_S550_Fast_Emmc' of 192.168.6.216:linux-em-group/s530-ntk into Branch_S550_Emmc

This commit is contained in:
xiehongyan 2023-12-29 19:37:38 +08:00
commit 400bebebd6
7 changed files with 36 additions and 23 deletions

View File

@ -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;
}

View File

@ -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
{

View File

@ -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

View File

@ -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)

View File

@ -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)
{

View File

@ -22,7 +22,7 @@
#define MMC_DEV_MAX_NUM (2)
#define USE_RTOS_MMC_CHECK (0)
#define USE_RTOS_MMC_CHECK (1)
typedef enum
{

View File

@ -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;
}