免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1568 | 回复: 0
打印 上一主题 下一主题

基于S3C2440上的LCD驱动移植(3.5/4.3寸TFT) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-21 13:54 |只看该作者 |倒序浏览

一、移植环境

主机:ubuntu 8.04-vm 7.0 

开发板:tq2440

交叉编译器:arm-linux-gcc (EABI 4.3.3)                                                 

内核版本:linux 2.6.32.10

 

二、移植过程

1. linux 2.6.32.10内核中已经对2440的LCD驱动有支持,我们只需修改其中的部分参数来支持自己的LCD

进入  linux/arch/arm/mach-s3c2440/mach-smdk2440.c

找到如下这个设置lcd初始化参数的结构体, 内核源码如下:

  1. /* LCD driver info */
  2. static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {

  3.         .lcdcon5 = S3C2410_LCDCON5_FRM565 |
  4.                           S3C2410_LCDCON5_INVVLINE |
  5.                           S3C2410_LCDCON5_INVVFRAME |
  6.                           S3C2410_LCDCON5_PWREN |
  7.                           S3C2410_LCDCON5_HWSWP,

  8.         .type = S3C2410_LCDCON1_TFT,

  9.         .width = 240,
  10.         .height = 320,

  11.         .pixclock = 166667, /* HCLK 60 MHz, divisor 10 */
  12.         .xres = 240,
  13.         .yres = 320,
  14.         .bpp = 16,
  15.         .left_margin = 20,
  16.         .right_margin = 8,
  17.         .hsync_len = 4,
  18.         .upper_margin = 8,
  19.         .lower_margin = 7,
  20.         .vsync_len = 4,
  21. };

2.我们对其进行修改

如果使用的是3.5寸屏:

 

  1. //3.5

  2. static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {

  3.         .lcdcon5 = S3C2410_LCDCON5_FRM565 |
  4.                           S3C2410_LCDCON5_INVVLINE |
  5.                           S3C2410_LCDCON5_INVVFRAME |
  6.                           S3C2410_LCDCON5_PWREN |
  7.                           S3C2410_LCDCON5_HWSWP,

  8.         .type = S3C2410_LCDCON1_TFT,

  9.         .width = 320,
  10.         .height = 240,

  11.         .pixclock = 80000, /* HCLK 100 MHz, divisor 3 */
  12.         .xres = 320,
  13.         .yres = 240,
  14.         .bpp = 16, //每一个真彩色占16位


  15.         .left_margin = 28, /* for HFPD*/
  16.         .right_margin = 24, /* for HBPD*/
  17.         .hsync_len = 42, /* for HSPW*/
  18.         .upper_margin = 6, /* for VBPD*/
  19.         .lower_margin = 2, /* for VFPD*/
  20.         .vsync_len = 12, /* for VSPW*/
  21. };

如果使用的是4.3寸屏,进行如下修改

  1. //4.3

  2. static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {

  3.         .lcdcon5 = S3C2410_LCDCON5_FRM565 |
  4.                           S3C2410_LCDCON5_INVVLINE |
  5.                           S3C2410_LCDCON5_INVVFRAME |
  6.                           S3C2410_LCDCON5_PWREN |
  7.                           S3C2410_LCDCON5_HWSWP,

  8.         .type = S3C2410_LCDCON1_TFT,

  9.         .width        = 480,
  10.         .height        = 272,

  11.         .pixclock    = 40000, /* HCLK 100 MHz, divisor 1 */
  12.        // .setclkval    = 0x4,

  13.         .xres = 480,
  14.         .yres = 272,
  15.         .bpp = 16,

  16.         .left_margin = 19, /* for HFPD*/
  17.         .right_margin = 10, /* for HBPD*/
  18.         .hsync_len = 30, /* for HSPW*/
  19.         .upper_margin = 4, /* for VBPD*/
  20.         .lower_margin = 2, /* for VFPD*/
  21.         .vsync_len = 8, /* for VSPW*/
  22. };


VBPD(vertical back porch): 表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;
VFBD(vertical front porch): 表示在一帧图像结束后,垂直同步信号以前的无效的行数,对应驱动中的lower_margin;
VSPW(vertical sync pulse width): 表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;
HBPD(horizontal back porch): 表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin;
HFPD(horizontal front porth): 表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;
HSPW(horizontal sync pulse width): 表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len;

 
对于以上这些参数的值将分别保存到REGBANK寄存器组中的LCDCON1/2/3/4/5寄存器中:(对寄存器的操作请查看S3c2440datasheet 第15章LCD部分)

LCDCON1:17 - 8位CLKVAL 
          6 - 5位扫描模式(对于STN屏:4位单/双扫、8位单扫) 
          4 - 1位色位模式(1BPP、8BPP、16BPP等)

LCDCON2:31 - 24位VBPD 
         23 - 14位LINEVAL 
         13 - 6位VFPD 
          5 - 0位VSPW

LCDCON3:25 - 19位HBPD 
         18 - 8位HOZVAL 
          7 - 0位HFPD

LCDCON4: 7 - 0位HSPW

LCDCON5:

 
 
3  配置内核选项。选上LCD支持和Logo图标
   内核目录下make menuconfig
  Device Drivers --->Graphics support
  framebuffer显示支持
 
选中S3C2410 LCD
 
 
4. 重新编译内核并下载到开发板上,系统启动后可以出现小企鹅图标。
 
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP