TI中文支持网
TI专业的中文技术问题搜集分享网站

uboot 中的lcd显示问题

各位好!

目前我是在做am3715上面实现uboot中开机logo显示的功能,lcd是一个480*640 24位的,需要用spi配置。现在在uboot中显示时出现了如下的情况:

(我用的是默认的logo图片,带有denx标志的那个)

感觉是本来该在左上角的logo重复了4次,而且下面的字符也跟着重复。我对uboot中初始化lcd是初次调试,有些现象都不太明白。麻烦各位如果对这个lcd初始化有了解的话,帮忙看下这种现象可能的原因有哪些,谢谢了!!

Jian Zhou:

有调整过屏的时序吗?

Cheng Zhuo Gu:

回复 Jian Zhou:

水平和垂直时序相关的寄存器我是直接照搬的kernel中的寄存器值写的,这样可以吗?同事说这种现象可能和framebuffer的设置有关,可我也不太确定怎么改。我试着改过几个传入logo显示的framebuffer的首地址和分配大小的数值,将它们直接写死,不过都没有改变这种问题。之前是直接分配的一个640*480*3 (总像素所占空间)大小的数组。不知道这个会不会有问题,还请你帮忙分析下!谢谢!

leo chen:

是不稳定吧,你检查一下接口

Cheng Zhuo Gu:

回复 leo chen:

leo chen 你好,谢谢你的答复。你是说LCD连接板子的连接头那边不稳定吗?可是同样的状态开机后kernel是正常的,连接应该没问题吧 。我现在试着改过几种对framebuffer的设置,如果增加了对 DISPC_GFX_BA1 这个寄存器的设置会有uboot中间的一段显示是黑屏(就是没图像但一直黑)的现象。之前是只对 DISPC_GFX_BA0这个寄存器设置了。这两个属于对Graphics DMA控制相关的寄存器:

对照datasheet上面有这两个寄存器的控制的说明:

我不是太明白这两个地址到底是要设成什么大小,是一样的,还是说 BA1 比 BA0多一定的大小。而且我看网上有的参考上面也没有特别的提到这个问题。不过从我尝试几次的修改看,这两个buffer地址的修改确实对图像显示有影响。下面我也不知道怎么改了。。。有点卡住了,我们要放假了,这个问题估计要到年后再来好好看了。

再次谢谢你们的答复,也祝各位新年快乐!

Cheng Zhuo Gu:

回复 Cheng Zhuo Gu:

各位好!

之前的重影的问题现在我找到原因了,是分辨率的设置问题。现在我这边uboot中能够显示出来logo图像和打印信息:

但是有以下几个问题:

1)logo图像的颜色不对,显示不出来彩色。这个图像是uboot中默认的那个denx图标的bmp图片。uboot中是通过将denx.bmp这个图片制作成像素数组保存的。

按照网上的一些说法,我想换成一个自己的logo图片,可是我制作成bmp图片替换这个denx后显示也不正常。颜色和内容都有些差异。

2)在uboot显示结束到kernel开始的那个交替时间中,会出现kernel logo闪烁一下,然后再保持正常。这个是不是和framebuffer的清除有关?

3)现在背光显示不太正常,我想让lcd显示时才开启背光并让它保持到kernel,应该怎么做?

上面几个问题还请各位有时间的话帮忙分析一下,感谢!

Jian Zhou:

回复 Cheng Zhuo Gu:

针对你的3个问题的几个建议:

1.进入kernel后,LCD显示的内容正常吗?如果进入Linux kernel后,GUI显示是正常的,说明还是U-boot中寄存器配的不对,可以参考kernel下寄存器的配置。

2.kernel会重新初始化一遍clock,你可以把这部分代码去掉看看效果。

3.背光控制应该是通过某个GPIO做的,控制这个GPIO就可以了。

Cheng Zhuo Gu:

回复 Jian Zhou:

谢谢你的答复。

目前我这边有了些新进展:

1)背光通过设置一个GPIO后,差不多可以在logo显示出来的同时也一直保持了。

2)目前的颜色始终不对,不管用什么图片都只能是黑白的,没有彩色。进入kernel后LCD内容都是正常的,我也对照kernel的寄存器改了,就是dispc ,dsi,dss相关的值基本都和kernel中的一样。主要不知道是哪个寄存器的配置会影响这个颜色问题,目前我还在一个一个的看。

3)我修改了cfb_console.c中的一些代码,现在的logo能全屏显示了。按说分辨率是480*640,可是不知道为什么得用640*640分辨率的图片(8bit bmp图)才可以,如果用480*640的图片总会有一部分的黑屏。这个我目前还不知道原因:

480*640的图片

640*640的图片

4)目前重点的问题是在uboot结束到进入kernel的时候,会有几秒的白屏,之后才完全进入kernel的logo。而且这个kernel的logo会先闪烁一下才稳定。

在这个白屏的时间里,我量了一下某个像素数据的管脚和像素时钟的管脚,发现这几秒的时间里都没有信号传输。在uboot显示图片和后面的kernel

阶段数据管脚和时钟管脚都是有信号(数据)一直在传。这个现在还没能分析出来原因,怀疑进入kernel后是不是把LCD控制的管脚之类的都给重新

复位了。感觉这几秒的时间LCD 就没正常工作。不知道还有没有其他可能的原因,还请也帮忙分析下,感谢!

 

Jian Zhou:

回复 Cheng Zhuo Gu:

进入kernel后会把LCD的配置整个初始化一遍的。

Cheng Zhuo Gu:

回复 Jian Zhou:

那有什么办法可以规避这个进入kernel白屏的问题吗?比如把kernel中lcd初始化的流程提前之类的,不知道能不能修改这些。

还有就是uboot阶段图像的颜色问题,我感觉有的测试用的logo图像不光没有颜色,还会有部分像素点的丢失,总之就是感觉不完整。我最近一直在跟这个问题,可以一直找不到根本原因。

Jian Zhou:

回复 Cheng Zhuo Gu:

把kernel 里面的LCD初始化部分去掉应该就可以了。

赞(0)
未经允许不得转载:TI中文支持网 » uboot 中的lcd显示问题
分享到: 更多 (0)