TDA4AL-Q1: How can I start up a CSI2 camera directly on i2c-5 on on TDA4AL-Q1 EVM?

Part Number: TDA4AL-Q1
Other Parts Discussed in Thread: TCA6408

Tool/software:

Hi, TI expert,

I set the camera device camera@6c in main_i2c5, but the i2c always not be detected by linux tool of i2cdetect command.

Please help to check why i2c-5 not can be detected. Thanks your help.

below is debug information:

root@j721s2-evm:/proc/device-tree/bus@100000/i2c@2050000/camera@6c# i2cdetect -l
i2c-0 i2c OMAP I2C adapter I2C adapter
i2c-1 i2c OMAP I2C adapter I2C adapter

root@j721s2-evm:/proc/device-tree/bus@100000/i2c@2050000/camera@6c# dmesg | grep i2c
[ 0.802320] i2c_dev: i2c /dev entries driver
[ 0.982021] omap_i2c 42120000.i2c: bus 0 rev0.12 at 400 kHz
[ 1.046618] omap_i2c 2000000.i2c: bus 1 rev0.12 at 400 kHz

root@j721s2-evm:/proc/device-tree/bus@100000/i2c@2050000# ls
'#address-cells' '#size-cells' camera@6c clock-frequency clock-names clocks compatible gpio@20 interrupts name phandle pinctrl-0 pinctrl-names power-domains reg status

no change the definition in k3-j721s2-main.dtsi:

main_i2c5: i2c@2050000 {
compatible = "ti,j721e-i2c", "ti,omap4-i2c";
reg = <0x00 0x02050000 0x00 0x100>;
interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&k3_clks 219 1>;
clock-names = "fck";
power-domains = <&k3_pds 219 TI_SCI_PD_EXCLUSIVE>;
status = "disabled";
};

add caemra@6c configure in k3-j721s2-common-proc-board.dts

&{/} {
clk_ox08b10_fixed: ox08b10-inck {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
};
};

&main_i2c5 {
pinctrl-names = "default";
pinctrl-0 = <&main_i2c5_pins_default>;
clock-frequency = <400000>;
status = "okay";

ox08b10: camera@6c {
compatible = "ovti,ox08b";
reg = <0x6c>;
clocks = <&clk_ox08b10_fixed>;
clock-names = "inck";

port {
csi2_cam0: endpoint {
remote-endpoint = <&csi2rx0_in_sensor>;
link-frequencies = /bits/ 64 <480000000>;
clock-lanes = <0>;
data-lanes = <1 2 3 4>;
};
};
};
exp5: gpio@20 {
compatible = "ti,tca6408";
reg = <0x20>;
gpio-controller;
#gpio-cells = <2>;
gpio-line-names = "CSI2_EXP_RSTZ", "CSI2_EXP_A_GPIO0",
"CSI2_EXP_A_GPIO1", "CSI2_EXP_A_GPIO2",
"CSI2_EXP_B_GPIO1", "CSI2_EXP_B_GPIO2",
"CSI2_EXP_B_GPIO3", "CSI2_EXP_B_GPIO4";
};
};

&csi0_port0 {
status = "okay";

csi2rx0_in_sensor: endpoint {
remote-endpoint = <&csi2_cam0>;
bus-type = <4>; /* CSI2 DPHY */
clock-lanes = <0>;
data-lanes = <1 2>;
};
};

  • Hi,

    I have assigned your query to the appropriate engineer, thanks for your patience.

    Thanks,

    Neehar

  • Hi, TI,

    Thanks your update, I find the .dtso of k3-j721s2-vision-apps.dtso in path of "\board-support\ti-linux-kernel-6.6.32+git-ti\arch\arm64\boot\dts\ti" to override the &main_i2c5

    When I command out this by below, the I2C can be identify on "omap_i2c 2050000.i2c: bus 2 rev0.12 at 400 kHz".

    &main_i2c5 {
    status = "disabled";
    };*/

    [ 0.803208] i2c_dev: i2c /dev entries driver
    [ 0.983075] omap_i2c 42120000.i2c: bus 0 rev0.12 at 400 kHz
    [ 1.047156] omap_i2c 2000000.i2c: bus 1 rev0.12 at 400 kHz
    [ 1.053342] i2c 2-006c: Fixed dependency cycle(s) with /bus@100000/ticsi2rx@4500000/csi-bridge@4504000
    [ 1.096235] omap_i2c 2050000.i2c: bus 2 rev0.12 at 400 kHz
    [ 11.105098] i2c 2-006c: Fixed dependency cycle(s) with /bus@100000/ticsi2rx@4500000/csi-bridge@4504000
    [ 11.118104] platform 4504000.csi-bridge: Fixed dependency cycle(s) with /bus@100000/i2c@2050000/camera@6c

    but use the i2cdetect -r -y 2 to check the slave address "6c" it is still not be detected.

    root@j721s2-evm:/opt/vision_apps# i2cdetect -r -y 2
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: -- -- -- -- -- -- -- --
    10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    30: -- -- -- -- -- -- 36 -- -- -- -- -- -- -- -- --
    40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    70: -- -- -- -- -- -- -- --

    could you help me to check this problem, is it miss some points needs to configure?

    Thanks your support.

  • Hi,

    But if you disable i2c5 from Linux, Linux cannot detect any slave on this interface. I would suggest to first enable it on Linux, run i2cdetect command on i2c5 to see if it is able to detect slave device at 0x6c.

    Regards,

    Brijesh

  • Hi, Brijesh,

    Could you help to check if I want to add a new sensor of 0x08b10, does it needs to write new v4l2 driver for i2c in below path:

    \board-support\ti-linux-kernel-6.6.32+git-ti\drivers\media\i2c

    Thanks.

  • Hi,

    Well, you would need to add new driver either in RTOS or in Linux, but even before that, please check why sensor is not accessible on i2c5 instance. 

    Regards,

    Brijesh

  • Hi Brijesh, 

    We found if we removed Deserializer driver by deleting it from makefile, it would cause boot failure. Do you any way to gracefully remove deserializer's code without bringing up any side effects? Thank you.

    Eddie

  • Hi Eddie,

    But why do you need to remove deserializer specific files? Its not required, isn't it? You should be able to first detect and probe the input camera board and then we can see how to configure it. Currently if i understand, camera board is not getting detected itself. Can you run i2c probe on the i2c5 and see if it is getting detected first? 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Thanks your help. We are resolved this i2c-5 not detected to camera issue.

    But another issue is happened.

    We would to run the Single Camera VPAC Application on vision app.

    To run the script of run_app_single_cam.sh, this flow is pass. but the display is no show image screen.

    Check the IMX390_StreamOn in iss_sensor_imx390.c, we found the csi2 rx seems to use the enableUB960Streaming.

    If not run enableUB960Streaming, the csi2 rx not active.

    is it this think correct, if yes, what do we build the csi2 rx?

  • Hi Chen,

    ok, can you please comment out the code inside enableUB960Streaming API and make sure to start/enable the sensor output only in streamon callback and not before that?

    Regards,

    Brijesh 

  • Hi, Brijesh,

    if enable enableUB960Streaming, show below error log.

    because wenot use de-serializer.

    [MCU2_0] 1848.183410 s: Error writing 0x01 to de-serializer(0x3d) register 0x4c!
    [MCU2_0] 1848.183452 s: Deserializer Error: Reg Write Failed for regAddr 0x4c, cnt = 0

  • Hi Chen,

    What i meant was, can you please disable the call to this API and see if you are able to program the sensor and able to receive some data from the sensor? 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Sorry miss your meant, yes, we confirm the sensor is active.

    We use read register to check frame count, the frame count does been increased, as 30 frame rate.

      

  • Hi Chen,

    Can you also check below parameters?

    - the number of lanes configured in the sensor output is matching with the HW connection and same number of lanes are configured in the CSIRX application?

    - there is no change in the lane polarity?

    - Please see at what lane speed sensor is outputting the data and same needs to be configured in the CSIRX driver.

    - Please make sure to enable/start sensor output only in streamon callback and not before that. 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Thanks your reply. Below it is my sensor setting.

    How do I check "Please see at what lane speed sensor is outputting the data and same needs to be configured in the CSIRX driver."

    Does it "CSIRX_LANE_BAND_SPEED_2250_TO_2500_MBPS" needs to sync setting other place?

    Thanks your support.

  • Hi chen,

    From the above screen shot

    - You are using RAW10 bit as output data format. Please check and make sure that sensor outputs in RAW10 data format and the output data is also tagged with this format.

    - You are using 4 lanes output. Please check and confirm in the sensor settings that it is outputting 4 lanes output. 

    - The lane speed is set to 2.2Gbps to 2.5Gbps. Please check in the sensor if it is outputting at this lane speed.

    - Also since sensor is outputting at such high speed, please enable skew calibration sequence in sensor. 

    - and again, please make sure to enable sensor only in streamon callback. 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Thanks your reply.

    I checked again from sensor vendor, the sensor data rate is 720.

    And I find the lane band speed definition as below, what define does match on 720? Can these both choose?

    But I had tried these two definition, it still not shown image to DP output.

    Does only there should be setting, or I missing other should be set?

    /** \brief Lane Band Speed: 640 Mbps to 720 Mbps */
    #define CSIRX_LANE_BAND_SPEED_640_TO_720_MBPS ((uint32_t) 0x0CU)
    /** \brief Lane Band Speed: 720 Mbps to 800 Mbps */
    #define CSIRX_LANE_BAND_SPEED_720_TO_800_MBPS ((uint32_t) 0x0DU)

    Below is sensor information provided by sensor vendor.

    ;Sensor revision: OX8B40 R1D
    ;Input clock frequency: 24MHz
    ;Image output size: 3840x2160
    ;Image crop size: No special request
    ;Pixel data format: HCG10 linear
    ;Frame timing and frame rate: 30fps
    ;System clock frequency: No special request
    ;Output interface and data rate: MIPI720

    And I checked the initial code, the register address "0x3012" to write register data as 0x41, so it shown the mipi lane is 4, phy mode is mipi.

    Thanks your support.

  • Hi chen,

    But what is 720? Is it 720MHz? or 720Mbps? 

    Also can you please confirm that it is outputting RAW10 data? 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Thanks your reply.

    It is 4-line @ 720 Mbps / lane, and it is raw 10 data.

    By the way, do you think the CSI driver not to do modify, right?

    If yes, we can focus on sensor configure problem.

    Thanks your help.

  • Hi chen,

    Yes, there is no change required in the CSIRX driver and/or CSIRX OpenVX node. 

    The reason for asking information about 720 is, if it is 720MHz, the data rate would be 1.4Gbps and in that case, lane speed should be set to 1.4Gbps. So can you please recheck and confirm the same?

    Please also check and confirm that output data is also tagged with the datatype 0x2B, which is RAW10 MIPI.

    Regards,

    Brijesh

  • Hi, Brijesh,

    Thanks your feedback.

    I tried the the lane speed as below, they also not shown image screen on monitor.

    CSIRX_LANE_BAND_SPEED_640_TO_720_MBPS

    CSIRX_LANE_BAND_SPEED_720_TO_800_MBPS

    CSIRX_LANE_BAND_SPEED_1350_TO_1500_MBPS

    So, I want to debug the output data, where can print the datatype of output data?
    Thanks.

  • Hi chen,

    We cannot print it. CSIRX receives this datatype and matched with the configured data type, if there is no match, it will discard the packet. So it is important to configure correct data type in the CSIRX. This is also true for virtual channel id. Please make sure that both of these parameters are matching in CSIRX with sensor output. 

    Regards,

    Brijesh

  • Hi, Brijesh,

    I try to enable the log to check csirx side if have problem, like GT_0trace.

    And I found the print error in Dss_dispDrvDequeue, like below:

    [MCU2_0] 314.021620 s: [Dss_dispDrvDequeue, 773, 50000] AGAIN: Out queue Empty. Try again

    What is this mean?

    Does it have any problem we miss setting, could you point what problem by this error log, we can focus on this issue.

    Thanks your support.

  • Hi chen,

    But this seems to be coming from Display driver, which essentially means you are calling Fvid2_dequeue even before frame display is completed, which is why queue is empty. Are you using Display driver? I thought you were using CSIRX and CSITX, isn't it? 

    Regards,

    Brijesh

  • Hi, Brijesh,

    when I run ./run_app_single_cam.sh, and select camera setting

    Select camera port index 0-11 : 0

    LDC Selection Yes(1)/No(0) : 0
    Dual FCP enable for MV Selection Yes(1)/No(0) : 0
    CAC Selection Yes(1)/No(0) : 0

    ==========================
    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

    65.293384 s: ISS: Starting sensor [OX08B40-UB953_LI] ... Done !!!

    [MCU2_0] 66.187359 s: [Dss_dispDrvDequeue, 773, 50000] AGAIN: Out queue Empty. Try again

    ...............

    print this log, until press x, means exit

    then print as below to end.

    [MCU2_0] 96.693418 s: [CsirxDrv_dequeue, 823, 50000] NO_MORE_BUFFERS: No more buffers with driver
    [MCU2_0] 96.693468 s: ==========================================================
    [MCU2_0] 96.693505 s: Capture Status: Instance|0
    [MCU2_0] 96.693527 s: ==========================================================
    [MCU2_0] 96.693560 s: overflowCount: 0
    [MCU2_0] 96.693585 s: spuriousUdmaIntrCount: 0
    [MCU2_0] 96.693610 s: frontFIFOOvflCount: 0
    [MCU2_0] 96.693632 s: crcCount: 0
    [MCU2_0] 96.693652 s: eccCount: 0
    [MCU2_0] 96.693672 s: correctedEccCount: 0
    [MCU2_0] 96.693700 s: dataIdErrorCount: 0
    [MCU2_0] 96.693724 s: invalidAccessCount: 0
    [MCU2_0] 96.693746 s: invalidSpCount: 0
    [MCU2_0] 96.693772 s: strmFIFOOvflCount[0]: 0
    [MCU2_0] 96.693799 s: strmFIFOOvflCount[1]: 0
    [MCU2_0] 96.693823 s: Channel Num | Frame Queue Count | Frame De-queue Count | Frame Drop Count | Error Frame Count |
    [MCU2_0] 96.693870 s: 0 | 4 | 4 | 0 | 0 |

    To end find the log "[MCU2_0] 96.693418 s: [CsirxDrv_dequeue, 823, 50000] NO_MORE_BUFFERS: No more buffers with driver"

    Could you help me to check? 

  • Hi chen,

    Have you made any changes in this example? Because all the 4 buffers that are enqueued are already dequeued. What's connected to the CSIRX Capture node? Is it VISS? Because it looks like next component probably is hung and so not returning the buffers. 

    Regards,

    Brijesh

  • Hi, Brijesh,

    I add the log in CsirxDrv_getBpp to check datatype. it correct to use raw10.

    and virtual channel id how to check? is it idx? we only set one camera, seems correct by log idx: 0, numCh: 1.

    [MCU2_0] 68.737560 s: [CsirxDrv_validateCreateParams, 2213, 10000] idx: 0, numCh: 1
    [MCU2_0] 68.737613 s: [CsirxDrv_getBpp, 1834, 10000] loopCnt: 15, dt: 43, bpp: 10

    dataTypeInfo gRxDtInfo[] =
    {
    {FVID2_CSI2_DF_YUV420_8B, 8U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_YUV420_10B, 10U, CSIRX_BITS_PER_PIXEL_32_BITS},
    {FVID2_CSI2_DF_YUV420_8B_LEGACY, 12U, CSIRX_BITS_PER_PIXEL_12_BITS},
    {FVID2_CSI2_DF_YUV420_8B_CHROMA_SHIFT, 8U, CSIRX_BITS_PER_PIXEL_12_BITS},
    {FVID2_CSI2_DF_YUV420_10B_CHROMA_SHIFT, 10U, CSIRX_BITS_PER_PIXEL_12_BITS},
    {FVID2_CSI2_DF_YUV422_8B, 16U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_YUV422_10B, 20U, CSIRX_BITS_PER_PIXEL_64_BITS},
    {FVID2_CSI2_DF_RGB444, 12U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_RGB555, 15U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_RGB565, 16U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_RGB666, 18U, CSIRX_BITS_PER_PIXEL_32_BITS},
    {FVID2_CSI2_DF_RGB888, 24U, CSIRX_BITS_PER_PIXEL_32_BITS},
    {FVID2_CSI2_DF_RAW6, 6U, CSIRX_BITS_PER_PIXEL_8_BITS},
    {FVID2_CSI2_DF_RAW7, 7U, CSIRX_BITS_PER_PIXEL_8_BITS},
    {FVID2_CSI2_DF_RAW8, 8U, CSIRX_BITS_PER_PIXEL_8_BITS},
    {FVID2_CSI2_DF_RAW10, 10U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_RAW12, 12U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_RAW14, 14U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_RAW16, 16U, CSIRX_BITS_PER_PIXEL_16_BITS},
    {FVID2_CSI2_DF_RAW20, 20U, CSIRX_BITS_PER_PIXEL_32_BITS},

  • Hi, Brijesh,

    we are only add log in app_single_cam_main.c.

    could we bypass VISS?

    Thanks your support.

  • Hi Chen,

    Well, VISS can be bypassed, but since your input data type is RAW10, where/how do you plan to use it? Please check the code under yuv_cam_input flag. You would need to update the similar code for RAW10 data. 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Bypass VISS this path is so hard, finally, we needs to use VISS, could you have any suggest to fix this?

    we not modify the app_create_graph.

    if(status == VX_SUCCESS)
    {
    status = vxSetNodeTarget(obj->capture_node, VX_TARGET_STRING, TIVX_TARGET_CAPTURE2);
    }
    APP_PRINTF("vxSetNodeTarget status: %d\n", status);

    if(VX_SUCCESS == status)
    {
    vxSetNodeTarget(obj->node_viss, VX_TARGET_STRING, TIVX_TARGET_VPAC_VISS1);
    tivxSetNodeParameterNumBufByIndex(obj->node_viss, 6u, obj->num_cap_buf);
    }

    Thanks your support.

  • Hi Chen,

    But have you updated VISS parameters for the RAW10 input? What about the DCC profile? As per the new sensor and its resolution, this needs to be updated. 

    Regards,

    Brijesh

  • Hi, Brijesh,

    I had update the default dcc profile refer imx390_properties.txt by use default_DCC_profile_gen on \imaging\tools\default_DCC_profile_gen\configs.

    But it is not work.

    Could you help me to check below setting, thanks.

    SENSOR_ID 40
    PRJ_DIR ../ox08b40_output
    SENSOR_NAME ox08b40
    SENSOR_DCC_NAME OX08B40-UB953_LI

    SENSOR_WIDTH 3840
    SENSOR_HEIGHT 2160

    # 0=RGGB; 1=GRBG; 2=GBRG; 3=BGGR, 4=MONO
    COLOR_PATTERN 3

    # sensor mode: 0 for linear (no decompanding), 1 for WDR (decompanding)
    WDR_MODE 0

    # raw sensor image BIT_DEPTH: it may be 8, 10, or 12 for linear sensors; typically 12 for WDR mode because of companding
    BIT_DEPTH 10

    # WDR BIT_DEPTH: WDR raw sensor image bitdepth after decompanding, typically 20 or 24
    WDR_BIT_DEPTH 20

    # WDR decompanding knee points (comma separated without spaces in between)
    WDR_KNEE_X 0,512,1408,2176,4095,65535
    WDR_KNEE_Y 0,2048,16384,65536,1048063,1048063

    # Sensor black level to subtract before decompanding (for linear sensors only and some Sony WDR sensors)
    BLACK_PRE 0

    # Sensor black level to subtract after decompanding (for most WDR sensors and all linear sensors)
    BLACK_POST 0

    # GAMMA value for compressing 20/24-bit WDR raw to 16-bit ISP internal
    # typically around 50 (0.5) for 24-bit WDR sensors and 70 (0.7) for 20-bit sensors
    GAMMA_PRE 70

    # LSB location for H3A input bit range (from bit-H3A_INPUT_LSB to bit-H3A_INPUT_LSB+9)
    H3A_INPUT_LSB 2

  • ok, before checking DCC config, lets first check VISS status. Can you please read back 8 32bit registers from 0x3810000 offset and share them?

    Regards,

    Brijesh

  • Hi, Brijesh,

    How do I read this 0x3810000? could you provide more detail, thanks.

  • Hi, Brijesh,

    Try to add log to read registers in CsirxDrv_queue

    But seems not success to read, does it correct?

    could you help me check how to do read it, thanks.

    MCU2_0] 50.626671 s: [CsirxDrv_queue, 545, 10000] addr: 0x3810000, regVal: 0x0
    [MCU2_0] 50.626708 s: [CsirxDrv_queue, 545, 10000] addr: 0x3810004, regVal: 0x0
    [MCU2_0] 50.626745 s: [CsirxDrv_queue, 545, 10000] addr: 0x3810008, regVal: 0x0
    [MCU2_0] 50.626782 s: [CsirxDrv_queue, 545, 10000] addr: 0x381000c, regVal: 0x0
    [MCU2_0] 50.626819 s: [CsirxDrv_queue, 545, 10000] addr: 0x3810010, regVal: 0x0
    [MCU2_0] 50.626856 s: [CsirxDrv_queue, 545, 10000] addr: 0x3810014, regVal: 0x0
    [MCU2_0] 50.626893 s: [CsirxDrv_queue, 545, 10000] addr: 0x3810018, regVal: 0x0
    [MCU2_0] 50.626930 s: [CsirxDrv_queue, 545, 10000] addr: 0x381001c, regVal: 0x0

    for (int addr = 0; addr < 8; addr ++) {
    uint32_t regVal = CSL_REG32_RD(CSL_VPAC0_HTS_S_VBUSP_BASE + addr * 4);
    GT_2trace(CsirxTrace, GT_ERR, "addr: 0x%lx, regVal: 0x%x\n", CSL_VPAC0_HTS_S_VBUSP_BASE + addr * 4, regVal);
    }

  • Hi Chen,

    When it hangs, can you use devmem2 utility on Linux to dump these register values? 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Not can use devmem2 if ./run_app_single_cam.sh script running.

    command is lock in script.

    But I add log in Dss_dispDrvDequeue, where it hangs.

    And try to print address 0x3820000, it is have value. I think this function is work.

    [MCU2_0] 53.448955 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x3810000, regVal: 0x0
    [MCU2_0] 53.448995 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x3810004, regVal: 0x0
    [MCU2_0] 53.449034 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x3810008, regVal: 0x0
    [MCU2_0] 53.449072 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x381000c, regVal: 0x0
    [MCU2_0] 53.449111 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x3810010, regVal: 0x0
    [MCU2_0] 53.449149 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x3810014, regVal: 0x0
    [MCU2_0] 53.449187 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x3810018, regVal: 0x0
    [MCU2_0] 53.449226 s: [Dss_dispDrvDequeue, 777, 10000] addr: 0x381001c, regVal: 0x0
    [MCU2_0] 53.449267 s: [Dss_dispDrvDequeue, 780, 10000] test addr: 0x3820000, regVal: 0x64c60001
    [MCU2_0] 53.449308 s: [Dss_dispDrvDequeue, 783, 50000] AGAIN: Out queue Empty. Try again

    Also try to use devmem2 to read address in 0x3810000 and 0x3820000, the result is same.

    But it read address when not running script.

    root@j721s2-evm:/opt/vision_apps# devmem2 0x3810000
    /dev/mem opened.
    Memory mapped at address 0xffffac145000.
    Read at address 0x03810000 (0xffffac145000): 0x00000000
    root@j721s2-evm:/opt/vision_apps# devmem2 0x3820000
    /dev/mem opened.
    Memory mapped at address 0xffff8aa4b000.
    Read at address 0x03820000 (0xffff8aa4b000): 0x64C60001

    So, follow this log, does the VISS not active?

    Thanks your help.

  • Hi, Brijesh,

    we change the mipi transfer method by sensor side, and successful to receive 2 frames from sensor, verified to show in monitor.

    and now, see the below error log.

    [MCU2_0] 63.292777 s: VX_ZONE_ERROR:[tivxCaptureDequeueFrameFromDriver:885] CAPTURE: ERROR: Incomplete Frame for Ch0 !!!

    could you help me check this error log?

    and what is mipi format that can receive for TI EVM? could you provide more detail about this?

    Thanks.

  • Hi Chen,

    Have you taken the above register dump when it hangs? Because in the above register dump, i dont see VISS hang/stuck. So there should be buffer rotation happening between capture and viss, assuming capture is successful.

    "Incomplete error frame" this issue comes when the configured frame size in the CSIRX is different from received frame size from the sensor. So can you please check your sensor parameters again? 

    Regards,

    Brijesh

  • Hi, Brihesh,

    we confirm the image output size does correct.

    but it still come the error log "[MCU2_0] 75.698125 s: VX_ZONE_ERROR:[tivxCaptureDequeueFrameFromDriver:885] CAPTURE: ERROR: Incomplete Frame for Ch0 !!!"

    does it other reason to happen?

    Thanks.

  • Hi Chen,

    No, which example are you running from vision apps? Are you running some algorithms on C7x? 

    Even if you are getting this error, capture would not stop. It will continue to capture the frames and provide it to the next component. 

    Regards,

    Brijesh

  • Hi, Brijesh,

    Yes, we only use vision apps, not running other algorithm.

    But the error log only appear two times, do you mean the error log of "CAPTURE: ERROR: Incomplete Frame for Ch0 !!!"" always print?

    Thanks.

  • Hi Chen,

    Even if the received frame is less by a byte, this error would be printed. So again, please check the size in the CSIRX and what is received from the sensor. They should exactly match. 

    and since you are only receiving 2 frames, this print also comes only two times.. 

    Regards,

    Brijesh