linux-2.6.32.2内核在mini2440上基于supervivi移植.docVIP

  • 4
  • 0
  • 约53.83万字
  • 约 101页
  • 2017-08-05 发布于河南
  • 举报

linux-2.6.32.2内核在mini2440上基于supervivi移植.doc

HYPERLINK /hanxuefan/article/details/7369418 linux mini2440平台移植--内核移植、yaffs2文件系统移植 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,元器件

文档评论(0)

1亿VIP精品文档

相关文档