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.

[参考译文] PROCESSOR-SDK-AM62X:运行 Qt 示例应用时、错误:连接器"LVDS2&quot 没有可用的 CRTC/编码器对

Guru**** 2349980 points
Other Parts Discussed in Thread: SK-AM62
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1508869/processor-sdk-am62x-error-no-usable-crtc-encoder-pair-for-connector-lvds2-when-running-qt-example-application

器件型号:PROCESSOR-SDK-AM62X
主题中讨论的其他器件:SK-AM62

工具/软件:

您好:

我们正在使用 AM6254、SDK 版本9.1.0.8和 RT 内核6.1.46开发定制电路板。 我们已经尝试在/usr/share/qt5/examples/opengl/hellogles3中运行一个示例应用程序以及一个自定义编译的 qt 应用程序、并得到以下错误:


收到此 Qt 调试消息"QQmlApplicationEngine 无法加载组件"之前、连接器"LVDS2"没有可用的 CRTC/编码器对。 我随附了一个名为 envar 的文件、其中包含相关的环境变量。 我们还使用 eglfs 作为 Qt 的后端、配置文件使用 eglfs_kms (另请参阅随附文件)。 定制 qt 应用和 hellogles3均已在带有微提示显示模块的 SK-am62 EVM 上测试并正常运行。

我们有两个使用 LVDS 的显示器、它们都连接到自己的连接器。 为ts 添加的器件树叠加层取自本应用手册(https://www.ti.com/lit/an/spradj9/spradj9.pdf?LVDS=1746028386776&ref_URL=https%253A%252F%252Fduckduckgo.com%252F)以及器件驱动程序中的 panel-simple.c。 我们使用的是 dss0控制器、引脚与应用手册完全相同。左侧显示的是 CLK0和 A0-A3P/N、右侧显示的是 CLK1和 A4-A7P/N 显示屏配置为用作一个扩展显示屏。 我附上了命令"modetest -M tidss"的输出。 当运行"modetest -M tidss -s 40@38:lengthxwidth"时、我们会在两个显示器上拉伸色条测试。  

我只能在这个 libweston repo 的 第5428行 coral.googlesource.com/.../compositor-drm.c 中引用这个错误。 我们对 Weston 代码库的理解有限,但我们想知道编码器/CRTC 对是否有限制,因为从 modetest 的输出可以看出,当只有一个 CRTC 时,即 LVDS1连接器已成功初始化,但 LVDS2未初始化。

任何帮助都将非常感谢,提前感谢您。
e2e.ti.com/.../Modetest_5F00_output.txt

e2e.ti.com/.../envar.txt

e2e.ti.com/.../eglfs_5F00_kms_5F00_conf.txt

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

    在注释掉器件树中显示节点中的端口@1和器件树中 DSS_ports 节点中的端口@2时、我们能够绕过该问题。 但是、由于以下错误信息、QtEngine 故障问题仍然存在:

    QFacoryLoader::QFacoryLoader()检查目录路径"/home/root/egldeviceintegrations "...
    已加载库"/usr/lib/plugins/egldeviceintegrations/libqeglfs-kms-integration.so "
    Mesa-loader:无法打开 zink:/usr/lib/dri/zink_dri.so:无法打开共享目标文件:无此类文件或直接文件)
    无法加载驱动程序:zink

    targetNFS 没有列出此类模块、因此我们不知道从何处添加此模块。

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

    您好、

    你能运行 kmscube 吗?

    此致、
    Krunal

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

    尊敬的 Krunal:

    我得到这个错误:

    未连接连接器!
    无法初始化旧 DRM

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

    您好、
    您提到您正在将2个 LVDS 面板与 AM62x 配合使用、这些单链路显示器是否在克隆模式下运行? 您是如何配置此设置的? 可能会将显示部分的 DTS 分享给您。

    以下内容的输出是什么?

    ls /dev/dri/* -l
    devmem2 0x3020a160

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

    你好、Divyansh、

    纵观之后、我相信我们的显示屏配置为双链路模式、其中左侧显示的是奇数像素、右侧显示的是偶数像素。 我附带了.dts 文件(引脚除法)和.dtsi (帧缓冲区、显示和 DSS 定义)中的代码片段

    ##### .dtsi Snippet #####
    
    	framebuffer0: framebuffer@0 {
    			compatible = "simple-framebuffer";
    			power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>;
    			clocks = <&k3_clks 186 6>,
    				 <&k3_clks 186 0>,
    				 <&k3_clks 186 2>;
    			display = <&dss>;
    			reg = <0x00 0xff700000 0x00 0x008ca000>;
    			width = <2424>;           // Width in pixels for the actual framebuffer
    			height = <156>;           // Height in pixels for the actual framebuffer
    			stride = <(2424 * 4)>;    // Stride based on pixel width
    			format = "x8r8g8b8";      // Pixel format
    			//display-timings = <&truly_2K51525_mode>;  // Reference the timing
    		};
    	};
    
    		display {
    				compatible = "truly,2K51525";
                    /*
                    * Note that the OLDI TX 0 transmits the odd set of pixels
                    * while the OLDI TX 1 transmits the even set. This is a
                    * fixed configuration in the IP integralstion and is not
                    * changeable. The properties, "dual-lvds-odd-pixels" and
                    * "dual-lvds-even-pixels" have been used to merely
                    * identify if a Dual Link configuration is required.
                    * Swapping them will not make any difference.
                    */
    
                    port@0 {
                            //dual-lvds-odd-pixels;
                            lcd_in0: endpoint {
                                    remote-endpoint = <&oldi_out0>;
                            };
                    };
    
                    port@1 {
                            //dual-lvds-even-pixels;
                            lcd_in1: endpoint {
                                    remote-endpoint = <&oldi_out1>;
                            };
                    };
            };
            
    &dss {
    	status = "okay";
    	pinctrl-names = "default";
        	pinctrl-0 = <&main_dss0_pins_default>;
    };
    
    &dss_ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
                /* VP1: LVDS Output (OLDI TX 0) */
    
                port@0 {
                    reg = <0>;
                    oldi_out0: endpoint {
                        remote-endpoint = <&lcd_in0>;
                    };
                };
    
    
                /* VP1: LVDS Output (OLDI TX 1) */
                port@2 {
                    reg = <2>;
                    oldi_out1: endpoint {
                        remote-endpoint = <&lcd_in1>;
                    };
                };
    };
    
    
    
    ##### .dts Snippet #####
    
    // left display - hex values found in e2e
    	main_dss0_pins_default: main-dss0-pins-default {
    		pinctrl-single,pins = <
    			AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
    			AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
    			AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
    			AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
    			AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
    			AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
    			AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
    			AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
    			AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
    			AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
    			AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
    			AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
    			AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
    			AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
    			AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
    			AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
    			AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
    			AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
    			AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
    			AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
    		>;
    	};

    以下是您请求的命令的输出:

    /dev/dri/card0      /dev/dri/card1      /dev/dri/renderD128

    /dev/dri/by-path:
    Platform-30200000.dss-card  platform-fd00000.gpu-card   platform-fd00000.gpu-render

    /dev/mem 已打开。
    映射到地址0xffffb71a5000的存储器。
    总线错误

    自从我的原始帖子,我发现了这个错误的原因: Mesa-loader:无法打开 zink:/usr/lib/dri/zink_dri.so 无法打开共享目标文件:没有这样的文件或直接)。 这是由于 rootfs 中缺少 PVR KM 和 UM 组件,并且由于扩展,card0和 renderD128接口没有显示出来。 编译并添加这些示例后、我便能够在/usr/share/examples/opengl 中运行 OpenGL 示例、并将它们显示在两个显示器上。

    尽管如此、我们仍然收到连接器"LVDS2"的错误 No available CRTC/编码器对、即使示例应用运行正常也是如此。 可能是我们器件的配置错误、也可能是其他一些错误。 不知道该怎么做。

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

    对我部分问题的回答仍未得到解答。
    您是否使用连接到 OLDI0和 OLDI1的2个单链路 OLDI 面板?

    实验的目的是什么? 2 SL-OLDI 在克隆模式或独立模式下运行?