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.

AM62A7: can not receive the frame data though the Serdes(UB960)

Part Number: AM62A7

Tool/software:

Connect the Deserdes and SOC.  It shows that the UB960 can receive and Send the Frame data (Generate the pattern from 953).

Register for UB960 can recognize the frame line and Frame count all correct. and MIPI Line to SOC have output Signal. 

But the SOC Gsteramer can not get the frame date. Can you share with me how i do to check the problem. 

How to check the SOC status. Is there any register or debug info that i can read to check If SOC receive data or not. 

Here is the Error i have get in the trace log:

[00:01:21.000.000144]:ERROR:[inferenceThread:0282] Could not get 'input' buffer from GstreamerAPP: Deinit ... !!!

  • Hi Meng,

    I need more information to understand the problem. 

    1. which SerDes board are you using?
    2. how do you connect the cameras?
    3. what does "media-ctl -p" show?
    4. what command are you running?

    Thank you.

    Jianzhong

  • Hello Xu Jianzhou:

    1. I connect the camera with fusion board(960)

    2.  960 connect with 953 and Imx219 though FPDlink. SOC connect with 960 though the MIPI FPC line
    3.  Here is the log  "media-ctl -p" show?

    4. Right now i make a virtual camera node in the device driver. remove all i2c write action. and implement all register for 960/953/imx219 in application software. and now hardware connect no problem. and i used the 953 pattern instead of the video frame from imx219. and check with 960 register value. frame count will be update every time and line count correct. because that the imx219 dts only enable two lane. i change the imx219 dts as below:



    and here is the message get from the evm board:
    i have checkroot@am62axx-evm:/opt/edgeai-gst-apps# media-ctl -p -d /dev/media0 | grep "ENABLED"
    <- "cdns_csi2rx.30101000.csi-bridge":1 [ENABLED,IMMUTABLE]
    -> "30102000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
    -> "30102000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
    -> "30102000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
    -> "30102000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]
    -> "30102000.ticsi2rx context 4":0 [ENABLED,IMMUTABLE]
    -> "30102000.ticsi2rx context 5":0 [ENABLED,IMMUTABLE]
    <- "imx219 2-003c":0 [ENABLED,IMMUTABLE]
    -> "30102000.ticsi2rx":0 [ENABLED,IMMUTABLE]
    -> "cdns_csi2rx.30101000.csi-bridge":0 [ENABLED,IMMUTABLE]
    <- "30102000.ticsi2rx":1 [ENABLED,IMMUTABLE]
    <- "30102000.ticsi2rx":2 [ENABLED,IMMUTABLE]
    <- "30102000.ticsi2rx":3 [ENABLED,IMMUTABLE]
    <- "30102000.ticsi2rx":4 [ENABLED,IMMUTABLE]
    <- "30102000.ticsi2rx":5 [ENABLED,IMMUTABLE]
    <- "30102000.ticsi2rx":6 [ENABLED,IMMUTABLE]
    root@am62axx-evm:/opt/edgeai-gst-apps# dmesg | grep -E "ticsi2rx|csi2rx|dphy|mipi"
    [ 0.382147] /bus@f0000/i2c@20020000/camera@3c: Fixed dependency cycle(s) with /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000
    [ 0.406996] /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000: Fixed dependency cycle(s) with /bus@f0000/i2c@20020000/camera@3c
    [ 0.456776] /bus@f0000/i2c@20020000/camera@3c: Fixed dependency cycle(s) with /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000
    [ 0.493813] /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000: Fixed dependency cycle(s) with /bus@f0000/i2c@20020000/camera@3c
    [ 1.311515] /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000: Fixed dependency cycle(s) with /bus@f0000/i2c@20020000/camera@3c
    [ 1.323266] /bus@f0000/i2c@20020000/camera@3c: Fixed dependency cycle(s) with /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000
    [ 6.984439] /bus@f0000/i2c@20020000/camera@3c: Fixed dependency cycle(s) with /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000
    [ 7.048362] /bus@f0000/ticsi2rx@30102000/csi-bridge@30101000: Fixed dependency cycle(s) with /bus@f0000/i2c@20020000/camera@3c
    [ 7.985217] cdns-csi2rx 30101000.csi-bridge: ke0429-899 bus type:: 0x5
    [ 7.992424] cdns-csi2rx 30101000.csi-bridge: ke0429-910 number of data-lanes: 4
    [ 8.014825] cdns-csi2rx 30101000.csi-bridge: Probed CSI2RX with 4/4 lanes, 4 streams, external D-PHY

    and read the register for mipi lane set . It strange that  the lane register was not enable. I do not know if the register is read correct ?


    root@am62axx-evm:/opt/edgeai-gst-apps# devmem2 0x30101040 w
    /dev/mem opened.
    Memory mapped at address 0xffff86394000.
    Read at address 0x30101040 (0xffff86394040): 0x00000000
    root@am62axx-evm:/opt/edgeai-gst-apps# devmem2 0x30101020 w
    /dev/mem opened.
    Memory mapped at address 0xffffb5689000.
    Read at address 0x30101020 (0xffffb5689020): 0x00000000
    root@am62axx-evm:/opt/edgeai-gst-apps# devmem2 0x3010104c w
    /dev/mem opened.
    Memory mapped at address 0xffffbc631000.
    Read at address 0x3010104C (0xffffbc63104c): 0x00000100
    root@am62axx-evm:/opt/edgeai-gst-apps# devmem2 0x30101048 w
    /dev/mem opened.
    Memory mapped at address 0xffffacb3b000.
    Read at address 0x30101048 (0xffffacb3b048): 0x00222206

  • Hi Meng,

    because that the imx219 dts only enable two lane. i change the imx219 dts as below:

    Please refer to the overlay for IMX219 through v3link serdes: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-v3link-imx219-0-0.dtso?h=ti-linux-6.12.y.

    It strange that  the lane register was not enable. I do not know if the register is read correct ?

    The lanes are enabled only during transmission. For example, run "devmem2 0x30101040 w" while streaming, and you'll see the lanes are enabled:

    root@am62axx-evm:/opt/edgeai-gst-apps#  devmem2 0x30101040 w
    /dev/mem opened.
    Memory mapped at address 0xffff9b925000.
    Read at address  0x30101040 (0xffff9b925040): 0x00000000
    root@am62axx-evm:/opt/edgeai-gst-apps# v4l2-ctl -d /dev/video-imx219-cam0 --set-fmt-video=width=1920,height=1080,pixelformat=RGGB --stream-mmap --stream-loop &
    [1] 2082
    root@am62axx-evm:/opt/edgeai-gst-apps# <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.01 fps
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.01 fps
    <<<<<<<<<<<<<<<<<<<<<<<<<
    root@am62axx-evm:/opt/edgeai-gst-apps# <<<<< 30.01 fps
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.01 fps
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.01 fps
    <<<<
    <root@am62axx-evm:/opt/edgeai-gst-apps# <<<<<<<<<
    root@am62axx-evm:/opt/edgeai-gst-apps# <<<
    <root@am62axx-evm:/opt/edgeai-gst-apps# <<<<
    <root@am62axx-evm:/opt/edgeai-gst-apps# <<<<<<< 30.01 fps
    <<<<<<<<<<<<<<<<<<<<devmem2 0x30101040 w<<<<<<<<<< 30.01 fps
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 30.01 fps
    
    /dev/mem opened.
    Memory mapped at address 0xffff9d2b1000.
    Read at address  0x30101040 (0xffff9d2b1040): 0x0001F01F
    

    In addition, since you connect IMX219 through UB953/UB960 serdes, how many lanes are enabled is determined by UB960 device tree overlay:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62a7-sk-fusion.dtso?h=ti-linux-6.6.y#n63

    Regards,

    Jianzhong

  • Right now i make a virtual camera node in the device driver. remove all i2c write action. and implement all register for 960/953/imx219 in application software.

    This should work. You'll need to first start the sensor and serdes in your application software and then start streaming, for example, using Gstreamer, yavta, or v4l2-ctl.