歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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不能識別等,可以參考:http://www.linuxidc.com/Linux/2013-01/77761.htm

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"!

這時可以執行:

[[email protected]]#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分區表

 

*******************************內核配置界面************************************

Copyright © Linux教程網 All Rights Reserved