首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1920x720支持mxc_edid.c,嵌入式Linux

1920x720支持mxc_edid.c,嵌入式Linux
EN

Stack Overflow用户
提问于 2019-09-25 19:39:46
回答 1查看 776关注 0票数 0

我正在使用带有Apalis Imx6的嵌入式Linux板,使用分辨率为1920x720p的屏幕。

我的设备支持其他决议,但没有提到一个,我要求支持,下面是我得到的答案。

您需要编辑"fb_videomode mxc_cea_mode64“构造函数。您可能需要引用Monitor数据表将刷新速率、分辨率等输入到文件中。

4.9-2.3.x-imx

我有监视器数据表和所有东西,我的监视器也支持所需的分辨率。

我只需要知道如何编辑和保存mxc_edid.c,然后重新编译内核以使屏幕正常工作。

任何帮助都很感激。

谢谢..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-25 20:30:40

在Toradex模块上重新编译Linux内核的一般指导原则在Toradex 开发者网站从源代码构建U和Linux内核的以下文章中进行了描述

首先,必须安装交叉编译工具链,如从源代码-工具链构建U-Boot和Linux内核中所述。

具体到用例,您必须从iMX6克隆表中提供的正确的从源代码-源代码-基于i.MX 6的模块构建U和Linux内核(Apalis/Colibri iMX6)内核分支。从您在问题中提供的链接来看,它似乎是toradex_4.9-2.3.x-imx。然后,要获得内核源代码,请遵循从源代码-内核源构建U和Linux内核

之后,您必须使用iMX6配置Apalis apalis_imx6_defconfig的内核,如从源代码-内核配置构建U-Boot和Linux内核-基于i.MX 6的模块中所述

现在是对源代码文件驱动程序/视频/fbdev/mxc/mxc_edid.c进行更改的时候了。

在您完成之后,是时候对内核进行比较了,这在从源代码-内核编译构建U和Linux内核-基于i.MX 6的内核(Apalis/Colibri iMX6)中有描述。您还可能需要重新编译从源代码构建U和Linux内核-内核模块编译,所有模块中描述的内核模块。

最后,按照从源代码-内核更新构建U-Boot和Linux内核中的描述,将内核更新到板上。

迭代edit source code的过程--> re-build the kernel --> re-deploy the kernel --> test changes,直到你把它钉牢为止。

或者,也可能更容易,您可以编辑设备树,而不是添加显示配置。

它的主要参考资料是设备树定制。基本上,设备树源与内核源代码一起提供,从源代码构建U和Linux内核还提供了如何编译设备树的信息。

下面是突出显示相关更改的代码片段:

代码语言:javascript
复制
timing_wide: 1920x720 {
+                clock-frequency = <104600000>;
+                hactive = <1920>;
+                vactive = <720>;
+                hback-porch = <24>;
+                hfront-porch = <24>;
+                vback-porch = <8>;
+                vfront-porch = <57>;
+                hsync-len = <32>;
+                vsync-len = <5>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };

一旦您调整它以适应您的显示,构建并部署到设备上,如从源代码构建U和Linux内核中所记录的。

一旦将设备树部署到模块,您只需在U中设置正确的vidargs:

代码语言:javascript
复制
env set vidargs video=mxcfb0:dev=ldb,1920x720M@60,if=RGB666 ldb=sin0 fbmem=32M
env save
reset

注意,不需要来重建U。您必须可以通过以下方式访问模块终端:

1)调试UART,即串行控制台;2)连接到模块上的监视器和USB键盘。

在重新启动或动力循环时,您必须按任意键(如果使用1来自计算机中的串行终端仿真器应用程序),如果使用2则直接按在模块上)以访问reboot环境,在其中执行上述命令。

有关设备树自定义的参考,下面是支持自定义LVDS显示的相关设备树文件的差异(这不是您的显示,但可以用作示例):

代码语言:javascript
复制
diff --git a/arch/arm/boot/dts/imx6qdl-apalis.dtsi b/arch/arm/boot/dts/imx6qdl-apalis.dtsi
index cfaaa571c158..b3c92314367b 100644
--- a/arch/arm/boot/dts/imx6qdl-apalis.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-apalis.dtsi
@@ -89,8 +89,8 @@
    mxcfb1: fb@0 {
        compatible = "fsl,mxc_sdc_fb";
        disp_dev = "ldb";
-       interface_pix_fmt = "RGB666";
-       default_bpp = <16>;
+       interface_pix_fmt = "RGB24";
+       default_bpp = <24>;
        int_clk = <0>;
        late_init = <0>;
        status = "disabled";
@@ -507,123 +507,135 @@
 };

 &ldb {
-   status = "okay";
-// split-mode;
-// dual-mode;
-
-   lvds-channel@0 {
-       reg = <0>;
-       fsl,data-mapping = "spwg"; /* "jeida"; */
-       fsl,data-width = <18>;
-       crtc = "ipu2-di1";
-       primary;
-       status = "okay";
-
-       display-timings {
-           native-mode = <&timing_xga>;
-           /* LDB-AM-800600LTNQW-A0H */
-           timing_svga: 800x600 {
-               clock-frequency = <55000000>;
-               hactive = <800>;
-               vactive = <600>;
-               hback-porch = <112>;
-               hfront-porch = <32>;
-               vback-porch = <3>;
-               vfront-porch = <17>;
-               hsync-len = <80>;
-               vsync-len = <4>;
-               hsync-active = <0>;
-               vsync-active = <0>;
-               pixelclk-active = <0>;
-           };
-           /* Standard XGA timing */
-           timing_xga: 1024x768 {
-               clock-frequency = <65000000>;
-               hactive = <1024>;
-               vactive = <768>;
-               hback-porch = <160>;
-               hfront-porch = <24>;
-               vback-porch = <29>;
-               vfront-porch = <3>;
-               hsync-len = <136>;
-               vsync-len = <6>;
-               hsync-active = <0>;
-               vsync-active = <0>;
-               pixelclk-active = <0>;
-           };
-           timing_wxga: 1280x800 {
-               clock-frequency = <68930000>;
-               hactive = <1280>;
-               vactive = <800>;
-               hback-porch = <64>;
-               hfront-porch = <64>;
-               vback-porch = <5>;
-               vfront-porch = <5>;
-               hsync-len = <40>;
-               vsync-len = <6>;
-               hsync-active = <0>;
-               vsync-active = <0>;
-               pixelclk-active = <0>;
-           };
-           /* LTTD1280800101-L4WH-CT1, note that it needs
-              fsl,data-mapping = "spwg"; fsl,data-width = <24>; */
-           timing_wxga1: 1280x800-1 {
-               clock-frequency = <71100000>;
-               hactive = <1280>;
-               vactive = <800>;
-               hback-porch = <60>;
-               hfront-porch = <60>;
-               vback-porch = <7>;
-               vfront-porch = <7>;
-               hsync-len = <40>;
-               vsync-len = <9>;
-               hsync-active = <0>;
-               vsync-active = <0>;
-               pixelclk-active = <0>;
-           };
-           timing_fullhd: 1920x1080 {
-               clock-frequency = <138500000>;
-               hactive = <1920>;
-               vactive = <1080>;
-               hback-porch = <80>;
-               hfront-porch = <48>;
-               vback-porch = <23>;
-               vfront-porch = <3>;
-               hsync-len = <32>;
-               vsync-len = <5>;
-               hsync-active = <0>;
-               vsync-active = <0>;
-               pixelclk-active = <0>;
-           };
-       };
-   };
-
-   lvds-channel@1 {
-       reg = <1>;
-       fsl,data-mapping = "spwg";
-       fsl,data-width = <18>;
-       crtc = "ipu1-di0";
-       status = "okay";
-
-       display-timings {
-/*         native-mode = <&timing_svga_ch2>;*/
-           /* LDB-AM-800600LTNQW-A0H */
-           timing_svga_ch2: 800x600 {
-               clock-frequency = <55000000>;
-               hactive = <800>;
-               vactive = <600>;
-               hback-porch = <112>;
-               hfront-porch = <32>;
-               vback-porch = <3>;
-               vfront-porch = <17>;
-               hsync-len = <80>;
-               vsync-len = <4>;
-               hsync-active = <0>;
-               vsync-active = <0>;
-               pixelclk-active = <0>;
-           };
-       };
-   };
+    status = "okay";
+     split-mode; // split mode on
+//    dual-mode;
+
+    lvds-channel@0 {
+        reg = <0>;
+        fsl,data-mapping = "spwg"; /* "jeida"; */
+        fsl,data-width = <24>;
+        crtc = "ipu2-di1";
+        primary;
+        status = "okay";
+
+        display-timings {
+            native-mode = <&timing_wide>;
+            /* LDB-AM-800600LTNQW-A0H */
+            timing_svga: 800x600 {
+                clock-frequency = <55000000>;
+                hactive = <800>;
+                vactive = <600>;
+                hback-porch = <112>;
+                hfront-porch = <32>;
+                vback-porch = <3>;
+                vfront-porch = <17>;
+                hsync-len = <80>;
+                vsync-len = <4>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };
+            /* Standard XGA timing */
+            timing_xga: 1024x768 {
+                clock-frequency = <65000000>;
+                hactive = <1024>;
+                vactive = <768>;
+                hback-porch = <160>;
+                hfront-porch = <24>;
+                vback-porch = <29>;
+                vfront-porch = <3>;
+                hsync-len = <136>;
+                vsync-len = <6>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };
+            timing_wxga: 1280x800 {
+                clock-frequency = <68930000>;
+                hactive = <1280>;
+                vactive = <800>;
+                hback-porch = <64>;
+                hfront-porch = <64>;
+                vback-porch = <5>;
+                vfront-porch = <5>;
+                hsync-len = <40>;
+                vsync-len = <6>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };
+            timing_fullhd: 1920x1080 {
+                clock-frequency = <138500000>;
+                hactive = <1920>;
+                vactive = <1080>;
+                hback-porch = <80>;
+                hfront-porch = <48>;
+                vback-porch = <23>;
+                vfront-porch = <3>;
+                hsync-len = <32>;
+                vsync-len = <5>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };
+            timing_wide: 1920x720 {
+                clock-frequency = <104600000>;
+                hactive = <1920>;
+                vactive = <720>;
+                hback-porch = <24>;
+                hfront-porch = <24>;
+                vback-porch = <8>;
+                vfront-porch = <57>;
+                hsync-len = <32>;
+                vsync-len = <5>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };
+        };
+    };
+
+    lvds-channel@1 {
+        reg = <1>;
+        fsl,data-mapping = "spwg";
+        fsl,data-width = <18>;
+        crtc = "ipu1-di0";
+        status = "okay";
+
+        display-timings {
+            native-mode = <&timing_wide_ch2>;
+            /* LDB-AM-800600LTNQW-A0H */
+            timing_svga_ch2: 800x600 {
+                clock-frequency = <55000000>;
+                hactive = <800>;
+                vactive = <600>;
+                hback-porch = <112>;
+                hfront-porch = <32>;
+                vback-porch = <3>;
+                vfront-porch = <17>;
+                hsync-len = <80>;
+                vsync-len = <4>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };
+            timing_wide_ch2: 1920x720 {
+                clock-frequency = <104600000>;
+                hactive = <1920>;
+                vactive = <720>;
+                hback-porch = <24>;
+                hfront-porch = <24>;
+                vback-porch = <8>;
+                vfront-porch = <57>;
+                hsync-len = <32>;
+                vsync-len = <5>;
+                hsync-active = <0>;
+                vsync-active = <0>;
+                pixelclk-active = <0>;
+            };
+        };
+    };
 };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58105481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档