linux-2.6.35内核移植—LCD驱动的添加

 

【实验目的】

       在嵌入式系统中经常使用LCD进行交互,这里我们通过修改平台代码使我们的内核支持LCD,完成相应功能!

【实验环境】

1、  Ubuntu 10.10发行版

2、  u-boot-2010.03

3、  FS2410平台

4、  交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2

【实验步骤】

       s3c2410 LCD的驱动内核中已经存在,我们需要完成的工作就只使这个驱动能够正常的工作,这需要我们修改平台代码

1、 头文件的添加

在arch/arm/mach-s3c2410/mach-smdk2410.c中添加头文件

#include <mach/fb.h>

#include <mach/regs-lcd.h>

2、 添加相应LCD相关平台信息

在arch/arm/mach-s3c2410/mach-smdk2410.c中添加如下内容:

static struct s3c2410fb_display s3c2410_lcd_cfg[] __initdata = {

{

.lcdcon5 = S3C2410_LCDCON5_FRM565 |

        S3C2410_LCDCON5_INVVCLK |

        S3C2410_LCDCON5_INVVLINE |

        S3C2410_LCDCON5_INVVFRAME |

        S3C2410_LCDCON5_PWREN |

        S3C2410_LCDCON5_HWSWP,

 

.type        = S3C2410_LCDCON1_TFT,

.width             = 320,

.height            = 240,

.pixclock  = 100000, /* HCLK/10 */

.xres        = 320,

.yres        = 240,

.bpp         = 16,

.left_margin     = 13,

.right_margin   = 8,

.hsync_len       = 4,

.upper_margin = 2,

.lower_margin = 7,

.vsync_len       = 4,

              },

};

static struct s3c2410fb_mach_info s3c2410_fb_info __initdata = {

       .displays        = s3c2410_lcd_cfg,

       .num_displays       = ARRAY_SIZE(s3c2410_lcd_cfg),

       .default_display = 0,

       .lpcsel            = ((0xCE6) & ~7) | 1<<4,

};

在函数smdk2410_init中添加如下内容

s3c24xx_fb_set_platdata(&s3c2410_fb_info);

3、 配置内核

Device Drivers  --->

        Graphics support  --->

               <*> Support for frame buffer devices  --->

                      <*>   S3C2410 LCD framebuffer support

         [*] Bootup logo  --->

这些选项在这个内核多数已经选上了,这里列出来让大家知道添加LCD驱动涉及到的内容!

4、 编译内核

$ make  zImage

5、 拷贝内核镜像到tftpboot下

$ cp arch/arm/boot/zImge  /tftpboot

6、 插上LCD启动系统

启动系统后发现LCD上有一个可爱的企鹅LOGO,这就是我们Linux的吉祥物

你可能感兴趣的:(c,工作,struct,ubuntu,平台,编译器)