分类: 嵌入式
2010-12-18 15:29:28
内核里已经有很完善的LCD 驱动了,只要根据所用的LCD 进行简单的修改,在内核源码drivers/video/s3c2410fb.c 是LCD 驱动的源码,首先要设置LCD 的时钟频率,有一个计算公式,很复杂,不用管它,直接修改程序实现。在第365 行开始的函数:
static void s
{
struct s
void __iomem *regs = fbi->io;
int type = fbi->regs.lcdcon1 & S
struct fb_var_screeninfo *var = &info->var;
struct s
struct s
int clkdiv = s
dprintk("%s: var->xres = %d\n", __func__, var->xres);
dprintk("%s: var->yres = %d\n", __func__, var->yres);
dprintk("%s: var->bpp = %d\n", __func__, var->bits_per_pixel);
if (type == S
s
--clkdiv;
if (clkdiv < 0)
clkdiv = 0;
} else {
s
if (clkdiv < 2)
clkdiv = 2;
}
// fbi->regs.lcdcon1 |= S
fbi->regs.lcdcon1 |=S
这几句是在s3c2410fb_display 结构体中加入了setclkval 变量,我们需要在结构体原型中加入这个变量,在arch/arm/mach-s3c2410/include/mach/fb.h 中第40 行加入:unsigned setclkval; /*clkval*/
修改LCD 参数配置:(这个要查看所用LCD 的手册来确定参数)修改arch/arm/mach-s3c2440/mach-smdk2440.c 中第107 行的结构体,我修改的参数如下:
static struct s
.lcdcon5 = S
S
S
S
S
.type = S
.width = 320,
.height = 240,
.pixclock = 100000, /* HCLK 60 MHz, divisor 10 */
.setclkval = 0x3, /*add by xgc*/
.xres = 320,
.yres = 240,
.bpp = 16,
.left_margin = 19,
.right_margin = 24,
.hsync_len = 44,
.upper_margin = 7,
.lower_margin = 5,
.vsync_len = 15,
};
屏蔽掉第150 行的语句:
// .lpcsel = ((0xCE6) & ~7) | 1<<4,
配置内核,支持LCD:
Device Drivers:
Graphics Support --->
<*>support for frame buffer devices --->
[*] Enable frameware EDID
[*] Enable Vidoe Mode Handling Helpers
<*> S
Console display driver support --->
<*> Framebuffer Console Support
[*] Bootup Logo --->
<*> Standard 224-color Linux logo
补丁文件
文件:
linux-2.6.31.LCD.rar
大小:
163KB
下载:
下载
制作开机LOGO:
drivers/video/logo/logo_linux_clut224.ppm 是默认的启动LOGO 图片,格式为ppm,把自己的LOGO 图片(png 格式)转换成ppm 格式,替换这个文件,同时删除logo_linux_clut224.c logo_linux_clut224.o 文件,重新编译
方法、步骤
用RedHat9 自带的图片编辑工具GIMP。
找一个任意格式的图片(JPG,BMP 之类的),在图形界面中,右键单击这个图片,选“打开方式->The GIMP”,第一次打开需要安装GIMP 软件,安装完后自动运行GIMP,这是一个很强大的图像处理工具,可称为Linux 下的photoshop。
右键单击窗口中的图片选“图像->模式->索引”,把颜色数改为:224(这步很重要)。其他的都默认,OK 后右键“文件->Save As”,保存为ppm 格式的文件,确定后弹出一个对话框,选择Ascii,OK 后,GIMP 会把图片转换成ppm 格式,把这个文件复制到logo 文件夹中就可以了
启动时输出:
Console: switching to colour frame buffer device 40x30
fb0: s
去除LCD 左上角的闪烁光标
系统启动后在LCD 的左上角会有光标闪烁,如果觉得光标碍事,可以把它去掉。方法:修改 drivers/video/console/fbcon.c 文件
将 367 行 static void fb_flashcursor(void *private)static
1263 行 void fbcon_cursor(struct vc_data *vc, int mode)
这两个函数中的内容注释掉(保留函数名,清空函数内容)