内核修改及编译

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、获得Linux内核源码

获得内核源码,将其拷贝到工作目录,并解压。

2、修改Makefile文件

为了交叉编译内核,需要修改内核的底层Makefile:

找到下面的两行:

修改为:

上面这样修改的意思是说我们的目标平台是arm,使用的交叉编译器的前缀是

arm-linux-.

3、得到.config文件

编译内核时会依赖于源代码目录下的.config 文件。如果没有这个文件,在make menuconfig的时候,会默认按照i386的配置生成.config文件,而这不是我们需要的。因此我们要有自己的.config文件。

由于我们的配置和SMDK2410开发板的类似,因此可以使用它的.config文件,只需要把它的.config文件拷贝到源代码根目录下的.config文件即可:

4、修改Nand Flash分区

由于我们使用的是SMDK2410开发板的原型,SMDK2410开发板的NAND Flash和我们的不一样,因此需要修改。打开arch/arm/plat-s3c24xx/common-smdk.c这个文件:

找到struct mtd_partition smdk_default_nand_part[]这个结构体,并修改它。改前的代码:

/* NAND parititon from 2.4.18-swl5 */

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {

.name = "Boot Agent",

.size = SZ_16K,

.offset = 0,

},

[1] = {

.name = "S3C2410 flash partition 1",

.offset = 0,

.size = SZ_2M,

},

[2] = {

.name = "S3C2410 flash partition 2",

.offset = SZ_4M,

.size = SZ_4M,

},

[3] = {

.name = "S3C2410 flash partition 3",

.offset = SZ_8M,

.size = SZ_2M,

},

[4] = {

.name = "S3C2410 flash partition 4",

.offset = SZ_1M * 10,

.size = SZ_4M,

},

[5] = {

.name = "S3C2410 flash partition 5",

.offset = SZ_1M * 14,

.size = SZ_1M * 10,

},

[6] = {

.name = "S3C2410 flash partition 6",

.offset = SZ_1M * 24,

.size = SZ_1M * 24,

},

[7] = {

.name = "S3C2410 flash partition 7",

.offset = SZ_1M * 48,

.size = SZ_16M,

}

};

修改后的结构体如下面的代码所示:

static struct mtd_partition smdk_default_nand_part[] = {

[0] = {

.name = "Bootloader",

.size = 0x80000,

.offset = 0,

},

[1] = {

.name = "Linux Kernel",

.offset = 0x80000,

.size = SZ_2M,

},

[2] = {

.name = "Root File System",

.offset = 0x280000,

.size = SZ_4M,

},

[3] = {

.name = "User Space",

.offset = 0x680000,

.size = 0x3980000,

},

};

这样就把我们的64M的NAND Flash分为四个区:

第一个区从0x00000000到0x00080000,大小为0.5M

第二个区从0x00080000到0x00280000,大小为2M

第三个区从0x00280000到0x00680000,大小为4M

第四个区从0x00680000到0x04000000,大小为57.5M

5、添加网卡驱动支持

开发板上配置了DM9000A网卡,内核已经有网卡驱动的实现代码,需要我们做一定的配置。在arch/arm/mach-s3c2410/mach-smdk2410.c文件中添加如下内容:

static struct resource s3c_dm9ks_resource[] = {

[0] = {

.start = 0x10000000,

.end = 0x10000040,

.flags = IORESOURCE_MEM,

},

[1] = {

.start = IRQ_EINT2,

.end = IRQ_EINT2,

相关文档
最新文档