***********************准備工作***************************
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前者是對體系架構的定義,我們是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分區表
*******************************內核配置界面************************************