欢迎来到天天文库
浏览记录
ID:15874915
大小:406.00 KB
页数:86页
时间:2018-08-06
《linux-2.6.32.2内核在mini2440上基于supervivi的移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、linux2.6.32.2mini2440平台移植--内核移植、yaffs2文件系统移植1.1 获取Linux内核源代码有很多方式可以获取Linux内核源代码,如果你的linux平台可以上互联网,可以直接在命令行输入以下命令获取到Linux-2.6.32.2:#wgethttp://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.gz当然你也可以先在Windows系统下使用迅雷等工具下载完,再复制到linux中。1.2 解压内核源代码假定我们刚才把内核源代码下载到了/root/mini2440目录
2、,执行以下解压命令:#cd /opt/FriendlyARM/mini2440#tar xvzf linux-2.6.32.2.tar.gz1.3 指定交叉编译变量我们移植目的是让Linux-2.6.32.2可以在mini2440上运行。首先,我们要使得Linux-2.6.32.2的缺省目标平台成为ARM的平台。修改总目录下的Makefile原exportKBUILD_BUILDHOST:=$(SUBARCH)ARCH ?=$(SUBARCH)CROSS_COMPILE?= 改为exportKBUILD_BUILDHOST:=$(SUBARCH)ARCH ?=armCROSS_
3、COMPILE?=arm-linux-其中,ARCH是指定目标平台为arm,CROSS_COMPILE是指定交叉编译器,这里指定的是系统默认的交叉编译器,如要使用其它的,则要把编译器的全路径在这里写出。接下来,要测试一下linux的编译是否能正常通过。执行:#makes3c2410_defconfig;使用缺省内核配置文件,s3c2410_defconfig是SMDK2440的缺省配置文件,我的s3c2410_defconfig文件位于/arch/arm/configs/s3c2410_defconfig#make;编译时间较长 编译通过,在此我们先不必烧写到开发板验证它的正确
4、性。 1.4 克隆建立自己的目标平台1.4.1关于机器码 以上编译是用的Linux内核本身支持的目标平台配置,它对应于SMDK2440。现在我们要参考SMDK2440加入自已的开发板平台,我们使用的是mini2440,因此取名为MINI2440。需要说明的是,Linux-2.6.32.2本身已经包含了mini2440的支持,这样就出现了重名。那怎么办呢?在此我们依然使用MINI2440这个名称,只不过在后面的移植步骤中,把原始内核自带的mini2440代码部分直接删除就可以了,以免和我们自己移植的混淆了。首先,很关键的一点,内核在启动时,是通过bootloader传入的机器码(
5、MACH_TYPE)确定应启动哪种目标平台的,友善之臂已经为mini2440申请了自己的机器码为1999,它位于linux-2.6.32.2/arch/arm/tools/mach_types文件中.如果内核的机器码和bootloader传入的不匹配,就会经常出现下面的错误:UncompressingLinux..................................................................................................................................done,b
6、ootingthekernel.运行到这不就停住了提示:在U-boot/include/asm-arm/mach-types.h中可以看到mini2440的机器码定义接下来,我们注意到linux-2.6.32.2/arch/arm/mach-s3c2440目录下有个mach-mini2440.c文件,它其实就是国外爱好者为mini2440移植添加的主要内容了,但我们不用它,把它直接删除。将linux-2.6.32.2/arch/arm/mach-s3c2440/目录下的mach-smdk2440.c复制一份。命名为mach-mini2440.c,找到MACHINE_START(
7、S3C2440,"SMDK2440"),修改为MACHINE_START(MINI2440,"FriendlyARMMini2440developmentboard")。提示:开发板运行后,在命令行终端输入:cat/proc/cpuinfo 可以看到我们添加的开发板信息 1.4.2 修改时钟源频率现在再来修改系统时钟源,在mach-mini2440.c(就是我们刚刚通过复制mach-smdk2440.c得到的)的第160行staticvoid__initsmdk2440_map_io(voi
此文档下载收益归作者所有