Hi TI experts,
I'm using single_cam demo to get a mipi signal from a isp processor(OAX4000).The OAX4000 has already sended mipi through CSIRX1.
I did some changes, but when code run into function vxGraphParameterEnqueueReadyRef, it is stucked. I checked the code and I believe the settings are fine.
Mipi: 4lane, 1472Mbps/lane, VC0: YUV422-8, 3840X2170@30fps
settings in sensor_drv as below:
static IssSensor_CreateParams oax4000CreatePrms = { SENSOR_OV_OAX4000_M96717, /*sensor name*/ 0x1, /*i2cInstId*/ {0x36, 0, 0, 0, 0, 0, 0, 0}, /*i2cAddrSensor*/ {0x42, 0, 0, 0, 0, 0, 0, 0}, /*i2cAddrSer*/ /*IssSensor_Info*/ { { OAX4000_OUT_WIDTH, /*width*/ OAX4000_OUT_HEIGHT, /*height*/ 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_OAX4000_FEATURES, /*features*/ ALGORITHMS_ISS_AEWB_MODE_NONE, /*aewbMode*/ 30, /*fps*/ 4, /*numDataLanes*/ {1, 2, 3, 4}, /*dataLanesMap*/ {0, 0, 0, 0}, /*dataLanesPolarity*/ 683, /*CSI Clock*/ }, 1, /*numChan*/ 4000, /*dccId*/ }; static IssSensorFxns oax4000SensorFxns = { OAX4000_Probe, OAX4000_Config, OAX4000_StreamOn, OAX4000_StreamOff, OAX4000_PowerOn, OAX4000_PowerOff, OAX4000_GetExpParams, OAX4000_SetAeParams, OAX4000_GetDccParams, OAX4000_InitAewbConfig, OAX4000_GetIspConfig, OAX4000_ReadWriteReg, OAX4000_GetExpPrgFxn, OAX4000_deinit, OAX4000_GetWBPrgFxn, OAX4000_SetAwbParams }; static IssSensorIntfParams oax4000SensorIntfPrms = { 0, /*isMultiChannel*/ 4, /*numCSI2Lanes*/ 1, /*inCsi2VirtualChanNum*/ 1, /* isCplxCfgValid */ { {0, 1}, /* Clock Lane */ {0, 2}, /* data1Lane */ {0, 3}, /* data2Lane */ {0, 4}, /* data3Lane*/ {0, 5}, /* data4Lane */ }, 683, /* csi2PhyClk */ 0, /*sensorBroadcast*/ 0, /*enableFsin*/ };
Also, I did some changes in function app_create_graph which is in single_cam demo:
printf("########################## OAX4000 !!!!!!\r\n"); local_capture_config.instId[0] = 1; local_capture_config.chInstMap[0] = 1U; local_capture_config.instCfg[0].laneBandSpeed = TIVX_CAPTURE_LANE_BAND_SPEED_1350_TO_1500_MBPS; local_capture_config.chVcNum[0] = 0;
demo log is:
root@j7-evm:~# /opt/vision_apps/vx_app_single_cam.out 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 !!! 171.282926 s: GTC Frequency = 200 MHz APP: Init ... Done !!! 171.286469 s: VX_ZONE_INIT:Enabled 171.286495 s: VX_ZONE_ERROR:Enabled 171.286503 s: VX_ZONE_WARNING:Enabled 171.292925 s: VX_ZONE_INIT:[tivxInit:71] Initialization Done !!! 171.293097 s: VX_ZONE_INIT:[tivxHostInit:48] Initialization Done for HOST !!! Single Camera Demo - (c) Texas Instruments 2019 ======================================================== Usage, /opt/vision_apps/vx_app_single_cam.out --cfg <config file> Defaulting to interactive mode IttCtrl_registerHandler: command echo registered at location 0 IttCtrl_registerHandler: command iss_read_2a_params registered at location 1 IttCtrl_registerHandler: command iss_write_2a_params registered at location 2 IttCtrl_registerHandler: command iss_raw_save registered at location 3 IttCtrl_registerHandler: command iss_yuv_save registered at location 4 IttCtrl_registerHandler: command iss_read_sensor_reg registered at location 5 IttCtrl_registerHandler: command iss_write_sensor_reg registered at location 6 IttCtrl_registerHandler: command dev_ctrl registered at location 7 IttCtrl_registerHandler: command iss_send_dcc_file registered at location 8 NETWORK: Opened at IP Addr = 0.0.0.0, socket port=5000!!! 171.293959 s: ISS: Enumerating sensors ... !!! 171.294362 s: ISS: Enumerating sensors ... found 0 : IMX390-UB953_D3 171.294372 s: ISS: Enumerating sensors ... found 1 : AR0233-UB953_MARS 171.294380 s: ISS: Enumerating sensors ... found 2 : AR0820-UB953_LI 171.294387 s: ISS: Enumerating sensors ... found 3 : UB9xxx_RAW12_TESTPATTERN 171.294395 s: ISS: Enumerating sensors ... found 4 : UB96x_UYVY_TESTPATTERN 171.294403 s: ISS: Enumerating sensors ... found 5 : GW_AR0233_UYVY 171.294410 s: ISS: Enumerating sensors ... found 6 : OAX4000-MAX96717 Select camera port index 0-7 : [MCU2_0] 171.294050 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CREATE [MCU2_0] 171.294114 s: Sensor at index 0 = IMX390-UB953_D3 [MCU2_0] 171.294146 s: Sensor at index 1 = AR0233-UB953_MARS [MCU2_0] 171.294172 s: Sensor at index 2 = AR0820-UB953_LI [MCU2_0] 171.294195 s: Sensor at index 3 = UB9xxx_RAW12_TESTPATTERN [MCU2_0] 171.294220 s: Sensor at index 4 = UB96x_UYVY_TESTPATTERN [MCU2_0] 171.294245 s: Sensor at index 5 = GW_AR0233_UYVY [MCU2_0] 171.294283 s: Sensor at index 6 = OAX4000-MAX96717 6 0x7 registered sensor drivers a : IMX390-UB953_D3 b : AR0233-UB953_MARS c : AR0820-UB953_LI d : UB9xxx_RAW12_TESTPATTERN e : UB96x_UYVY_TESTPATTERN f : GW_AR0233_UYVY g : OAX4000-MAX96717 Select a sensor above or press '0' to autodetect the sensor : Invalid selection . Try again 0x7 registered sensor drivers a : IMX390-UB953_D3 b : AR0233-UB953_MARS c : AR0820-UB953_LI d : UB9xxx_RAW12_TESTPATTERN e : UB96x_UYVY_TESTPATTERN f : GW_AR0233_UYVY g : OAX4000-MAX96717 Select a sensor above or press '0' to autodetect the sensor : g Sensor selected : OAX4000-MAX96717 LDC Selection Yes(1)/No(0) : LDC Selection Yes(1)/No(0) : 0 Querying OAX4000-MAX96717 179.690395 s: ISS: Querying sensor [OAX4000-MAX96717] ... !!! 179.690642 s: ISS: Querying sensor [OAX4000-MAX96717] ... Done !!! YUV Input selected. VISS and AEWB nodes will be bypassed. 179.690655 s: ISS: Initializing sensor [OAX4000-MAX96717], doing IM_SENSOR_CMD_PWRON ... !!! [MCU2_0] 179.690496 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_QUERY [MCU2_0] 179.690555 s: Received Query for OAX4000-MAX96717 [MCU2_0] 179.690713 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_PWRON 179.690950 s: ISS: Initializing sensor [OAX4000-MAX96717], doing IM_SENSOR_CMD_CONFIG ... !!! 179.691217 s: ISS: Initializing sensor [OAX4000-MAX96717] ... Done !!! ############# width:3840 height:2170 ########################## OAX4000 !!!!!! disable LDC Scaler is disabled ========================== Demo : Single Camera w/ 2A ========================== p: Print performance statistics s: Save Sensor RAW, VISS Output and H3A output images to File System e: Export performance statistics u: Update DCC from File System x: Exit Enter Choice: Unsupported command ========================== Demo : Single Camera w/ 2A ========================== p: Print performance statistics s: Save Sensor RAW, VISS Output and H3A output images to File System e: Export performance statistics u: Update DCC from File System x: Exit Enter Choice: 179.696380 s: ISS: Starting sensor [OAX4000-MAX96717] ... !!! 179.696748 s: ISS: Starting sensor [OAX4000-MAX96717] ... !!! [MCU2_0] 179.690790 s: IM_SENSOR_CMD_PWRON : channel_mask = 0x1 sensor_name:OAX4000-MAX96717 [MCU2_0] 179.690852 s: fpd i2cInst:0 Addr:0x0 status;-1 [MCU2_0] 179.690888 s: sensor powron status:0 [MCU2_0] 179.691024 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CONFIG [MCU2_0] 179.691061 s: Application requested features = 0x0 [MCU2_0] [MCU2_0] 179.691115 s: Configuring camera # 0 [MCU2_0] 179.691154 s: IM_SENSOR_CMD_CONFIG returning status = 0 [MCU2_0] 179.696495 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_STREAM_ON [MCU2_0] 179.696582 s: IM_SENSOR_CMD_STREAM_ON: channel_mask = 0x1 [MCU2_0] 179.696619 s: IssSensor_Start chId:0 [MCU2_0] 179.696664 s: OAX4000 StreamOn !!!!!!!!! p Summary of CPU load, ==================== CPU: mpu1_0: TOTAL LOAD = 15. 6 % ( HWI = 0. 4 %, SWI = 0. 4 % ) CPU: mcu2_0: TOTAL LOAD = 2.53 % ( HWI = 0.47 %, SWI = 0. 9 % ) CPU: mcu2_1: TOTAL LOAD = 0. 9 % ( HWI = 0. 6 %, SWI = 0. 1 % ) CPU: c6x_1: TOTAL LOAD = 0.47 % ( HWI = 0.28 %, SWI = 0.17 % ) CPU: c6x_2: TOTAL LOAD = 0.47 % ( HWI = 0.28 %, SWI = 0.17 % ) CPU: c7x_1: TOTAL LOAD = 0. 7 % ( HWI = 0. 3 %, SWI = 0. 2 % ) HWA performance statistics, =========================== DDR performance statistics, =========================== DDR: READ BW: AVG = 11 MB/s, PEAK = 300 MB/s DDR: WRITE BW: AVG = 5 MB/s, PEAK = 200 MB/s DDR: TOTAL BW: AVG = 16 MB/s, PEAK = 500 MB/s Detailed CPU performance/memory statistics, =========================================== CPU: mcu2_0: TASK: IPC_RX: 0. 0 % CPU: mcu2_0: TASK: REMOTE_SRV: 0. 0 % 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 = 16712448 B ( 99 % unused) CPU: mcu2_0: HEAP: L3_MEM: size = 131072 B, free = 131072 B (100 % unused) CPU: mcu2_0: HEAP: DDR_NON_CACHE_M: size = 16777216 B, free = 16777216 B (100 % 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_VDEC1: 0. 0 % CPU: mcu2_1: TASK: TIVX_VDEC2: 0. 0 % CPU: mcu2_1: TASK: TIVX_VENC1: 0. 0 % CPU: mcu2_1: TASK: TIVX_VENC2: 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 = 16774912 B ( 99 % unused) CPU: mcu2_1: HEAP: L3_MEM: size = 131072 B, free = 131072 B (100 % unused) CPU: mcu2_1: HEAP: DDR_NON_CACHE_M: size = 117440512 B, free = 97542144 B ( 9 % 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 = 1073741824 B, free = 1073741824 B ( 0 % 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 = 100663296 B, free = 100663296 B ( 14 % unused) GRAPH: graph_85 (#nodes = 2, #executions = 0) NODE: CAPTURE2: node_96: avg = 0 usecs, min/max = 18446744073709551 / 0 usecs, #executions = 0 NODE: DISPLAY1: node_97: avg = 0 usecs, min/max = 18446744073709551 / 0 usecs, #executions = 0 PERF: TOTAL: avg = 0 usecs, min/max = 4294967295 / 0 usecs, #executions = 0 PERF: TOTAL: 0. 0 FPS
It seems CSIRX did not receive the signal, but I don't know why, all the changes seems correct