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: CSI and vc port map setting and debug

Part Number: TDA4VM

we add a new camera driver, then running the "vx_app_single_cam.sh" script test images occur erros, error log is "VX_ZONE_WARNING:[tivxCaptureSetTimeout:796]  CAPTURE: WARNING: Error frame not provided using tivxCaptureRegisterErrorFrame, defaulting to waiting forever !!!"  ;

data link:

Serializer -> Deserializer -> CSI1 -> VC0  

Read SerDser register, the stream package is locked in deserializer and output to CSI port.

q:

1. How to troubleshoot current errors, any tools or script can we used? 

2. How to shown CSI input date log.

3. How to config CSI port and vc port in code. Which is demo path?

  • Well, this is not an error. This is just a message that there is no error frame, so in case, sensor does not output any frame and CSIRX does not capture any frame, it would just be stuck.. 

    Is your sensor/deserializer correctly configured to output data on correct virtual channel number and data type? Is the lane speed matching for your output? Are you following below note for adding a new sensor in the imaging framework? 

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/psdk_rtos/docs/user_guide/developer_notes_image_sensor.html

      

    Regards,

    Brijesh

  • #include "iss_sensor_gmsl_ar0233.h"
    #include "max929x_ar0233_serdes_config.h"
    
    static IssSensor_CreateParams  gmsl_ar0233CreatePrms = {
        GMSL_AR0233_UYVY,     /*sensor name*/
        0x3,                             /*i2cInstId*/
        {0, 0, 0, 0, 0, 0, 0, 0},   /*i2cAddrSensor*/
        {0x20, 0x21, 0, 0, 0, 0, 0},      /*i2cAddrSer*/
        /*IssSensor_Info*/
        {
            {
                GMSL_AR0233_OUT_WIDTH,               /*width*/
                GMSL_AR0233_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_GMSL_AR0233_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_1500_TO_1750_MBPS, /*csi_laneBandSpeed*/
        },
        2,                                  /*numChan*/
        5233,                                /*dccId*/
    };
    
    static IssSensorFxns           gmsl_ar0233SensorFxns = {
        gmsl_ar0233_Probe,
        gmsl_ar0233_Config,
        gmsl_ar0233_StreamOn,
        gmsl_ar0233_StreamOff,
        gmsl_ar0233_PowerOn,
        gmsl_ar0233_PowerOff,
        NULL,
        NULL,
        gmsl_ar0233_GetDccParams,
        gmsl_ar0233_InitAewbConfig,
        NULL,
        NULL,
        NULL,
        gmsl_ar0233_deinit,
        NULL,
        NULL
    };
    
    static IssSensorIntfParams     gmsl_ar0233SensorIntfPrms = {
        0,             /*sensorBroadcast*/
        0,             /*enableFsin*/
        0,			   /*numCamerasStreaming*/
    };
    
    IssSensors_Handle gmsl_ar0233SensorHandle = {
        1,                                 /*isUsed*/
        &gmsl_ar0233CreatePrms,                /*CreatePrms*/
        &gmsl_ar0233SensorFxns,                /*SensorFxns*/
        &gmsl_ar0233SensorIntfPrms,            /*SensorIntfPrms*/
    };
    
    static uint8_t portInitNum[BOARD_GMSL_CSI_NMU] = {0};
    
    /*
     * \brief DCC Parameters of gw_ar0233
     */
    IssCapture_CmplxIoLaneCfg           gmsl_ar0233Csi2CmplxIoLaneCfg;
    
    extern IssSensors_Handle * gIssSensorTable[ISS_SENSORS_MAX_SUPPORTED_SENSOR];
    
    int32_t IssSensor_gmsl_ar0233_Init()
    {
        int32_t status;
        status = IssSensor_Register(&gmsl_ar0233SensorHandle);
        if(0 != status)
        {
            printf("IssSensor_gmsl_ar0233_Init failed \n");
        }
    
        return status;
    }
    
    /*******************************************************************************
     *  Local Functions Definition
     *******************************************************************************
     */
    static int32_t gmsl_ar0233_Probe(uint32_t chId, void *pSensorHdl)
    {
    	/*
    		Probe is used only for detecting cameras connected to an GMSL Link port. 
    		There is no reliable way of detecting this camera. 
    		Always return -1 to indicate autodetect failed.
    		If needed, user can manually select this sensor from application menu.
    	*/
        int32_t status = 0;
        return (status);
    }
    static int32_t gmsl_ar0233_Config(uint32_t chId, void *pSensorHdl, uint32_t sensor_features_requested)
    {
        int32_t status = 0;
        I2cParams *deserCfg = NULL;
        I2cParams *serCfg = NULL;
        int8_t gmslInstanceId = getGMSLInstIdFromChId(chId);
        uint32_t i2cInstId;
        IssSensors_Handle * pSenHandle = (IssSensors_Handle*)pSensorHdl;
        IssSensor_CreateParams * pCreatePrms;
        uint8_t cnt = 0;
        I2cParams dserPreCfg[] = 
        {
            {0x0010, 0x00, 10},
            {0x0010, 0x20, 200},
            {0xFFFF, 0, 0}
        };
        uint8_t serDefAddrList[] = {0x40, 0x42, 0x60, 0x62};
    
        assert(NULL != pSenHandle);
        pCreatePrms = pSenHandle->createPrms;
        assert(NULL != pCreatePrms);
    
        dserPreCfg[0].nRegValue |= (1 << (chId%2)); 
        dserPreCfg[1].nRegValue |= (1 << (chId%2)); 
    
        deserCfg = dserPreCfg;
        if(chId % 2)
        {
            serCfg = gmslBCfg;
        }
        else
        {
            serCfg = gmslACfg;
        }
        
        i2cInstId = pCreatePrms->i2cInstId;
    
        if(NULL != deserCfg)
        {
            status = max9296_cfgScript(deserCfg, gmslInstanceId);
        }
        
        for(cnt=0; cnt<sizeof(serDefAddrList); cnt++)
        {
            if (0 == MAX92xx_WriteReg(i2cInstId, serDefAddrList[cnt], 0x0000, pCreatePrms->i2cAddrSer[chId] << 1))
            {
                break;
            }
        }
    
        if(0 == status)
        {
            if(NULL != serCfg)
            {
                status = max9295_cfgScript(i2cInstId, pCreatePrms->i2cAddrSer[chId], serCfg);
            }
        }
        portInitNum[gmslInstanceId] |= (1 << (chId%2));
        if(0x03 == (portInitNum[gmslInstanceId] & 0x03))
        {
            dserPreCfg[0].nRegValue |= 0x03; 
            dserPreCfg[1].nRegValue |= 0x03; 
            status = max9296_cfgScript(deserCfg, gmslInstanceId);
            printf("Set dser into spilt mode, port init state:0x%02x\n", portInitNum[gmslInstanceId]);
        }
    
        return (status);
    }
    static int32_t gmsl_ar0233_StreamOn(uint32_t chId, void *pSensorHdl)
    {
        int32_t status = 0;
        int8_t gmslInstanceId = getGMSLInstIdFromChId(chId);
        I2cParams dseStartCSICfg[] = 
        {
            {0x0313, 0x02, 10},
            {0xFFFF, 0, 0}
        };
    
        status = max9296_cfgScript(dseStartCSICfg, gmslInstanceId);
        if(0 == status)
        {
            portInitNum[gmslInstanceId] |= (1 << (chId + 4));
        }
    
        return (status);
    }
    static int32_t gmsl_ar0233_StreamOff(uint32_t chId, void *pSensorHdl)
    {
        int32_t status = 0;
        int8_t gmslInstanceId = getGMSLInstIdFromChId(chId);
        I2cParams dseStopCSICfg[] = 
        {
            {0x0313, 0x00, 10},
            {0xFFFF, 0, 0}
        };
    
        portInitNum[gmslInstanceId] &= (~(1 << (chId + 4)));
        if(0 == (portInitNum[gmslInstanceId] & 0xF0))
        {
            status = max9296_cfgScript(dseStopCSICfg, gmslInstanceId);
        }
    
        return (status);
    }
    static int32_t gmsl_ar0233_PowerOn(uint32_t chId, void *pSensorHdl)
    {
        int32_t status = 0;
        return status;
    }
    static int32_t gmsl_ar0233_PowerOff(uint32_t chId, void *pSensorHdl)
    {
        int32_t status = 0;
        return status;
    }
    static int32_t gmsl_ar0233_GetDccParams(uint32_t chId, void *pSensorHdl, IssSensor_DccParams *pDccPrms)
    {
        int32_t status = 0;
        return status;
    }
    static void gmsl_ar0233_InitAewbConfig(uint32_t chId, void *pSensorHdl)
    {
        return;
    }
    static void gmsl_ar0233_deinit (uint32_t chId, void *pSensorHdl)
    {
        return;
    }

    Here is the source code. we have following the sensor imaging framework to add myself sensor driver. Some SerDser configuration is fixed max9296 and max9295.

     ./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 !!!
        57.595734 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
        57.598717 s:  VX_ZONE_INIT:Enabled
        57.598744 s:  VX_ZONE_ERROR:Enabled
        57.598750 s:  VX_ZONE_WARNING:Enabled
        57.599816 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
        57.599966 s:  VX_ZONE_INIT:[tivxHostInitLocal:93] Initialization Done for HOST !!!
    
     Single Camera Demo - (c) Texas Instruments 2019
     ========================================================
    
     Usage,
      ./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 = 1.4.16.64, socket port=5000!!!
    tivxImagingLoadKernels done
        57.607733 s: ISS: Enumerating sensors ... !!!
    [MCU2_0]     57.608033 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000000, prm_size = 384 bytes ... !!!
    [MCU2_0]     57.608156 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_ENUMERATE 
    [MCU2_0]     57.608285 s: Max92xx config start.
    [MCU2_0]     57.608487 s: MAX92xx_WriteReg: Write reg 0x0313 by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     57.627840 s: Access register num=1
    [MCU2_0]     57.627882 s: End of Max9296 config 
    [MCU2_0]     57.627910 s: Max92xx config start.
    [MCU2_0]     57.628094 s: MAX92xx_WriteReg: Write reg 0x0010 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     57.647957 s: MAX92xx_WriteReg: Write reg 0x0010 by value 0x21, on slave 0x48 in I2C3
    [MCU2_0]     57.847841 s: Access register num=2
    [MCU2_0]     57.847884 s: End of Max9296 config 
    [MCU2_0]     57.848146 s: max9296_CSI1_I2C3 linkA detected.
    [MCU2_0]     57.848181 s: Max92xx config start.
    [MCU2_0]     57.848361 s: MAX92xx_WriteReg: Write reg 0x0010 by value 0x02, on slave 0x48 in I2C3
    [MCU2_0]     57.867959 s: MAX92xx_WriteReg: Write reg 0x0010 by value 0x22, on slave 0x48 in I2C3
    [MCU2_0]     58.067843 s: Access register num=2
    [MCU2_0]     58.067886 s: End of Max9296 config 
    [MCU2_0]     58.068116 s: max9296_CSI1_I2C3 linkB can not detected.
    [MCU2_0]     58.068151 s: Max92xx config start.
    [MCU2_0]     58.068292 s: MAX92xx_WriteReg: Write reg 0x0050 by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     58.068464 s: MAX92xx_WriteReg: Write reg 0x0051 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     58.068630 s: MAX92xx_WriteReg: Write reg 0x044a by value 0xd8, on slave 0x48 in I2C3
    [MCU2_0]     58.068846 s: MAX92xx_WriteReg: Write reg 0x040b by value 0x07, on slave 0x48 in I2C3
    [MCU2_0]     58.069032 s: MAX92xx_WriteReg: Write reg 0x040c by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     58.069198 s: MAX92xx_WriteReg: Write reg 0x040d by value 0x1e, on slave 0x48 in I2C3
    [MCU2_0]     58.069361 s: MAX92xx_WriteReg: Write reg 0x040e by value 0x1e, on slave 0x48 in I2C3
    [MCU2_0]     58.069522 s: MAX92xx_WriteReg: Write reg 0x040f by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     58.069682 s: MAX92xx_WriteReg: Write reg 0x0410 by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     58.069847 s: MAX92xx_WriteReg: Write reg 0x0411 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     58.070028 s: MAX92xx_WriteReg: Write reg 0x0412 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     58.070193 s: MAX92xx_WriteReg: Write reg 0x042d by value 0x15, on slave 0x48 in I2C3
    [MCU2_0]     58.070356 s: MAX92xx_WriteReg: Write reg 0x044a by value 0xd8, on slave 0x48 in I2C3
    [MCU2_0]     58.070518 s: MAX92xx_WriteReg: Write reg 0x044b by value 0x07, on slave 0x48 in I2C3
    [MCU2_0]     58.070681 s: MAX92xx_WriteReg: Write reg 0x044c by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     58.070845 s: MAX92xx_WriteReg: Write reg 0x044d by value 0x1e, on slave 0x48 in I2C3
    [MCU2_0]     58.071026 s: MAX92xx_WriteReg: Write reg 0x044e by value 0x5e, on slave 0x48 in I2C3
    [MCU2_0]     58.071195 s: MAX92xx_WriteReg: Write reg 0x044f by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     58.071359 s: MAX92xx_WriteReg: Write reg 0x0450 by value 0x40, on slave 0x48 in I2C3
    [MCU2_0]     58.071521 s: MAX92xx_WriteReg: Write reg 0x0451 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     58.071681 s: MAX92xx_WriteReg: Write reg 0x0452 by value 0x41, on slave 0x48 in I2C3
    [MCU2_0]     58.071845 s: MAX92xx_WriteReg: Write reg 0x046d by value 0x15, on slave 0x48 in I2C3
    [MCU2_0]     58.072024 s: MAX92xx_WriteReg: Write reg 0x0330 by value 0x04, on slave 0x48 in I2C3
    [MCU2_0]     58.072194 s: MAX92xx_WriteReg: Write reg 0x044a by value 0xd8, on slave 0x48 in I2C3
    [MCU2_0]     58.072357 s: MAX92xx_WriteReg: Write reg 0x0333 by value 0x4e, on slave 0x48 in I2C3
    [MCU2_0]     58.072516 s: MAX92xx_WriteReg: Write reg 0x0335 by value 0x00, on slave 0x48 in I2C3
    [MCU2_0]     58.072678 s: MAX92xx_WriteReg: Write reg 0x0443 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     58.072844 s: MAX92xx_WriteReg: Write reg 0x0444 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     58.073022 s: MAX92xx_WriteReg: Write reg 0x1d00 by value 0xf4, on slave 0x48 in I2C3
    [MCU2_0]     58.073187 s: MAX92xx_WriteReg: Write reg 0x0320 by value 0x30, on slave 0x48 in I2C3
    [MCU2_0]     58.073349 s: MAX92xx_WriteReg: Write reg 0x1d00 by value 0xf5, on slave 0x48 in I2C3
    [MCU2_0]     58.073510 s: MAX92xx_WriteReg: Write reg 0x0332 by value 0x30, on slave 0x48 in I2C3
    [MCU2_0]     58.073670 s: MAX92xx_WriteReg: Write reg 0x0313 by value 0x02, on slave 0x48 in I2C3
    [MCU2_0]     58.073739 s: Access register num=33
    [MCU2_0]     58.073766 s: End of Max9296 config 
    [MCU2_0]     58.073989 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000000, prm_size = 384 bytes ... !!!
        58.074708 s: ISS: Enumerating sensors ... found 0 : IMX390-UB953_D3
        58.074722 s: ISS: Enumerating sensors ... found 1 : AR0233-UB953_MARS
        58.074728 s: ISS: Enumerating sensors ... found 2 : AR0820-UB953_LI
        58.074733 s: ISS: Enumerating sensors ... found 3 : UB9xxx_RAW12_TESTPATTERN
        58.074738 s: ISS: Enumerating sensors ... found 4 : UB96x_UYVY_TESTPATTERN
        58.074743 s: ISS: Enumerating sensors ... found 5 : GW_AR0233_UYVY
        58.405700 s: ISS: Enumerating sensors ... found 6 : AR0233_MAX9295_UYVY
    Select camera port index 0-11 : 0
    7 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 : AR0233_MAX9295_UYVY 
    Select a sensor above or press '0' to autodetect the sensor : Invalid selection 
    . Try again 
    7 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 : AR0233_MAX9295_UYVY 
    Select a sensor above or press '0' to autodetect the sensor : g
    Sensor selected : AR0233_MAX9295_UYVY
    LDC Selection Yes(1)/No(0) : LDC Selection Yes(1)/No(0) : 0
    app_init done
    Querying AR0233_MAX9295_UYVY 
        68.435282 s: ISS: Querying sensor [AR0233_MAX9295_UYVY] ... !!!
        68.435883 s: ISS: Querying sensor [AR0233_MAX9295_UYVY] ... Done !!!
    YUV Input selected. VISS and AEWB nodes will be bypassed. 
    Sensor DCC is enabled 
    Sensor width = 1920
    Sensor height = 1080
    Sensor DCC ID = 5233
    Sensor Supported Features = 0x100
    Sensor Enabled Features = 0x100
        68.435914 s: ISS: Initializing sensor [AR0233_MAX9295_UYVY], doing IM_SENSOR_CMD_PWRON ... !!!
        68.436403 s: ISS: Initializing sensor [AR0233_MAX9295_UYVY], doing IM_SENSOR_CMD_CONFIG ... !!!
    [MCU2_0]     68.435489 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000001, prm_size = 384 bytes ... !!!
    [MCU2_0]     68.435604 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_QUERY 
    [MCU2_0]     68.435645 s: Received Query for AR0233_MAX9295_UYVY 
    [MCU2_0]     68.435859 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000001, prm_size = 384 bytes ... !!!
    [MCU2_0]     68.436121 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000002, prm_size = 384 bytes ... !!!
    [MCU2_0]     68.436203 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_PWRON 
    [MCU2_0]     68.436239 s: IM_SENSOR_CMD_PWRON : channel_mask = 0x1 
    [MCU2_0]     68.436387 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000002, prm_size = 384 bytes ... !!!
    [MCU2_0]     68.436619 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000003, prm_size = 384 bytes ... !!!
    [MCU2_0]     68.436690 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_CONFIG 
    [MCU2_0]     68.436725 s: Application requested features = 0x100 
    [MCU2_0]  
    [MCU2_0]     68.436759 s: IM_SENSOR_CMD_CONFIG channel_mask = 1
    [MCU2_0]     68.436861 s: Configuring camera # 0 
    [MCU2_0]     68.436907 s: Max92xx config start.
    [MCU2_0]     68.437063 s: MAX92xx_WriteReg: Write reg 0x0010 by value 0x01, on slave 0x48 in I2C3
    [MCU2_0]     68.446918 s: MAX92xx_WriteReg: Write reg 0x0010 by value 0x21, on slave 0x48 in I2C3
        68.651701 s: ISS: Initializing sensor [AR0233_MAX9295_UYVY] ... Done !!!
    Creating graph 
    Initializing params for capture node 
    app_create_graph: Set CSI1 vcid=0, lane_number=4, lane_speed=19
    capture_config = 0x0xffff89eeb968 
    Creating capture node 
    obj->capture_node = 0x0xffff89e5d6e8 
    Display Set Target done
    vxSetGraphScheduleConfig done
    [MCU2_0]     68.646843 s: Access register num=2
    [MCU2_0]     68.646885 s: End of Max9296 config 
    [MCU2_0]     68.647011 s: Error writing 0x40 to MAX92xx register 0x0 useing i2c3_0x40
    [MCU2_0]     68.647128 s: Error writing 0x40 to MAX92xx register 0x0 useing i2c3_0x42
    [MCU2_0]     68.647239 s: Error writing 0x40 to MAX92xx register 0x0 useing i2c3_0x60
    [MCU2_0]     68.647423 s: MAX92xx_WriteReg: Write reg 0x0000 by value 0x40, on slave 0x62 in I2C3
    [MCU2_0]     68.647482 s: Max9295 config start : slaveAddr = 0x20 
    [MCU2_0]     68.647666 s: MAX92xx_WriteReg: Write reg 0x007b by value 0x32, on slave 0x20 in I2C3
    [MCU2_0]     68.647876 s: MAX92xx_WriteReg: Write reg 0x0083 by value 0x32, on slave 0x20 in I2C3
    [MCU2_0]     68.648099 s: MAX92xx_WriteReg: Write reg 0x008b by value 0x32, on slave 0x20 in I2C3
    [MCU2_0]     68.648307 s: MAX92xx_WriteReg: Write reg 0x0093 by value 0x32, on slave 0x20 in I2C3
    [MCU2_0]     68.648508 s: MAX92xx_WriteReg: Write reg 0x00a3 by value 0x32, on slave 0x20 in I2C3
    [MCU2_0]     68.648708 s: MAX92xx_WriteReg: Write reg 0x00ab by value 0x32, on slave 0x20 in I2C3
    [MCU2_0]     68.648911 s: MAX92xx_WriteReg: Write reg 0x0330 by value 0x00, on slave 0x20 in I2C3
    [MCU2_0]     68.649131 s: MAX92xx_WriteReg: Write reg 0x0331 by value 0x33, on slave 0x20 in I2C3
    [MCU2_0]     68.649339 s: MAX92xx_WriteReg: Write reg 0x0332 by value 0xe0, on slave 0x20 in I2C3
    [MCU2_0]     68.649543 s: MAX92xx_WriteReg: Write reg 0x0333 by value 0x04, on slave 0x20 in I2C3
    [MCU2_0]     68.649743 s: MAX92xx_WriteReg: Write reg 0x0334 by value 0x00, on slave 0x20 in I2C3
    [MCU2_0]     68.650001 s: MAX92xx_WriteReg: Write reg 0x0335 by value 0x00, on slave 0x20 in I2C3
    [MCU2_0]     68.650212 s: MAX92xx_WriteReg: Write reg 0x0308 by value 0x7d, on slave 0x20 in I2C3
    [MCU2_0]     68.650414 s: MAX92xx_WriteReg: Write reg 0x0311 by value 0x15, on slave 0x20 in I2C3
    [MCU2_0]     68.650614 s: MAX92xx_WriteReg: Write reg 0x0314 by value 0x5e, on slave 0x20 in I2C3
    [MCU2_0]     68.650823 s: MAX92xx_WriteReg: Write reg 0x0315 by value 0x00, on slave 0x20 in I2C3
    [MCU2_0]     68.651038 s: MAX92xx_WriteReg: Write reg 0x0002 by value 0x13, on slave 0x20 in I2C3
    [MCU2_0]     68.651247 s: MAX92xx_WriteReg: Write reg 0x0053 by value 0x10, on slave 0x20 in I2C3
    [MCU2_0]     68.651449 s: MAX92xx_WriteReg: Write reg 0x02be by value 0x10, on slave 0x20 in I2C3
    [MCU2_0]     68.651501 s:  End of Max9295 config 
    [MCU2_0]     68.651528 s: IM_SENSOR_CMD_CONFIG returning status = 0
    [MCU2_0]     68.651684 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000003, prm_size = 384 bytes ... !!!
    Scaler is disabled
    app_create_graph exiting
    app_create_graph done
        68.665790 s: ISS: Starting sensor [AR0233_MAX9295_UYVY] ... !!!
    [MCU2_0]     68.657462 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00000307
    [MCU2_0]     68.662914 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00000500
    [MCU2_0]     68.663326 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00001308
    [MCU2_0]     68.664248 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00001500
    [MCU2_0]     68.665891 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000001, prm_size = 0 bytes ... !!!
    [MCU2_0]     68.666057 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000001, prm_size = 0 bytes ... !!!
    [MCU2_0]     68.666152 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000005, prm_size = 0 bytes ... !!!
    [MCU2_0]     68.666268 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000005, prm_size = 0 bytes ... !!!
    [MCU2_0]     68.666582 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000004, prm_size = 384 bytes ... !!!
    [MCU2_0]     68.666673 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_STREAM_ON 
        68.677052 s: ISS: Starting sensor [AR0233_MAX9295_UYVY] ... !!!
    [MCU2_0]     68.666721 s: IM_SENSOR_CMD_STREAM_ON:  channel_mask = 0x1
    [MCU2_0]     68.666764 s: Max92xx config start.
    [MCU2_0]     68.667033 s: MAX92xx_WriteReg: Write reg 0x0313 by value 0x02, on slave 0x48 in I2C3
    [MCU2_0]     68.676839 s: Access register num=1
    [MCU2_0]     68.676879 s: End of Max9296 config 
    [MCU2_0]     68.677031 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000004, prm_size = 384 bytes ... !!!
    
    
     ==========================
     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: [MCU2_0]     68.996066 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x0000e307
    [MCU2_0]     68.996466 s:  VX_ZONE_WARNING:[tivxCaptureSetTimeout:796]  CAPTURE: WARNING: Error frame not provided using tivxCaptureRegisterErrorFrame, defaulting to waiting forever !!!
    [MCU2_0]     68.996590 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00011307
    

    Here is the single cam running log. We can't find any usefull message.

  • ok, can you please make sure that the deserializer and/or sensor is configured to output datatype YUV422 ie value 0x1E and also the virtual channel id is also set to 0x0?

    Because from the log above, single camera application is expecting this. If they are not matching, CSIRX will not capture the data. 

    Also can you please check and make sure that sensor and/or deserializer output is started only in streamon callback and not before that? 

    Regards,

    Brijesh

  •  The date type and vi id is set by this reg operation; and input/output data_type is yuv422_8bit and vc_id is 0 .

     This moment open deserializer output data.

    how can I dump the CSI relational register and which registers should I need lookup? 

  • [MCU2_0]     66.938281 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00024500
    [MCU2_0]     66.938410 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001d500
    [MCU2_0]     66.938545 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00013307
     i 962...
    [MCU2_0]     66.954948 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00026500
    [MCU2_0]     66.955074 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001e500
    [MCU2_0]     66.955210 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x0000e307
     i 963...
    [MCU2_0]     66.971666 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00020500
    [MCU2_0]     66.971794 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001b500
    [MCU2_0]     66.971931 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00011307
     i 964...
    [MCU2_0]     66.988282 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00022500
    [MCU2_0]     66.988412 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001c500
    [MCU2_0]     66.988546 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00012307
     i 965...
    [MCU2_0]     67.004943 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00024500
    [MCU2_0]     67.005070 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001d500
    [MCU2_0]     67.005203 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00013307
     i 966...
    [MCU2_0]     67.021652 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00026500
    [MCU2_0]     67.021779 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001e500
    [MCU2_0]     67.021915 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x0000e307
     i 967...
    [MCU2_0]     67.038283 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00020500
    [MCU2_0]     67.038411 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001b500
    [MCU2_0]     67.038615 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00011307
     i 968...
    [MCU2_0]     67.054947 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00022500
    [MCU2_0]     67.055073 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001c500
    [MCU2_0]     67.055205 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00012307
     i 969...
    [MCU2_0]     67.071672 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00024500
    [MCU2_0]     67.071805 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001d500
    [MCU2_0]     67.071941 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00013307
     i 970...
    [MCU2_0]     67.088278 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00026500
    [MCU2_0]     67.088410 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001e500
    [MCU2_0]     67.088613 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x0000e307
     i 971...
    [MCU2_0]     67.104944 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00020500
    [MCU2_0]     67.105068 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001b500
    [MCU2_0]     67.105205 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00011307
     i 972...
    [MCU2_0]     67.121662 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00022500
    [MCU2_0]     67.121790 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001c500
    [MCU2_0]     67.121929 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00012307
     i 973...
    [MCU2_0]     67.138281 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00024500
    [MCU2_0]     67.138411 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001d500
    [MCU2_0]     67.138613 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00013307
     i 974...
    
    
    [MCU2_0]     67.154949 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00026500
    [MCU2_0]     67.155073 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001e500
    [MCU2_0]     67.155205 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x0000e307
     i 975...
    [MCU2_0]     67.171666 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00020500
    [MCU2_0]     67.171795 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001b500
    [MCU2_0]     67.171933 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00011307
        67.188512 s: ISS: Stopping sensor [AR0233_MAX9295_UYVY] ... !!!
    [MCU2_0]     67.188275 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00022500
    [MCU2_0]     67.188402 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x0001c500
    [MCU2_0]     67.188777 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000005, prm_size = 384 bytes ... !!!
    [MCU2_0]     67.188877 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_STREAM_OFF 
    [MCU2_0]     67.188924 s: IM_SENSOR_CMD_STREAM_ON:  channel_mask = 0x1
    [MCU2_0]     67.188965 s: Max92xx config start.
    [MCU2_0]     67.189158 s: MAX92xx_WriteReg: Write reg 0x0313 by value 0x00, on slave 0x48 in I2C3
        67.198829 s: ISS: Stopping sensor [AR0233_MAX9295_UYVY] ... Done !!!
    [MCU2_0]     67.198616 s: Access register num=1
    [MCU2_0]     67.198658 s: End of Max9296 config 
    [MCU2_0]     67.198810 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000005, prm_size = 384 bytes ... !!!
        67.258104 s: ISS: Stopping sensor [AR0233_MAX9295_UYVY] ... !!!
    [MCU2_0]     67.258300 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000005, prm_size = 384 bytes ... !!!
    [MCU2_0]     67.258412 s: ImageSensor_RemoteServiceHandler: IM_SENSOR_CMD_STREAM_OFF 
    [MCU2_0]     67.258458 s: IM_SENSOR_CMD_STREAM_ON:  channel_mask = 0x1
    [MCU2_0]     67.258500 s: Max92xx config start.
    [MCU2_0]     67.258694 s: MAX92xx_WriteReg: Write reg 0x0313 by value 0x00, on slave 0x48 in I2C3
        67.268829 s: ISS: Stopping sensor [AR0233_MAX9295_UYVY] ... Done !!!
    app_run_graph done
    releasing capture node
    releasing displayNode
        67.268887 s:  VX_ZONE_ERROR:[ownReleaseReferenceInt:294] Invalid reference
    releasing raw image done
    releasing cap_frame # 0
    releasing cap_frame # 1
    releasing cap_frame # 2
    releasing cap_frame # 3
    releasing capt_yuv_image
    releasing Display Param Data Object
    releasing graph
    [MCU2_0]     67.268615 s: Access register num=1
    [MCU2_0]     67.268658 s: End of Max9296 config 
    [MCU2_0]     67.268810 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000005, prm_size = 384 bytes ... !!!
    [MCU2_0]     67.270879 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00002307
    [MCU2_0]     67.271151 s: ==========================================================
    [MCU2_0]     67.271236 s:  Capture Status: Instance|1
    [MCU2_0]     67.271270 s: ==========================================================
    [MCU2_0]     67.271315 s:  overflowCount: 0
    [MCU2_0]     67.271347 s:  spuriousUdmaIntrCount: 0
    [MCU2_0]     67.271415 s:  frontFIFOOvflCount: 0
    [MCU2_0]     67.271454 s:  crcCount: 0
    [MCU2_0]     67.271482 s:  eccCount: 0
    [MCU2_0]     67.271647 s:  correctedEccCount: 0
    [MCU2_0]     67.271696 s:  dataIdErrorCount: 0
    [MCU2_0]     67.271731 s:  invalidAccessCount: 0
    [MCU2_0]     67.271765 s:  invalidSpCount: 0
    [MCU2_0]     67.271801 s:  strmFIFOOvflCount[0]: 0
    [MCU2_0]     67.271838 s:  strmFIFOOvflCount[1]: 0
    [MCU2_0]     67.271867 s:  Channel Num | Frame Queue Count | Frame De-queue Count | Frame Drop Count | Error Frame Count |
    [MCU2_0]     67.271940 s:            0 |               980 |                  980 |                1 |                 0 |
    [MCU2_0]     67.272787 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00002500
    [MCU2_0]     67.273049 s: IPC: RX: mpu1_0 (port 1025) -> mcu2_0 (port 13) msg = 0x00003308
    releasing graph done
    Error : app_delete_graph returned 0xfffffff4 
    tivxHwaUnLoadKernels done
    tivxImagingUnLoadKernels done
    vxReleaseContext done
    app_deinit done
        67.289381 s: ISS: De-initializing sensor [AR0233_MAX9295_UYVY] ... !!!
        67.289866 s: ISS: De-initializing sensor [AR0233_MAX9295_UYVY] ... Done !!!
        67.289883 s:  VX_ZONE_INIT:[tivxHostDeInitLocal:107] De-Initialization Done for HOST !!!
        67.294287 s:  VX_ZONE_INIT:[tivxDeInitLocal:193] De-Initialization Done !!!
    APP: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... !!!
    REMOTE_SERVICE: Deinit ... Done !!!
    IPC: Deinit ... !!!
    IPC: DeInit ... Done !!!
    MEM: Deinit ... !!!
    DDR_SHARED_MEM: Alloc's: 6 alloc's of 16589060 bytes 
    DDR_SHARED_MEM: Free's : 6 free's  of 16589060 bytes 
    DDR_SHARED_MEM: Open's : 0 allocs  of 0 bytes 
    DDR_SHARED_MEM: Total size: 536870912 bytes 
    MEM: Deinit ... Done !!!
    APP: Deinit ... Done !!!
    [MCU2_0]     67.288306 s: IPC: TX: mcu2_0 (port 13) -> mpu1_0 (port 1025) msg = 0x00003500
    [MCU2_0]     67.289626 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000006, prm_size = 384 bytes ... !!!
    [MCU2_0]     67.289846 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000006, prm_size = 384 bytes ... !!!
    according modify CSI lane speed ,there is some image date transmit to CSI look like. but the image is not correct.There is some save image.Where is my wrong?

  • Hi,

    Yes, as per these stats, capture is working fine. It has captured some 980 frames and able to run the OpenVX graph for these frames..  Can you please confirm that this is with the error "Error frame not provided using tivxCaptureRegisterErrorFrame, defaulting to waiting forever " ?

    [MCU2_0] 67.271867 s: Channel Num | Frame Queue Count | Frame De-queue Count | Frame Drop Count | Error Frame Count |
    [MCU2_0] 67.271940 s: 0 | 980 | 980 | 1 | 0 |

    Also is this single camera application? where does the output of CSIRX go? Is it to LDC node? Is LDC node running fine? Can you please press 'p' on the console when it is running and share the output?

    Regards,

    Brijesh

  • Summary of CPU load,
    ====================
    
    CPU: mpu1_0: TOTAL LOAD =   0.79 % ( HWI =   0. 0 %, SWI =   0. 0 % )
    CPU: mcu2_0: TOTAL LOAD =   6. 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 =   0. 0 % ( HWI =   0. 0 %, SWI =   0. 0 % )
    
    
    HWA performance statistics,
    ===========================
    
    
    
    DDR performance statistics,
    ===========================
    
    DDR: READ  BW: AVG =    269 MB/s, PEAK =   4898 MB/s
    DDR: WRITE BW: AVG =    250 MB/s, PEAK =    976 MB/s
    DDR: TOTAL BW: AVG =    519 MB/s, PEAK =   5874 MB/s
    
    
    Detailed CPU performance/memory statistics,
    ===========================================
    
    DDR_SHARED_MEM: Alloc's: 6 alloc's of 16589060 bytes 
    DDR_SHARED_MEM: Free's : 0 free's  of 0 bytes 
    DDR_SHARED_MEM: Open's : 6 allocs  of 16589060 bytes 
    DDR_SHARED_MEM: Total size: 536870912 bytes 
    
    CPU: mcu2_0: TASK:           IPC_RX:   0. 2 %
    CPU: mcu2_0: TASK:       REMOTE_SRV:   0. 4 %
    CPU: mcu2_0: TASK:        LOAD_TEST:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CPU_0:   0. 0 %
    CPU: mcu2_0: TASK:        TIVX_V1NF:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_V1LDC1:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_V1SC1:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_V1MSC2:   0. 0 %
    CPU: mcu2_0: TASK:       TIVXVVISS1:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT1:   0. 0 %
    CPU: mcu2_0: TASK:       TIVX_CAPT2:   0.21 %
    CPU: mcu2_0: TASK:       TIVX_DISP1:   0.31 %
    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_DPM2M1:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_DPM2M2:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_DPM2M3:   0. 0 %
    CPU: mcu2_0: TASK:      TIVX_DPM2M4:   0. 0 %
    
    CPU: mcu2_0: HEAP:    DDR_LOCAL_MEM: size =   16777216 B, free =   16705536 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_CPU_1:   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_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_C71_P1:   0. 0 %
    CPU:  c7x_1: TASK:      TIVX_C71_P2:   0. 0 %
    CPU:  c7x_1: TASK:      TIVX_C71_P3:   0. 0 %
    CPU:  c7x_1: TASK:      TIVX_C71_P4:   0. 0 %
    CPU:  c7x_1: TASK:      TIVX_C71_P5:   0. 0 %
    CPU:  c7x_1: TASK:      TIVX_C71_P6:   0. 0 %
    CPU:  c7x_1: TASK:      TIVX_C71_P7:   0. 0 %
    CPU:  c7x_1: TASK:      TIVX_C71_P8:   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)
    
    
    [MCU2_0]    127.243504 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000002, prm_size = 12 bytes ... !!!
    [MCU2_0]    127.243790 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000002, prm_size = 12 bytes ... !!!
    [MCU2_0]    127.244326 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000006, prm_size = 256 bytes ... !!!
    [MCU2_0]    127.244516 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000006, prm_size = 256 bytes ... !!!
    [MCU2_0]    127.245123 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000003, prm_size = 388 bytes ... !!!
    [MCU2_0]    127.245778 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000003, prm_size = 388 bytes ... !!!
    [MCU2_0]    127.246146 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000004, prm_size = 200 bytes ... !!!
    [MCU2_0]    127.246395 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000004, prm_size = 200 bytes ... !!!
    [MCU2_0]    127.248107 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000001, prm_size = 0 bytes ... !!!
    [MCU2_0]    127.248306 s: REMOTE_SERVICE: RX: mpu1_0 (port 1026) -> mcu2_0 (port 21) cmd = 0x00000005, prm_size = 0 bytes ... !!!
    [MCU2_0]    127.248447 s: REMOTE_SERVICE: TX: mcu2_0 (port 21) -> mpu1_0 (port 1026) cmd = 0x00000005, prm_size = 0 bytes ... !!!
    GRAPH:         graph_85 (#nodes =   2, #executions =    128)
     NODE:       CAPTURE2:                  node_96: avg =    585 usecs, min/max =    104 /   9581 usecs, #executions =        128
     NODE:       DISPLAY1:                  node_97: avg =  15861 usecs, min/max =    152 /  32410 usecs, #executions =        128
    
     PERF:            TOTAL: avg =  16872 usecs, min/max =  16591 /  42963 usecs, #executions =        127
    
     PERF:            TOTAL:   59.26 FPS
    
    
    
     ==========================
     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
    This is the 'p' command output log.

  • Hi,

    But it is working fine, i see graph is running at almost 60fps and even capture and display are running fine You don't see valid image on the display? Can you dump one output image and share it ?

    Regards,

    Brijesh 

  •  this is the capture image;the view image will follow camera moved changed,but not display normal image, look like green screen。

  • Are you sure that the camera is outputting images correctly? Typically, green in yuv format means it contains all 0s. Also please confirm if you have provided error frames. Can you please comment out call to tivxCaptureRegisterErrorFrame API and then check it ?

    Regards,

    Brijesh

  • okay, I will try it later. 

    The image is not really a green screen, it just looks like a green screen. The contours of certain images can be vaguely seen.

    We save the raw image press 's'; and replay it use different encode format,  view as follow:

  • Can you please share this binary to me? 

    Yes, it does look like it has some data in it. 

    Regards,

    Brijesh

  • Hi,

    I cannot access this file, can you please zip it and attach it to this ticket.

    Regards,

    Brijesh

  • Hi,

    Are you sure that the data is YUV422 8 bit? Because i think it is 10bit data, not 8bit..  This format is not supported in the DSS and also in OpenVX. 

    Regards,

    Brijesh

  • vx_app_single_cam compatible YUYV and UYUV format both?We looked at the beginning of several files and found that the file headers were different.There was a data mismatch somewhere?

  • As per MIPI standard, it can only be UYVY data. What do you mean by YUYV format in single camera application?

    Also it is not just header, but entire file looks to be containing 10bit YUV422 data. Upper 12bits in each 32bit value just contains 0. 

    Please make sure to output yuv422 8bit data from the sensor. 

    Regards,

    Brijesh

  • We have already adapted this camera on other platforms, and the driver hardware is completely consistent except for SOC. The output image is configured in yuv422 8bit format Confirmed.

    So we would like to know if there are any special format requirements for TI's CSI channel.

    Can you provide a connection reference for the parsing of image data based on that document? We will try to analyze and compare the original image data of these platforms.

  • Hi,

    CSIRX does not do any conversion and receives the data as it arrives from the external sensor. When we analyzed the output in the buffer, it clearly does not look to be YUV422 8bit data. In every 32bit received word, only lower 20bit contains valid bits. Upper 12bits are all 0s. and this is for all 32bit words, not just few. 

    This is why i said data might be YUV422 10bit, and no 8bit. 

    Which deserializer are you using? Sometimes deserializer can also shift up the data and can output in 10bit. 

    Also what is the datatype you are configuring in CSIRX? 

    Regards,

    Brijesh 

  • We ues the max9296 deserializer and max9295 serializer.

     The sensor driver setting the data type to UYVY.

    How to lookup CSIRX configuring?Which registers we can read from? 

  • Hi,

    Can you please check in sensor or in serializer/deserializer settings, why it is sending only 20 valid bits and not full 32bit YUV422 data? 

    Regards,

    Brijesh

  • cap_0005.rar

    root@tda4vm-sk:~# k3conf write 04510020 8840001e 
    |--------------------------------------------------------------------------------------|
    | VERSION INFO                                                                         |
    |--------------------------------------------------------------------------------------|
    | K3CONF | (version v0.1-90-g1dd468d built 2023年 04月 23日 星期日 15:47:48 CST) |
    | SoC    | J721E SR1.1                                                                 |
    | SYSFW  | ABI: 3.1 (firmware version 0x0008 '8.6.3--v08.06.03 (Chill Capybar)')       |
    |--------------------------------------------------------------------------------------|
    
    Value at addr 0x4510020 = 0x8800001e

    We modify the CSI_RX_IF_SHIM_DMACNTX (0x4510020 )register value form 0x8c10001e to 0x8800001e, the image can be previewed normally. Where is this register config code and how to adaptation related codes.

  • oh, which SDK release are you using? 

    In SDK 8.6 release, there is a bug for capturing YUV422 data. Can you please make the changes that i suggested one below link to fix this issue?

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1216084/tda4vm-after-upgrading-to-sdk8-06-the-camera-images-are-all-green/4589093#4589093

    Regards,

    Brijesh

  • We use the 08.06 version .The connection you provided did not fix the problem. I merge the code and rebuild the pdk, vx_app_rtos_mcu_2_0,vx_app_single_cam target.

  • Hi 

    Do you atleast now see some better output? Colors may not be correct, but atleast, the image should not be green as before. 

    The above fix is required for YUV422 output format in CSIRX. can you please try the fix i had suggested at below link?

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1216084/tda4vm-after-upgrading-to-sdk8-06-the-camera-images-are-all-green/4589198#4589198

    Regards,

    Brijesh