硬件环境: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文件系统,下一节来构建文件系统。