bsaver 发表于 2020-11-28 14:54:08

IMX6UL升级libc后屏幕显示出现异常

本帖最后由 bsaver 于 2020-11-28 14:55 编辑

在使用imx6ul-c3核心板,由于工作原因需要对libc进行升级。
------------------------------------------------------------------


[*]内   核:linux3.14.38(飞凌官方提供)
[*]编译链:gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux,里面集成:

[*]             libc2.19,
[*]             linux头文件版本3.1.1,
[*]             gcc版本:4.9
------------------------------------------------------------------


[*]使用buildroot重做了文件系统(busybox1.29),并且交叉编译了zImage、modules、dtb
[*]交叉编译并移植tslib、Qt5.6.2

-----------------------------------------------------------------


使用飞凌官方提供的uboot(由于不开源,未重新编译),内核设备树有修改并且在飞凌官方提供的文件系统下验证可用。
使用飞凌推荐的SD卡方式对核心板进行烧写,烧写完成后,系统可正常启动,并且显示开机画面正确。

问题来了:

系统运行起来后,应用程序画面不能显示、触摸屏校准画面无法显示。

查看屏幕分辨率:
root@tonhe:/etc# cat /sys/class/graphics/fb0/virtual_size
800,960
root@tonhe:/etc#直接修改virtual_size文件:
root@tonhe:/etc# echo 800,480 > /sys/class/graphics/fb0/virtual_size
root@tonhe:/etc#画面居然显示出来了,当然触摸是无法用的,但是用 ts_test测试屏幕是可以正常使用的。
重启系统又回到800,960的分辨率,通过fbset查看屏幕信息:
root@tonhe:~# fbset

mode "800x480-57"
      # D: 33.000 MHz, H: 31.220 kHz, V: 57.496 Hz
      geometry 800 480 800 960 32
      timings 30303 88 121 39 21 48 3
      accel false
      rgba 8/16,8/8,8/0,0/0
endmode

root@tonhe:~#
显示画面分辨率是800,480,但是屏幕分辨率是:800,960(不太专业,可能说的名词都不对,了解的专家可以给解释一下这个数字的意义)。

设备树是根据飞凌官方资料修改的(只修改了GPIO,并且在飞凌原文件系统下验证可用):

&lcdif {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_lcdif_dat
             &pinctrl_lcdif_ctrl>;
    display = <&display0>;
    status = "okay";

    display0: display {
      bits-per-pixel = <24>;
      bus-width = <24>;

      display-timings {
/*            native-mode = <&timing0>;
            timing0: timing0 {
            clock-frequency = <9200000>;
            hactive = <480>;
            vactive = <272>;
            hfront-porch = <8>;
            hback-porch = <4>;
            hsync-len = <41>;
            vback-porch = <2>;
            vfront-porch = <4>;
            vsync-len = <10>;

            hsync-active = <0>;
            vsync-active = <0>;
            de-active = <1>;
            pixelclk-active = <0>;
            };
*/
            timing0: timing0 {
            clock-frequency = <33000000>;
            hactive = <800>;
            vactive = <480>;
            hfront-porch = <121>;
            hback-porch = <88>;
            hsync-len = <48>;
            vback-porch = <39>;
            vfront-porch = <21>;
            vsync-len = <3>;

            hsync-active = <0>;
            vsync-active = <0>;
            de-active = <1>;
            pixelclk-active = <0>;
            };
      };
    };
};
文件系统启动信息:
U-Boot 2015.04-gcab9885 (Jul 11 2019 - 15:45:19)

CPU:   Freescale i.MX6UL rev1.1 at 396 MHz
CPU:   Temperature 48 C
Reset cause: POR
Board: MX6UL 14x14 EVK
I2C:   ready
DRAM:256 MiB
NAND:256 MiB
MMC:   FSL_SDHC: 0
Display: TFT70AB-800x480 (800x480)
Video: 800x480x24

NAND read: device 0 offset 0x400000, size 0x200000
2097152 bytes read: OK
display bmp cfb_console.c
In:    serial
Out:   serial
Err:   serial
Net:   Phy 2 not found
PHY reset timed out
FEC0
Error: FEC0 address not set.

Normal Boot
Hit any key to stop autoboot:0
nand boot..........

NAND read: device 0 offset 0xa00000, size 0x800000
8388608 bytes read: OK

NAND read: device 0 offset 0x700000, size 0x40000
262144 bytes read: OK
Kernel image @ 0x80800000 [ 0x000000 - 0x5e0c78 ]
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 83000000, end 8300b76b

Starting kernel ...
问题到现在还没有解决,有一个疑问需要大家给点意见:

[*]未交叉编译uboot会不会影响屏幕分辨率?
[*]如果不是uboot导致的,是那些原因导致出现这个问题?
[*]这个问题提问飞凌官方:是否可以帮忙交叉编译一下uboot?



zhichao 发表于 2020-11-30 10:43:57

您不是已经知道设定哪个文件的值可以正常显示了吗,开机的时候写入数据或者源码里找找这个文件的值是从哪获取的
页: [1]
查看完整版本: IMX6UL升级libc后屏幕显示出现异常