设为首页 加入收藏

TOP

Linux 2.6.30.4 内核移植LCD驱动
2014-11-24 02:26:17 来源: 作者: 【 】 浏览:0
Tags:Linux 2.6.30.4 内核 移植 LCD 驱动

Kernel:2.6.30.4


gcc:arm-linux-gcc (3.4.4)


cpu:s3c2410


1.编译设置


使用arm-linux-交叉编译工具链


修改根目录下Makefile


193 194行


ARCH = arm


CROSS_COMPILE =arm-linux-


2.内核移植


nand 分区


修改 arch/arm/plat-s3c24xx/common-smdk.c 中的nand分区


static struct mtd_partition smdk_default_nand_part[] = {


[0] = {


.name = "bootloader ",


.size = 0x00100000,//1M


.offset = 0,


},


[1] = {


.name = "kernel",


.offset = 0x00100000,


.size = 0x00300000,//3M


},


[2] = {


.name = "root",


.offset = 0x00400000,


.size = 0x02800000,//40M


},


[3] = {


.name = "user",


.offset = 0x02d00000,


.size = 0x00f00000,//15M


}


};


此时如果运行


#make s3c2410_defconfig 启用s3c2410默认内核配置


#make menuconfig


修改


boot option


default command line


root=/dev/mtdblock2 init=linuxrc console=ttySAC0,115200


运行


#make zImage


此时的内核就可在板上跑通了。


3.LCD 驱动移植


修改arch/arm/mach-s3c2410/mach-smdk2410.c


static struct s3c2410fb_display s3c2410fb_lcd_display __initdata = {


.width = 320,


.height = 240,


.xres = 320,


.yres = 240,


.bpp = 16,


.lcdcon5 = S3C2410_LCDCON5_FRM565|


S3C2410_LCDCON5_INVVCLK|


S3C2410_LCDCON5_INVVLINE|


S3C2410_LCDCON5_INVVFRAME|


S3C2410_LCDCON5_HWSWP|


(0<<7)|


(0<<6)|


(0<<1),


.type = S3C2410_LCDCON1_TFT,


.pixclock = 270000,


.left_margin = 7,


.right_margin = 8,


.hsync_len = 29,


.upper_margin = 11,


.lower_margin = 14,


.vsync_len = 2,


};


static struct s3c2410fb_mach_info s3c2410fb_lcdcfg __initdata = {


.displays = &s3c2410fb_lcd_display,


.num_displays = 1,


.default_display = 0,


.lpcsel = 0x0,


.gpccon = 0xaa9556a9,


.gpccon_mask =0xfffffff,


.gpcup = 0xffffffff,


.gpcup_mask = 0xffffffff,


.gpdcon = 0xaaaaaaaa,


.gpdcon_mask = 0xfffffff,


.gpdup = 0xffffffff,


.gpdup_mask = 0xffffffff,


};


在static void __init smdk2410_init(void)中加入:


s3c24xx_fb_set_platdata(&s3c2410fb_lcdcfg);


用提供的s3c2410fb.c 替换drivers/video/s3c2410fb.c


选上


Device Drivers ---> Graphics support ---> [*] Bootup logo --->


root@yan-laptop:/home/yan/kernel/linux-2.6.30.4# make menuconfig


make: *** /home/yan/kernel/linux-2.6.30.4/arch/arm: 是一个目录。 停止。


这是因为你在没有修改Makefile之前就执行了make menuconfig


这时就生成一些pc版本的linux的配置导致错误。


解决方法:


执行make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig


或者删除源文件,重新解压后修改Makefile然后执行make menuconfig


这个时候可以不执行任何设置,保存即可。


arch/arm/mach-s3c2410/mach-smdk2410.c:65: error: variable `s3c2410fb_lcd_display' has initializer but incomplete type


定义在 ./arch/arm/mach-s3c2410/include/mach/fb.h中


添加 #include


drivers/video/s3c2410fb.c:32:31: asm/arch/regs-lcd.h: 没有该文件或目录


drivers/video/s3c2410fb.c:33:32: asm/arch/regs-gpio.h: 没有该文件或目录


drivers/video/s3c2410fb.c:34:25: asm/arch/fb.h: 没有该文件或目录


修改为 mach/regs-lcd.h


mach/regs-gpio.h


mach/fb.h


drivers/video/s3c2410fb.c:812: error: `OST' undeclared (first use in this function)


在42行 定义 #define OST 0


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下shell的工作原理简述 下一篇Java调用Linux命令ffmpeg视频转码

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: