本来按照友善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) |