ARM Linux.2.6.34內(nèi)核移植
ARM-LINUX-GCC版本4.3.2.以安裝在/usr/local/arm/4.3.2下.
第一步:
修改linux-2.6.34/Makefile文件,在makefile中找到以下兩條信息并做修改
ARCH ? =arm
CROSS_COMPILE ?=/usr/local/arm/4.3.2/bin/arm-linux-
第二步:
修改平臺(tái)輸入時(shí)鐘
修改平臺(tái)的時(shí)鐘頻率,修改內(nèi)核源碼“arch/arm/mach-s3c2440/mach-smdk2440.c”
把時(shí)鐘初始化中(S3C24XX_init_clocks(16934400 ))的16934400 改為12000000,因?yàn)槲覀兊拈_發(fā)板上為12M
第三步:
修改機(jī)器類型ID號(hào)::
bootloader啟動(dòng)內(nèi)核時(shí),會(huì)傳遞機(jī)器類型ID進(jìn)來,這里需根據(jù)bootloadr傳進(jìn)的ID修改內(nèi)核ID號(hào).
在內(nèi)核源碼的“arch/arm/tools/mach-types”文件查找S3C2440,這里剛好與我們的bootloader相同,所以不用做修改,直接保存退出即可,如果不同則根據(jù)bootloader的內(nèi)容修改此文件,或根據(jù)此文件修改boorloader的內(nèi)容(在vivi中可通過param show查看)。
第四步:
解壓yaffs2.tar.gz源碼包,進(jìn)入yaffs2文件夾,給內(nèi)核打上補(bǔ)丁使內(nèi)核支持yaffs2
# ./patch-ker.sh c /home/linux-2.6.34
結(jié)果:更新了兩個(gè)文件系統(tǒng)下的文件
Updating /home/linux-2.6.34/fs/Kconfig
Updating /home/linux-2.6.34/fs/Makefile
第五步:
修改內(nèi)核mtd分區(qū)和bootloader(vivi)使其一致
編輯文件arch/arm/plat-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "vivi",
.size = 0x30000,
.offset = 0,
},
[1] = {
.name = "kernel",
.offset = 0x50000,
.size = 0x300000,
},
[2] = {
.name = "root",
.offset = 0x350000,
.size = 0x3cac000,
},
};
第六步:
修改文件drivers/mtd/nand/s3c2410.c
將s3c2410_nand_init_chip函數(shù)里的NAND_ECC_SOFT改為NAND_ECC_NONE(因?yàn)樵趦?nèi)核中默認(rèn)配置不支持ECC校驗(yàn),當(dāng)然也可以在內(nèi)核配置時(shí)選中ECC選項(xiàng))
修改后如下:
chip->ecc.mode = NAND_ECC_NONE;
第七步:
到llinux-2.6.30目錄下執(zhí)行命令
#cp arch/arm/configs/s3c2410_defconfig .config
第八步:
執(zhí)行make menuconfig,并對(duì)選項(xiàng)進(jìn)行配置
1)System Type --->
S3C2440 and S3C2442 machines --->
僅保留SMDK2440 與SMDK2440 whith S3C2440 CPU module兩個(gè)選項(xiàng),將其他的選項(xiàng)全部勾掉
2)Kernel Features --->
[*]Use the arm EABI to compile the kernel(選中該選項(xiàng))
3)File systems --->
a、把與ext2 ext3 ext4相關(guān)的所有選項(xiàng)全部去掉
b、Miscellaneous filesystems --->
<*>yaffs2 file system support(選中此選項(xiàng))
去除所有與jffs2相關(guān)的選項(xiàng)
保存退出
第九步:執(zhí)行makezImage編譯生成內(nèi)核.
在arch/arm/boot下生成編譯好的可執(zhí)行程序zImage.這個(gè)是在vivi下使用的.