Linux-2.6.25.3移植

本文详细介绍如何将 Linux-2.6.25.3 内核移植到 S3C2410 平台。内容包括修改 Makefile、配置内核参数、解决启动错误、添加 NAND Flash 划分和 LCD 驱动等关键步骤。

Linux-2.6.25.3移植

 

linux-2.6.25.3稳定版发布,我们将该内核移植到S3C2410平台上,

环境:linux-2.6.25.3

      arm-linux-gcc 3.4.4

      u-boot

      busybox 1.10.1

硬件:JXARM9-2410开板板 是武汉创维特出的

面是移植的步骤:

 

编译内核:

1)    解压内核,当前目录为/home/wbzh/

tar jxvf  /home/wbzh/linux-2.6.25.tar.bz2

cd /home/wbzh/linux-2.6.25

 

2)    修改体系架构并指定交叉编译器

 

vi Makefile ,将193行和194行的

#ARCH            ?= $(SUBARCH)

#CROSS_COMPILE   ?=

修改为

ARCH            ?= arm

CROSS_COMPILE   ?= arm-linux-    #最后有“-”,Makefile会调用arm-linux-gcc

 

3)    载入默认配置

make s3c2410_defconfig

make menuconfig

 

System Type  --->

S3C2400 Machines  --->

S3C2410 Machines  --->

S3C2412 Machines  --->

S3C2440 Machines  --->

S3C2442 Machines  --->

S3C2443 Machines  --->

去掉多余的开发板,只保留SMDK2410

 

Boot options  --->

    Default kernel command string

console=ttySAC0,115200 mem=64M  root=/dev/mtdblock0 rootfstype=jffs2 rw

console=ttySAC0,115200 console=tty0 mem=64M root=/dev/mtdblock0 rootfstype=jffs2 rw

#说明:                                                                         

#mtdblock0代表第1flash分区,用来作根文件系统rootfs                          

# console=ttySAC0,115200使kernel启动期间的信息全部输出到串口0上,波特率为115200

# 2.6内核对于串口的命名改为ttySAC0,但这不影响用户空间的串口编程。              

# 用户空间的串口编程针对的仍是/dev/ttyS0                                      

# mem=64M表示内存是64M,如果是32则设为32M                                       

在实践中,我发现“rootfstype= jffs2这句还是挺重要的。

 

Esc键保存退出。

 

编译内核、生成内核镜像文件。

make

内核镜像文件的存放位置:arch/arm/boot/zImage

 

4)    内核启动错误,及解决方法

Error: unrecognized/unsupported machine ID (r1 = 0x33f60264).
    Linux
内核启动时出现:bad machine ID,原因大致是u-boot传递给内核的machine ID错误,可以手动在内核源代码中添加machine ID.

解决方法

修改内核的arch/arm/kernel/head.S,直接将s3c2410的参数赋给内核
# cd linux-2.6.25.3
# vi arch/arm/kernel/head.S +72
----------------------------------------------    

78     .type       stext, %function
79 ENTRY(stext)
   /********* add here *********/
   mov    r0, #0
   mov    r1, #0xc1
   ldr    r2, =0x30000100
   /********* end add *********/

83     msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode
84     @ and irqs disabled

 

5)    添加nand flash划分信息

vi arch/arm/plat-s3c24xx/common-smdk.c

115 35 dd

    109 static struct mtd_partition smdk_default_nand_part[] = {

    110     [0] = {

    111         .name   = "Nand Flash Part 0",

    112         .size   = SZ_1M * 16,

    113         .offset = 0,

    114     },

    115 }; 

 

 

6)    添加LCD驱动:

  

//porting frame buffer driver to s3c2410

//linux kernel 26.25.3

//LCD is 640X480 16BPP TFT

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

 

#include <asm/arch/fb.h>

 

 

/********************lcd start wbzh chd*************/

/* LCD driver info */

 

static struct s3c2410fb_display smdk2410_lcd_cfg __initdata = {

 

        /* Configuration for 640x480 SHARP LQ080V3DG01 */

        .lcdcon5 = S3C2410_LCDCON5_FRM565 |

               S3C2410_LCDCON5_INVVLINE |

               S3C2410_LCDCON5_INVVFRAME |

               S3C2410_LCDCON5_PWREN |

               S3C2410_LCDCON5_HWSWP,

 

        .type       = S3C2410_LCDCON1_TFT,

        .width      = 640,

        .height     = 480,

 

        .pixclock   = 40000, /* HCLK/4 */

        .xres       = 640,

        .yres       = 480,

        .bpp        = 16,

        .left_margin    = 44,

        .right_margin   = 116,

        .hsync_len  = 96,

        .upper_margin   = 19,

        .lower_margin   = 11,

        .vsync_len  = 15,

};

 

static struct s3c2410fb_mach_info smdk2410_fb_info __initdata = {

    .displays   = &smdk2410_lcd_cfg,

    .num_displays   = 1,

    .default_display = 0,

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

};

/********************lcd end wbzh chd*************/

 

static void __init smdk2410_init(void)

{

    //add by wbzh chd

    s3c24xx_fb_set_platdata(&smdk2410_fb_info);

    ....

}

 

 

//LCD上显示企鹅图标

make menuconfig

Device Drivers  --->

    Graphics support  --->

        [*] Bootup logo  --->

        ---Bootup logox x

         [*]Standard black and white Linux logo (NEW) x x

         [*]Standard 16-color Linux logo (NEW) x x

         [*]   Standard 224-color Linux logo (NEW)

 

7)    编译并拷贝到tftp下载目录

make && cp arch/arm/boot/zImage /tftpboot/25zImage -f

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值