一.开发环境的建立
1.Linux系统,检查是否有 gcc (gcc -v)如果没有:就用yum install gcc
2.交叉编译器版本为arm-linux-gcc-3.4.1
tar zxvf arm-linux-gcc-3.4.1.tar.bz2 /,将编译器解压并安装到/usr/local/arm目录中(具体解压到 哪个目录要看你压缩包的原目录是什么了,你也可以指定目录)。
二.移植内核
1.下载内核源码到下面网站下载:www.kernel.org
2.建立工作目录
在命令行执行:mkdir 文件夹名
此目录是我的工作目录,名称你可以随意修改,如果修改下面的路径也需要做相应的修改
3.解压系统源码
将内核源码解压的工作目录里,
4、在系统中添加对ARM 的支持及设置好编译器
进到内核源码:cd 工作文件/linux-2.6.25.8
修改顶层“Makefile ”文件,
ARCH ? =arm
CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux- 然后保存。
5、修改平台输入时钟
修改平台的时钟频率,修改内核源码“arch/arm/machs3c2440/
mach-smdk2440.c”,把16934400 改为12000000,因为我们的开发板上为12M
6、修改机器类型ID号
Supervivi的机器码是782,所以这里需要修改机器码,否则会出现不能启动的
情况。修改内核源码的“arch/arm/tools/mach-types”文件,在大概379 行,把原来的362 改为782
7、Nand Flash 驱动移植
linux 里面已经做好了Nand Flash 的驱动,我们只需要进行简单的修改即可
以使用了。
1.修改内核源码“arch/arm/plat-s3c24xx/common-smdk.c”文件,这个是NAND FLASH分区的信息。
内核MTD分区必须与vivi分区相一致。因为,vivi分区中的地址是引导程序、内核映像及文件系统下载到Nand Flash的真正地址;而内核启动时,内核并不是去读vivi分区中的地址,而是去读内核MTD分区设定的地址;所以,如果内核MTD分区与vivi分区不相同,很可能导致不能正常启动内核及读取文件系统,根据vivi的分区信息进行如下修改。
static struct mtd_partition smdk_default_nand_part[] = {
[0] = { .name = "vivi",
.size = 0x00020000,
.offset = 0X00000000,
},
[1] = { .name = "kernel_linux2.6.25",
.offset = 0x00050000,
.size = 0x00200000,
},
[2] = { .name = "root_yaffs2",
.offset =0x00250000,
.size =0x03dac000,
}
};
8、制作配置文件
第一次配置,推荐调用自带的一个默认配置单,该配置单在内核源码的“arch/arm/configs/
s3c2410_defconfig”,该配置文件里面选择了几乎所有的和S3C24XX 系列CPU 相关的
配置选项,可以在该配置单的基础上进行修改自己的配置。当然您也可以自行配置,具体配置方法,建议摸索及参考网上资料。
首先到内核根目录下,输入make menuconfig将打开配置窗口。
在配置菜单中选择选项:“Load an Alternate Configuration File”,然后调用上面说到的那个配置文件,也就是在配置文件名对话框中输入下面的信息。
arch/arm/configs/s3c2410_defconfig
输入完毕后按回车返回到配置界面,进入到“System Type”选项下的配置单:
选中下面的配置项。
System Type --->
[*] S3C2410 DMA support
[*] support ARM920T processor
然后配置平台:
S3C2410 Machines --->
[*] SMDK2410/A9M2410
S3C2440 Machines --->
[*] SMDK2440
[*] SMDK2440 with S3C2440 CPU module
添加对应的NANDFLASH驱动配置
配置如下所示:
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
[*] MTD partitioning support
< > RedBoot partition table parsing
[ ] Command line partition table parsing
<*> NAND Device Support --->
<*> NAND Flash support for S3C2410/S3C2440 SoC
配置完毕这些之后,保存配置单。其它没涉及到的可以保留原配置,也可以根据你的需要修改。
配置完毕后,回到主菜单。然后选择选项:“Save an Alternate Configuration File”,
将其保存为:“.config”文件,因为编译系统时会调用该文件。
保存为“.config”文件后,退出配置单。
你也可以保存为你自己想要的配置名称像config_yourselfname,因为当你执行了#make distclean 命令后,将会清除所有生成的文件。包括配置文件。而你执行make distclean 命令后,在命令行输入cp config_yourselfname .config(目的是将上次的配置复制为.config, 因为编译系统时会调用该文件)
即而就可以在原配置的基础上进行需要的修改。
9、编译镜像
到内核根目录,输入:#make zImage,就可以进行编译了,编译完毕后,会在内核源码的“arch/arm/boot/”目录下面生成名为“zImage”的镜像