linux内核移植.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

I LOVE YOU + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档