或以为孤权重,妄相忖度
分类: 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.