一、说明
1、许多移植步骤都是参照了网上的一些博客的资料,为尊重他人劳动成果,现将一些主要的参考质料列出
(1)http://blog.csdn.net/hpwzd/article/details/7365781
(2)http://blog.csdn.net/dreambegin/article/details/6904822
(3)http://3y.uu456.com/bp-93689db5998fcc22bcd10dac-2.html
2、所有要修改的地方都用红色标注
二、移植环境
·主机:VMware centos 6.3
·内核版本:2.6.32
·编译器:arm-linux-gcc-4.3.2.tgz
·开发板信息: mini2440
SDRAM: H57V2562GTR(256M*2)
nandflash:K9K8G08U0B-PCBO(1GB)
norflash: S29AL016M10TF102 (2M)
二、移植步骤
1、修改makefile
修改内核源码顶层的makefile,在183行附近
将makefile里的
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
修改为
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
2、修改分区信息,
这个分区信息要以bootloader一致,我的板子中norflash已经下载好了supervivi,可以从中查看,也可以观察友善之臂原有内核启动时打印出的信息。(目前自己也在学习uboot,但uboot自己还没怎么搞清,这里只说了supervivi)比如,我的板子所打印出的信息如下, 其中有4个分区,分别为supervivi param kernel root 注意,分区的名字不重要,关键是起始位置和大小,为此,我们就要更具这个修改我们内核中的分区
打开文件 arch/arm/mach-s3c2440/mach-mini2440.c 定位到245到287行附近,需要修改如下:
static struct mtd_partition mini2440_default_nand_part[]__initdata = {
[0] = {
.name = "u-boot",
.size = SZ_256K,
.offset = 0,
},
[1] = {
.name = "u-boot-env",
.size = SZ_128K,
.offset = SZ_256K,
},
[2] = {
.name = "kernel",
/* 5 megabytes, for a kernel with no modules
* or a uImage with a ramdisk attached */
.size = 0x00500000,
.offset = SZ_256K + SZ_128K,
},
[3] = {
.name = "root",
.offset = SZ_256K + SZ_128K + 0x00500000,
.size =MTDPART_SIZ_FULL,
},
};
static struct s3c2410_nand_set mini2440_nand_sets[] __initdata= {
[0] = {
.name = "nand",
.nr_chips = 1,
.nr_partitions= ARRAY_SIZE(mini2440_default_nand_part),
.partitions = mini2440_default_nand_part,
.flash_bbt = 1, /* we use u-boot to create a BBT */
},
};
static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
.tacls = 0,
.twrph0 = 25,
.twrph1 = 15,
.nr_sets = ARRAY_SIZE(mini2440_nand_sets),
.sets = mini2440_nand_sets,
.ignore_unset_ecc = 1,
};
(2)对于第二个函数mini2440_nand_sets[] __initdata,要将__initdata删掉
(3)对于第三个函数mini2440_nand_info __initdata,修改下列数据,并且将__initdata删掉
.tacls= 20,
.twrph0 = 60,
.twrph1 = 20,
3、修改机器码。
修改“arch/arm/tools/mach-types” 文件中,在大概 379 行,把原来的 362改为782。
4、去掉内核ECC校验
修改drivers/mtd/nand/s3c2410.c ,搜索关键字NAND_ECC_SOFT,s3c2410_nand_init_chip函数里,修改NAND_ECC_SOFT为 NAND_ECC_NONE
下载yaffs2源码,在源码目录进行打补丁操作,时内核支持Yaffs2文件系统。执行:
./patch-ker.sh c /“你的内核源码目录” 。此时到内核源码的“fs/”目录下面您将看到新添加了一个名为“yaffs2/”的目录,同时 fs/目录下面的 Makefile 文件和 Kconfig 文件也添加了 yaffs2 的配置和编译条件。
6、配置内核
这一步骤就可以参考我参考的资料,注意,那里用到的内核版本不一样,他的有些选项不存在,不必担心。
请参照 http://blog.csdn.net/hpwzd/article/details/7365781
7、编译内核
make zImage