Welcome 微信登录

首页 / 操作系统 / Linux / Linux 2.6.30.4 内核移植LCD驱动

Kernel:2.6.30.4os:Ubuntu 8.10gcc:arm-linux-gcc (3.4.4)cpu:s3c24101.编译设置使用arm-linux-交叉编译工具链修改根目录下Makefile193 194行ARCH ?= armCROSS_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 optiondefault command lineroot=/dev/mtdblock2 init=linuxrc console=ttySAC0,115200运行#make zImage此时的内核就可在板上跑通了。3.LCD 驱动移植修改arch/arm/mach-s3c2410/mach-smdk2410.cstatic 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 menuconfigmake: *** /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 <mach/fb.h>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.hmach/regs-gpio.hmach/fb.hdrivers/video/s3c2410fb.c:812: error: `OST" undeclared (first use in this function)在42行 定义 #define OST 0