我正在尝试把xavier nano(jetson32.5.1)的isx019+max9286的CSI摄像头驱动,移植到orin NX(35.2.1)上。硬件用的同一块载板,直接将xavier nano 替换成orin NX;设备树上做了对通道的适配,目前可以通过I2C7(之前nano是I2C1)成功探测到sensor并正确配置。
但就在我尝试用
gst-launch-1.0 v4l2src device=/dev/video0 ! ‘video/x-raw,format=UYVY,width=1280,height=960’ ! videoconvert ! fpsdisplaysink video-sink=xvimagesink sync=false
测试时,发现是绿屏,dmesg报错信息:
[ 1865.941115] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1865.950330] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1865.961845] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1865.969575] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=0, csi_port=0
[ 1865.981074] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1865.989109] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 0 vc- 0
[ 1866.000263] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 1868.757068] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1868.766269] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1868.776821] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1868.784706] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=0, csi_port=0
[ 1868.795505] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1868.803526] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 0 vc- 0
[ 1868.814575] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
我无法把控Orin NX和xavier Nano在jetsonSDK版本变更下的差异,麻烦指导我对问题进行排查。
提供设备树文件。
tegra234-p3767-camera-gmsl-isx019.dtsi (4.0 KB)
tegra234-p3767-camera-isx019.dtsi (14.2 KB)
感激不尽。
Get the trace log to check if more information.
https://elinux.org/Jetson/l4t/Camera_BringUp
Open the camera and issue below command again.
cat /sys/kernel/debug/tracing/trace
抱歉,我忽略了一个细节。摄像头运行期间,tracelog如下:
kworker/0:2-96 [000] .... 334.591408: rtcpu_nvcsi_intr: tstamp:11043613917 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591411: rtcpu_nvcsi_intr: tstamp:11043614961 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591413: rtcpu_nvcsi_intr: tstamp:11043614961 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000044
kworker/0:2-96 [000] .... 334.591413: rtcpu_nvcsi_intr: tstamp:11043616014 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591413: rtcpu_nvcsi_intr: tstamp:11043617046 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591414: rtcpu_nvcsi_intr: tstamp:11043618087 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591414: rtcpu_nvcsi_intr: tstamp:11043619127 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591414: rtcpu_nvcsi_intr: tstamp:11043620167 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591415: rtcpu_nvcsi_intr: tstamp:11043621208 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591415: rtcpu_nvcsi_intr: tstamp:11043622251 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000040
kworker/0:2-96 [000] .... 334.591415: rtcpu_nvcsi_intr: tstamp:11043622251 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000044
kworker/0:2-96 [000] .... 334.591416: rtcpu_nvcsi_intr: tstamp:11043623296 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591416: rtcpu_nvcsi_intr: tstamp:11043624337 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591416: rtcpu_nvcsi_intr: tstamp:11043625389 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591417: rtcpu_nvcsi_intr: tstamp:11043626421 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591417: rtcpu_nvcsi_intr: tstamp:11043627461 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591417: rtcpu_nvcsi_intr: tstamp:11043628502 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591418: rtcpu_nvcsi_intr: tstamp:11043629551 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591418: rtcpu_nvcsi_intr: tstamp:11043630586 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591418: rtcpu_nvcsi_intr: tstamp:11043631636 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591419: rtcpu_nvcsi_intr: tstamp:11043632680 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591419: rtcpu_nvcsi_intr: tstamp:11043633711 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591419: rtcpu_nvcsi_intr: tstamp:11043634753 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591420: rtcpu_nvcsi_intr: tstamp:11043635792 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591420: rtcpu_nvcsi_intr: tstamp:11043636833 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591420: rtcpu_nvcsi_intr: tstamp:11043637876 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591421: rtcpu_nvcsi_intr: tstamp:11043638930 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591421: rtcpu_nvcsi_intr: tstamp:11043639962 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591421: rtcpu_nvcsi_intr: tstamp:11043641003 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591422: rtcpu_nvcsi_intr: tstamp:11043642055 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591422: rtcpu_nvcsi_intr: tstamp:11043643086 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591422: rtcpu_nvcsi_intr: tstamp:11043644135 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591423: rtcpu_nvcsi_intr: tstamp:11043645176 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591423: rtcpu_nvcsi_intr: tstamp:11043646211 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000040
kworker/0:2-96 [000] .... 334.591423: rtcpu_nvcsi_intr: tstamp:11043646211 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000004
kworker/0:2-96 [000] .... 334.591424: rtcpu_nvcsi_intr: tstamp:11043647253 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591424: rtcpu_nvcsi_intr: tstamp:11043648297 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591424: rtcpu_nvcsi_intr: tstamp:11043649336 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591425: rtcpu_nvcsi_intr: tstamp:11043650385 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591425: rtcpu_nvcsi_intr: tstamp:11043651417 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000040
kworker/0:2-96 [000] .... 334.591425: rtcpu_nvcsi_intr: tstamp:11043652466 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/0:2-96 [000] .... 334.591426: rtcpu_nvcsi_intr: tstamp:11043653502 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000040
kworker/0:2-96 [000] .... 334.591426: rtcpu_nvcsi_intr: tstamp:11043653502 class:GLOBAL type:PHY_INTR0 phy:0 cil:1 st:0 vc:0 status:0x00000004
This error tell the SOT(start Of Transfer) error that could be the MIPI settle time issue.
ShaneCCC,感谢帮助。
我测试了硬件链路的MIPI clk和lane,通过与xavier对比(我们的载板使用xavier nano可以正常使用)发现波形都是正常的。
再就是您说的SOT的问题,这块我该怎么排查呢。
Try adjust the cil_settletime. If didn’t help on it need to check the settle time match MIPI spec.
感谢帮助。
请问orin nx(35.2.1) 和xavier nano(32.5.1)在对CSI摄像头的处理上有哪些差别,是否有文档可以对比说明。
Suppose should be no different.
Could you check on Xavier nano r35.2.1 ?
ShaneCCC 你好。
我在调查cil_settletime的配置时,发现了异常。
我在csi5_fops.c的csi5_stream_set_config函数中,在调用csi5_send_control_message之前添加了对cil_config的打印,结果如下:
其中t_hs_settle、t_clk_settle、cil_clock_rate 都为0。我有看到官方提供的设备树sensor的案例中,都是cil_settletime = “0”,我也是这么做的。 请问该现象是否正常?
我下一步打算在32.5.1的xavier平台(我的驱动和设备树在上面运行没问题)上看下这几个参数的情况,有没有这样做的必要?
再就是cil_settiletime的配置需要用到参数UI,该值只能通过示波器测量吗?我没有找到Deserializer的手册上对该参数的配置或者读取接口,只有一个范围值。
需要您的继续帮助,我对sensor和Deserializer的了解有限。
While set to 0 means auto calculate by CSI driver.
Yes, need high precision scope to measure it.
Thanks
ShaneCCC你好。
我手上没有高频示波器,但我通过在xavier平台(32.5.1)上的正确运行案例,得到了csi clock settle time: 13, cil settle time: 10。
通过对orin和xavier平台debug的进一步对比,我发现了问题:我的驱动程序是按照32.5.1的csi2_fops的解析格式编写的,而在orin 35.2.1上,使用的是csi5_fops。这导致有几个参数既没有从设备树中读取,也没有自动计算。
我想知道orin 35.2.1上有没有可能也使用csi2_fops?能的话改动代价大不大。
No possible to use csi2_fops.c for Orin, you can print those setting in vi5_fops.c/csi5_fops.c to confirm it too.
Shane你好,很遗憾我又陷入了困惑。
我尝试把orin平台的参数t_hs_settle = 10(在xavier平台上读取的cil settletime值),但是还是不行。
几个可能有问题的地方找您排查一下:
- 我的/dev/下存在很多的capture-vi-channel0~71,这个是xavier上不曾有的,我也没有在设备树中描述这些节点。
- 补充一个tracelog在开启摄像头采集的初始化信息:
很抱歉我现在陷入了困惑,不知下一步如何进行。我想提供下我的摄像头框架的描述和整个设备树和驱动程序,想麻烦您帮我检查一下看有没有明显错误。
description:我做的是max9286 + isx019,在原xavier的载板上可以顺利运行,现在直接将xavier换成orin,载板不变。在硬件上4lane用的是CSI0和CSI1,clk用的是CSI0;软件上可以正常的通过I2C7驱动sensor和Deserializer,示波器观察波形,也与在xavier上一样。设备树文件和驱动代码都是从xavier平台上移植过来的,其中设备树做了新平台的接口适配,驱动代码没变。
max9286.c (19.1 KB)
isx019.c (17.2 KB)
isx019_mode_tbls.h (2.0 KB)
kernel_tegra234-p3767-0000-p3509-a02.dts (411.7 KB)
Suppose CSI0 unable to support 4 lanes configure.
Please connect to CSI2 aka CSI-C to confirm it.
Shane你好。
我发现了一些在虚拟通道设置上的问题,并做了一些修改。目前tracelog的初始化信息与错误码发生了变化。请帮我看一下错误码的含义,感激不尽。
gst-plugin-scan-2855 [004] … 85.980695: tegra_channel_open: vi-output, isx019 7-001a
gst-plugin-scan-2855 [004] … 85.980714: tegra_channel_close: vi-output, isx019 7-001a
kworker/2:2-121 [002] … 86.687298: rtcpu_string: tstamp:3299107934 id:0x04010000 str:“VM0 deactivating.”
v4l2-ctl-2925 [000] … 97.921155: tegra_channel_open: vi-output, isx019 7-001a
v4l2-ctl-2925 [000] … 97.924238: tegra_channel_set_power: isx019 7-001a : 0x1
v4l2-ctl-2925 [000] … 97.924248: camera_common_s_power: status : 0x1
v4l2-ctl-2925 [000] … 97.929891: tegra_channel_set_power: 13e40000.host1x:nvcsi@15a00000- : 0x1
v4l2-ctl-2925 [000] … 97.929894: csi_s_power: enable : 0x1
v4l2-ctl-2925 [000] … 97.937335: tegra_channel_capture_setup: vnc_id 0 W 1280 H 960 fmt 13
v4l2-ctl-2925 [001] … 97.944619: tegra_channel_set_stream: enable : 0x1
v4l2-ctl-2925 [001] … 97.945912: tegra_channel_set_stream: 13e40000.host1x:nvcsi@15a00000- : 0x1
v4l2-ctl-2925 [001] … 97.945915: csi_s_stream: enable : 0x1
kworker/2:2-121 [002] … 97.950206: rtcpu_string: tstamp:3650814553 id:0x04010000 str:“VM0 activating.”
kworker/2:2-121 [002] … 98.010196: rtcpu_vinotify_event: tstamp:3651298703 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:116831074048 data:0x399d580010000000
kworker/2:2-121 [002] … 98.010198: rtcpu_vinotify_event: tstamp:3651298858 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:116831080512 data:0x0000000031000001
kworker/2:2-121 [002] … 98.010198: rtcpu_vinotify_event: tstamp:3651299013 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:116831120992 data:0x399d550010000000
kworker/2:2-121 [002] … 98.010199: rtcpu_vinotify_event: tstamp:3651299144 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:116831127552 data:0x0000000031000002
v4l2-ctl-2925 [001] … 98.028905: tegra_channel_set_stream: isx019 7-001a : 0x1
kworker/2:2-121 [002] … 98.230209: rtcpu_nvcsi_intr: tstamp:3658928467 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230213: rtcpu_nvcsi_intr: tstamp:3658932868 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/2:2-121 [002] … 98.230214: rtcpu_nvcsi_intr: tstamp:3658935756 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230214: rtcpu_nvcsi_intr: tstamp:3658950342 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230215: rtcpu_nvcsi_intr: tstamp:3658952422 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230215: rtcpu_nvcsi_intr: tstamp:3658954507 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230216: rtcpu_nvcsi_intr: tstamp:3658955551 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230216: rtcpu_nvcsi_intr: tstamp:3658956592 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230216: rtcpu_nvcsi_intr: tstamp:3658957631 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230217: rtcpu_nvcsi_intr: tstamp:3658960758 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230217: rtcpu_nvcsi_intr: tstamp:3658962034 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/2:2-121 [002] … 98.230218: rtcpu_nvcsi_intr: tstamp:3658963882 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230218: rtcpu_nvcsi_intr: tstamp:3658965966 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230219: rtcpu_nvcsi_intr: tstamp:3658970131 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230219: rtcpu_nvcsi_intr: tstamp:3658974300 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230219: rtcpu_nvcsi_intr: tstamp:3658976381 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230220: rtcpu_nvcsi_intr: tstamp:3658979511 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230220: rtcpu_nvcsi_intr: tstamp:3658981589 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230220: rtcpu_nvcsi_intr: tstamp:3658990967 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230221: rtcpu_nvcsi_intr: tstamp:3658992007 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230221: rtcpu_nvcsi_intr: tstamp:3658993047 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230222: rtcpu_nvcsi_intr: tstamp:3658996176 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230222: rtcpu_nvcsi_intr: tstamp:3659007633 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080
kworker/2:2-121 [002] … 98.230222: rtcpu_nvcsi_intr: tstamp:3659007969 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x10000000
kworker/2:2-121 [002] … 98.230223: rtcpu_nvcsi_intr: tstamp:3659009713 class:GLOBAL type:PHY_INTR0 phy:0 cil:0 st:0 vc:0 status:0x00000080