Linux3.6.5内核移植到S3C6410


***********************准备工作***************************

1, 硬件平台:S3C6410

软件平台:Fedora14/16 + arm-linux-gcc 4.2.2-eabi

2,下载linux-3.6.5.tar.bz2,解压源码到目录 urdir (你选择要放的目录,下同)

3,添加yaffs文件系统所需的准备。(独立完整的过程请参考:http://blog.csdn.net/cocoxiaomei/article/details/8498161)

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,因为目录下只有64006410最近。】

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分区表

 

*******************************内核配置界面************************************

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容