AM3358
SDK是最新版本SDK-PROCESSOR-03.02
在Linux的文件系统加载完毕后,运行QT的测试程序,有几率发现屏幕左移,同时在串口段打印如下,请问该如何解决?因为文件系统已经启动,QT的测试程序又很小,应该不会存在总线不足之类的问题吧?请帮忙分析。
[ 2154.711045] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000020): FIFO underfow
[ 2154.726868] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.733636] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.743661] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.750484] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.759628] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.766446] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.776424] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.783188] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.793215] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2154.800045] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost
[ 2155.029849] tilcdc 4830e000.lcdc: tilcdc_crtc_irq(0x00000004): Sync lost flood detected, disabling the interrupt
Jian Zhou:
LCD FIFO溢出的时候,驱动会reset整个LCD模块,有些客户反映会闪屏,需要优化下reset的等待时间。
你的LCD的分辨率和刷新率是多少?能否降低刷新率试下。
zizhen hu:
回复 Jian Zhou:
您好,我碰到的问题不是闪屏,而是画面往左边偏移,而且启动后出现这个问题的话,运行其他程序也一直偏移,不会恢复,只有重启才有可能恢复。
分辨率800*480,用的AM335X-EVM的配置。
Jian Zhou:
回复 zizhen hu:
记得以前有个帖子说关掉一个系统进程就可以了,你现在去掉系统进程还有这个问题么?
zizhen hu:
回复 Jian Zhou:
周工:
不知道你说的是不是/etc/systemd/system/getty.target.wants/getty@tty1.service。
之前我开机80%会出现LCD显示偏移,我怀疑是开机脚本的问题,最后确认getty@tty1.service这个脚本移除后,开机后不再出现显示偏移。但是提交给客户后,客户发现还是会出现,我做了下测试,移除getty@tty1.service之后,开机运行自己的程序,大概10多次会出现一次屏幕偏移,而有这个脚本的时候,开机80%会出现显示偏移。所以虽然可能和脚本有关,但是产生偏移的原因应该不是这个脚本,周工,请帮忙分析一下该如何解决,我不知道怎么下手。
underflow的是FIFO中没有数据才回产生的错误,但是什么情况下会导致FIFO接收不到数据呢?我运行的QT测试程序是黑白的,做触摸测试用的,按说这个LCD的数据量也不会大。
zizhen hu:
回复 Jian Zhou:
周工:
http://git.denx.de/?p=u-boot.git;a=commitdiff;h=8c17cbdf8a8023abdd0009af4dc9dbc0541b4a0f
这个网页是更新DDR的配置来解决LCD的underflow的错误的,我修改后发现出现错误的概率是变小了,但是还是有存在。其中里面的EMIF_OCP_CONFIG_AM335X_EVM 的值是怎么配置的?因为EVM的内存是256M的,我们的是512M的内存,不知道这个值是否需要修改的原因导致还是有几率出现underflow的错误。如果需要修改,这个值怎么定义。
#define EMIF_OCP_CONFIG_AM335X_EVM 0x003d3d3d
Jian Zhou:
回复 zizhen hu:
你手上有没有TI的EVM板,同样用这个版本的LinuxSDK能在EVM板上复线这个问题么?
Jian Zhou:
回复 Jian Zhou:
如果EVM不能复现,而调整DDR的配置能对这个问题有改善,那需要仔细检查所有DDR寄存器配置。
zizhen hu:
回复 Jian Zhou:
周工:
我手上没有EVM板子,只有blonewhite板子。
另外,DDR的寄存器,为什么补丁上值需要是0x003d3d3d,这个值用在我们板子上依旧会出现问题,不过几率小了很多,我根据e2e上有个帖子,用了0x00ffff30这个值,测试了半天,暂时没有出现,很显然这个配置要更好一些,但是这个值具体是根据什么来配置的,周工,请教这个值的配置方法,谢谢。
Jian Zhou:
回复 zizhen hu:
0x00ffff30这个值是付到DDR的哪个寄存器里?
Jian Zhou:
回复 Jian Zhou:
我仔细看了下这个patch,他是为了规避LCD控制器的FIFO overflow,去调整DDR的cmd FIFO。
这个patch我还是第一次看到,他是修改了EMIF的Interface Configuration Register,之前我们有客户也反应过LCD出现FIFO overflow的问题,但是没有你说的这么频繁。
可能和你用的Linux版本有关系。