Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145010
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 265
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-04 13:11
文章分类

全部博文(29)

文章存档

2015年(2)

2014年(27)

我的朋友

分类: 嵌入式

2014-06-28 11:20:53

本来按照友善mini2440手册移植,发现里面没有关于X35屏的配置,所以一直不显示小企鹅,后来因为不认真,感觉蓝色标注宏定义与下面的程序有重复,就没有加进程序里,结果一直不成功,最后加上后,成功显示小企鹅。

一,打开arch/arm/mach-s3c2440/mach-mini2440.c,先删除之前的LCD设备平台代
二,加入代码
#if defined(CONFIG_FB_S3C2410_X240320) 
#define LCD_WIDTH 240
#define LCD_HEIGHT 320
#define LCD_PIXCLOCK 170000      //像素时钟
#define LCD_RIGHT_MARGIN 25    //行切换,从绘图到同步之间的延迟
#define LCD_LEFT_MARGIN 0        //行切换,从同步到绘图之间的延迟
#define LCD_HSYNC_LEN 4           //水平同步的长度
#define LCD_UPPER_MARGIN 0     //帧切换,从同步到绘图之间的延迟
#define LCD_LOWER_MARGIN 4    //帧切换,从绘图到同步之间的延迟
#define LCD_VSYNC_LEN 9           //垂直同步的长度
#define LCD_CON5 (S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVDEN | S3C2410_LCDCON5_INVVFRAME | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_INVVCLK | S3C2410_LCDCON5_HWSWP ) 
#endif

#if defined (LCD_WIDTH) 
static struct s3c2410fb_display mini2440_lcd_cfg __initdata = {
#if !defined (LCD_CON5) 
        .lcdcon5 = S3C2410_LCDCON5_FRM565 |
                        S3C2410_LCDCON5_INVVLINE |
                        S3C2410_LCDCON5_INVVFRAME |
                        S3C2410_LCDCON5_PWREN |
                        S3C2410_LCDCON5_HWSWP,
#else
        .lcdcon5 = LCD_CON5,
#endif
        .type = S3C2410_LCDCON1_TFT,
        .width = LCD_WIDTH,
        .height = LCD_HEIGHT,
        .pixclock = LCD_PIXCLOCK,
        .xres = LCD_WIDTH,
        .yres = LCD_HEIGHT,
        .bpp = 16,
        .left_margin = LCD_LEFT_MARGIN + 1,
        .right_margin = LCD_RIGHT_MARGIN + 1,
        .hsync_len = LCD_HSYNC_LEN + 1,
        .upper_margin = LCD_UPPER_MARGIN + 1,
        .lower_margin = LCD_LOWER_MARGIN + 1,
        .vsync_len = LCD_VSYNC_LEN + 1,
};
static struct s3c2410fb_mach_info mini2440_fb_info __initdata = {
        .displays = &mini2440_lcd_cfg,
        .num_displays = 1,
        .default_display = 0,
        .gpccon = 0xaa955699,
        .gpccon_mask = 0xffc003cc,
        .gpcup = 0x0000ffff,
        .gpcup_mask = 0xffffffff,
        .gpdcon = 0xaa95aaa1,
        .gpdcon_mask = 0xffc0fff0,
        .gpdup = 0x0000faff,
        .gpdup_mask = 0xffffffff,
        .lpcsel = 0xf82,
};
#endif
三,然后打开drivers/video/Kconfig,在大概1935行加入以下配置信息
config FB_S3C2410_X240320 
 boolean "3.5 inch 240X320 Sony LCD" 
 depends on FB_S3C2410 
help 
   3.5 inch 240X320 Sony LCD
四, 在命令行输入:make menuconfig 进入内核配置,依次按下面的子菜单项选择: 
Device Drivers ---> 
Graphics support ---> 
<*> Support for frame buffer devices   ---> 
LCD select (3.5 inch 240X320 Sony LCD) --->
五,#make zImage 
将会生成arch/arm/boot/zImage,把它烧写到开发板中,就可以看到一个小企鹅出现在屏幕上了


六,LCD参数分析


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;

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)) (单位:皮秒)








阅读(1623) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~