LCD驱动移植
2017-05-01 19:41
375 查看
*********************************************************************************************************************************************
cpu : s3c2440(arm9)
开发板 :fl2440开发板
内核版本:linux 3.0
**********************************************************************************************************************************************
什么是lcd?
LCD ( Liquid Crystal Display 的简称)液晶显示器。LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。现在LCD已经替代CRT成为主流,价格也已经下降了很多,并已充分普及。按照背光源的不同,LCD可以分为CCFL和LED两种。
由于我的开发板的lcd尺寸大小是4.3寸,所以查看一下lcd手册将内核中lcd重要的参数进行修改,参数表如图所示:
![](https://img-blog.csdn.net/20170501185009114?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem91bGVpZGVib2tl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
TFT工作时序图:
![](https://img-blog.csdn.net/20170501192548726?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvem91bGVpZGVib2tl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
***********************************************************************************************************************************************************************
说明:
VBP(vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;
VFB(vertical front porch):表示在一帧图像结束后,垂直同步信号以前的无效的行数,对应驱动中的lower_margin;
VSPW(vertical sync pulse width):表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;
HBP(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin;
HFP(horizontal front porth):表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;
HSPW(horizontal sync pulse width):表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len;
*********************************************************************************************************************
1.修改内核代码
[zoulei@CentOS linux-3.0]$ vim arch/arm/mach-s3c2440/mach-smdk2440.c
说明:像素时钟pixclock计算:
DOTCLK = fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW) (单位:MHz)
pixclock = 1012/ DOTCLK=1012/ (fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW)) (单位:皮秒)
************************************************************************************************************************************
2.配置make menuconfig
[zoulei@CentOS linux-3.0]$ make menuconfig
Device Drivers ---> Graphics (图像)support --->
<*> Support for frame buffer devices --->
[*] Enable firmware EDID
[*] Enable Video Mode Handling Helpers
<*> S3C2410 LCD framebuffer support
[*] Backlight & LCD device support --->
<M> Lowlevel LCD controls
<M> Lowlevel Backlight controls
<M> Generic (aka Sharp Corgi) Backlight Driver
Console display driver support --->
<*> Framebuffer Console support
[*] Map the console to the primary display device
[*] Framebuffer Console Rotation
[*] Select compiled-in fonts
[*] VGA 8x8 font
[*] Mini 4x6 font
[*] Bootup logo --->
[*] Standard 224-color Linux logo
配置好后make编译,将内核烧入开发板.....
如果要想在开发板的屏幕上看到启动的代码,则因修改如下环境变量,我的是jffs2文件系统,
set bootargs'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc console=ttyS0 console=tty1,115200'
set bootargs_jffs2'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc console=ttyS0 console=tty1,115200'
***************************************************************************************************************************
说明:我的开发板内核是加载的jffs2文件系统,所以想在开发板屏幕上显示启动信息,在uboot 环境变量里面添加那两段代码
不过主要是添加tty1文本型控制台,也就是对应的putty或者secure crt虚拟控制终端,因此加上控制台参数console=tty1.
********************************************************************************************************************
如果在开发板上看到小企鹅,以及显示信息,ok这样lcd驱动就顺利移植好了......
cpu : s3c2440(arm9)
开发板 :fl2440开发板
内核版本:linux 3.0
**********************************************************************************************************************************************
什么是lcd?
LCD ( Liquid Crystal Display 的简称)液晶显示器。LCD 的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否而达到显示目的。现在LCD已经替代CRT成为主流,价格也已经下降了很多,并已充分普及。按照背光源的不同,LCD可以分为CCFL和LED两种。
由于我的开发板的lcd尺寸大小是4.3寸,所以查看一下lcd手册将内核中lcd重要的参数进行修改,参数表如图所示:
TFT工作时序图:
***********************************************************************************************************************************************************************
说明:
VBP(vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;
VFB(vertical front porch):表示在一帧图像结束后,垂直同步信号以前的无效的行数,对应驱动中的lower_margin;
VSPW(vertical sync pulse width):表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;
HBP(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin;
HFP(horizontal front porth):表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;
HSPW(horizontal sync pulse width):表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len;
*********************************************************************************************************************
1.修改内核代码
[zoulei@CentOS linux-3.0]$ vim arch/arm/mach-s3c2440/mach-smdk2440.c
218 /* LCD driver info */ 219 220 static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = { 221 222 .lcdcon5 = S3C2410_LCDCON5_FRM565 | 223 S3C2410_LCDCON5_INVVLINE | 224 S3C2410_LCDCON5_INVVFRAME | 225 S3C2410_LCDCON5_PWREN | 226 S3C2410_LCDCON5_HWSWP, 227 228 .type = S3C2410_LCDCON1_TFT, 229 230 .width = 480,/*modify by zoulei 2017.4.18*/ 231 .height = 272,/*modify by zoulei*/ 232 233 .pixclock = 600000, /* HCLK 60 MHz, divisor 10 像素时钟*/ 234 .xres = 480,/*modify by zoulei 水平可见的有效像素*/ 235 .yres = 272,/*modify by zoulei 垂直可见的有效像素*/ 236 .bpp = 16,/*modify by zoulei色位模式*/ 237 .left_margin = 19,/*modify by zoulei行切换,从同步到绘图之间的延迟*/ 238 .right_margin = 10,/*modify by zoulei行切换,从绘图到同步之间的延迟*/ 239 .hsync_len 4000 = 30,/*modify by zoulei水平同步的长度*/ 240 .upper_margin = 4,/*modify by zoulei帧切换,从同步到绘图之间的延迟*/ 241 .lower_margin = 2,/*modify by zoulei帧切换,从绘图到同步之间的延迟*/ 242 .vsync_len = 8,/*modify by zoulei垂直同步的长度*/ 243 }; ...... 262 .lpcsel = 0,//((0xCE6) & ~7) | 1<<4,/*modify by zoulei这个是三星TFT屏参数*/ 263 };**************************************************************************************************************************************************************************
说明:像素时钟pixclock计算:
DOTCLK = fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW) (单位:MHz)
pixclock = 1012/ DOTCLK=1012/ (fframe × (X + HBP + HFP+HSPW) × (Y + VBP + VFP+VSPW)) (单位:皮秒)
************************************************************************************************************************************
2.配置make menuconfig
[zoulei@CentOS linux-3.0]$ make menuconfig
Device Drivers ---> Graphics (图像)support --->
<*> Support for frame buffer devices --->
[*] Enable firmware EDID
[*] Enable Video Mode Handling Helpers
<*> S3C2410 LCD framebuffer support
[*] Backlight & LCD device support --->
<M> Lowlevel LCD controls
<M> Lowlevel Backlight controls
<M> Generic (aka Sharp Corgi) Backlight Driver
Console display driver support --->
<*> Framebuffer Console support
[*] Map the console to the primary display device
[*] Framebuffer Console Rotation
[*] Select compiled-in fonts
[*] VGA 8x8 font
[*] Mini 4x6 font
[*] Bootup logo --->
[*] Standard 224-color Linux logo
配置好后make编译,将内核烧入开发板.....
如果要想在开发板的屏幕上看到启动的代码,则因修改如下环境变量,我的是jffs2文件系统,
set bootargs'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc console=ttyS0 console=tty1,115200'
set bootargs_jffs2'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 init=/linuxrc console=ttyS0 console=tty1,115200'
***************************************************************************************************************************
说明:我的开发板内核是加载的jffs2文件系统,所以想在开发板屏幕上显示启动信息,在uboot 环境变量里面添加那两段代码
不过主要是添加tty1文本型控制台,也就是对应的putty或者secure crt虚拟控制终端,因此加上控制台参数console=tty1.
********************************************************************************************************************
如果在开发板上看到小企鹅,以及显示信息,ok这样lcd驱动就顺利移植好了......
相关文章推荐
- s3c2440之LCD驱动移植
- Linux-2.6.32.67内核裁剪与移植之LCD驱动的移植(2)
- 图形液晶240*128驱动(型号为SMG240128A)移植到jlx的128*64单色lcd架构
- LCD驱动移植笔记
- S3c6410 linux内核移植(8)---添加pwm驱动,控制lcd背光亮度
- s5pv210 LCD驱动移植
- linux2.6.32.2 mini2440平台移植--LCD 背光驱动
- linux-2.6.32内核LCD驱动移植-1
- FS2410 开发板linux-2.6.35内核 LCD 驱动移植
- Linux4.3.2内核自带LCD驱动移植
- 在S3C2410的6寸LCD驱动在linux2.6上的移植
- AM335x(TQ335x)学习笔记——LCD驱动移植
- <八> LCD 驱动移植
- linux-2.6.32在mini2440开发板上移植 ---W35型LCD驱动移植
- 【Linux基础】Linux-2.6.30 _LCD 驱动移植
- linux-3.4.2 s5pv210 LCD驱动移植(一)
- 基于ARM9处理器的linux-2.6.32.2操作系统内核移植手记part5.2(LCD驱动源码分析及移植之platform driver)
- linux下 s3c2440 lcd驱动移植详解
- SylixOS的LCD驱动移植
- Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植