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.

TDA4VM: TDA4 run run_app_multi_cam.sh show 8MP camera problem

Part Number: TDA4VM
Other Parts Discussed in Thread: TEST, TDA4

We want to run run_app_multi_cam.sh to show two 8MP camera, but display is floral or abnormal,  have video stream (run_app_multi_cam.sh can't exit). Are there ways to locate the problem?

one 8MP camera can be displayed normally.

we configure code as follows,

static IssSensor_CreateParams 8MPCreatePrms = {
8MP_UYVY, /*sensor name*/
0x6, /*i2cInstId*/
{0, 0, 0, 0, 0, 0, 0, 0}, /*i2cAddrSensor*/
{0, 0, 0, 0, 0, 0, 0, 0}, /*i2cAddrSer*/
/*IssSensor_Info*/
{
{
ECARX_8MP_OUT_WIDTH, /*width 3840*/
ECARX_8MP_OUT_HEIGHT, /*height 2160*/
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_8MP_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_2250_TO_2500_MBPS,
//CSIRX_LANE_BAND_SPEED_1350_TO_1500_MBPS, /*csi_laneBandSpeed*/
},
2, /*numChan*/
800, /*dccId*/
};

The log is as follows,

root@j7-evm:/opt/vision_apps# ./run_app_multi_cam.sh
APP: Init ... !!!
MEM: Init ... !!!
MEM: Initialized DMA HEAP (fd=4) !!!
MEM: Init ... Done !!!
IPC: Init ... !!!
IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
86.598815 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
86.598888 s: VX_ZONE_INIT:Enabled
86.598895 s: VX_ZONE_ERROR:Enabled
86.598900 s: VX_ZONE_WARNING:Enabled
86.599306 s: VX_ZONE_INIT:[tivxInit:71] Initialization Done !!!
86.599470 s: VX_ZONE_INIT:[tivxHostInit:48] Initialization Done for HOST !!!
86.599645 s: ISS: Enumerating sensors ... !!!
86.600030 s: ISS: Enumerating sensors ... found 0 : MAX96705_1MP_UYVY
86.600042 s: ISS: Enumerating sensors ... found 1 : MAX96715_1MP_UYVY
86.600047 s: ISS: Enumerating sensors ... found 2 : MAX96717_1MP_UYVY
86.600051 s: ISS: Enumerating sensors ... found 3 : MAX9295A_2MP_UYVY
86.600056 s: ISS: Enumerating sensors ... found 4 : ECARX_8MP_UYVY
86.600060 s: ISS: Enumerating sensors ... found 5 : ECARX_DMS_8MP
6 sensor(s) found
Supported sensor list:
a : MAX96705_1MP_UYVY
b : MAX96715_1MP_UYVY
c : MAX96717_1MP_UYVY
d : MAX9295A_2MP_UYVY
e : ECARX_8MP_UYVY
f : ECARX_DMS_8MP
Select a sensor above or press '0' to autodetect the sensor
[MCU2_0] 86.599760 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CREATE
[MCU2_0] 86.599838 s: [iss_sensors] IssSensor_DeserializerInit Start
[MCU2_0] 86.599892 s: Board_MAX96712GetI2CAddr : ADM i2c6 config
[MCU2_0] 86.599934 s: Board_MAX96712GetI2CAddr : ADM i2c4 config

Invalid selection 169. Try again
6 sensor(s) found
Supported sensor list:
a : MAX96705_1MP_UYVY
b : MAX96715_1MP_UYVY
c : MAX96717_1MP_UYVY
d : MAX9295A_2MP_UYVY
e : ECARX_8MP_UYVY
f : ECARX_DMS_8MP
Select a sensor above or press '0' to autodetect the sensor
e
Sensor selected : ECARX_8MP_UYVY
Querying ECARX_8MP_UYVY
88.546236 s: ISS: Querying sensor [ECARX_8MP_UYVY] ... !!!
88.546533 s: ISS: Querying sensor [ECARX_8MP_UYVY] ... Done !!!
LDC Selection Yes(1)/No(0)
Invalid selection
. Try again
LDC Selection Yes(1)/No(0)
[MCU2_0] 88.546359 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_QUERY
[MCU2_0] 88.546416 s: Received Query for ECARX_8MP_UYVY
[MCU2_0] 88.546454 s: Received Query for ECARX_8MP_UYVY
1
Max number of cameras supported by sensor ECARX_8MP_UYVY = 2 (5-8 is select CSI1)
Please enter number of cameras to be enabled
Invalid selection
. Try again
Max number of cameras supported by sensor ECARX_8MP_UYVY = 2 (5-8 is select CSI1)
Please enter number of cameras to be enabled
2
YUV Input selected. VISS, AEWB and Mosaic nodes will be bypassed.
91.759593 s: ISS: Initializing sensor [ECARX_8MP_UYVY], doing IM_SENSOR_CMD_PWRON ... !!!
[MCU2_0] 91.759683 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_PWRON
[MCU2_0] 91.759744 s: IM_SENSOR_CMD_PWRON : channel_mask = 0x3
[MCU2_0] 91.759800 s: [iss_sensors] in func ecarx_cfgScript
[MCU2_0] 91.759846 s: Board_MAX96712GetI2CAddr : ADM i2c6 config
[MCU2_0] 91.760093 s: read 16 bits reg success: addr 0x4d, reg 0x0, val 0x9a
[MCU2_0] 91.760146 s: [iss_sensor] [read 0x00] i2c6 reading addr 0x9a register 0x00 value 0x9a
[MCU2_0] 91.760198 s: MAX96712 config start TIVX_RAW_IMAGE_16_BIT 1052672 TIVX_RAW_IMAGE_8_BIT 1053
[MCU2_0] 91.760243 s: ecarx_cfgScript, line 170, count 83
[MCU2_0] 92.422277 s: End of MAX96712 config
[MCU2_0] 92.622302 s: [iss_sensors] in func ecarx_read_cfgScript
[MCU2_0] 92.622371 s: Board_MAX96712GetI2CAddr : ADM i2c6 config
[MCU2_0] 92.622436 s: [iss_sensors] MAX96712 read status regs
92.925706 s: ISS: Initializing sensor [ECARX_8MP_UYVY], doing IM_SENSOR_CMD_CONFIG ... !!!
92.926065 s: ISS: Initializing sensor [ECARX_8MP_UYVY] ... Done !!!
captureObj->params.instCfg[id].laneBandSpeed = 22
[MCU2_0] 92.925512 s: read 16 bits reg success: addr 0x4d, reg 0x8d0, val 0x0
[MCU2_0] 92.925562 s:
[MCU2_0] 92.925579 s:
[MCU2_0] 92.925601 s: [iss_sensors] MAX96712 read status regs end
[MCU2_0] 92.925626 s:
[MCU2_0] 92.925780 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CONFIG
[MCU2_0] 92.925823 s: Application requested features = 0x158
[MCU2_0]
[MCU2_0] 92.925874 s: [iss_sensors] in func disableMAX96712Broadcast none
[MCU2_0] 92.925904 s: Configuring camera # 0
[MCU2_0] 92.925934 s: [iss_sensors] ecarx_8MP_Config
[MCU2_0] 92.925956 s: Configuring camera # 1
[MCU2_0] 92.925983 s: [iss_sensors] ecarx_8MP_Config
[MCU2_0] 92.926003 s: IM_SENSOR_CMD_CONFIG returning status = 0
[MCU2_0] 92.935462 s: Invalid Camera Id 800
[MCU2_0] 92.936165 s: Invalid Camera Id 800
93.047494 s: ISS: Starting sensor [ECARX_8MP_UYVY] ... !!!
93.049465 s: ISS: Starting sensor [ECARX_8MP_UYVY] ... !!!


=========================
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] 93.047693 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_STREAM_ON
[MCU2_0] 93.047759 s: IM_SENSOR_CMD_STREAM_ON: channel_mask = 0x3
[MCU2_0] 93.047815 s: [iss_sensors] in func disableMAX96712Broadcast none
[MCU2_0] 93.047870 s: Board_MAX96712GetI2CAddr : ADM i2c6 config
[MCU2_0] 93.048118 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x4
[MCU2_0] 93.048333 s: write 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
[MCU2_0] 93.048574 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
[MCU2_0] 93.048617 s: [iss_sensors] in func ecarx_8MP_StreamOn end
[MCU2_0] 93.048643 s:
[MCU2_0] 93.048669 s: Board_MAX96712GetI2CAddr : ADM i2c6 config
[MCU2_0] 93.048900 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
[MCU2_0] 93.049094 s: write 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
[MCU2_0] 93.049333 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
[MCU2_0] 93.049379 s: [iss_sensors] in func ecarx_8MP_StreamOn end
[MCU2_0] 93.049406 s:


=========================
Demo : Camera Demo
=========================

s: Save CSIx, VISS and LDC outputs

p: Print performance statistics

x: Exit

Enter Choice: p


Summary of CPU load,
====================

CPU: mpu1_0: TOTAL LOAD = 0.53 % ( HWI = 0. 6 %, SWI = 0. 6 % )
CPU: mcu2_0: TOTAL LOAD = 42949578.96 % ( HWI = 0. 0 %, SWI = 0. 0 % )
CPU: mcu2_1: TOTAL LOAD = 42943015.96 % ( HWI = 0. 0 %, SWI = 0. 0 % )
CPU: c6x_1: TOTAL LOAD = 0. 5 % ( HWI = 0. 2 %, SWI = 0. 1 % )
CPU: c6x_2: TOTAL LOAD = 0. 5 % ( HWI = 0. 2 %, SWI = 0. 1 % )
CPU: c7x_1: TOTAL LOAD = 0. 7 % ( HWI = 0. 3 %, SWI = 0. 2 % )


HWA performance statistics,
===========================

HWA: LDC : LOAD = 0. 4 % ( 0 MP/s )
HWA: MSC0: LOAD = 0. 3 % ( 0 MP/s )
HWA: MSC1: LOAD = 0. 4 % ( 0 MP/s )


DDR performance statistics,
===========================

DDR: READ BW: AVG = 0 MB/s, PEAK = 0 MB/s
DDR: WRITE BW: AVG = 0 MB/s, PEAK = 0 MB/s
DDR: TOTAL BW: AVG = 0 MB/s, PEAK = 0 MB/s


Detailed CPU performance/memory statistics,
===========================================

CPU: mcu2_0: TASK: IPC_RX: 0. 0 %
CPU: mcu2_0: TASK: REMOTE_SRV: 21.52 %
CPU: mcu2_0: TASK: LOAD_TEST: 0. 0 %
CPU: mcu2_0: TASK: TIVX_CPU: 0. 0 %
CPU: mcu2_0: TASK: TIVX_NF: 0. 0 %
CPU: mcu2_0: TASK: TIVX_LDC1: 0. 0 %
CPU: mcu2_0: TASK: TIVX_MSC1: 0. 0 %
CPU: mcu2_0: TASK: TIVX_MSC2: 0. 0 %
CPU: mcu2_0: TASK: TIVX_VISS1: 0. 0 %
CPU: mcu2_0: TASK: TIVX_CAPT1: 0. 0 %
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: HEAP: DDR_SHARED_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_0: HEAP: DDR_NON_CACHE_M: size = 16777216 B, free = 16776960 B ( 99 % unused)

CPU: mcu2_1: TASK: IPC_RX: 0. 0 %
CPU: mcu2_1: TASK: REMOTE_SRV: 4.19 %
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: 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_SHARED_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused)
CPU: mcu2_1: HEAP: L3_MEM: size = 262144 B, free = 262144 B (100 % unused)
CPU: mcu2_1: HEAP: DDR_NON_CACHE_M: size = 117440512 B, free = 117440256 B ( 26 % 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_SHARED_MEM: size = 16777216 B, free = 16774912 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 ( 14 % 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_SHARED_MEM: size = 16777216 B, free = 16774912 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 ( 14 % 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_CPU: 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_SHARED_MEM: size = 268435456 B, free = 268435456 B ( 4 % unused)
CPU: c7x_1: HEAP: L3_MEM: size = 8159232 B, free = 8159232 B (100 % unused)
CPU: c7x_1: HEAP: L2_MEM: size = 491520 B, free = 491520 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 = 268435456 B, free = 268435456 B ( 4 % unused)


GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 1)
NODE: CAPTURE1: capture_node: avg = 6385153 usecs, min/max = 6385153 / 6385153 usecs, #1
NODE: VPAC_LDC1: ldc_node: avg = 3285 usecs, min/max = 3285 / 3285 usecs, #exe1
NODE: VPAC_MSC1: mosaic_node: avg = 20194 usecs, min/max = 20194 / 20194 usecs, #exe1
NODE: DISPLAY1: DisplayNode: avg = 65 usecs, min/max = 65 / 65 usecs, #exe1

PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0
PERF: TOTAL: avg = 2129691 usecs, min/max = 3 / 6389065 usecs, #executions = 3

PERF: TOTAL: 0.46 FPS

  • Hi seven lin,

    Are you sure you are able to receive data at correct fps? Because it seems capture is running very slow, almost 6.4s to capture a frame. Is the CSI lane speed enough to capture two 8MP capture? Are you seeing any other frame errors or overflows while capturing frames? 

    Regards,

    Brijesh

  • CSI lane speed set CSIRX_LANE_BAND_SPEED_2250_TO_2500_MBPS, and one 8MP camera show normal.

    We don't see any errors printed,  But unable to exit run_app_multi_cam  normally.

    frame errors or overflows --- How should I confirm this?

  • When you press 'p' on the console, it should print the stats like below. The text in bold will provide information about overflow, frame error etc.. 

    [MCU2_0] 49.548661 s: Capture Status: Instance|0
    [MCU2_0] 49.548701 s: ==========================================================
    [MCU2_0] 49.548738 s: overflowCount: 0
    [MCU2_0] 49.548762 s: spuriousUdmaIntrCount: 0
    [MCU2_0] 49.548786 s: frontFIFOOvflCount: 0
    [MCU2_0] 49.548808 s: crcCount: 0
    [MCU2_0] 49.548828 s: eccCount: 0
    [MCU2_0] 49.548850 s: correctedEccCount: 0
    [MCU2_0] 49.548873 s: dataIdErrorCount: 0
    [MCU2_0] 49.548898 s: invalidAccessCount: 0
    [MCU2_0] 49.548920 s: invalidSpCount: 0
    [MCU2_0] 49.548944 s: strmFIFOOvflCount[0]: 0
    [MCU2_0] 49.548968 s: strmFIFOOvflCount[1]: 0
    [MCU2_0] 49.548992 s: strmFIFOOvflCount[2]: 83
    [MCU2_0] 49.549017 s: strmFIFOOvflCount[3]: 13
    [MCU2_0] 49.549055 s: Channel Num | Frame Queue Count | Frame De-queue Count | Frame Drop Count | Error Frame Count |
    [MCU2_0] 49.549108 s: 0 | 78 | 76 | 0 |

    Regards,

    Brijesh

  • =========================
    Demo : Camera Demo
    =========================

    s: Save CSIx, VISS and LDC outputs

    p: Print performance statistics

    x: Exit

    Enter Choice: p


    Summary of CPU load,
    ====================

    CPU: mpu1_0: TOTAL LOAD = 0.53 % ( HWI = 0. 6 %, SWI = 0. 6 % )
    CPU: mcu2_0: TOTAL LOAD = 42949578.96 % ( HWI = 0. 0 %, SWI = 0. 0 % )
    CPU: mcu2_1: TOTAL LOAD = 42943015.96 % ( HWI = 0. 0 %, SWI = 0. 0 % )
    CPU: c6x_1: TOTAL LOAD = 0. 5 % ( HWI = 0. 2 %, SWI = 0. 1 % )
    CPU: c6x_2: TOTAL LOAD = 0. 5 % ( HWI = 0. 2 %, SWI = 0. 1 % )
    CPU: c7x_1: TOTAL LOAD = 0. 7 % ( HWI = 0. 3 %, SWI = 0. 2 % )


    HWA performance statistics,
    ===========================

    HWA: LDC : LOAD = 0. 4 % ( 0 MP/s )
    HWA: MSC0: LOAD = 0. 3 % ( 0 MP/s )
    HWA: MSC1: LOAD = 0. 4 % ( 0 MP/s )


    DDR performance statistics,
    ===========================

    DDR: READ BW: AVG = 0 MB/s, PEAK = 0 MB/s
    DDR: WRITE BW: AVG = 0 MB/s, PEAK = 0 MB/s
    DDR: TOTAL BW: AVG = 0 MB/s, PEAK = 0 MB/s


    Detailed CPU performance/memory statistics,
    ===========================================

    CPU: mcu2_0: TASK: IPC_RX: 0. 0 %
    CPU: mcu2_0: TASK: REMOTE_SRV: 21.52 %
    CPU: mcu2_0: TASK: LOAD_TEST: 0. 0 %
    CPU: mcu2_0: TASK: TIVX_CPU: 0. 0 %
    CPU: mcu2_0: TASK: TIVX_NF: 0. 0 %
    CPU: mcu2_0: TASK: TIVX_LDC1: 0. 0 %
    CPU: mcu2_0: TASK: TIVX_MSC1: 0. 0 %
    CPU: mcu2_0: TASK: TIVX_MSC2: 0. 0 %
    CPU: mcu2_0: TASK: TIVX_VISS1: 0. 0 %
    CPU: mcu2_0: TASK: TIVX_CAPT1: 0. 0 %
    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: HEAP: DDR_SHARED_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_0: HEAP: DDR_NON_CACHE_M: size = 16777216 B, free = 16776960 B ( 99 % unused)

    CPU: mcu2_1: TASK: IPC_RX: 0. 0 %
    CPU: mcu2_1: TASK: REMOTE_SRV: 4.19 %
    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: 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_SHARED_MEM: size = 16777216 B, free = 16773376 B ( 99 % unused)
    CPU: mcu2_1: HEAP: L3_MEM: size = 262144 B, free = 262144 B (100 % unused)
    CPU: mcu2_1: HEAP: DDR_NON_CACHE_M: size = 117440512 B, free = 117440256 B ( 26 % 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_SHARED_MEM: size = 16777216 B, free = 16774912 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 ( 14 % 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_SHARED_MEM: size = 16777216 B, free = 16774912 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 ( 14 % 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_CPU: 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_SHARED_MEM: size = 268435456 B, free = 268435456 B ( 4 % unused)
    CPU: c7x_1: HEAP: L3_MEM: size = 8159232 B, free = 8159232 B (100 % unused)
    CPU: c7x_1: HEAP: L2_MEM: size = 491520 B, free = 491520 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 = 268435456 B, free = 268435456 B ( 4 % unused)


    GRAPH: app_multi_cam_graph (#nodes = 4, #executions = 1)
    NODE: CAPTURE1: capture_node: avg = 6385153 usecs, min/max = 6385153 / 6385153 usecs, #1
    NODE: VPAC_LDC1: ldc_node: avg = 3285 usecs, min/max = 3285 / 3285 usecs, #exe1
    NODE: VPAC_MSC1: mosaic_node: avg = 20194 usecs, min/max = 20194 / 20194 usecs, #exe1
    NODE: DISPLAY1: DisplayNode: avg = 65 usecs, min/max = 65 / 65 usecs, #exe1

    PERF: FILEIO: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0
    PERF: TOTAL: avg = 2129691 usecs, min/max = 3 / 6389065 usecs, #executions = 3

    PERF: TOTAL: 0.46 FPS

    The log here is the print result of press 'p', here is no printing, it should be stuck.

  • Any changes in this example? or vision apps? or installing procedure? 

    I see multi-camera example working fine for IMX390 camera on SDK8.0.

    Regards,

    Brijesh

  • printf("YUV Input selected. VISS, AEWB and Mosaic nodes will be bypassed. \n");
    obj->enable_viss = 0;
    obj->enable_aewb = 0;
    - obj->enable_mosaic = 0;
    + obj->enable_mosaic = 1;
    }

    We only modify this to show yuv image. 

  • We have previously debugged 2MP and 1MP cameras using the use run_app_multi_cam, its can display normally

  • Can you try using DSP based mosaic node? or may be just display each camera one by one on the display?

    This is because the default mosaic node internally uses MSC scalar, which support upto 1/4x downscaling.

  • Can you try using DSP based mosaic node? or may be just display each camera one by one on the display? ---- what should we do?

  • This is because the default mosaic node internally uses MSC scalar, which support upto 1/4x downscaling --- We suspect it may be over 4 times the size, how can I confirm it?

  • Can you try using DSP based mosaic node? or may be just display each camera one by one on the display? ---- what should we do?

    Change the target to DSP1, instead of MSC1, like vxSetNodeTarget(imgMosaicObj->node, VX_TARGET_STRING, TIVX_TARGET_DSP1);

    This is because the default mosaic node internally uses MSC scalar, which support upto 1/4x downscaling --- We suspect it may be over 4 times the size, how can I confirm it?

    Most likely driver will return error in this case, but not sure how this is handled in mosaic node. Can you try running this node on DSP1? 

  • --- a/ti-processor-sdk-rtos-j721e-evm-08_00_00_12/vision_apps/modules/src/app_img_mosaic_module.c
    +++ b/ti-processor-sdk-rtos-j721e-evm-08_00_00_12/vision_apps/modules/src/app_img_mosaic_module.c
    @@ -201,7 +201,9 @@ vx_status app_create_graph_img_mosaic(vx_graph graph, ImgMosaicObj *imgMosaicObj
    #ifdef x86_64
    vxSetNodeTarget(imgMosaicObj->node, VX_TARGET_STRING, TIVX_TARGET_DSP1);
    #else
    - vxSetNodeTarget(imgMosaicObj->node, VX_TARGET_STRING, TIVX_TARGET_VPAC_MSC1);
    + vxSetNodeTarget(imgMosaicObj->node, VX_TARGET_STRING, TIVX_TARGET_DSP1);
    + //vxSetNodeTarget(imgMosaicObj->node, VX_TARGET_STRING, TIVX_TARGET_VPAC_MSC1);
    #endif
    vxSetReferenceName((vx_reference)imgMosaicObj->node, "mosaic_node");
    }

    We modified it and still the same problem.

    In addition, we tried to reduce the csi rate and found that as long as the csi rate is less than 2.1G, mult_app can work normally (but the csi rate is not enough, resulting in incomplete images). When the mult_app is larger than 2.1G, the mult_app cannot work and exit normally. Is it because the buf of the tda4 receiving the image is not enough to cause the 2.5G csi to run abnormally?

  • 62.171151 s: ISS: Initializing sensor [ECARX_8MP_UYVY], doing IM_SENSOR_CMD_CONFIG ... !!!
    62.171512 s: ISS: Initializing sensor [ECARX_8MP_UYVY] ... Done !!!
    Sensor init done!
    [MCU2_0] 62.170955 s: read 16 bits reg success: addr 0x4d, reg 0x8d0, val 0x0
    [MCU2_0] 62.171004 s:
    [MCU2_0] 62.171024 s:
    [MCU2_0] 62.171046 s: [iss_sensors] MAX96712 read status regs end
    [MCU2_0] 62.171072 s:
    [MCU2_0] 62.171223 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CONFIG
    [MCU2_0] 62.171268 s: Application requested features = 0x120
    [MCU2_0]
    [MCU2_0] 62.171319 s: [iss_sensors] in func disableMAX96712Broadcast none
    [MCU2_0] 62.171351 s: Configuring camera # 0
    [MCU2_0] 62.171383 s: [iss_sensors] ecarx_8MP_Config
    [MCU2_0] 62.171405 s: Configuring camera # 1
    [MCU2_0] 62.171431 s: [iss_sensors] ecarx_8MP_Config
    [MCU2_0] 62.171452 s: IM_SENSOR_CMD_CONFIG returning status = 0
    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] 62.186037 s: src/csirx_drv.c @ Line 216:
    [MCU2_0] 62.186075 s: CsirxDrv_create
    [MCU2_0] 62.189053 s: src/csirx_drv.c @ Line 844:
    [MCU2_0] 62.189099 s: CsirxDrv_control: cmd = 268448256
    [MCU2_0] 62.189462 s: src/csirx_drv.c @ Line 844:
    [MCU2_0] 62.189490 s: CsirxDrv_control: cmd = 268448512
    [MCU2_0] 62.189555 s: src/csirx_drv.c @ Line 844:
    [MCU2_0] 62.189586 s: CsirxDrv_control: cmd = 7
    [MCU2_0] 62.191907 s: Invalid Camera Id 800
    [MCU2_0] 62.192626 s: Invalid Camera Id 800
    Graph verify done!
    [MCU2_0] 62.202082 s: src/drv/disp/dss_dispApi.c @ Line 1856:
    [MCU2_0] 62.202127 s: Input width+startX/height+startY > display width/height
    App Verify Graph Done!

    App Send Error Frame Done!
    app_pipeline_params_defaults returned
    62.304164 s: ISS: Starting sensor [ECARX_8MP_UYVY] ... !!!
    62.306199 s: ISS: Starting sensor [ECARX_8MP_UYVY] ... !!!
    appStartImageSensor returned with status: 0
    app_run_graph_for_one_pipeline: frame 0 beginning
    ljq 1
    ljq 1 3
    ljq 4
    app_run_graph_for_one_pipeline: frame 1 beginning
    ljq 1
    ljq 1 3
    ljq 4
    app_run_graph_for_one_pipeline: frame 2 beginning
    ljq 1
    ljq 1 3
    ljq 2
    ljq 2 3


    =========================
    Demo : Camera Demo
    =========================

    s: Save CSIx, VISS and LDC outputs

    p: Print performance statistics

    x: Exit

    Enter Choice: ljq 3
    ljq 1111 status
    tivxDataRefQueueDequeueDoneRef 1111111111
    DQ (queue=116) .. NO BUFFER
    ljq 1112 status =-1

    =========================
    Demo : Camera Demo
    =========================

    s: Save CSIx, VISS and LDC outputs

    p: Print performance statistics

    x: Exit

    Enter Choice: [MCU2_0] 62.304427 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_STREAM_ON
    [MCU2_0] 62.304493 s: IM_SENSOR_CMD_STREAM_ON: channel_mask = 0x3
    [MCU2_0] 62.304549 s: [iss_sensors] in func disableMAX96712Broadcast none
    [MCU2_0] 62.304603 s: Board_MAX96712GetI2CAddr : ADM i2c6 config
    [MCU2_0] 62.304862 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x4
    [MCU2_0] 62.305070 s: write 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
    [MCU2_0] 62.305306 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
    [MCU2_0] 62.305350 s: [iss_sensors] in func ecarx_8MP_StreamOn end
    [MCU2_0] 62.305377 s:
    [MCU2_0] 62.305406 s: Board_MAX96712GetI2CAddr : ADM i2c6 config
    [MCU2_0] 62.305635 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
    [MCU2_0] 62.305834 s: write 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
    [MCU2_0] 62.306075 s: read 16 bits reg success: addr 0x4d, reg 0x8a0, val 0x84
    [MCU2_0] 62.306114 s: [iss_sensors] in func ecarx_8MP_StreamOn end
    [MCU2_0] 62.306139 s:
    [MCU2_0] 62.306550 s: src/csirx_drv.c @ Line 844:
    [MCU2_0] 62.306589 s: CsirxDrv_control: cmd = 5
    ljq 1111 status
    tivxDataRefQueueDequeueDoneRef 1111111111
    DQ (queue=116, ref=6)
    ljq 1112 status =0
    ljq 1113 return
    ljq 111111111111111
    ljq 3 7
    ljq 4
    app_run_graph_for_one_pipeline: frame 3 beginning
    ljq 3
    ljq 1111 status
    tivxDataRefQueueDequeueDoneRef 1111111111
    DQ (queue=116) .. NO BUFFER
    ljq 1112 status =-1

    We added the log and found a problem here

  • In addition, we tried to reduce the csi rate and found that as long as the csi rate is less than 2.1G, mult_app can work normally (but the csi rate is not enough, resulting in incomplete images). When the mult_app is larger than 2.1G, the mult_app cannot work and exit normally. Is it because the buf of the tda4 receiving the image is not enough to cause the 2.5G csi to run abnormally?

    I think you are seeing two issues. 

    1, Mosaic node is doing less than 1/4x downscaling, which is not supported. 

    2, CSI does not work for lane speed more than 2.1Gbps.

    Please confirm if this is correct.

    For the second issue, is your transmitter, sensor or deserializer, transmitting deskew calibration sequence? Could you please check if it is not enabled, can you please enable it and then check output at 2.5Gbps? 

    For the first issue, could you please tell me what is the exact output resolution from the sensor? We can probably add a scalar node to downscale input resolution to small resolution, so that mossaic node can be used. 

    [MCU2_0] 62.202127 s: Input width+startX/height+startY > display width/height

    Due to this error, the graph will not be verified and it will not run fine. It would return error when you call dequeue buf. In this case, could you please help me understand how is the graph? Are you connecting ISP output directly to DSS? What is the start position and resolution for the display?

    Regards,

    Brijesh

  • [MCU2_0] 62.202127 s: Input width+startX/height+startY > display width/height. --- This problem can be ignored. The modification when we do two-screen split-screen display causes the error to be reported. It does not affect our normal display, We can roll back code modifications.

    1, Mosaic node is doing less than 1/4x downscaling, which is not supported.  --- 8MP camera resolution is 3840 x 2160, mult_app is set to 1080 x 1920

    --- a/ti-processor-sdk-rtos-j721e-evm-08_00_00_12/vision_apps/modules/include/app_ldc_module.h
    +++ b/ti-processor-sdk-rtos-j721e-evm-08_00_00_12/vision_apps/modules/include/app_ldc_module.h
    @@ -78,14 +78,14 @@
    /** \brief Default LDC table width. Can be modified as needed for use case
    *
    */
    -//#define LDC_TABLE_WIDTH (1920)
    -#define LDC_TABLE_WIDTH (1280)
    +#define LDC_TABLE_WIDTH (1920)

    /** \brief Default LDC table width. Can be modified as needed for use case
    *
    */
    -//#define LDC_TABLE_HEIGHT (1080)
    -#define LDC_TABLE_HEIGHT (720)
    +#define LDC_TABLE_HEIGHT (1080)

    2, CSI does not work for lane speed more than 2.1Gbps. --- We tried a single 8MP camera can show (csi lane speed 2.5G), So deskew calibration sequence should be no problem. We accidentally found an error (DQ (queue=116) .. NO BUFFER) when csi speed > 2.1G, Do we think there is a problem with the tda4 receiving two 8M cameras at the same time?

  • 1, Mosaic node is doing less than 1/4x downscaling, which is not supported. --- In addition, we have images when the csi rate is less than 2.1G, so we think there should be no more than 1/4x downscaling

  • Hi seven lin,

    1, Since the output frame size of mosaic is 1920x1080, two images side by side can be put in mosaic, because 3840/960 = 960, which is exactly half size of 1920.. 

    2, Yes, if single camera is working fine at 2.5G, then deskew calibration sequence is transmitted by sensor. No TDA4 can receive two camera of 8M from single CSI port. NO_BUFFER error essentially means there is nothing to be dequeued, so dequeue cannot be called. Either driver has run out of buffers or there is some corruption. Are the buffers allocated of enough size? How many buffers are you using capture node? Which example are you using? 

    Regards,

    Brijesh

  • Which example are you using?  ---- We used  run_app_multi_cam.sh

     Are the buffers allocated of enough size? How many buffers are you using capture node? --- How should I confirm these? 

  • Hi Brijesh,

     Are the buffers allocated of enough size? How many buffers are you using capture node? --- How should I confirm these?   , Help with this.

  • hi seven lin,

    Any further update/questions on this thread?

    Regards,

    Brijesh