移植LCD驱动
2007-10-31 15:52
323 查看
一.关于硬件。
从LCD的型号来来看,与s3c2410兼容得比较好的LCD是Sumsung自己产的LTS系列,如LTS350Q1PD1,LTS350Q1PE1。但是这类型号现在已停产,基本上无法买到。代替的型号是LTV系列,如LTV350QVF04,LTV350QVF05。
我使用的是LTV350QVF05。这是一款3.5寸,由TFT LCD,背光电路,触摸屏,内置驱动四部分组成的LCD模块。由于内置了驱动电路,因此它可以和s3c2410之间可以直接相连,硬件设计简单。少量购买的价格在300左右。
LTV350QVF05通过一个60pin的软平线接口和外面相连,其中除了和s3c2410相连接的信号外,最重要的是它的几个电源信号,包括背光部分的电源。调试硬件,首先要保证它的几个电源信号满足要求。Max1779芯片提供三路电源输出,能很好地满足需求。另外需要提供一个Vcom信号。该信号用于LCD的行翻转,是一个低电平0V,高电平3.3V左右的方波信号。LCD模块内部提供一个M信号,只需要将该信号取反就可以得到Vcom信号。通常会搭一个可调的运放电路来实现,调整放大倍数和偏移可以改变屏的亮度和对比度。
在调试好几个电源信号后,上电,应该可以把屏点亮。起初应该是白屏。
下面介绍驱动的移植。
二.关于驱动移植。
网上可以找到代码s3c2410fb.c,基本上可以直接使用。移植的基本步骤是:
1. 添加s3c2410fb.c到drivers/video目录下。
2. 在s3c2410fb.c中添加适当的LCD初始化代码。LTV350QV接口中有一个spi接口用来启动LCD,设计中可以采用gpio口来模拟spi口输出控制信号。编写一个初始化函数,然后在s3c2410fb_init函数中调用即可。
3. 修改video目录的Kconfig和Makefile,保证s3c2410fb.c被编译进内核。
4. 在arch/arm/mach-s3c2410/mach-smdk2410.c中添加static struct s3c2410fb_mach_info smdk2410_lcd_platdata结构。该结构的参数用于设置s3c2410的LCD控制寄存器,需要认真根据自己的LCD参数来设置。包括分辨率、帧频、图像格式等参数。
5. 在arch/arm/mach-s3c2410/mach-smdk2410.c函数smdk2410_map_io中添加代码:
set_s3c2410fb_info(&smdk2410_lcd_platdata)
6. 在arch/arm/mach-s3c2410/devs.c中添加以下代码:
static struct s3c2410fb_mach_info s3c2410fb_info;
void __init set_s3c2410fb_info(struct s3c2410fb_mach_info *hard_s3c2410fb_info)
{
memcpy(&s3c2410fb_info,hard_s3c2410fb_info,sizeof(struct s3c2410fb_mach_info));
s3c_device_lcd.dev.platform_data = &s3c2410fb_info;
}
EXPORT_SYMBOL(set_s3c2410fb_info);
7. 配置内核,添加对LCD的支持,包括启动logo(小企鹅)的支持。
如果启动后可以看见小企鹅,说明LCD驱动移植成功。
可能的问题:
1. smdk2410_lcd_platdata结构中帧频(Vsync的频率)的设置不能高于LCD的最高帧频,可以增大lcdcon1中clkval的值Vclk,进而降低Vsync。
2. 图像深度最好设为16bpp,我用过24bpp,结果无法显示企鹅,可能是内核驱动本身不支持。
3. 如果过几分钟后,图像没了。注释掉drivers/char/vt.c中的blank_screen_t()函数内容。
从LCD的型号来来看,与s3c2410兼容得比较好的LCD是Sumsung自己产的LTS系列,如LTS350Q1PD1,LTS350Q1PE1。但是这类型号现在已停产,基本上无法买到。代替的型号是LTV系列,如LTV350QVF04,LTV350QVF05。
我使用的是LTV350QVF05。这是一款3.5寸,由TFT LCD,背光电路,触摸屏,内置驱动四部分组成的LCD模块。由于内置了驱动电路,因此它可以和s3c2410之间可以直接相连,硬件设计简单。少量购买的价格在300左右。
LTV350QVF05通过一个60pin的软平线接口和外面相连,其中除了和s3c2410相连接的信号外,最重要的是它的几个电源信号,包括背光部分的电源。调试硬件,首先要保证它的几个电源信号满足要求。Max1779芯片提供三路电源输出,能很好地满足需求。另外需要提供一个Vcom信号。该信号用于LCD的行翻转,是一个低电平0V,高电平3.3V左右的方波信号。LCD模块内部提供一个M信号,只需要将该信号取反就可以得到Vcom信号。通常会搭一个可调的运放电路来实现,调整放大倍数和偏移可以改变屏的亮度和对比度。
在调试好几个电源信号后,上电,应该可以把屏点亮。起初应该是白屏。
下面介绍驱动的移植。
二.关于驱动移植。
网上可以找到代码s3c2410fb.c,基本上可以直接使用。移植的基本步骤是:
1. 添加s3c2410fb.c到drivers/video目录下。
2. 在s3c2410fb.c中添加适当的LCD初始化代码。LTV350QV接口中有一个spi接口用来启动LCD,设计中可以采用gpio口来模拟spi口输出控制信号。编写一个初始化函数,然后在s3c2410fb_init函数中调用即可。
3. 修改video目录的Kconfig和Makefile,保证s3c2410fb.c被编译进内核。
4. 在arch/arm/mach-s3c2410/mach-smdk2410.c中添加static struct s3c2410fb_mach_info smdk2410_lcd_platdata结构。该结构的参数用于设置s3c2410的LCD控制寄存器,需要认真根据自己的LCD参数来设置。包括分辨率、帧频、图像格式等参数。
5. 在arch/arm/mach-s3c2410/mach-smdk2410.c函数smdk2410_map_io中添加代码:
set_s3c2410fb_info(&smdk2410_lcd_platdata)
6. 在arch/arm/mach-s3c2410/devs.c中添加以下代码:
static struct s3c2410fb_mach_info s3c2410fb_info;
void __init set_s3c2410fb_info(struct s3c2410fb_mach_info *hard_s3c2410fb_info)
{
memcpy(&s3c2410fb_info,hard_s3c2410fb_info,sizeof(struct s3c2410fb_mach_info));
s3c_device_lcd.dev.platform_data = &s3c2410fb_info;
}
EXPORT_SYMBOL(set_s3c2410fb_info);
7. 配置内核,添加对LCD的支持,包括启动logo(小企鹅)的支持。
如果启动后可以看见小企鹅,说明LCD驱动移植成功。
可能的问题:
1. smdk2410_lcd_platdata结构中帧频(Vsync的频率)的设置不能高于LCD的最高帧频,可以增大lcdcon1中clkval的值Vclk,进而降低Vsync。
2. 图像深度最好设为16bpp,我用过24bpp,结果无法显示企鹅,可能是内核驱动本身不支持。
3. 如果过几分钟后,图像没了。注释掉drivers/char/vt.c中的blank_screen_t()函数内容。
相关文章推荐
- Wince LCD驱动移植
- TQ2440平台上LCD驱动的移植
- STM32官方评估板TFT LCD驱动移植注意点
- Linux-4.9.2内核在mini2440上的移植(九)——LCD驱动移植
- linux-3.8.0 S5PV210 LCD显示屏驱动移植
- LCD驱动移植(一)
- LCD驱动移植(二)
- linux2.6.32.2 mini2440平台移植--LCD 背光驱动
- s3c2440 LCD驱动,USB驱动,触摸屏以及ADC驱动移植
- OK6410 LCD驱动移植
- AM335x(TQ335x)学习笔记——LCD驱动移植
- TQ2440 LCD驱动移植第二天
- 图形液晶240*128驱动(型号为SMG240128A)移植到jlx的128*64单色lcd架构
- linux 2.6.32 在arm9(s3c2440)平台的移植 - LCD背光驱动
- MTK怎样移植LCD 驱动
- linux2.6.32.2 mini2440平台移植-- LCD 显示驱动(W35屏)
- Linux-2.6.32.2内核在mini2440上的移植(六)---添加LCD背光驱动
- linux下 s3c2440 lcd驱动移植详解
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(4)-LCD驱动
- Linux-2.6.32.2内核在mini2440上的移植(七)---LCD驱动移植