移植linux3.3内核到ST2410

来源:互联网 发布:mac网页内容抓取工具 编辑:程序博客网 时间:2024/05/02 01:39

作者:mutes

硬件环境:ST2410X开发板(CPUS3C2410X
内核版本:3.3
运行环境:FC13
交叉编译环境:arm-linux-3.4.1

移植时间:2012.03.27

1.1 准备必要的文件

首先去官方网站下载最新的 linux 内核

http://www.kernel.org/pub/linux/kernel/v3/linux-3.3.tar.gz

因为linux-3.3.tar.bz2 内核需要更新版本的编译器,所以需要下载交叉编译器

ftp://ftp.handhelds.org/projects/toolchain/arm-linux-gcc-3.4.1.tar.bz2

1.2 安装文件

arm-linux-gcc 安装在/usr/local/arm/3.4.1目录下,安装方法和安装 gcc2.95.3 gcc3.3.2是相同的!

接下来需要解压 linux 内核,输入命令:

 tarjxvf linux-3.3.tar.gz

 //tarzxvf linux-3.3.tar.gz

内核被解压到 linux-3.3 目录下。

1.3 修改 makefile文件

内核的编译是根据 makefile 文件的指示进行的, Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。

我们首先修改 linux-3.3 的根目录下的 makfile 文件,须改的主要内容是目标代码的类型和为编译内核指定一个编译器。将以下内容:

ARCH   ?=$(SUBARCH)

CROSS_COMPILE    ?=

更改为如下内容:

ARCH   ?= arm

CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-

1.4 修改相关的文件。

1.4.1       修改arch/arm/plat-s3c24xx/common-smdk.c文件

说明:这里linux-3.3的设置分区与其他版本如2.6.142.6.11有点区别,其他版本是修改arch/arm/machs3c2410/devs.carch/arm/machs3c2410/mach-smdk2410.c但3.3设置这些文件无效。

n  设置NandFlash的分区和信息,下面是我的分区结构(与BIOS的分区保持一至):

name: 代表分区名字

size: 代表flash分区大小(单位:字节)

offset: 代表flash分区的起始地址(相对于0x0的偏移)

目标板计划分4个区,分别存放loader,param,kernel, root以及以便以后扩展使用的用户文件系统空间。

注:分区表信息要参考你自己的内核和文件系统的大小,排布来设置,BIOS中的分区信息要和mtd分区信息一致,分多少个区由你自己决定,我的就只分了4个区^_^

static struct mtd_partitionsmdk_default_nand_part[] = {

        [0] ={

               .name   = "loader",

               .size   = SZ_256K,

               .offset = 0,

        },

        [1] ={

               .name   = "kernel",

               .offset = MTDPART_OFS_APPEND,

               .size   = SZ_1M + SZ_256K +SZ_512K,

        },

        [2] ={

               .name   = "root",

               .offset = SZ_2M,

               .size   = SZ_32M,

        },

        [3] ={

               .name   = "user1",

               .offset = MTDPART_OFS_APPEND,

                .size  = MTDPART_SIZ_FULL,

        }

}; 





原创粉丝点击