基于飞思卡尔imx6 sabrelite开发板的android lvds屏幕驱动调试

news/2024/11/22 20:07:44/

一、概述

      1、 飞思卡尔 imx6的显示屏驱动架构:


     2、目标:

     因sabrelite开发板本身已提供LVDS接口,目标屏幕是LG的LP101WX1-SLN2,其主要参数为:

分辨率:1280*800

色彩:18位

色彩数:262K

时钟频率:69.3M Hz

     



二 移植过程

1、首先把屏幕的接口接到sabrelite开发板的lvds接口上。sabrelite开发板提供的lvds接口如下:




如上图所示,lvds共有20个pin,其中有4组数据线,1组时钟线,其他还有背光控制、电源、地等接口。

我们再看LP101WX1的接口:




它共有40个pin口,共有3组数据线,1组时钟线。下面是接线步骤:

1)把LP101WX1的3组数据线和1组时钟线对应接到开发板的lvds接口上:

ORX0-  =>  LVDS0_TX0_N

ORX0+ =>  LVDS0_TX0_P

...

ORXC- =>  LVDS0_CLK_N

ORXC+ => LVDS0_CLK_P


2)把LP101WX1的电源、地等接上:

2 VCC=>3.3V

3 VCC=>3.3V

10 GND=>接地

13 GND=>接地

16 GND=>接地

19 GND=>接地


3)把LP101WX1的背光接上:

31 GND=>接地

35 PWM=>3.3V(背光亮度调节)

36 LED_EN=>背光使能脚,接1个10k电阻,接到3.3V电源

38 VLED=>背光电源,接到5V电源


2、修改android的内核源码。

1)找到drivers/video/mxc/ldb.c的fb_videomode数组变量,它定义了屏幕的相关参数,fb_videomode结构体的定义在include/linux/fb.h中:

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



2)修改drivers/video/mxc/ldb.c的fb_videomode数组变量,使它的参数适应LP101WX1的屏幕参数。

static struct fb_videomode ldb_modedb[] = {#if 0{"LDB-XGA", 60, 1024, 768, 15385,220, 40,21, 7,60, 10,0,FB_VMODE_NONINTERLACED,FB_MODE_IS_DETAILED,},#endif//add by tonny@2012-06-04 13:43{"LDB-XGA", 60, 1280, 800, 14430,80, 48,15, 2,32, 47,0,FB_VMODE_NONINTERLACED,FB_MODE_IS_DETAILED,},{"LDB-1080P60", 60, 1920, 1080, 7692,100, 40,30, 3,10, 2,0,FB_VMODE_NONINTERLACED,FB_MODE_IS_DETAILED,},
};

名称:LDB-XGA

刷新频率:60

分辨率:1280*800

时钟:10^12/69300000 = 14430

sync:0

vmode:FB_VMODE_NONINTERLACED

flag:FB_MODE_IS_DETAILED

3)重新编译kernel,生成boot.img,烧录到sabrelite开发板中。

4)启动开发板,进入u-boot,在u-boot命令行中设置启动参数为:

setenv bootargs console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=ldb,LDB-XGA, if=RGB666,bpp=16 video=mxcfb1:off video=mxcfb2:off fbmem=10M
saveenv



其中video = mxcfb0:dev=ldb,LDB-XGA表示选用fb0的ldb驱动

if=RGB666,bpp=16表示16位色彩

设置好后,用printenv查看一下启动参数:



X6Q SABRELITE U-Boot > printenv
bootdelay=3
baudrate=115200
ipaddr=192.168.1.103
serverip=192.168.1.101
netmask=255.255.255.0
loadaddr=0x10800000
rd_loadaddr=0x11000000
netdev=eth0
ethprime=FEC0
bootcmd=booti mmc1
ethact=FEC0
bootargs=console=ttymxc0,115200 androidboot.console=ttymxc0 vmalloc=400M init=/init video=mxcfb0:dev=ldb,LDB-XGA, if=RGB666,bpp=16 video=mxcfb1:off video=mxcfb2:off fbmem=10M
stdin=serial
stdout=serial
stderr=serialEnvironment size: 419/8188 bytes
MX6Q SABRELITE U-Boot > 



然后用run bootcmd命令启动开发板,随后可以在log中看到android启动的信息,并可以看到屏幕正常显示android系统。









http://www.ppmy.cn/news/352430.html

相关文章

VGA SVGA XVG XVGA

VGA一般指640*480的分辨率,VGA摄像头就是30万像素的摄像头。SQCIF12*96 QCIF176*144 CIF352*288 QVGA320*240 VGA640*480 SVGA800*600 WSVGA1024*600XGA1024*768 XVGA1280*960 UXGA1600*1200 VGA的英文全称是Video Graphic Array,即显示绘图阵列。VGA支…

SGX 是什么技术?

文章目录 一、SGX是啥?二、案例收集三、使用方案 一、SGX是啥? Intel SGX,Intel Software Guard eXtensions ,英特尔软件保护扩展。 Intel SGX 它实际上是一组 CPU 指令扩展, 能创造出一个可信执行环境来保护代码和数…

振芯科技GM8285C:功能TTL转LVDS芯片简介

​1.5 GM8285C概述 GM8285C型1.8V低功耗28位LVDS发送器,其功能是将并行数据编码为高速串行数据,实现信号的快速可靠传输。该器件可将28位并行数据转换为4对串行LVDS差分信号,同时并行输出1路LVDS差分时钟信号。 本器件片内集成锁相…

什么是VGA,QVGA,SVGA,XGA?

VGA一般指640*480的分辨率,VGA摄像头就是30万像素的摄像头。SQCIF12*96 QCIF176*144 CIF352*288 QVGA320*240 VGA640*480 SVGA800*600 WSVGA1024*600XGA1024*768 XVGA1280*960 UXGA1600*1200 VGA的英文全称是Video Graphic Array,即显示绘图阵列。VGA支持…

各种显式模式 整理汇总(VGA,XGA...)

VGA VGA(Video Graphics Array)是IBM于1987年提出的一个使用模拟信号的电脑显示标准,这个标准已对于现今的个人电脑市场已经十分过时。即使如此,VGA仍然是最多制造商所共同支持的一个低标准,个人电脑在加载自己的独特…

XGA 简介

XGA(Extended Graphics Array)扩展图形阵列 是一种计算机显示模式。显示模式指计算机显示器的性能,特别指最大色彩数以及最大的图像分辨率。在现在的个人电脑系统中,可找到多个显示模式,例如VGA、SVGA、XGA、SXGA、UXGA等。   XGA是一种目前…

Android 常见分辨率

对于Android游戏开发我们不得不像iPhone那样思考兼容Android平板电脑,苹果要考虑iPad、iPhone 3GS和iPhone 4等屏幕之间的兼容性,对于开发Android游戏而言也不例外,考虑的机型更多。 常规的我们可能只考虑QVGA,HVGA,WV…