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 *sf_mmc_dev[MMC_DEV_MAX_NUM] = {NULL};
SF_ST_MMC_DEV *pMMCDev = NULL; SF_ST_MMC_DEV *pMMCDev = NULL;
@ -48,22 +51,21 @@ SF_ST_MMC_DEV *SF_GetMMCDev(void)
return pMMCDev; return pMMCDev;
} }
void SF_StrgInit(void) void SF_StrgInit(void) {
{ for (int i = 0; i < MMC_DEV_MAX_NUM; i++) {
for(int i = 0; i < MMC_DEV_MAX_NUM; i++)
{
sf_mmc_dev[i] = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV)); 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); 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]->dcf_handle = -1;
sf_mmc_dev[i]->dev_type = MMC_DEV_NO; sf_mmc_dev[i]->dev_type = MMC_DEV_NO;
sf_mmc_dev[i]->node = MMC_DEV_NODE_STATE_NO_EXIST; 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]->moumted_state = MMC_DEV_MOUNT_STATE_UNMOUNTED;
sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; 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]->loop_state = MMC_DEV_LOOP_STATE_OFF;
} }
pMMCDev = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV));
} }
void SF_StrgUnInit(void) void SF_StrgUnInit(void)
@ -101,7 +103,7 @@ static UINT32 SF_StrgSpaceCheckFull(MMC_DEV_TYPE mmc_dev)
diskFree = diskFree/1024/1024; diskFree = diskFree/1024/1024;
if(diskFree < 30) /* 30MB */ if(diskFree < MIN_DISK_FREE_SIZE_MB) /* 30MB */
{ {
ret = 1; 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", MLOGD("node:%d, mount:%d, loop:%d\n",
sf_mmc_dev[i]->node, sf_mmc_dev[i]->moumted_state, sf_mmc_dev[i]->node, sf_mmc_dev[i]->moumted_state,
@ -321,6 +323,7 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void)
else else
{ {
MLOGD("Strg Check, workable_dev = %d\n", workable_dev); MLOGD("Strg Check, workable_dev = %d\n", workable_dev);
SF_SetMMCDev(sf_mmc_dev[workable_dev]);
return 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) 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); int ret = pthread_create(&MMCMonitorTskCfg.TskId, NULL, mmc_monitoring_thread, NULL);
if(ret != SF_SUCCESS) if(ret != SF_SUCCESS)
{ {
@ -346,7 +352,7 @@ int sf_mmc_dev_check_start(void)
return ret; return ret;
} }
MMCMonitorTskCfg.IsRun = 1; MMCMonitorTskCfg.IsRun = 1;
MLOGD("mmc_dev check create success!\n"); MLOGD("00 mmc_dev check create success!\n");
return 0; return 0;
} }

View File

@ -32,7 +32,7 @@
#define EMMC_DEVICE_NAME "/dev/mmcblk1p1" #define EMMC_DEVICE_NAME "/dev/mmcblk1p1"
#define EMMC_MOUNT_ROOT "/mnt/sd2" #define EMMC_MOUNT_ROOT "/mnt/sd2"
#define USE_MMC_DEV_CHECK (0) #define USE_MMC_DEV_CHECK (1)
typedef enum typedef enum
{ {

View File

@ -348,9 +348,7 @@ void System_OnStrgInit_FS(void)
GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool); GxStrg_SetConfigEx(STRG_ID_SD, FILE_CFG_BUF, (UINT32)&Pool);
#endif #endif
} }
#if USE_MMC_DEV_CHECK
SF_StrgInit();// 初始化sf_mmc设备Obj
#endif
#if !defined(__FREERTOS) #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 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 //#else
//return g_dcf_hdl; //return g_dcf_hdl;
//#endif //#endif
#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->dcf_handle < 0)
{ {
DBG_ERR("No MMC_Dev Can use!\n"); DBG_ERR("No MMC_Dev Can use!\n");
return -1; 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; return mmc_dev->dcf_handle;
#else
return g_dcf_hdl;
#endif
} }
INT32 MovieFast_Wait_FileSys(UINT32 timeout_ms) 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"); DBG_ERR("Exceed max dcf file!\r\n");
pFileName[0] = '\0'; pFileName[0] = '\0';
} else { } else {
DBG_DUMP("%s\n", __FUNCTION__);
DCF_HANDLE handle = MovieFast_Get_DCF_Handle(); DCF_HANDLE handle = MovieFast_Get_DCF_Handle();
DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID); DCF_GetNextIDEx(handle, &nextFolderID,&nextFileID);
if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2) if(DrvGPIO_GetPhotoMovieModeFromMonitor() == DX_HUNTING_MODE_MOVIE2)

View File

@ -936,6 +936,7 @@ DCF_HANDLE PhotoFast_Get_DCF_Handle()
//#else //#else
//return g_dcf_hdl; //return g_dcf_hdl;
//#endif //#endif
#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->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); DBG_WRN("photofast DCF_GET_HANDLE, %d\n", mmc_dev->dcf_handle);
return mmc_dev->dcf_handle; return mmc_dev->dcf_handle;
#else
return g_dcf_hdl;
#endif
} }
INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms) INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms)
{ {

View File

@ -22,7 +22,7 @@
#define MMC_DEV_MAX_NUM (2) #define MMC_DEV_MAX_NUM (2)
#define USE_RTOS_MMC_CHECK (0) #define USE_RTOS_MMC_CHECK (1)
typedef enum 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 = FileSys_GetDiskInfoEx('B', FST_INFO_FREE_SPACE);
} }
diskFree = diskFree/1024/1024; diskFree = diskFree/1024/1024;
if(diskFree < 30) /* 30MB */ if(diskFree < 30) /* 30MB */
{ {
IsCardFull = TRUE;
ret = 1; ret = 1;
} }
else else
{ {
IsCardFull = FALSE;
ret = 0; ret = 0;
} }
DBG_WRN("[%d]sd card diskFree=%lluM, ret = %d\n", __LINE__, diskFree, ret); 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 else
sf_rtos_mmc_dev[devid]->loop_state = MMC_DEV_LOOP_STATE_OFF; sf_rtos_mmc_dev[devid]->loop_state = MMC_DEV_LOOP_STATE_OFF;
DBG_WRN("devid = %d, state = %d\n", devid, mounted_state); DBG_WRN("devid = %d, state = %d\n", devid, mounted_state);
return 0; return 0;
} }