现象: T507板子A(异常板子)(ubuntu系统)连接lcd屏(通过连接其他板子B,可以确定屏是正常的,线序是对的),出现花屏;
示波器测量:dclk, hsync, vsync, de的波形, 对比正常板子B(硬件,软件 与 A有一定差异)是正常的;
对比屏参; /sys/class/disp/disp/attr/sys 没有发现异常。
screen 0:
de_rate 696000000 hz, ref_fps:62
mgr0: 1024x600 fmt[rgb] cs[0x204] range[full] eotf[0x4] bits[8bits] err[0] force_sync[0] unblank direct_show[false]
dmabuf: cache[0] cache max[0] umap skip[0] overflow[0]
lcd output backlight(150) fps:61.4 1024x 600
err:0 skip:111 irq:317116 vsync:317116 vsync_skip:0
BUF enable ch[1] lyr[0] z[5] prem[N] a[globl 255] fmt[ 0] fb[1024, 600;1024, 600;1024, 600] crop[ 0, 0,1024, 600] frame[ 0, 0,1024, 600] addr[ff800000, 0, 0] flags[0x 0] trd[0,0]
depth[ 0] transf[0]
BUF enable ch[2] lyr[0] z[3] prem[N] a[globl 255] fmt[ 0] fb[1024, 600;1024, 600;1024, 600] crop[ 0, 0,1024, 600] frame[ 0, 0,1024, 600] addr[ff000000, 0, 0] flags[0x 0] trd[0,0]
depth[ 0] transf[0]
BUF enable ch[3] lyr[0] z[1] prem[N] a[globl 255] fmt[ 0] fb[1024, 600;1024, 600;1024, 600] crop[ 0, 0,1024, 600] frame[ 0, 0,1024, 600] addr[fe800000, 0, 0] flags[0x 0] trd[0,0]
depth[ 0] transf[0]
读取fb0: 把 T507板子A把数据取出来,转成bmp,是正常的ubuntu桌面;
清除fb0,fb1,fb2:dd if=/dev/zero of=/dev/fb0
执行命令前, T507板子A 花屏,正常板子B 显示正常, T507板子A其中一个blue脚的 波形是变动的方波,正常板子B 其中一个blue脚的 波形是变动的方波。
执行命令后, T507板子A 花屏,正常板子B 黑屏, T507板子A其中一个blue脚的 波形是变动的方波,正常板子B 其中一个blue脚的 波形是直线。
执行使能软开关 /sys/kernel/debug/dispdbg;
执行使能屏幕输出 echo disp0 > name;echo blank > command; echo 0 > param;echo 1 > start;
T507板子A 花屏,正常板子B 显示正常, T507板子A其中一个blue脚的 波形是变动的方波,正常板子B 其中一个blue脚的 波形是变动的方波。
执行去使能屏幕输出 echo disp0 > name;echo blank > command; echo 1 > param;echo 1 > start;
T507板子A其中一个blue脚的 波形是是直线,正常板子B 其中一个blue脚的 波形是直线。
总结:我非常困惑是T507板子A输出的信号好像是对的,但是数据好像不是fb0的数据,但是这一部分应该是芯片去执行的,不应该有错。