- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.1 获取Linux内核源代码
有很多方式可以获取Linux内核源代码,如果你的linux平台可以上互联网,可以直接在命令行输入以下命令获取到Linux-:
#wget /pub/linux/kernel/v2.6/linux-.tar.gz
当然你也可以先在Windows系统下使用迅雷等工具下载完,再复制到linux中。
1.2 解压内核源代码
假定我们刚才把内核源代码下载到了/root/mini2440目录,执行以下解压命
令:
#cd /opt/FriendlyARM/mini2440
#tar xvzf linux-.tar.gz
1.3 指定交叉编译变量
我们移植目的是让Linux-可以在mini2440上运行。
首先,我们要使得Linux-的缺省目标平台成为ARM的平台。
修改总目录下的Makefile
原
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=
改为
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
其中,ARCH是指定目标平台为arm,CROSS_COMPILE是指定交叉编译器,这里指定的是系统默认的交叉编译器,如要使用其它的,则要把编译器的全路径在这里写出。
接下来,要测试一下linux的编译是否能正常通过。
执行:
#make s3c2410_defconfig ;使用缺省内核配置文件,s3c2410_defconfig是SMDK2440的缺省配置文件,我的s3c2410_defconfig文件位于/arch/arm/configs/s3c2410_defconfig
#make ;编译时间较长
编译通过,在此我们先不必烧写到开发板验证它的正确性。
1.4 克隆建立自己的目标平台
1.4.1关于机器码
以上编译是用的Linux内核本身支持的目标平台配置,它对应于SMDK2440。现在我们要参考SMDK2440加入自已的开发板平台,我们使用的是mini2440,因此取名为MINI2440。需要说明的是,Linux-本身已经包含了mini2440的支持,这样就出现了重名。那怎么办呢?在此我们依然使用MINI2440这个名称,只不过在后面的移植步骤中,把原始内核自带的mini2440代码部分直接删除就可以了,以免和我们自己移植的混淆了。首先,很关键的一点,内核在启动时,是通过bootloader传入的机器码(MACH_TYPE)确定应启动哪种目标平台的,友善之臂已经为mini2440申请了自己的机器码为1999,它位于linux-/arch/arm/tools/mach_types文件中.
如果内核的机器码和bootloader传入的不匹配,就会经常出现下面的错误:
Uncompressing Linux done, booting
the kernel.
运行到这不就停住了
提示:在U-boot/include/asm-arm/mach-types.h中可以看到mini2440的机器码定义
接下来,我们注意到linux-/arch/arm/mach-s3c2440目录下有个
mach-mini2440.c文件,它其实就是国外爱好者为mini2440移植添加的主要内容了,但我们不用它,把它直接删除。将linux-/arch/arm/mach-s3c2440/目录下的mach-smdk2440.c复制一份。命名为mach-mini2440.c,
找到MACHINE_START(S3C2440, SMDK2440),修改为
MACHINE_START(MINI2440, FriendlyARM Mini2440 development board)。
提示:开发板运行后,在命令行终端输入:cat /proc/cpuinfo 可以看到我们添加的开发板信息
1.4.2 修改时钟源频率
现在再来修改系统时钟源,在mach-mini2440.c(就是我们刚刚通过复制
mach-smdk2440.c得到的)的第160行static void __init smdk2440_map_io(void)函数中,把其中代表原SMDK2440目标板上的晶振是16.9344MHz)改为mini2440开发板上实际使用的12,000,000(代表mini2440开发板上的晶振12MHz,元器件标号为X2)
1.4.3 从SMDK2440到MINI2440
因为我们要制作自己的mini2440平台体系,因此把mach-mini2440.c中所有的
smdk24
文档评论(0)