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.

[参考译文] TDA4VEN-Q1:TDA4-Ven 芯片放大器;ISX031 适应查询

Guru**** 2952510 points

Other Parts Discussed in Thread: AM62P

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1655260/tda4ven-q1-tda4-ven-chip-isx031-adaptation-inquiry

器件型号: TDA4VEN-Q1
主题: AM62P 中讨论的其他器件

您好、

我们目前正在改装 TDA4-Ven 芯片上的四个 ISX031 摄像头、该摄像头使用 MAX96724 解串器和 MAX96717 串行器。 我目前使用的是 SDK 10.1 版。 摄像机规格为 1920x1536、UYVY422 8 位、30fps。 虽然 4 通道视频流大多数时间都能正确输出、但在视频输出完全丢失的情况下、我们会遇到间歇性故障。 为了找出问题所在、我们进行了以下对比测试:传感器交换:  

将 ISX031s 替换为四个 Ox01f10 传感器可以完美地工作、而不会出现任何问题。

减少通道数:使用三个或更少的 ISX031 摄像机同时输出图像而不会出现任何问题。

帧速率测试:将四个 ISX031 摄像头的帧速率降低到 12fps 仍会出现问题。 因此、我们认为这不是带宽限制。

内核版本:我们尝试将驱动程序移植到内核版本 11.2、但由于内核版本差异很大、因此自适应失败。

您能否提供一些见解或建议、说明哪些因素可能导致出现此间歇性故障、特别是 4x ISX031 设置?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不确定这是软件问题还是硬件问题。 我们在使用 AM62P SoC 的定制电路板上也遇到同样的问题。

    root@j722s-evm:~# devmem2 0x30101020 w
    /dev/mem opened.
    Memory mapped at address 0xffff95934000.
    Read at address  0x30101020 (0xffff95934020): 0x00000000
    root@j722s-evm:~# devmem2 0x30101028 w
    /dev/mem opened.
    Memory mapped at address 0xffffa76cf000.
    Read at address  0x30101028 (0xffffa76cf028): 0x00000000
    root@j722s-evm:~# devmem2 0x30101104 w
    /dev/mem opened.
    Memory mapped at address 0xffffa181f000.
    Read at address  0x30101104 (0xffffa181f104): 0x00000000
    root@j722s-evm:~# devmem2 0x30101048  w
    /dev/mem opened.
    Memory mapped at address 0xffffb1c6d000.
    Read at address  0x30101048 (0xffffb1c6d048): 0x00222206
    

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ying.Li:

    这些测试是使用 RTOS 还是 Linux 完成的?

    您是否有任何错误日志?

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、

    linux.your prompt proliant 将非常感激,因为这是相当时间敏感!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ying.Li:

    您是否为这两个传感器创建了驱动程序? 您是否能够发送驱动程序?

    传感器是在流式传输过程中死机还是无法启动?

    [报价 userid=“574088“ url=“~/support/processors-group/processors/f/processors-forum/1655260/tda4ven-q1-tda4-ven-chip-isx031-adaptation-inquiry/6383264

    您是否有任何错误日志?

    [/报价]

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、

    1.我基于 DS90UB960 + DS90UB953 + IMX219 协议栈修改了驱动程序。 由于我们的摄像头在上电时自动开始输出视频流、因此我只调整了 DS90UB953 和 IMX219 驱动程序中的图像格式、并在 DS90UB960 驱动程序中添加了一些配置更改。
    至于该问题、它会在上电后发生:有时它会成功捕获图像、但有时它只是死了。 我已经录制了这方面的视频、并会将其与驱动程序一起发送给您。
    2. 有时它在启动过程中抛出以下错误,我必须重新启动它。 您能告诉我这可能是什么原因吗
    cdns-mipi-dphy-rx 30110000.phy: DPHY wait for lane ready timeout
    [   18.966045] cdns-csi2rx 30101000.csi-bridge: Failed to configure external DPHY: -110
    [   19.074376] cdns-mipi-dphy-rx 30110000.phy: DPHY wait for lane ready timeout
    [   19.082056] cdns-csi2rx 30101000.csi-bridge: Failed to configure external DPHY: -110
    3. 我要求 James 将我的驱动程序和 MP4 视频转发给您。 在其中一个视频中,cam0 保持闪烁。 我不确定导致这种情况的原因、因为它仅发生在 cam0 上。 但是、如果我使用以下命令、则不会出现问题:
    gst-launch-1.0 v4l2src device=/dev/video0 io-mode=dmabuf-import ! video/x-raw, width=1920, height=1536, format=UYVY ! videoconvert ! appsink
    现在我们不必担心这个问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ying.Li:

    [引述 userid=“62991“ url=“~/support/processors-group/processors/f/processors-forum/1655260/tda4ven-q1-tda4-ven-chip-isx031-adaptation-inquiry/6385245
    2. 有时它在启动过程中抛出以下错误,我必须重新启动它。 您能告诉我这可能是什么原因吗
    [/报价]

    这是指 TDA4VEN 启动、还是指您何时启动 CSI 流? 您能否发送整个 dmesg?

    您使用什么命令来启动流式传输? 您可以尝试使用 yavta 来启动流媒体并仅捕获原始图像吗?

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、

    启动 CSI 流时会发生该情况。 如视频中所示、GStreamer 输出有时工作正常、但有时会卡住、就像在视频中一样。

    e2e.ti.com/.../0777.dmesg.txt

    2.它也被卡住时使用 yavta。 请查看下面的日志。

    root@j722s-evm:~# yavta /dev/video3 -c1 -n1 -s1920x1536 -fUYVY -Fvideo.yuv
    Device /dev/video3 opened.
    Device `j721e-csi2rx' on `platform:30102000.ticsi2rx' (driver 'j[ 2432.628101] ds90ub960 0-0027: read 0x0415 39
    721e-csi2rx') supports video, capture, without mplanes.
    Video f[ 2432.632762] ds90ub960 0-0027: read 0x0415 39
    ormat set: UYVY (59565955) 1920x1536 (stride 3840) field none bu[ 2432.642587] ds90ub960 0-0027: read 0x0415 39
    ffer size 5898240
    Video format: UYVY (59565955) 1920x1536 (stride 3840) field none buffer size 5898240
    1 buffers requested.
    length: 5898240 offset: 0 timestamp type/source: mono/EoF
    Buffer 0/0 mapped at address 0xffff9dff0000.
    0 (0) [-] any 0 5898240 B 2432.475630 2432.475665 64.641 fps ts mono/EoF
    Captured 1 frames in 0.015504 seconds (64.496364 fps, 380415034.102452 B/s).
    1 buffers released.
    
    
    root@j722s-evm:~# yavta /dev/video3 -c1 -n1 -s1920x1536 -fUYVY -Fvideo.yuv
    Device /dev/video3 opened.
    Device `j721e-csi2rx' on `platform:30102000.ticsi2rx' (driver 'j721e-csi2rx') supports video, capture, without mplanes.
    Video f[ 2433.576355] ds90ub960 0-0027: read 0x0415 39
    ormat set: UYVY (59565955) 1920x1536 (stride 3840) field none bu[ 2433.586223] ds90ub960 0-0027: read 0x0415 39
    ffer size 5898240
    Video format: UYVY (59565955) 1920x1536 (stri[ 2433.595956] ds90ub960 0-0027: read 0x0415 39
    de 3840) field none buffer size 5898240
    1 buffers requested.
    length: 5898240 offset: 0 timestamp type/source: mono/EoF
    Buffer 0/0 mapped at address 0xffff8f7d0000.
    ^C
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ying.Li:

    设备树文件是什么? 您是否将所有通道编号和数据速率设置为正确的值?

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、

    我认为 DTS 配置正确。 请在下面找到我的 dts 文件。
    此外、这项任务十分紧迫。 非常感谢您能帮助加快该过程。
    	deser@27 {
    
    		compatible = "ti,ds90ub960-q1";
    
    		reg = <0x27>;
    
    
    
    		clock-names = "refclk";
    
    		clocks = <&clk_fusion_25M_fixed>;
    
    
    
    		i2c-alias-pool = <0x4a 0x4b 0x4c 0x4d 0x4e 0x4f>;
    
    
    
    		ports {
    
    			#address-cells = <1>;
    
    			#size-cells = <0>;
    
    
    
    			port@0 {
    
    				reg = <0>;
    
    				ub960_fpd3_0_in: endpoint {
    
    					remote-endpoint = <&ub953_0_out>;
    
    				};
    
    			};
    
    
    
    			port@1 {
    
    				reg = <1>;
    
    				ub960_fpd3_1_in: endpoint {
    
    					remote-endpoint = <&ub953_1_out>;
    
    				};
    
    			};
    
    
    
    			port@2 {
    
    				reg = <2>;
    
    				ub960_fpd3_2_in: endpoint {
    
    					remote-endpoint = <&ub953_2_out>;
    
    				};
    
    			};
    
    
    
    			port@3 {
    
    				reg = <3>;
    
    				ub960_fpd3_3_in: endpoint {
    
    					remote-endpoint = <&ub953_3_out>;
    
    				};
    
    			};
    
    
    
    			port@4 {
    
    				reg = <4>;
    
    				ds90ub960_0_csi_out: endpoint {
    
    					data-lanes = <1 2 3 4>;
    
    					clock-lanes = <0>;
    
    					link-frequencies = /bits/ 64 <800000000>;
    
    					remote-endpoint = <&csi2_phy0>;
    
    				};
    
    			};
    
    		};
    
    
    
    		links {
    
    			#address-cells = <1>;
    
    			#size-cells = <0>;
    
    
    
    			link@0 {
    
    				reg = <0>;
    
                    i2c-alias = <0x40>;
    
    
    
    				ti,rx-mode = <3>;
    
    
    
    				serializer0: serializer {
    
    					compatible = "ti,ds90ub953-q1";
    
    					gpio-controller;
    
    					#gpio-cells = <2>;
    
    
    
    					#clock-cells = <0>;
    
    
    
    					ports {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    						port@0 {
    
    							reg = <0>;
    
    							ub953_0_in: endpoint {
    
    								clock-lanes = <0>;
    
    								data-lanes = <1 2>;
    
    								remote-endpoint = <&sensor_0_out>;
    
    							};
    
    						};
    
    
    
    						port@1 {
    
    							reg = <1>;
    
    							ub953_0_out: endpoint {
    
    								remote-endpoint = <&ub960_fpd3_0_in>;
    
    							};
    
    						};
    
    					};
    
    
    
    					i2c {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    						imx219_0@1a {
    
    							compatible = "sony,imx219";
    
    							reg = <0x1a>;
    
    
    
    							clocks = <&clk_imx219_fixed_00>;
    
    							clock-names = "xclk";
    
    
    
    							port {
    
    								sensor_0_out: endpoint {
    
    									remote-endpoint = <&ub953_0_in>;
    
    									//link-frequencies = /bits/ 64 <456000000>;
    
    									clock-lanes = <0>;
    
    									data-lanes = <1 2>;
    
    								};
    
    							};
    
    						};
    
    					};
    
    				};
    
    			};
    
    
    
    			link@1 {
    
    				reg = <1>;
    
    				i2c-alias = <0x45>;
    
    
    
    				ti,rx-mode = <3>;
    
    
    
    				serializer1: serializer {
    
    					compatible = "ti,ds90ub953-q1";
    
    					gpio-controller;
    
    					#gpio-cells = <2>;
    
    
    
    					#clock-cells = <0>;
    
    
    
    					ports {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    						port@0 {
    
    							reg = <0>;
    
    							ub953_1_in: endpoint {
    
    								clock-lanes = <0>;
    
    								data-lanes = <1 2>;
    
    								remote-endpoint = <&sensor_1_out>;
    
    							};
    
    						};
    
    
    
    						port@1 {
    
    							reg = <1>;
    
    							ub953_1_out: endpoint {
    
    								remote-endpoint = <&ub960_fpd3_1_in>;
    
    							};
    
    						};
    
    					};
    
    
    
    					i2c {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    						imx219_1@1a {
    
    							compatible = "sony,imx219";
    
    							reg = <0x1a>;
    
    
    
    							clocks = <&clk_imx219_fixed_00>;
    
    							clock-names = "xclk";
    
    
    
    							port {
    
    								sensor_1_out: endpoint {
    
    									remote-endpoint = <&ub953_1_in>;
    
    									//link-frequencies = /bits/ 64 <456000000>;
    
    									clock-lanes = <0>;
    
    									data-lanes = <1 2>;
    
    								};
    
    							};
    
    						};
    
    					};
    
    				};
    
    			};
    
    
    
    			link@2 {
    
    				reg = <2>;
    
    				i2c-alias = <0x46>;
    
    
    
    				ti,rx-mode = <3>;
    
    
    
    				serializer2: serializer {
    
    					compatible = "ti,ds90ub953-q1";
    
    					gpio-controller;
    
    					#gpio-cells = <2>;
    
    
    
    					#clock-cells = <0>;
    
    
    
    					ports {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    						port@0 {
    
    							reg = <0>;
    
    							ub953_2_in: endpoint {
    
    								clock-lanes = <0>;
    
    								data-lanes = <1 2>;
    
    								remote-endpoint = <&sensor_2_out>;
    
    							};
    
    						};
    
    
    
    						port@1 {
    
    							reg = <1>;
    
    							ub953_2_out: endpoint {
    
    								remote-endpoint = <&ub960_fpd3_2_in>;
    
    							};
    
    						};
    
    					};
    
    
    
    					i2c {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    						imx219_2@1a {
    
    							compatible = "sony,imx219";
    
    							reg = <0x1a>;
    
    
    
    							clocks = <&clk_imx219_fixed_00>;
    
    							clock-names = "xclk";
    
    
    
    							port {
    
    								sensor_2_out: endpoint {
    
    									remote-endpoint = <&ub953_2_in>;
    
    									//link-frequencies = /bits/ 64 <456000000>;
    
    									clock-lanes = <0>;
    
    									data-lanes = <1 2>;
    
    								};
    
    							};
    
    						};
    
    					};
    
    				};
    
    			};
    
    
    
    			link@3 {
    
    				reg = <3>;
    
    				i2c-alias = <0x47>;
    
    
    
    				ti,rx-mode = <3>;
    
    
    
    				serializer3: serializer {
    
    					compatible = "ti,ds90ub953-q1";
    
    					gpio-controller;
    
    					#gpio-cells = <2>;
    
    
    
    					#clock-cells = <0>;
    
    
    
    					ports {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    						port@0 {
    
    							reg = <0>;
    
    							ub953_3_in: endpoint {
    
    								clock-lanes = <0>;
    
    								data-lanes = <1 2>;
    
    								remote-endpoint = <&sensor_3_out>;
    
    							};
    
    						};
    
    
    
    						port@1 {
    
    							reg = <1>;
    
    							ub953_3_out: endpoint {
    
    								remote-endpoint = <&ub960_fpd3_3_in>;
    
    							};
    
    						};
    
    					};
    
    
    
    					i2c {
    
    						#address-cells = <1>;
    
    						#size-cells = <0>;
    
    
    
    					    imx219_3@1a {
    
    							compatible = "sony,imx219";
    
    							reg = <0x1a>;
    
    
    
    							clocks = <&clk_imx219_fixed_00>;
    
    							clock-names = "xclk";
    
    
    
    							port {
    
    								sensor_3_out: endpoint {
    
    									remote-endpoint = <&ub953_3_in>;
    
    									//link-frequencies = /bits/ 64 <456000000>;
    
    									clock-lanes = <0>;
    
    									data-lanes = <1 2>;
    
    								};
    
    							};
    
    						};
    
    					};
    
    				};
    
    			};
    
    		};
    
    	};
    
    
    &cdns_csi2rx0 {
    
    	ports {
    
    		#address-cells = <1>;
    
    		#size-cells = <0>;
    
    
    
    		csi0_port0: port@0 {
    
    			reg = <0>;
    
    			status = "okay";
    
    
    
    			csi2_phy0: endpoint {
    
    				remote-endpoint = <&ds90ub960_0_csi_out>;
    
    				clock-lanes = <0>;
    
    				data-lanes = <1 2 3 4>;
    
    				link-frequencies = /bits/ 64 <1250000000>;
    
    			};
    
    		};
    
    	};
    
    };
    
    
    
    &ti_csi2rx0 {
    
    	status = "okay";
    
    };
    
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、

    1.你是否需要从我这边得到其他信息? 如果是、请告诉我、以便我可以一次性提供所有信息。 像这样来回流动会导致不必要的延迟。
    2. 您以前没有遇到过这个问题吗? 在 1280x960 和 1920x1536 下运行 4 个通道时没有问题。 该问题仅在 4 通道 1920x1536 下出现。 这是否是由于大量的瞬时数据吞吐量?请提供一些见解? 我真的很着急。
    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ying.Li:

    1. 您是否需要我这边提供任何其他信息? 如果是、请告诉我、以便我可以一次性提供所有信息。 像这样来回移动会导致不必要的延迟。

    我想知道 应该设置的通道数和数据速率。

    2.  您以前是否遇到过此问题? 在 1280x960 和 1920x1536 下运行 4 个通道时没有问题。 该问题仅在 4 通道 1920x1536 下出现。 这是否是由于大量的瞬时数据吞吐量?请提供一些见解? 我在这里真的很匆忙。

    我没有看到这个问题,有时摄像头工作,有时它不工作。  通常,行为是二进制:要么是有效,要么不有效。

    如果四个摄像头的分辨率较低、我会认为问题出在带宽上。 视频流水线的每个部分的图像格式和数据速率/链路频率是多少?

    此外、您是否正在使用 ISP?

    此致、
    Jared