移植linux(1)

时间:2024-04-18 20:04:31

硬件环境:TQ2440   软件环境:linux-2.6.30.4

下载源码:ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.4.tar.bz2

步骤:

1.在系统中添加对arm的支持:

修改内核根目录下的Makefile,ARCH=arm,CROSS_COMPILE=arm-linux-

2.修改系统时钟:

修改内核源码“arch-arm-mach-s3c2440/mach-smdk2440.c”,把 s3c24xx_init_clocks(16934400); 换成s3c24xx_init_clocks(12000000);

3. 修改机器码:

把s3c2440对应的机器码由362改为168

4.Nand Flash 驱动移植:

修改内核源码“arch/arm/plat-s3c24xx/common-smdk.c”文件,将结构体数组名为 smdk_default_nand_part改为:

static struct smdk_default_nand_part [] = {

[0] = {
.name = "My_Board_uboot",
.size =0x00040000,
.offset = 0x00000000,
},
[1] = {
.name = "My_Board_kernel",
.offset = 0x00200000,
.size =0x00300000,
},
[2] = {
.name = "My_Board_yaffs2",
.offset = 0x00500000,
.size =MTDPART_SIZ_FULL,
},

};

在这个文件里修改结构体smdk_nand_info:

static struct s3c2410_platform_nand smdk_nand_info = {
.tacls= 10,
.twrph0= 25,
.twrph1= 10,
.nr_sets= ARRAY_SIZE(smdk_nand_sets),
.sets= smdk_nand_sets,
};

最后修改" drivers/mtd/nand/s3c2410.c" :

chip->ecc.mode  = NAND_ECC_NONE;

配置内核添加上对Nand Flash 支持的配置选项,然后编译烧写后可以发现分区信息,但是这时候还不能正常启动内核,因为系统还不支持yaffs2文件系统,下一节来构建文件系统。