全部博文(218)
分类: LINUX
2012-03-28 15:38:39
作者:mutes
硬件环境:ST2410X开发板(CPU:S3C2410X)
内核版本:3.3
运行环境:FC13
交叉编译环境:arm-linux-3.4.1
1.1 准备必要的文件
首先去官方网站下载最新的 linux 内核
因为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 内核,输入命令:
tar jxvf linux-3.3.tar.gz
//tar zxvf 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.14或2.6.11有点区别,其他版本是修改arch/arm/machs3c2410/devs.c和arch/arm/machs3c2410/mach-smdk2410.c 但3.3设置这些文件无效。
n 设置Nand Flash的分区和信息,下面是我的分区结构(与BIOS的分区保持一至):
name: 代表分区名字
size: 代表flash分区大小(单位:字节)
offset: 代表flash分区的起始地址(相对于0x0的偏移)
目标板计划分4个区,分别存放loader, param,kernel, root以及以便以后扩展使用的用户文件系统空间。
注:分区表信息要参考你自己的内核和文件系统的大小,排布来设置,BIOS中的分区信息要和mtd分区信息一致,分多少个区由你自己决定,我的就只分了4个区^_^。
static struct mtd_partition smdk_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,
}
};