您好,TI 工程师:
环境:传感器的输出为 YUV_422、viss 和 aewb 关闭;
问题描述:运行 run_app_multi_cam.sh 时、输出视频非常慢/不流畅/ 非常落后;
输出如下:
e2e.ti.com/.../cb3be7912b5b3340b483315eaf35820d.mp4
1) 1) LDC 是否完全支持解析 YUV_422并将其转换为 NV12格式?
2) 2)视频的问题在哪里是非常卡住的? 有什么想法或建议吗?

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,TI 工程师:
环境:传感器的输出为 YUV_422、viss 和 aewb 关闭;
问题描述:运行 run_app_multi_cam.sh 时、输出视频非常慢/不流畅/ 非常落后;
输出如下:
e2e.ti.com/.../cb3be7912b5b3340b483315eaf35820d.mp4
1) 1) LDC 是否完全支持解析 YUV_422并将其转换为 NV12格式?
2) 2)视频的问题在哪里是非常卡住的? 有什么想法或建议吗?

您好!
1) 1)演示在 SDK 中运行多程序、但我使用输出 YUV422格式的摄像头传感器。 在多演示代码中、我刚刚禁用了 viss 和 aewb。
2) 图像分辨率为1920x1080。 以下是来自传感器的信息:

3)
Enter Choice: p Summary of CPU load, ==================== CPU: mpu1_0: TOTAL LOAD = 0. 8 % ( HWI = 0. 2 %, SWI = 0. 0 % ) CPU: mcu2_0: TOTAL LOAD = 8. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: mcu2_1: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c6x_1: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c6x_2: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c7x_1: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) HWA performance statistics, =========================== HWA: LDC : LOAD = 0.54 % ( 2 MP/s ) HWA: MSC0: LOAD = 0.38 % ( 2 MP/s ) HWA: MSC1: LOAD = 0.38 % ( 2 MP/s ) DDR performance statistics, =========================== DDR: READ BW: AVG = 210 MB/s, PEAK = 3579 MB/s DDR: WRITE BW: AVG = 250 MB/s, PEAK = 1551 MB/s DDR: TOTAL BW: AVG = 460 MB/s, PEAK = 5130 MB/s Detailed CPU performance/memory statistics, =========================================== DDR_SHARED_MEM: Alloc's: 44 alloc's of 129104960 bytes DDR_SHARED_MEM: Free's : 0 free's of 0 bytes DDR_SHARED_MEM: Open's : 44 allocs of 129104960 bytes DDR_SHARED_MEM: Total size: 536870912 bytes CPU: mcu2_0: TASK: IPC_RX: 0. 0 % CPU: mcu2_0: TASK: REMOTE_SRV: 0. 1 % CPU: mcu2_0: TASK: LOAD_TEST: 0. 0 % CPU: mcu2_0: TASK: TIVX_CPU_0: 0. 0 % CPU: mcu2_0: TASK: TIVX_VPAC_N: 0. 0 % CPU: mcu2_0: TASK: TIVX_VPAC_L: 0. 2 % CPU: mcu2_0: TASK: TIVX_VPAC_M: 0.48 % CPU: mcu2_0: TASK: TIVX_VPAC_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_VPAC_V: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT1: 0. 2 % CPU: mcu2_0: TASK: TIVX_CAPT2: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP1: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP2: 0. 0 % CPU: mcu2_0: TASK: TIVX_CSITX: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT3: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT4: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT5: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT6: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT7: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT8: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16701440 B ( 99 % unused) CPU: mcu2_0: HEAP: L3_MEM: size = 262144 B, free = 261888 B ( 99 % unused) CPU: mcu2_1: TASK: IPC_RX: 0. 0 % CPU: mcu2_1: TASK: REMOTE_SRV: 0. 0 % CPU: mcu2_1: TASK: LOAD_TEST: 0. 0 % CPU: mcu2_1: TASK: TIVX_SDE: 0. 0 % CPU: mcu2_1: TASK: TIVX_DOF: 0. 0 % CPU: mcu2_1: TASK: TIVX_CPU_1: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_RX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused) CPU: mcu2_1: HEAP: L3_MEM: size = 262144 B, free = 262144 B (100 % unused) CPU: c6x_1: TASK: IPC_RX: 0. 0 % CPU: c6x_1: TASK: REMOTE_SRV: 0. 0 % CPU: c6x_1: TASK: LOAD_TEST: 0. 0 % CPU: c6x_1: TASK: TIVX_CPU: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_RX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused) CPU: c6x_1: HEAP: L2_MEM: size = 229376 B, free = 229376 B (100 % unused) CPU: c6x_1: HEAP: DDR_SCRATCH_MEM: size = 50331648 B, free = 50331648 B (100 % unused) CPU: c6x_2: TASK: IPC_RX: 0. 0 % CPU: c6x_2: TASK: REMOTE_SRV: 0. 0 % CPU: c6x_2: TASK: LOAD_TEST: 0. 0 % CPU: c6x_2: TASK: TIVX_CPU: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_RX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused) CPU: c6x_2: HEAP: L2_MEM: size = 229376 B, free = 229376 B (100 % unused) CPU: c6x_2: HEAP: DDR_SCRATCH_MEM: size = 50331648 B, free = 50331648 B (100 % unused) CPU: c7x_1: TASK: IPC_RX: 0. 0 % CPU: c7x_1: TASK: REMOTE_SRV: 0. 0 % CPU: c7x_1: TASK: LOAD_TEST: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_RX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: HEAP: DDR_LOCAL_MEM: size = 268435456 B, free = 268435200 B ( 99 % unused) CPU: c7x_1: HEAP: L3_MEM: size = 8159232 B, free = 8159232 B (100 % unused) CPU: c7x_1: HEAP: L2_MEM: size = 458752 B, free = 458752 B (100 % unused) CPU: c7x_1: HEAP: L1_MEM: size = 16384 B, free = 16384 B (100 % unused) CPU: c7x_1: HEAP: DDR_SCRATCH_MEM: size = 385875968 B, free = 385875968 B (100 % unused) GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 4) NODE: CAPTURE1: capture_node: avg = 6015366 usecs, min/max = 32223 / 23297913 usecs, #executions = 4 NODE: VPAC_LDC1: ldc_node: avg = 15062 usecs, min/max = 13954 / 17285 usecs, #executions = 4 NODE: VPAC_MSC1: mosaic_node: avg = 40323 usecs, min/max = 38415 / 42025 usecs, #executions = 4 NODE: DISPLAY1: DisplayNode: avg = 3285 usecs, min/max = 160 / 8987 usecs, #executions = 4 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 7789266 usecs, min/max = 33858 / 23297979 usecs, #executions = 3 PERF: TOTAL: 0.12 FPS app_run_graph_for_one_pipeline: frame 7 beginning ========================= Demo : Camera Demo ========================= s: Save CSIx, VISS and LDC outputs p: Print performance statistics x: Exit Enter Choice: ========================= Demo : Camera Demo ========================= s: Save CSIx, VISS and LDC outputs p: Print performance statistics x: Exit Enter Choice: [MCU2_0] 123.059100 s: ========================================================== [MCU2_0] 123.059203 s: Capture Status: Instance|0 [MCU2_0] 123.059241 s: ========================================================== [MCU2_0] 123.059287 s: overflowCount: 0 [MCU2_0] 123.059320 s: spuriousUdmaIntrCount: 0 [MCU2_0] 123.059355 s: frontFIFOOvflCount: 0 [MCU2_0] 123.059385 s: crcCount: 0 [MCU2_0] 123.059414 s: eccCount: 0 [MCU2_0] 123.059443 s: correctedEccCount: 0 [MCU2_0] 123.059476 s: dataIdErrorCount: 0 [MCU2_0] 123.059508 s: invalidAccessCount: 0 [MCU2_0] 123.059541 s: invalidSpCount: 0 [MCU2_0] 123.059619 s: strmFIFOOvflCount[0]: 0 [MCU2_0] 123.059654 s: Channel Num | Frame Queue Count | Frame De-queue Count | Frame Drop Count | Error Frame Count | [MCU2_0] 123.059811 s: 0 | 8 | 7 | 849 | 0 | [MCU2_0] 123.059893 s: 1 | 8 | 7 | 869 | 0 | [MCU2_0] 123.059968 s: 2 | 8 | 6 | 436 | 0 | [MCU2_0] 123.060113 s: 3 | 8 | 7 | 150 | 0 | app_run_graph_for_one_pipeline: frame 8 beginning app_run_graph_for_one_pipeline: frame 9 beginning
是,我已经尝试执行单个演示、fps = 30、没关系、是正常的。 四个摄像头传感器正常独立工作。
这意味着传感器正常。
关于多演示, 我打印了很多次, capture_node : Avg is increed :
GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 1) NODE: CAPTURE1: capture_node: avg = 611955 usecs, min/max = 611955 / 611955 usecs, #executions = 1 NODE: VPAC_LDC1: ldc_node: avg = 14028 usecs, min/max = 14028 / 14028 usecs, #executions = 1 NODE: VPAC_MSC1: mosaic_node: avg = 38384 usecs, min/max = 38384 / 38384 usecs, #executions = 1 NODE: DISPLAY1: DisplayNode: avg = 86 usecs, min/max = 86 / 86 usecs, #executions = 1 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 208992 usecs, min/max = 7 / 626921 usecs, #executions = 3 PERF: TOTAL: 4.78 FPS ------------------------------------------------------------------ GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 32) NODE: CAPTURE1: capture_node: avg = 1187878 usecs, min/max = 33258 / 16263708 usecs, #executions = 32 NODE: VPAC_LDC1: ldc_node: avg = 14054 usecs, min/max = 13917 / 14303 usecs, #executions = 32 NODE: VPAC_MSC1: mosaic_node: avg = 14735 usecs, min/max = 11258 / 38654 usecs, #executions = 32 NODE: DISPLAY1: DisplayNode: avg = 10453 usecs, min/max = 86 / 14004 usecs, #executions = 32 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 1206559 usecs, min/max = 33312 / 16263963 usecs, #executions = 31 PERF: TOTAL: 0.82 FPS ------------------------------------------------------------------ GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 35) NODE: CAPTURE1: capture_node: avg = 1335939 usecs, min/max = 32220 / 16263708 usecs, #executions = 35 NODE: VPAC_LDC1: ldc_node: avg = 14060 usecs, min/max = 13917 / 14303 usecs, #executions = 35 NODE: VPAC_MSC1: mosaic_node: avg = 14458 usecs, min/max = 11258 / 38654 usecs, #executions = 35 NODE: DISPLAY1: DisplayNode: avg = 10946 usecs, min/max = 86 / 16585 usecs, #executions = 35 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 2915655 usecs, min/max = 32510 / 8680513 usecs, #executions = 3 PERF: TOTAL: 0.34 FPS ------------------------------------------------------------------ GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 38) NODE: CAPTURE1: capture_node: avg = 1861639 usecs, min/max = 32210 / 23918934 usecs, #executions = 38 NODE: VPAC_LDC1: ldc_node: avg = 14067 usecs, min/max = 13917 / 14303 usecs, #executions = 38 NODE: VPAC_MSC1: mosaic_node: avg = 14224 usecs, min/max = 11258 / 38654 usecs, #executions = 38 NODE: DISPLAY1: DisplayNode: avg = 11179 usecs, min/max = 86 / 16585 usecs, #executions = 38 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 8091629 usecs, min/max = 45 / 23919146 usecs, #executions = 3 PERF: TOTAL: 0.12 FPS ------------------------------------------------------------------ GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 44) NODE: CAPTURE1: capture_node: avg = 2084093 usecs, min/max = 32210 / 23918934 usecs, #executions = 44 NODE: VPAC_LDC1: ldc_node: avg = 14072 usecs, min/max = 13917 / 14303 usecs, #executions = 44 NODE: VPAC_MSC1: mosaic_node: avg = 13853 usecs, min/max = 11258 / 38654 usecs, #executions = 44 NODE: DISPLAY1: DisplayNode: avg = 10880 usecs, min/max = 86 / 16585 usecs, #executions = 44 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 3445017 usecs, min/max = 32953 / 12652451 usecs, #executions = 6 PERF: TOTAL: 0.29 FPS ------------------------------------------------------------------ GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 47) NODE: CAPTURE1: capture_node: avg = 2322102 usecs, min/max = 32210 / 23918934 usecs, #executions = 47 NODE: VPAC_LDC1: ldc_node: avg = 14081 usecs, min/max = 13917 / 14521 usecs, #executions = 47 NODE: VPAC_MSC1: mosaic_node: avg = 13705 usecs, min/max = 11258 / 38654 usecs, #executions = 47 NODE: DISPLAY1: DisplayNode: avg = 11104 usecs, min/max = 86 / 16585 usecs, #executions = 47 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 5813401 usecs, min/max = 32887 / 17373475 usecs, #executions = 3 PERF: TOTAL: 0.17 FPS
您能看到什么吗? 非常感谢!
您好!
通过打印、我能够在删除队列成员时找到卡纸。
API: vxGraphParameterDequeueDoneRef()
/* wait until a reference is dequeued */
do
{
ref = NULL;
status = tivxDataRefQueueDequeueDoneRef(data_ref_q, &ref);
if((status == (vx_status)VX_SUCCESS) && (ref != NULL))
{
/* reference is dequeued break from do - while loop with success */
exit_loop = (vx_bool)vx_true_e;
}
else
{
/* wait for "ref available for dequeue" event */
status = tivxDataRefQueueWaitDoneRef(data_ref_q,
graph->timeout_val);
if(status!=(vx_status)VX_SUCCESS)
{
/* some error in waiting for event, break loop with error */
exit_loop = (vx_bool)vx_true_e;
}
}
} while(exit_loop == (vx_bool)vx_false_e);
我不知道这是什么原因,我也不知道。
谢谢。
[MCU2_0] 824.388228 s: Channel Num | Frame Queue Count | Frame De-queue Count | Frame Drop Count | Error Frame Count | [MCU2_0] 824.388301 s: 0 | 8 | 7 | 896 | 0 | [MCU2_0] 824.388372 s: 1 | 8 | 7 | 1086 | 0 | [MCU2_0] 824.388444 s: 2 | 8 | 6 | 81 | 0 | [MCU2_0] 824.388515 s: 3 | 8 | 7 | 745 | 0 |
通过打印,确定丢失的帧的位置。
此外,我看到相关的问题,与这个问题一致,但没有解决。
TDA4VM:TDA4运行 run_app_multi_cam.sh 显示8MP 摄像头问题-处理器论坛-处理器- TI E2E 支持论坛
我正在寻找如何更改缓冲区大小和 虚拟通道映射。
如果您知道它在哪里、您能告诉我吗?
谢谢。
这是通道配置和日志:
sensor_driver cfg:
static int32_t imx390c_yuv_Config(uint32_t chId, void *pSensorHdl, uint32_t sensor_features_requested)
{
int32_t status = 0;
I2cParams *deserCfg = NULL;
I2cParams *serCfg = NULL;
int8_t ub9xxInstanceId = getUB960InstIdFromChId(chId);
uint32_t i2cInstId;
IssSensors_Handle * pSenHandle = (IssSensors_Handle*)pSensorHdl;
IssSensor_CreateParams * pCreatePrms;
assert(NULL != pSenHandle);
pCreatePrms = pSenHandle->createPrms;
assert(NULL != pCreatePrms);
printf("######func:%s, line:%d, ub9xxInstanceId = %#x, chId=%#x, sensor_features_requested = %#x\n", __func__, __LINE__, ub9xxInstanceId, chId, sensor_features_requested);
deserCfg = imx390c_yuvSensorRegConfig.desCfgPreScript;
serCfg = imx390c_yuvSensorRegConfig.serCfgPreScript;
i2cInstId = pCreatePrms->i2cInstId;//pCreatePrms->i2cInstId;
printf("######func:%s, line:%d, i2cInstId = %#x\n", __func__, __LINE__, i2cInstId);
if(NULL != deserCfg)
{
status = ub960_cfgScript(deserCfg, ub9xxInstanceId);
}
if(0 == status)
{
if(NULL != serCfg)
{
appLogWaitMsecs(100);
printf("===ub953_cfgScript chId=%d i2cAddrSer=%x\n",chId, pCreatePrms->i2cAddrSer[chId]);
status = ub953_cfgScript(i2cInstId, pCreatePrms->i2cAddrSer[chId], serCfg);
}
}
return (status);
}
capture node cfg:
static vx_status configure_capture_params(vx_context context, CaptureObj *captureObj, SensorObj *sensorObj)
{
vx_status status = VX_SUCCESS;
vx_uint32 num_capt_instances;
vx_int32 id, lane, ch, vcNum;
int32_t ch_mask = sensorObj->ch_mask;
if(ch_mask > 0xF)
{
num_capt_instances= 2;
}
else
{
num_capt_instances= 1;
}
captureObj->capture_format = sensorObj->sensor_out_format;
tivx_capture_params_init(&captureObj->params);
if (captureObj->enable_error_detection || captureObj->test_mode)
{
captureObj->params.timeout = 90;
captureObj->params.timeoutInitial = 500;
}
captureObj->params.numInst = num_capt_instances;
captureObj->params.numCh = sensorObj->num_cameras_enabled;
for(id = 0; id < num_capt_instances; id++)
{
captureObj->params.instId[id] = id;
captureObj->params.instCfg[id].enableCsiv2p0Support = (uint32_t)vx_true_e;
captureObj->params.instCfg[id].numDataLanes = sensorObj->sensorParams.sensorInfo.numDataLanes;
APP_PRINTF("captureObj->params.numDataLanes = %d \n", captureObj->params.instCfg[id].numDataLanes);
APP_PRINTF("captureObj->params.csi_laneBandSpeed = %#x \n", sensorObj->sensorParams.sensorInfo.csi_laneBandSpeed);
captureObj->params.instCfg[id].laneBandSpeed = sensorObj->sensorParams.sensorInfo.csi_laneBandSpeed;
for (lane = 0; lane < captureObj->params.instCfg[id].numDataLanes; lane++)
{
captureObj->params.instCfg[id].dataLanesMap[lane] = lane + 1;
APP_PRINTF("captureObj->params.dataLanesMap[%d] = %d \n",
lane,
captureObj->params.instCfg[id].dataLanesMap[lane]);
}
}
ch = 0;/*Camera Physical Channel Number*/
vcNum = 0;/*CSI2 Virtual Channel Number*/
id = 0;/*CSI2 Instance ID*/
while(ch_mask > 0)
{
if(ch > 3)
{
id = 1;
}
else
{
id = 0;
}
if(ch_mask & 0x1)
{
captureObj->params.chVcNum[vcNum] = ch%4;
captureObj->params.chInstMap[vcNum] = id;
vcNum++;
}
ch++;
ch_mask = ch_mask >> 1;
}
captureObj->config = vxCreateUserDataObject(context, "tivx_capture_params_t", sizeof(tivx_capture_params_t), &captureObj->params);
status = vxGetStatus((vx_reference)captureObj->config);
if(status != VX_SUCCESS)
{
printf("[CAPTURE_MODULE] - Unable to create capture config object! \n");
}
else
{
vxSetReferenceName((vx_reference)captureObj->config, "capture_node_config");
}
return status;
}
log:
[MCU2_0] 62.008877 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_PWRON
[MCU2_0] 62.008954 s: IM_SENSOR_CMD_PWRON : channel_mask = 0xf
[MCU2_0] 62.009363 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CONFIG
[MCU2_0] 62.009427 s: Application requested features = 0x120
[MCU2_0]
[MCU2_0] 62.009473 s: UB960 config start
[MCU2_0] 62.265383 s: End of UB960 config
[MCU2_0] 62.265453 s: UB960 config start
[MCU2_0] 62.521385 s: End of UB960 config
[MCU2_0] 62.521451 s: Configuring camera # 0
[MCU2_0] 62.521548 s: ######func:imx390c_yuv_Config, line:204, ub9xxInstanceId = 0x0, chId=0x0, sensor_features_requested = 0x120
[MCU2_0] 62.521624 s: ######func:imx390c_yuv_Config, line:209, i2cInstId = 0x6
[MCU2_0] 62.521661 s: UB960 config start
[MCU2_0] 62.553383 s: End of UB960 config
[MCU2_0] 62.653336 s: ===ub953_cfgScript chId=0 i2cAddrSer=74
[MCU2_0] 62.653386 s: ub953 config start : slaveAddr = 0x74
[MCU2_0] 63.014391 s: End of UB953 config
[MCU2_0] 63.014459 s: Configuring camera # 1
[MCU2_0] 63.014557 s: ######func:imx390c_yuv_Config, line:204, ub9xxInstanceId = 0x0, chId=0x1, sensor_features_requested = 0x120
[MCU2_0] 63.014633 s: ######func:imx390c_yuv_Config, line:209, i2cInstId = 0x6
[MCU2_0] 63.014669 s: UB960 config start
[MCU2_0] 63.046392 s: End of UB960 config
[MCU2_0] 63.146336 s: ===ub953_cfgScript chId=1 i2cAddrSer=76
[MCU2_0] 63.146386 s: ub953 config start : slaveAddr = 0x76
[MCU2_0] 63.507387 s: End of UB953 config
[MCU2_0] 63.507453 s: Configuring camera # 2
[MCU2_0] 63.507552 s: ######func:imx390c_yuv_Config, line:204, ub9xxInstanceId = 0x0, chId=0x2, sensor_features_requested = 0x120
[MCU2_0] 63.507628 s: ######func:imx390c_yuv_Config, line:209, i2cInstId = 0x6
[MCU2_0] 63.507666 s: UB960 config start
[MCU2_0] 63.539385 s: End of UB960 config
[MCU2_0] 63.639333 s: ===ub953_cfgScript chId=2 i2cAddrSer=78
[MCU2_0] 63.639382 s: ub953 config start : slaveAddr = 0x78
[MCU2_0] 64.000395 s: End of UB953 config
[MCU2_0] 64.000462 s: Configuring camera # 3
[MCU2_0] 64.000558 s: ######func:imx390c_yuv_Config, line:204, ub9xxInstanceId = 0x0, chId=0x3, sensor_features_requested = 0x120
[MCU2_0] 64.000631 s: ######func:imx390c_yuv_Config, line:209, i2cInstId = 0x6
[MCU2_0] 64.000669 s: UB960 config start
[MCU2_0] 64.032386 s: End of UB960 config
[MCU2_0] 64.132332 s: ===ub953_cfgScript chId=3 i2cAddrSer=7a
[MCU2_0] 64.132381 s: ub953 config start : slaveAddr = 0x7a
64.493668 s: ISS: Initializing sensor [SG2-IMX390C-5200-FPDLINK] ... Done !!!
Sensor init done!
captureObj->params.numDataLanes = 4
captureObj->params.csi_laneBandSpeed = 0xa
captureObj->params.dataLanesMap[0] = 1
captureObj->params.dataLanesMap[1] = 2
captureObj->params.dataLanesMap[2] = 3
captureObj->params.dataLanesMap[3] = 4
关于 Virture 通道,在 configure_capture_params()中 :
ch = 0;/*Camera Physical Channel Number*/
vcNum = 0;/*CSI2 Virtual Channel Number*/
id = 0;/*CSI2 Instance ID*/
printf("######func:%s, line:%d, 1_ch_mask:%#x\n", __func__, __LINE__, ch_mask);
while(ch_mask > 0)
{
if(ch > 3)
{
id = 1;
}
else
{
id = 0;
}
if(ch_mask & 0x1)
{
captureObj->params.chVcNum[vcNum] = ch%4;
captureObj->params.chInstMap[vcNum] = id;
vcNum++;
}
ch++;
ch_mask = ch_mask >> 1;
}
printf("######func:%s, line:%d, ch:%#x, vcNum:%#x, id:%d\n", __func__, __LINE__, ch, vcNum, id);
printf("######func:%s, line:%d, 2_ch_mask:%#x\n", __func__, __LINE__, ch_mask);
日志:
captureObj->params.numDataLanes = 4 captureObj->params.csi_laneBandSpeed = 0xe captureObj->params.dataLanesMap[0] = 1 captureObj->params.dataLanesMap[1] = 2 captureObj->params.dataLanesMap[2] = 3 captureObj->params.dataLanesMap[3] = 4 ######func:configure_capture_params, line:119, 1_ch_mask:0xf ######func:configure_capture_params, line:139, ch:0x4, vcNum:0x4, id:0 ######func:configure_capture_params, line:140, 2_ch_mask:0
Virture 通道正常。
---------------------------------------------------------------------------------------------------------
关于 buf 深度、
我将 "#define APP_MAX_BUFQ_DEPTH (4)"更 改为"6"、
---------------------------------------------------------------------------------------------------------
所有这些尝试都没有得到改善。
传感器配置:
static IssSensor_CreateParams imx390c_yuvCreatePrms = {
CAMERA_SG2_IMX390C_5200_FPDLINK, /*sensor name*/
0x6, /*i2cInstId*/
{
SENSOR_0_I2C_ALIAS, SENSOR_1_I2C_ALIAS, SENSOR_2_I2C_ALIAS, SENSOR_3_I2C_ALIAS,
SENSOR_4_I2C_ALIAS, SENSOR_5_I2C_ALIAS, SENSOR_6_I2C_ALIAS, SENSOR_7_I2C_ALIAS
},/*i2cAddrSensor*/
{
SER_0_I2C_ALIAS, SER_1_I2C_ALIAS, SER_2_I2C_ALIAS, SER_3_I2C_ALIAS,
SER_4_I2C_ALIAS, SER_5_I2C_ALIAS, SER_6_I2C_ALIAS, SER_7_I2C_ALIAS
},/*i2cAddrSer*/
/*IssSensor_Info*/
{
{
IMX390C_YUV_OUT_WIDTH, /*width=1920*/
IMX390C_YUV_OUT_HEIGHT, /*height=1080*/
1, /*num_exposures*/
vx_false_e, /*line_interleaved*/
{
{VX_DF_IMAGE_UYVY, 7}, /*dataFormat and MSB [0]*/
},
0, /*meta_height_before*/
0, /*meta_height_after*/
},
ISS_SENSOR_IMX390C_YUV_FEATURES, /*features*/
ALGORITHMS_ISS_AEWB_MODE_NONE, /*aewbMode*/
30, /*fps*/
4, /*numDataLanes*/
{1, 2, 3, 4}, /*dataLanesMap*/
{0, 0, 0, 0}, /*dataLanesPolarity*/
CSIRX_LANE_BAND_SPEED_800_TO_880_MBPS, /*csi_laneBandSpeed*/
},
4, /*numChan*/
6100, /*dccId*/
};您好!
现象:

代码:
for(id = 0; id < num_capt_instances; id++)
{
captureObj->params.instId[id] = id;
captureObj->params.instCfg[id].enableCsiv2p0Support = (uint32_t)vx_true_e;
captureObj->params.instCfg[id].numDataLanes = sensorObj->sensorParams.sensorInfo.numDataLanes;
APP_PRINTF("captureObj->params.numDataLanes = %d \n", captureObj->params.instCfg[id].numDataLanes);
APP_PRINTF("captureObj->params.csi_laneBandSpeed = %#x \n", sensorObj->sensorParams.sensorInfo.csi_laneBandSpeed);
captureObj->params.instCfg[id].laneBandSpeed = sensorObj->sensorParams.sensorInfo.csi_laneBandSpeed;
captureObj->params.instCfg[id].numPixels = 1;
APP_PRINTF("captureObj->params.numPixels = %d \n", captureObj->params.instCfg[id].numPixels);
for (lane = 0; lane < captureObj->params.instCfg[id].numDataLanes; lane++)
{
captureObj->params.instCfg[id].dataLanesMap[lane] = lane + 1;
APP_PRINTF("captureObj->params.dataLanesMap[%d] = %d \n",
lane,
captureObj->params.instCfg[id].dataLanesMap[lane]);
}
}
日志:
Summary of CPU load, ==================== CPU: mpu1_0: TOTAL LOAD = 0.20 % ( HWI = 0. 1 %, SWI = 0. 0 % ) CPU: mcu2_0: TOTAL LOAD = 22. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: mcu2_1: TOTAL LOAD = 16. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c6x_1: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c6x_2: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) CPU: c7x_1: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % ) HWA performance statistics, =========================== HWA: LDC : LOAD = 0.40 % ( 2 MP/s ) HWA: MSC0: LOAD = 0.30 % ( 2 MP/s ) HWA: MSC1: LOAD = 0.30 % ( 2 MP/s ) DDR performance statistics, =========================== DDR: READ BW: AVG = 209 MB/s, PEAK = 3973 MB/s DDR: WRITE BW: AVG = 104 MB/s, PEAK = 1354 MB/s DDR: TOTAL BW: AVG = 313 MB/s, PEAK = 5327 MB/s Detailed CPU performance/memory statistics, =========================================== DDR_SHARED_MEM: Alloc's: 51 alloc's of 129105836 bytes DDR_SHARED_MEM: Free's : 0 free's of 0 bytes DDR_SHARED_MEM: Open's : 51 allocs of 129105836 bytes DDR_SHARED_MEM: Total size: 536870912 bytes CPU: mcu2_0: TASK: IPC_RX: 0. 0 % CPU: mcu2_0: TASK: REMOTE_SRV: 0. 3 % CPU: mcu2_0: TASK: LOAD_TEST: 0. 0 % CPU: mcu2_0: TASK: TIVX_CPU_0: 0. 0 % CPU: mcu2_0: TASK: TIVX_VPAC_N: 0. 0 % CPU: mcu2_0: TASK: TIVX_VPAC_L: 0. 2 % CPU: mcu2_0: TASK: TIVX_VPAC_M: 0.13 % CPU: mcu2_0: TASK: TIVX_VPAC_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_VPAC_V: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT1: 0. 1 % CPU: mcu2_0: TASK: TIVX_CAPT2: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP1: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP2: 0. 0 % CPU: mcu2_0: TASK: TIVX_CSITX: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT3: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT4: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT5: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT6: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT7: 0. 0 % CPU: mcu2_0: TASK: TIVX_CAPT8: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: TASK: TIVX_DISP_M: 0. 0 % CPU: mcu2_0: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16701440 B ( 99 % unused) CPU: mcu2_0: HEAP: L3_MEM: size = 262144 B, free = 261888 B ( 99 % unused) CPU: mcu2_1: TASK: IPC_RX: 0. 0 % CPU: mcu2_1: TASK: REMOTE_SRV: 0. 0 % CPU: mcu2_1: TASK: LOAD_TEST: 0. 0 % CPU: mcu2_1: TASK: TIVX_SDE: 0. 0 % CPU: mcu2_1: TASK: TIVX_DOF: 0. 0 % CPU: mcu2_1: TASK: TIVX_CPU_1: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_RX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: TASK: IPC_TEST_TX: 0. 0 % CPU: mcu2_1: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused) CPU: mcu2_1: HEAP: L3_MEM: size = 262144 B, free = 262144 B (100 % unused) CPU: c6x_1: TASK: IPC_RX: 0. 0 % CPU: c6x_1: TASK: REMOTE_SRV: 0. 0 % CPU: c6x_1: TASK: LOAD_TEST: 0. 0 % CPU: c6x_1: TASK: TIVX_CPU: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_RX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_1: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused) CPU: c6x_1: HEAP: L2_MEM: size = 229376 B, free = 229376 B (100 % unused) CPU: c6x_1: HEAP: DDR_SCRATCH_MEM: size = 50331648 B, free = 50331648 B (100 % unused) CPU: c6x_2: TASK: IPC_RX: 0. 0 % CPU: c6x_2: TASK: REMOTE_SRV: 0. 0 % CPU: c6x_2: TASK: LOAD_TEST: 0. 0 % CPU: c6x_2: TASK: TIVX_CPU: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_RX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 % CPU: c6x_2: HEAP: DDR_LOCAL_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused) CPU: c6x_2: HEAP: L2_MEM: size = 229376 B, free = 229376 B (100 % unused) CPU: c6x_2: HEAP: DDR_SCRATCH_MEM: size = 50331648 B, free = 50331648 B (100 % unused) CPU: c7x_1: TASK: IPC_RX: 0. 0 % CPU: c7x_1: TASK: REMOTE_SRV: 0. 0 % CPU: c7x_1: TASK: LOAD_TEST: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: TIVX_C7_1_P: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_RX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: TASK: IPC_TEST_TX: 0. 0 % CPU: c7x_1: HEAP: DDR_LOCAL_MEM: size = 268435456 B, free = 268435200 B ( 99 % unused) CPU: c7x_1: HEAP: L3_MEM: size = 8159232 B, free = 8159232 B (100 % unused) CPU: c7x_1: HEAP: L2_MEM: size = 458752 B, free = 458752 B (100 % unused) CPU: c7x_1: HEAP: L1_MEM: size = 16384 B, free = 16384 B (100 % unused) CPU: c7x_1: HEAP: DDR_SCRATCH_MEM: size = 385875968 B, free = 385875968 B (100 % unused) GRAPH: app_multi_cam_graph (#nodes = 5, #executions = 13) NODE: CAPTURE1: capture_node: avg = 3382973 usecs, min/max = 33178 / 15627208 usecs, #executions = 13 NODE: VPAC_LDC1: ldc_node: avg = 14095 usecs, min/max = 13899 / 14392 usecs, #executions = 13 NODE: VPAC_MSC1: mosaic_node: avg = 19859 usecs, min/max = 11279 / 38864 usecs, #executions = 13 NODE: DISPLAY1: DisplayNode: avg = 8138 usecs, min/max = 88 / 14319 usecs, #executions = 13 NODE: A72-0: capture_write_node: avg = 2655 usecs, min/max = 25 / 34190 usecs, #executions = 13 PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 2933012 usecs, min/max = 10 / 15607380 usecs, #executions = 15 PERF: TOTAL: 0.34 FPS
框架脱落的问题没有改善。 在这个基础上,两个摄像头被试了,帧被丢弃,一个摄像头没有丢帧。
此致、
约旦
您好、Jordan、
完成上述更改后、即 numPixels = 1、
您是否还可以尝试使用以下补丁进行更改、并使用以下更改重新编译 SDK?
/cfs-file/__key/communityserver-discussions-components-files/791/YUV422_5F00_fix.patch
应在 PDK 存储库中应用补丁。
您是否在使用 SDK 8.6?
此致、
尼基尔
尊敬的 Nikhil:
我将补丁放在 csirx_drvUdma.c 中。
运行该程序后、以下日志中的变量值也是正确的。 我 分别试过两部和三部相机,性能和以前一样。 似乎没有帮助。
日志:
captureObj->params.numDataLanes = 4 captureObj->params.csi_laneBandSpeed = 0xe captureObj->params.numPixels = 0 captureObj->params.dataLanesMap[0] = 1 captureObj->params.dataLanesMap[1] = 2 captureObj->params.dataLanesMap[2] = 3 captureObj->params.dataLanesMap[3] = 4 ######func:configure_capture_params, line:120, 1_ch_mask:0x7 ######func:configure_capture_params, line:140, ch:0x3, vcNum:0x3, id:0 ######func:configure_capture_params, line:141, 2_ch_mask:0 ######func:configure_capture_output_write, line:309, en_out_capture_write: = 1 LDC init done! Img Mosaic init done! Display init done! App Init Done! Graph create done! Capture graph done! LDC graph done! Img Mosaic graph done! Display graph done! Pipeline params setup done! App Create Graph Done! [MCU2_0] 66.864796 s: End of UB953 config [MCU2_0] 66.864860 s: IM_SENSOR_CMD_CONFIG returning status = 0 [MCU2_0] 66.874526 s: src/csirx_drv.c @ Line 1820: [MCU2_0] 66.874584 s: ######instObj->numCaptCh:0x0 [MCU2_0] 66.874636 s: src/csirx_drvUdma.c @ Line 144: [MCU2_0] 66.874764 s: ######inCsiDataType:0x1e, dataFormat:0x0, chObj->status:0 [MCU2_0] 66.874821 s: src/csirx_drvUdma.c @ Line 219: [MCU2_0] 66.874859 s: ######numPixelsStrm0:0x0 [MCU2_0] 66.876575 s: src/csirx_drv.c @ Line 1820: [MCU2_0] 66.876629 s: ######instObj->numCaptCh:0x1 [MCU2_0] 66.876738 s: src/csirx_drvUdma.c @ Line 144: [MCU2_0] 66.876793 s: ######inCsiDataType:0x1e, dataFormat:0x0, chObj->status:0 [MCU2_0] 66.876840 s: src/csirx_drvUdma.c @ Line 219: [MCU2_0] 66.876875 s: ######numPixelsStrm0:0x0 [MCU2_0] 66.878572 s: src/csirx_drv.c @ Line 1820: [MCU2_0] 66.878625 s: ######instObj->numCaptCh:0x2 [MCU2_0] 66.878737 s: src/csirx_drvUdma.c @ Line 144: [MCU2_0] 66.878795 s: ######inCsiDataType:0x1e, dataFormat:0x0, chObj->status:0 [MCU2_0] 66.878846 s: src/csirx_drvUdma.c @ Line 219: [MCU2_0] 66.878879 s: ######numPixelsStrm0:0x0
inCsiDataType:0x1E、dataFormat:0x0 //FVID2_CSI2_DF_YUV422_8B、FVID2_DF_YUV422I_UYVY
numPixelsStrm0:0x0
CSI_laneBandSpeed = 0xe
CH:0x3、vcNum:0x3
此致、
约旦
e2e.ti.com/.../imx390c_5F00_yuv.zip
驱动器参考 GW _ar0233_YUV。
您好、Jordan、
我可以从您的日志中看到
CaptureObj->params.numPixels = 0
完成上述更改后、即 numPixels = 1、
您是否还可以尝试使用以下补丁进行更改、并使用以下更改重新编译 SDK?
[/报价]我之前提到将这个值保留为1、然后应用这个补丁。 您能确认是否选中相同项吗?
另外、根据 PDK 日志、您是说您应用了补丁并将这些日志放在 csirx_drvUdma.c 中了吗? 如果是、这将确认更改已生效。 我的理解是否正确?
如果不是,是否可以在进行更改的修补程序中添加一个日志,以确保正确应用更改(如果尚未执行)。
此致、
尼基尔
另外,根据 PDK 日志,您是说您应用了修补程序,并将这些日志放在 csirx_drvUdma.c 中了吗? [/报价]是
好的、这意味着应用的补丁已成功构建并且更改已生效。
我之前提到过保留此文件为1,然后应用此修补程序。 您能否确认您是否选中了相同的选项?
您能告诉我这方面的信息吗?
此致、
尼基尔
您好!
这是意料之外的。 这应该可以解决此问题。
我们必须对此进行进一步调试。
我只注意到下面的日志
GRAPH: app_multi_cam_graph (#nodes = 5, #executions = 13) NODE: CAPTURE1: capture_node: avg = 3382973 usecs, min/max = 33178 / 15627208 usecs, #executions = 13 NODE: VPAC_LDC1: ldc_node: avg = 14095 usecs, min/max = 13899 / 14392 usecs, #executions = 13 NODE: VPAC_MSC1: mosaic_node: avg = 19859 usecs, min/max = 11279 / 38864 usecs, #executions = 13 NODE: DISPLAY1: DisplayNode: avg = 8138 usecs, min/max = 88 / 14319 usecs, #executions = 13 NODE: A72-0: capture_write_node: avg = 2655 usecs, min/max = 25 / 34190 usecs, #executions =
您是否看到此问题 没有 CAPTURE_WRITE_NODE? 您是否可以禁用此节点并检查是否尚未执行此操作?
如果在此之后没有任何变化、请尝试以下操作来确定问题。
您是否可以注释掉图中的所有节点、只是运行图中的捕获节点并检查性能统计数据、如果您能够使捕获节点以33毫秒或其仍在几秒内执行?
如果仍以秒为单位显示、则至少我们已将问题隔离到捕获节点。
下一步是仅运行图形中的捕获节点、即您的 perf_stats 日志应该只具有如下所示的捕获图形
图表:APP_MULTI_CAM_GRACE (#nodes = x、#executations = x)
节点:CAPTURE1:CAPTURE1:CAPTURE_NODE:Avg = xxx usecs、最小值/最大值= xx / xx usecs、#executations = x
此致、
尼基尔
您好、Jordan、
此处有2个问题。
1.您单独与捕获节点共享的日志具有 numPixelsStrm0:0x0 已打印。
是否可以在 numPixelsStrm0时与我共享相同的日志? :0x1?
那么、您看到的 FPS 是什么?
2.在串行器配置中,我看到您已启用了 CRC 生成器,但我没有看到在 SDK 中启用此生成器。 您是否可以提供以下内容 0x72 并检查是否有任何改进? 或者您是否在解串器中使用该 CRC 信息?
{0x02、0x73、0x10}-发送器 CRC 发生器
是否已更改 iss_sensors.c 中的 UB960解串器配置? 从您共享的文件中、我只看到在解串器配置中设置了 CSI-TX 速度。
imx390c_yuV_Config()缺少传感器配置。 您是否在其他地方进行传感器寄存器配置?
此致、
尼基尔
您好、Jordan、
我希望您在这里再尝试一个实验。
我知道您为什么以800Mbps 的速率传输帧吗? 我认为这是非常慢的数据速率、可使用1920 x 1080 YUV422数据实现30FPS。
您能否在 UB960和 CSI-Rx 中增加传输端的数据速率、并检查这样是否能缩短传输时间?
在 SDK 中、我们在1936 x 1100 RAW12 IMX390情况下将0x12保持为 lanebandspeed。
因此、您的值应至少为0x12或更高。
您可以尝试一下吗?
注意:数据速率应设置为发送端、UB960和 CSI-Rx
此致、
尼基尔