LCD驱动快速调试
2017-06-15 21:25
281 查看
LCD就是一个一个的点嘛,每个点有分16bit 24bit 32bit 一般都8 : 8 : 8 的红绿蓝 基本原理就是这样,一个一个的点。一个LCD的图就是这样一般换屏调的比较多的是Timing,就是上面的那个图,调什么呢,就是调 “打点”。打点不能太快,也不能太慢!看上面那个图,left_margin Right margin Hsync 这些东西是什么鬼? 叫做: 行切换的回扫时间,水平同步时间 什么意思?就是说我打点的时候有时间拖延,比如我打个 长为1366 宽为768 的屏幕,一个屏幕是不是就是1366×768=1049088个点,但是事实上我要花大于 1049088 的打点时间,为什么要用点来算时间?因为人家的数据手册 就是 点频率为主要参数。那OK?我们来算算一张图真正需要的打点单位时间。一张图单位时间 = (Left_margin + right_margin + hsync + xres) × (Upper_margin + low_margin + vsync + yres) 这些数据可以在数据手册的Timing参数上面这个是1920 × 1080的LCD但是,实际打一张图的单位时间却不是 1920 *1080 因为有拖延的时间嘛上图所知道是 实际的一张图的单位时间 2142 * 1100 还有这个LCD的打点频率是141.4M,记得,是点频率OK,Timing参数基本上就已经知道了开源上面说个例子:/arch/arm/boot/dts/imx6dl-tx6u-811x.dts
display-timings { 107 native-mode = <&lvds_timing0>; 108 lvds_timing0: hsd100pxn1 { 109 clock-frequency = <65000000>; 110 hactive = <1024>; 111 vactive = <768>; 112 hback-porch = <220>; 113 hfront-porch = <40>; 114 vback-porch = <21>; 115 vfront-porch = <7>; 116 hsync-len = <60>; 117 vsync-len = <10>; 118 de-active = <1>; 119 pixelclk-active = <1>; 120 }; 121 };
hback-porch = <220>; hfront-porch = <40>; hsync-len = <60>; 这个三个参数加起来就是水平的拖延时间。这个是开源初始的水平拖延时间 = 220 +40 +60 = 320 但是我们这个屏幕的水平拖延时间是 2142 - 1920 = 222与320不相等耶,如果不改的话,打一张图的时间会太快,到时肯定会出现波纹或者轻微闪屏,肯定改一下好啦 怎么改?只要
hback-porch + hfront-porch + hsync-len = 222 就可以了,随便你怎么搭配 比如
100 + 100 + 22
hback-porch = <100>; hfront-porch = <100>; hsync-len = <22>;随便一个组合的数据,只要加起来222就行了,你也可以 50 50 122垂直的拖延时间类似!然后
clock-frequency = <65000000>; 这个频率再换一下就可以了,141.4M
改成
clock-frequency = <141400000>;
最后
display-timings {107 native-mode = <&lvds_timing0>;108 lvds_timing0: hsd100pxn1 {109 clock-frequency = <141400000>;110 hactive = <1920>;111 vactive = <1080>;112 hback-porch = <100>;113 hfront-porch = <100>;114 vback-porch = <2>;115 vfront-porch = <9>;116 hsync-len = <20>;117 vsync-len = <9>;118 de-active = <1>;119 pixelclk-active = <1>;120 };121 };
de-active = <1>;
pixelclk-active = <1>;这些参数不用管,一般没出现什么大问题,或者颜色图需要反转的时候再调。那么这个 设置的 fps 就 =141400000 / 2142 /1100 = 60.011HZ一般都是60HZ 的 ,android支持嘛,不过有时自己需要调低或者调高一点,有时使用两个屏幕时有干扰,实际的频率没那么高。还有就是 看看LCD使能脚 位选脚, 看看有没有复用,看看pinctrl的dtsi 有没有同时打开嘛。或者你看到漆黑的一片就看看背光,/drivers/video/backlight/一般都是pwm驱动没有打开,或者是管脚又被复用了,经常都是复用的问题用示波器借 BL背光引脚有没有pwm或者高电平输出一般是先看背光,然后再调打点频率,还有其它的一些怪问题就看看 fb 的节点/drivers/video/fbdev/core/fbmem.c 在kernel加载的时候一开始就创建了fb的节点,而且很早呢,subsys_initcall (fbmem_init) ;
#define subsys_initcall(fn) __define_initcall(fn, 4)优先级为 4 节点在 sys/class/fb 各种都可以用各种 echo cat 命令来调试。忘了说了,还有mipi 的频率有时也要算一下 = DCLK *24 / 4 24是你支持的24位图显示,4是mipi有四条线传输 ,最后bit_clk = DCLK * 6 rockchip,dsi_hs_clk = DCLK * 6 如果是其他芯片转的话会上下调一下,一般都是加减30 ,比如 mipi 转edp 用了外接的芯片就还需另外测试。不过一般都是在这个数据的上下波动。
相关文章推荐
- Android LCD(四):LCD驱动调试篇
- 驱动调试常见问题_LCD
- LCD之mipi DSI接口驱动调试流程
- 转:WINCE流驱动的动态加载调试与用EVC快速开发WINCE的流驱动
- WINCE流驱动的动态加载调试与用EVC快速开发WINCE的流驱动
- rk3128 lcd 驱动调试记录
- 转:WINCE流驱动的动态加载调试与用EVC快速开发WINCE的流驱动
- 基于Linux内核的OMAP3530 LCD屏驱动调试小记
- Android LCD(四):LCD驱动调试篇
- linux 驱动调试笔记二----LCD驱动02
- LCD驱动调试
- Android LCD(四):LCD驱动调试篇
- IMX6Q处理器Linux平台LCD显示屏RGB驱动调试移植
- adb快速调试驱动常用命令
- 调试无符号驱动的时,快速到达DriverEntry的方法——2
- 驱动调试常见问题_LCD
- WINCE流驱动的动态加载调试与用EVC快速开发WINCE的流驱动(转)
- AT91SAM9263 WINCE 6.0 R2驱动开发-官方BSP包TFTLCD显示调试
- 高通安卓FB驱动 以及 LCD调试过程
- LCD 驱动调试