一、移植LCD驱动程序<br /><br /> <br /><br /> 通过上面的工作,在串口中已经看到了linux2.6.14的启动信息,但是在LCD上没有任何显示,这是因为我们还没有对LCD进行初始化,linux2.6.14已经包含了lcd的驱动程序,驱动程于 /linux2.6.14/drivers/video/目录下,文件名是s3c2410fb.c,头文件是s3c2410fb.h.。我们在这里可以不研究这个文件。只要我们对lcd进行以下初始化就可以了。我们打开/linux-2.6.14/arch/arm/mach-s3c2410/mach-smdk2410.c,首先在这个文件里增加包含文件(见贴图)。然后增加LCD初始化的代码,<br /><br />static struct s3c2410fb_mach_info gggggg_lcdcfg<br /><br />__initdata = {<br /><br /> .fixed_syncs= 0,<br /><br /> .regs={<br /><br /> .lcdcon1= <br /><br /><br />S3C2410_LCDCON1_TFT16BPP | <br /><br /> S3C2410_LCDCON1_TFT | <br /><br /> S3C2410_LCDCON1_CLKVAL(6),<br /><br /> <br /><br /> .lcdcon2= <br /><br /><br />S3C2410_LCDCON2_VBPD(2) | <br /><br /> S3C2410_LCDCON2_LINEVAL(319) | <br /><br /> S3C2410_LCDCON2_VFPD(0) | <br /><br /> S3C2410_LCDCON2_VSPW(4),<br /><br /> <br /><br /> .lcdcon3= <br /><br /><br />S3C2410_LCDCON3_HBPD(47) | <br /><br /> S3C2410_LCDCON3_HOZVAL(239) | <br /><br /> S3C2410_LCDCON3_HFPD(15),<br /><br /> <br /><br /> .lcdcon4= <br /><br /><br />S3C2410_LCDCON4_MVAL(1) | <br /><br /> S3C2410_LCDCON4_HSPW(31),<br /><br /> <br /><br /> .lcdcon5= <br /><br /><br />S3C2410_LCDCON5_FRM565 | <br /><br /> S3C2410_LCDCON5_INVVLINE | <br /><br /> S3C2410_LCDCON5_HWSWP,<br /><br /> },<br /><br /> .lpcsel= 0x0,<br /><br /> .gpccon= 0xaaaaaaaa,<br /><br /> .gpccon_mask= 0xffffffff,<br /><br /> .gpcup= 0xffffffff,<br /><br /> .gpcup_mask= 0xffffffff,<br /><br /> .gpdcon= 0xaaaaaaaa,<br /><br /> .gpdcon_mask= 0x0,<br /><br /> .gpdup= 0xffffffff,<br /><br /> .gpdup_mask= 0xffffffff,<br /><br /> .width= 240,<br /><br /> .height= 320,<br /><br /> .xres= {240,240,240},<br /><br /> .yres= {320,320,320},<br /><br /> .bpp= {16,16,16},<br /><br /> };<br /><br /> static void __init sdmk2410_init(void)<br />{<br /><br /> set_s3c2410fb_info(&hfrk_lcdcfg);<br /><br /><br />}<br /><br />在系统初始化中增加对lcd的初始化。<br />MACHINE_START(SMDK2410, 'SMDK2410') <br /><br /><br />/* @TODO:request a new identifier and switch<br /><br />* to SMDK2410 */<br /><br />/* Maintainer: Jonas Dietsche */<br /><br />……<br /><br /> .map_io = smdk2410_map_io,<br /><br /> .init_irq = smdk2410_init_irq,<br /><br /> .init_machine = sdmk2410_init, /*这一句是新增加的*/<br /><br /> .timer = &s3c24xx_timer,<br /><br /> MACHINE_END<br /><br /> <br /><br />现在我们重新保存这个文件,现在需要重新进入配置菜单,检查一下LCD的相关选项是否选上,[Device<br /><br /> Drivers->Graphics<br /><br /> support->]这个配置菜单下面是相关LCD的配置。回到根目录下,输入make编译内核,重现烧写内核到开发板,再次启动 linxu2.6.14以后就可以在lcd上看到一个小的企鹅。我们的lcd驱动已经移植完成了。 |
|