Chinaunix首页 | 论坛 | 博客
  • 博客访问: 348006
  • 博文数量: 69
  • 博客积分: 3077
  • 博客等级: 中校
  • 技术积分: 602
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-11 09:40
个人简介

或以为孤权重,妄相忖度

文章分类

全部博文(69)

文章存档

2012年(1)

2011年(10)

2010年(39)

2009年(19)

我的朋友

分类: LINUX

2009-06-11 13:05:03

Linux2.6.26.8 移植之一:内核的移植

 

RedHat9.0

arm-linux-gcc 3.4.1

 

1.修改Makefile

       #ARCH        ?= $(SUBARCH)

       #CROSS_COMPILE    ?=

       ARCH        ?= arm

       CROSS_COMPILE    ?= /usr/locla/arm/3.4.1/bin/arm-linux-

 

2.make

       $ make s3c2410_defconfig

3.修改晶振频率arch/arm/mach-s3c2410/mach-smdk2410.c

       /*s3c24xx_init_clocks(0);*/

           s3c24xx_init_clocks(12000000);

 

4.修改MTD分区

文件: arch/arm/plat-s3c24xx/common-smdk.c

找到smdk_default_nand_part结构,修改nand分区,如下:struct mtd_partition smdk_default_nand_part[] = {

 [0] = {.name= "vivi",.size = 0x00020000,.offset= 0x00000000,},       

 [1] = {.name= "param",.Size = 0x00010000,.offset= 0x00020000,},       

 [2] = {.name= "kernel",.size   = 0x00100000,.offset = 0x00030000,},       

 [3] = {.name= "root",.size   = 0x01900000,.offset = 0x00130000,},        

 [4] = {.name= "user",.size   = 0x025d0000,.offset = 0x01a30000,}};

注:此分区要结合vivi里面的分区来进行设置。

 

5.关闭NAND ECC校验

文件:drivers/mtd/nand/s3c2410.c

函数:s3c2410_nand_init_chip

        /*chip->ecc.mode        = NAND_ECC_SOFT; */

        chip->ecc.mode    = NAND_ECC_NONE;

6.配置内核

Boot option

Default kernel command string: [noinitrd root=/dev/mtdblock3 console=ttySAC0,115200 init=/linuxrc]

 

分析:

/dev/mtdblock3 表示MTD分区的第3个分区存储根文件系统

init=/linuxrc 启动的首个脚本即根目录下的linuxrc

console=ttySAC0,115200 使用串口0作为串口调试,波特率设置为115200;

 

PS:后来移植其他的内核过程中,出现以下以前出现过的问题,但却又忘记解决方法了,真是惭愧,

1.Uncompressing Linux... done, booting the kernel.

   这个问题多半是MACH_TYPE引起的,修改在文件 linux-2.6.36.rc4/arch/arm/tools/mach_types文件,大概279行处改成168,这是TQ2440的机器码.

s3c2440   ARCH_S3C2440  S3C2440   168

2.

阅读(1016) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~