您的位置:首页 > 移动开发 > Android开发

Freescale imx6的android lvds屏幕驱动调试

2016-05-05 17:41 621 查看
一、概述
1、飞思卡尔 imx6的显示屏驱动架构

2、目标:
因imx6开发板本身已提供LVDS接口,目标屏幕是LG的LA070WV6,其为RGB接口,imx6和LG屏之间用TW8836芯片来转接,LG屏的主要参数为:
分辨率:800*480
色彩:32位
时钟频率:33.26MHz

二移植过程
1、首先把屏幕的接口接到开发板的lvds接口上。开发板提供的lvds接口如下:

如上图所示,lvds共有20个pin,其中有4组数据线,1组时钟线,其他还有背光控制、电源、地等接口。
TW8836芯片和LG屏的接口定义我这里也不做介绍。
2、修改Android的内核源码。
1)找到drivers/video/mxc/ldb.c的fb_videomode数组变量,它定义了屏幕的相关参数,fb_videomode结构体的定义在include/linux/fb.h中:
[cpp] view
plain copy

1. struct fb_videomode {
2. const char *name; /* 名字 */
3. u32 refresh; /* 刷新频率 */
4. u32 xres; //行像素
5. u32 yres; //列像素
6. u32 pixclock; //时钟频率,单位ps,14430
7. u32 left_margin; // HBPD(horizontal back porch):80
8. u32 right_margin; // HFPD(horizontal front porth):48
9. u32 upper_margin; // VBPD(vertical back porch),15
10. u32 lower_margin; // VFBD(vertical front porch),2
11. u32 hsync_len; // HSPW(horizontal sync pulse width):32
12. u32 vsync_len; // VSPW(vertical sync pulse width):47
13. u32 sync;
14. u32 vmode;
15. u32 flag;
16.};

2)修改drivers/video/mxc/ldb.c的fb_videomode数组变量,使它的参数适应LA070WV6的屏幕参数。
[cpp] view
plain copy

17. static struct fb_videomode ldb_modedb[] = {
18. {
19. .name ="LDB-XGA",
20. .refresh =60,
21. .xres =800,
22. .yres =480,
23. .pixclock =30066,
24. .left_margin =28,
25. .right_margin =100,
26. .upper_margin =13,
27. .lower_margin =30,
28. .hsync_len =128,
29. .vsync_len =2,
30. .sync =0,
31. .vmode =FB_VMODE_NONINTERLACED,
32. .flag =FB_MODE_IS_DETAILED,
33. }
34. };

名称:LDB-XGA
刷新频率:60
分辨率:800*480
时钟:10^12/33260000 = 30066
sync:0
vmode:FB_VMODE_NONINTERLACED
flag:FB_MODE_IS_DETAILED
3)设置cmdline,重新编译kernel,生成boot.img,烧录到开发板中:
[html] view
plain copy

1. cmdline console=ttymxc3,115200 init=/init video=mxcfb0:dev=ldb,LDB-XGA, if=RGB24,bpp=32 video=mxcfb1:dev=ldb,LDB-XGA, if=RGB24,bpp=32 video=mxcfb2:off fbmem=10M vmalloc=400Mandroidboot.console=ttymxc3

其中video = mxcfb0:dev=ldb,LDB-XGA表示选用fb0的ldb驱动
if=RGB24,bpp=32表示32位色彩
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: