From 14c29b24bf7c391d70e68b140ee57d71628567d7 Mon Sep 17 00:00:00 2001 From: payton Date: Sun, 4 Feb 2024 17:28:44 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=87=E4=BB=B6=E7=B3=BB=E7=BB=9F=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=8F=AF=E8=83=BD=E6=BC=8F?= =?UTF-8?q?=E5=9B=BE=E9=97=AE=E9=A2=98=EF=BC=9B2.=E5=B1=8F=E8=94=BDiq=20db?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cardv/SrcCode/PrjCfg_HUNTING_S550.h | 2 +- .../source/cardv/SrcCode/System/sys_filesys.c | 6 ++ .../cardv/SrcCode/UIApp/MovieFast/MovieFast.c | 36 +++++++++- .../cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c | 67 ++++++++++++++----- .../UIApp/PhotoFast/PhotoFastSliceEncode.c | 17 +++-- .../driver/na51089/source/mcu/sf_sd_common.c | 14 ++-- 6 files changed, 106 insertions(+), 36 deletions(-) diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index d5dca0a1f..3b7d344bd 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -979,7 +979,7 @@ #define SF_TEST_OTA_FTP 0 #define CUSTOM_TEST_OTA_FTP 0 -#define FASTBOOT_WAIT_FILESYS_TIMEOUT_MS 10000 +#define FASTBOOT_WAIT_FILESYS_TIMEOUT_MS 15000 #define FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS 5000 #define SF_BATTERY_TEST DISABLE 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 13f4f28ed..7500ea75d 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -100,6 +100,12 @@ static void card_insert_job2(void) if (FST_STA_OK != ret) { DBG_ERR("Open err %d\r\n", ret); sf_set_emmc_err(1); + #if USE_RTOS_MMC_CHECK + SF_RtosStrgRegister(1, ret); + #endif + fastboot_set_done(BOOT_INIT_FILESYSOK_2); + printf("filesys2_init e err\r\n"); + return; } pStrg->GetParam(STRG_GET_DEVICE_PHY_SECTORS, (UINT32)&totoal_sectors, 0); if (totoal_sectors == 0) { 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 5eba92dad..30f360ca3 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -361,6 +361,34 @@ static void MovieFast_ShutDown(void) //DBG_DUMP("wait filesys close ...\n"); //FileSys_Close(FST_TIME_INFINITE); + + int cnt = 10; + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + INT32 ret = 0; + + while((cnt) && (mmc_dev != NULL)) + { + if(mmc_dev->dev_type == MMC_DEV_SD) + { + ret = (INT32)FileSys_GetParamEx('A', FST_PARM_TASK_STS, 0); + } + else + { + ret = (INT32)FileSys_GetParamEx('B', FST_PARM_TASK_STS, 0); + } + if(ret == FST_STA_BUSY) + { + DBG_DUMP("wait filesys BUSY ...\n"); + cnt--; + vos_util_delay_ms(200); + } + else { + break; + } + + } + + FileSys_CloseEx('A', FST_TIME_INFINITE); FileSys_CloseEx('B', FST_TIME_INFINITE); #if SF_IQ_TEST != ENABLE @@ -2030,7 +2058,7 @@ DBG_WRN(">>>>>>>>>>>>>>> movie thread <<<<<<<<<<\r\n"); /*.............sun chen@20240111 end.................*/ - nvt_cmdsys_runcmd("ae dbg 0 256 1 "); + // nvt_cmdsys_runcmd("ae dbg 0 256 1 "); //nvt_cmdsys_runcmd("awb dbg 0 16 1 "); HD_VIDEO_FRAME frame_capture = {0}; @@ -2125,8 +2153,8 @@ DBG_WRN(">>>>>>>>>>>>>>> movie thread <<<<<<<<<<\r\n"); } } while(1); - //nvt_cmdsys_runcmd("ae dbg 0 0"); - //nvt_cmdsys_runcmd("awb dbg 0 0"); + // nvt_cmdsys_runcmd("ae dbg 0 0"); + // nvt_cmdsys_runcmd("awb dbg 0 0"); vos_perf_mark(&g_alg_end_time); } vos_util_delay_ms(100); @@ -2431,11 +2459,13 @@ static void MovieFast_Close(void) EXIT: if(g_dcf_hdl >= 0){ + DBG_DUMP("g_dcf_hdl = %d\n", g_dcf_hdl); DCF_Close(g_dcf_hdl); g_dcf_hdl = -1; } #if (FS_MULTI_STRG_FUNC) if(g_dcf_hdl2 >= 0){ + DBG_DUMP("g_dcf_hdl2 = %d\n", g_dcf_hdl2); DCF_Close(g_dcf_hdl2); g_dcf_hdl2 = -1; } 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 1cc54d931..0a52bfe2d 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -802,12 +802,14 @@ INT32 PhotoFast_FileNaming_Close(void) if(DrvGPIO_GetPhotoMovieModeFromMonitor() != DX_HUNTING_MODE_PHOTO_MOVIE ){ if(g_dcf_hdl >= 0){ + DBG_DUMP("g_dcf_hdl = %d\n", g_dcf_hdl); DCF_Close(g_dcf_hdl); g_dcf_hdl = -1; } #if (FS_MULTI_STRG_FUNC) if(g_dcf_hdl2 >= 0){ + DBG_DUMP("g_dcf_hdl2 = %d\n", g_dcf_hdl2); DCF_Close(g_dcf_hdl2); g_dcf_hdl2 = -1; } @@ -983,13 +985,13 @@ INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms) // } // #endif static INT32 ret = E_SYS; - static int flag = 0; + // static int flag = 0; - if(flag) - { - return ret; - } - flag = 1; + // if(flag) + // { + // return ret; + // } + // flag = 1; if(gpio_getPin(GPIO_CARD_DETECT) == 0) { //DBG_WRN("BOOT_INIT_FILESYSOK\n"); @@ -1003,9 +1005,11 @@ INT32 PhotoFast_Wait_FileSys(UINT32 timeout_ms) ret = E_OK; } else { + sf_fastboot_msg_en(ENABLE); DBG_ERR("boot_init = BOOT_INIT_INVALID\n"); ret = E_SYS; } + // DBG_WRN("ret = %d, ret2 = %d\n", ret, ret2); return ret; // if(boot_init != BOOT_INIT_INVALID) // return fastboot_wait_done_timeout(boot_init, timeout_ms); @@ -1019,21 +1023,23 @@ INT32 PhotoFast_Wait_FileNaming(UINT32 timeout_ms) { //DCF_HANDLE handle = MovieFast_Get_DCF_Handle(); static INT32 ret = E_SYS; - static int flag = 0; + // static int flag = 0; BOOT_INIT boot_init = BOOT_INIT_INVALID; - if(flag) - { - return ret; - } - flag = 1; - SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); if(mmc_dev ==NULL) { + sf_fastboot_msg_en(ENABLE); DBG_ERR("No MMC_Dev Can use!\n"); return E_SYS; } + + // if(flag) + // { + // return ret; + // } + // flag = 1; + if(MMC_DEV_SD == mmc_dev->dev_type) { boot_init = BOOT_INIT_FILENAMINGOK; @@ -1051,9 +1057,11 @@ INT32 PhotoFast_Wait_FileNaming(UINT32 timeout_ms) ret = fastboot_wait_done_timeout(boot_init, timeout_ms); } else{ + sf_fastboot_msg_en(ENABLE); DBG_ERR("boot_init = BOOT_INIT_INVALID\n"); ret = E_SYS; } + // DBG_WRN("boot_init = %d, ret = %d\n", boot_init, ret); return ret; } @@ -1856,8 +1864,8 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) // nvt_cmdsys_runcmd("vprc info"); // nvt_cmdsys_runcmd("ctl_ipp dump_hdl_all"); //ISPT_TOTAL_GAIN total; - nvt_cmdsys_runcmd("ae dbg 0 256 1 "); - nvt_cmdsys_runcmd("ae dbg 0 16 1 "); + // nvt_cmdsys_runcmd("ae dbg 0 256 1 "); + // nvt_cmdsys_runcmd("ae dbg 0 16 1 "); // isp_dbg_set_dbg_mode(0, 0x0202002 ); // nvt_cmdsys_runcmd("iq dbg 0 0 "); @@ -2069,8 +2077,8 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) VOS_TICK tick; PhotoFast_GetTick(video_cap_frame.count, &tick); - nvt_cmdsys_runcmd("ae dbg 0 0"); - nvt_cmdsys_runcmd("awb dbg 0 0"); + // nvt_cmdsys_runcmd("ae dbg 0 0"); + // nvt_cmdsys_runcmd("awb dbg 0 0"); DBG_DUMP("*** trigger frame count = %llu (start from 1) frame timestamp = %llu, tick=%lu ms , \n", video_cap_frame.count, video_cap_frame.timestamp, tick); /* UINT64, use %llu */ //Set_AEMODE(1); } @@ -2343,6 +2351,31 @@ static void PhotoFast_ShutDown(void) // } #endif // FileSys_Close(FST_TIME_INFINITE); + int cnt = 10; + SF_RTOS_ST_MMC_DEV *mmc_dev = SF_RtosStrgCheckWorkableDev(); + INT32 ret = 0; + + while((cnt) && (mmc_dev != NULL)) + { + if(mmc_dev->dev_type == MMC_DEV_SD) + { + ret = (INT32)FileSys_GetParamEx('A', FST_PARM_TASK_STS, 0); + } + else + { + ret = (INT32)FileSys_GetParamEx('B', FST_PARM_TASK_STS, 0); + } + if(ret == FST_STA_BUSY) + { + DBG_DUMP("wait filesys BUSY ...\n"); + cnt--; + vos_util_delay_ms(200); + } + else { + break; + } + + } FileSys_CloseEx('A', FST_TIME_INFINITE); FileSys_CloseEx('B', FST_TIME_INFINITE); #if SF_IQ_TEST != ENABLE 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 e8c192522..6f64175fc 100644 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c @@ -2373,7 +2373,8 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) * Output jpg file ******************************************************************/ extern INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId, char* Path); - INT32 waitFalg = 0; + INT32 waitFalg = 1; + static int UsrmemFlag = 0; #if SF_NO_SD_SEND == ENABLE // if( // PhotoFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK && @@ -2384,28 +2385,26 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) // waitFalg = 1; // } // } - if(PhotoFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) != E_OK){ - waitFalg = 1; - } - if(PhotoFast_Wait_FileNaming(FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) != E_OK){ - waitFalg = 1; - } + if(PhotoFast_Wait_FileSys(FASTBOOT_WAIT_FILESYS_TIMEOUT_MS) == E_OK + && PhotoFast_Wait_FileNaming(FASTBOOT_WAIT_FILENAMING_TIMEOUT_MS) == E_OK){ + waitFalg = 0; + } if(waitFalg) { - if(sf_is_emmc_err()) + if((sf_is_emmc_err()) && (!UsrmemFlag)) { sf_fastboot_msg_en(ENABLE); DBG_WRN("filesys not ready, store data into mem\n"); SYS_USRMEM usrmem = {0}; - if(sys_usrmem_init(&usrmem) == E_OK){ sys_usrmem_write_photo( &usrmem, (UINT32) queue_ele_in->jpg_thumb_addr, queue_ele_in->jpg_thumb_size ); + UsrmemFlag = 1; } } } 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 681c42545..eccc26b97 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c +++ b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c @@ -45,10 +45,10 @@ #include #include "sf_sd_common.h" -static BOOL IsCardFull = FALSE; +static BOOL IsCardFull = TRUE; SF_CALLBACK_SD_CMD g_fpSd_Exist_CB = NULL; extern BOOL DrvCARD_DetStrgCard(void); -static BOOL IsEmmcFull = FALSE; +static BOOL IsEmmcFull = TRUE; static BOOL IsEmmcErr = FALSE; SF_RTOS_ST_MMC_DEV *sf_rtos_mmc_dev[MMC_DEV_MAX_NUM] = {NULL}; @@ -86,8 +86,9 @@ UINT32 sf_check_card_full(void) } else { - ret = FALSE; - //printf("%s:%d sd card no full diskFree=%lu",__FUNCTION__,__LINE__,diskFree); + IsCardFull = FALSE; + ret = FALSE; + //printf("%s:%d sd card no full diskFree=%lu",__FUNCTION__,__LINE__,diskFree); } printf("[%s:%d]sd card diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree); @@ -121,8 +122,9 @@ UINT32 sf_check_emmc_full(void) } else { - ret = FALSE; - //printf("%s:%d sd card no full diskFree=%lu",__FUNCTION__,__LINE__,diskFree); + IsEmmcFull = FALSE; + ret = FALSE; + //printf("%s:%d sd card no full diskFree=%lu",__FUNCTION__,__LINE__,diskFree); } printf("[%s:%d]emmc diskFree=%lluM\n", __FUNCTION__, __LINE__, diskFree);