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?
您不是已经知道设定哪个文件的值可以正常显示了吗,开机的时候写入数据或者源码里找找这个文件的值是从哪获取的
页:
[1]