***********************准备工作***************************
1, 硬件平台:S3C6410
软件平台:Fedora14/16 + arm-linux-gcc 4.2.2-eabi
2,下载linux-3.6.5.tar.bz2,解压源码到目录 urdir (你选择要放的目录,下同)
3,添加yaffs文件系统所需的准备。(独立完整的过程请参考:)
1)下载源代码命令:git clonegit://www.aleph1.co.uk/yaffs2(@qingwu:一般在终端下都有git支持)
也可以在windows下用git工具下载(这里请注意:Windows下的文件可能会出现回车换行的错误,比如^M不能识别等,可以参考:
2)yaffs源代码下载完后,进入yaffs2源代码目录,执行:#./patch-kernel.sh c m urdir/linux-3.6.5(其中c:复制代码 ,m:使用支持多版本代码)
因为我们选择的系统为mini6410,因此接下来的修改以及配置都是在此基础上的。
************************内核源码文件修改*******************************
4,进入解压后的内核源码目录 ,修改Makefile文件。
[root@localhost linux-3.6.5]# vi Makefile
line 195 ARCH ?= $(SUBARCH) 改为:ARCH ?= arm
line 196 CROSS_COMPILE ?= 改为:CROSS_COMPILE = arm-linux-
前者是对体系架构的定义,我们是arm平台。后者是交叉编译工具的选择。修改完成后保存退出。
5,执行 make s3c6400_defconfig,Makefile能够针对S3C6410做一系列默认配置
注:这个命令可能会出错,说没有s3c6410_defoncig的信息,如下:*** Can't find default configuration"arch/arm/configs/s3c6410_defconfig"!
这时可以执行:
[root@localhostlinux-3.6.5]#cp arch/arm/configs/s3c6400_defconfig .config,然后再运行:
[root@localhost linux-3.6.5]# make s3c6400_defconfig 。【注:这里我用的s3c6400,因为目录下只有6400跟6410最近。】
6,修改flash分区信息(line121 of mach-mini6410.c),设置成跟bootloader中的分区信息一致。
[root@localhost linux-3.6.5]# vim arch/arm/mach-s3c64xx/mach-mini6410.c
结构体 mtd_partition mini6410_nand_part[]保存了nand flash的分区信息,修改如下:
static structmtd_partition mini6410_nand_part[] = {
[0] = {
.name = "uboot",
.size = SZ_1M,
.offset = 0,
},
[1] = {
.name ="kernel",
.size = SZ_2M,
.offset = SZ_1M,
},
[2] = {
.name ="rootfs",
.size = SZ_1M * 0x30,
.offset = SZ_1M + SZ_2M,
},
[3] = {
.name ="file_system",
.size =MTDPART_SIZ_FULL,
.offset = SZ_1M * 0x33,
},
};
修改之后分区情况就如下表所示:
表3-1 NAND FLASH分区表
*******************************内核配置界面************************************