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+ox08b performance

Genius 13655 points

Part Number: TDA4VM

Hello Champs,

HW: TDA4VM+ox08b

SW: ti-processor-sdk-rtos-j721e-evm-08_04_00_06

Customer prints Tda4+ox08b performance statistics information,the log shows the frame rate is 12.55 fps,the root cause maybe CAPTURE2 waster  about 79ms ,but the sensor setting is 30fps, so please help check the issue, the attachment is the performance statistics log, thanks!

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

CPU: mpu1_0: TOTAL LOAD = 0.23 % ( HWI = 0. 5 %, SWI = 0. 0 % )
CPU: mcu2_0: TOTAL LOAD = 27. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % )
CPU: mcu2_1: TOTAL LOAD = 15. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % )
CPU: c6x_1: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % )
CPU: c6x_2: TOTAL LOAD = 1. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % )
CPU: c7x_1: TOTAL LOAD = 0. 0 % ( HWI = 0. 0 %, SWI = 0. 0 % )


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

HWA: VISS: LOAD = 16.27 % ( 99 MP/s )
HWA: MSC0: LOAD = 23.52 % ( 149 MP/s )


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

DDR: READ BW: AVG = 576 MB/s, PEAK = 5369 MB/s
DDR: WRITE BW: AVG = 407 MB/s, PEAK = 1759 MB/s
DDR: TOTAL BW: AVG = 983 MB/s, PEAK = 7128 MB/s


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

DDR_SHARED_MEM: Alloc's: 23 alloc's of 145337416 bytes
DDR_SHARED_MEM: Free's : 0 free's of 0 bytes
DDR_SHARED_MEM: Open's : 23 allocs of 145337416 bytes
DDR_SHARED_MEM: Total size: 536870912 bytes

CPU: mcu2_0: TASK: IPC_RX: 0. 1 %
CPU: mcu2_0: TASK: REMOTE_SRV: 1.37 %
CPU: mcu2_0: TASK: LOAD_TEST: 0. 0 %
CPU: mcu2_0: TASK: TIVX_CPU_0: 4.44 %
CPU: mcu2_0: TASK: TIVX_VPAC_N: 0. 0 %
CPU: mcu2_0: TASK: TIVX_VPAC_L: 0. 0 %
CPU: mcu2_0: TASK: TIVX_VPAC_M: 0.14 %
CPU: mcu2_0: TASK: TIVX_VPAC_M: 0. 0 %
CPU: mcu2_0: TASK: TIVX_VPAC_V: 0.49 %
CPU: mcu2_0: TASK: TIVX_CAPT1: 0. 0 %
CPU: mcu2_0: TASK: TIVX_CAPT2: 0.10 %
CPU: mcu2_0: TASK: TIVX_DISP1: 0. 9 %
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 = 16262656 B ( 96 % unused)
CPU: mcu2_0: HEAP: L3_MEM: size = 262144 B, free = 245248 B ( 93 % 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 %
[MCU2_0] 100.096391 s: AWB Gain = (736, 512, 512, 946)
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 %
[MCU2_0] 100.175997 s: AWB Gain = (734, 512, 512, 946)
CPU: c6x_2: TASK: IPC_TEST_TX: 0. 0 %

[MCU2_0] 100.255186 s: AWB Gain = (734, 512, 512, 946)
[MCU2_0] 100.334474 s: AWB Gain = (734, 512, 512, 946)
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: graph_84 (#nodes = 5, #executions = 279)
NODE: CAPTURE2: node_95: avg = 79524 usecs, min/max = 78542 / 137571 usecs, #executions = 279
NODE: VPAC_VISS1: VISS_Processing: avg = 14450 usecs, min/max = 14259 / 14554 usecs, #executions = 279
NODE: MCU2-0: 2A_AlgNode: avg = 15875 usecs, min/max = 13790 / 23448 usecs, #executions = 279
NODE: VPAC_MSC1: node_106: avg = 19618 usecs, min/max = 19577 / 19800 usecs, #executions = 279
NODE: DISPLAY1: node_108: avg = 8694 usecs, min/max = 76 / 16896 usecs, #executions = 279

PERF: TOTAL: avg = 79652 usecs, min/max = 78632 / 152326 usecs, #executions = 279

PERF: TOTAL: 12.55 FPS





Thanks
Regards
Shine

  • Hi Shine,

    How many channels are you trying to capture? Are all of these channels transmitting at 30fps? Because CSIRX node just processing interrupts, there isn't much processing in CSIRX node. So if your channels are async and/or its not outputting at 30fps, capture node's timing will increase..

    Regards,

    Brijesh

  • Hi TI expert,

    I only link   one camera capture,and the sensor setting is 30fps,Is there any other reason?

    Best Regards

    Renhui

  • Hi Renhui,

    In the TDA4+ox08b statement, what is ox08b? Is it some sensor that you are trying to enable on TDA4 device? 

    Also are you building vision in debug profile? or is Linux OpenVX application getting blocked due to some reason? 

    Can you capture timestamp in the driver callback and see if the callback is received at every 33ms? This will confirm if the sensor is outputting at 30fps.

    Regards,

    Brijesh