Arm_试验_2.doc_第1页
Arm_试验_2.doc_第2页
Arm_试验_2.doc_第3页
Arm_试验_2.doc_第4页
Arm_试验_2.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 linux的移植、内核、文件系统的生成与下载一、实验目的1. 了解linux移植的基本过程,掌握内核和文件系统的下载方法二、实验内容1. 学习linux移植的基本过程2. 学习内核和文件系统的生成与下载方法三、实验设备1. PentiumII以上的PC机、EL-ARM860实验箱四、linux的移植说明本实验系统运行的linux版本是针对2.4.18内核进行移植的linux-2.4.18.-rm7-pxa1版本,它存放在/ARMer/tar.gz/目录内。由于移植内核所涉及的内容较多,且也较复杂,同时,在涉及到的中断切换、内存管理方面的复杂移植,一般也不必太过关心,网络上有专门的非官方组织在完善该事情。我们所做的大多是把该移植好的内核,让它如何在自己的硬件系统上正常的运转起来。因此,我们所做的移植也偏重于应用。4.1. 内核的目录结构Linux内核主要由5个子系统组成:l 进程调度子系统l 进程间通讯子系统l 内存管理子系统l 虚拟文件系统子系统l 网络接口子系统 Linux内核非常庞大,包括驱动程序在内有上百兆。2.4.18内核结构图如图4-3-1。其主要结构目录:/arch 子目录包含了所有与硬件体系结构相关的内核移植代码。其中每一个目录都代表一种硬件平台,对于每种平台都应该包括:boot: 包括启动内核所使用的部分或全部平台的相关代码。kernel: 包括支持体系结构特有的特征代码lib:包括存放体系结构特有的通用函数的实现代码mm: 包括存放体系结构特有的内存管理程序的实现mach-xxx:包括存放该处理器的移植代码/Documentation 子目录包含有关内核的许多非常详细的文档。/drivers 子目录包含内核中所有的设备驱动程序。/fs 子目录包含了所有的文件系统的代码。/include 子目录包含了建立内核代码时所需的大部分库文件的头文件,该模块利用其他模块重建内核。同时,它也包括不同平台需要的库文件。/init 子目录包含了内核的初始化代码,内核从此目录下开始工作。/ipc 子目录包含了内核的进程间通讯的代码。/kernel 子目录包含了主内核的代码,如进程调度等。/lib 子目录包含了通用的库函数代码等。/mm 子目录包含了内核的内存管理代码。/net 子目录包含了内核的网络相关的代码。/scripts 子目录包含了配置内核的一些脚本文件一般在每个目录下,都有一个.depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。因此,移植工作的重点就是移植arch目录下的文件。4.2 内核的移植 4.2.1 设置目标平台和指定交叉编译器在最上层的目录/Makefile文件中,首先要指定所移植的硬件平台,以及所使用的交叉编译器。改为如下:ARCH := armCROSS_COMPILE = /usr/local/arm/2.95.3/bin/arm-linux- 也就是说,所移植的硬件平台是ARM,所使用的交叉编译器是存放在目录/usr/local/arm/2.95.3/bin/arm-linux-xxx等等工具。4.2.2 arch/arm目录下Makefile 修改 系统的启动代码是通过这个文件产生的。在linux-2.4.18内核中要添加如下代码,(在移植好的内核中请不要添加)ifeq ($(CONFIG_ARCH_S3C2410),y)TEXTADDR = 0xC0008000MACHINE = s3c2410endif 这里TEXTADDR确定内核开始运行的虚拟地址。4.2.3 arch/arm目录下config.in 修改 配置文件config.in能够配置运行“make menuconfig”命令时的菜单选项,由于2.4.18内核中没有S3C2410的相关信息,所以要在该文件中进行有效的配置。 由于配置选项较多,在此不做赘述,请参见我们提供的内核源代码内的/arch/arm/config.in文件。 做完该步,这样在linux内核配置时就可以选择刚刚加入的内核平台了。4.2.4 arch/arm/boot目录下Makefile 修改 编译出来的内核存放在该目录下,这里指定内核解压到实际硬件系统上的物理地址。ifeq ($(CONFIG_ARCH_S3C2410),y)ZTEXTADDR = 0x30008000ZRELADDR = 0x30008000endif 要根据实际的硬件系统修改解压后,内核开始运行的实际的物理地址4.2.5 arch/arm/boot/compressed目录下Makefile 修改 该文件从vmlinux中创建一个压缩的vmlinuz镜像文件。该文件中用到的SYSTEM、ZTEXTADDR、ZBSSADDR、和ZRELADDR是从arch/arm/boot/Makefile文件中得到的。添加如下代码:ifeq ($(CONFIG_ARCH_S3C2410),y)OBJS+= head-s3c2410.oEndif4.2.6 arch/arm/boot/compressed目录下添加head-s3c2410.s 该文件主要用来初始化处理器。4.2.7 arch/arm/def-configs目录下添加配置好的S3C2410的配置文件。4.2.8 arch/arm/kernel目录下Makefile 修改 该文件主要用来确定文件类型的依赖关系。no-irq-arch:= $(CONFIG_ARCH_INTEGRATOR) $(CONFIG_ARCH_CLPS711X) $(CONFIG_FOOTBRIDGE) $(CONFIG_ARCH_EBSA110) $(CONFIG_ARCH_SA1100) $(CONFIG_ARCH_CAMELOT) $(CONFIG_ARCH_S3C2400) $(CONFIG_ARCH_S3C2410) $(CONFIG_ARCH_MX1ADS) $(CONFIG_ARCH_PXA)4.2.9 arch/arm/kernel目录下的文件debug-armv.s 修改 在该文件中添加如下代码,目的是关闭外围设备的时钟,以保证系统正常运行。#elif defined(CONFIG_ARCH_S3C2410) .macro addruart,rx mrc p15, 0, rx, c1, c0 tst rx, #1 MMU enabled ? moveq rx, #0x50000000 physical base address movne rx, #0xf0000000 virtual address .endm .macro senduart,rd,rx str rd, rx, #0x20 UTXH .endm .macro waituart,rd,rx .endm .macro busyuart,rd,rx1001: ldr rd, rx, #0x10 read UTRSTAT tst rd, #1 2 TX_EMPTY ? beq 1001b .endm4.2.10 arch/arm/kernel目录下的文件entry-armv.s 修改CPU初始化时的处理中断的汇编代码#elif defined(CONFIG_ARCH_S3C2410)#include .macro disable_fiq.endm.macro get_irqnr_and_base, irqnr, irqstat, base, tmpmovr4, #INTBASE virtual address of IRQ registersldrirqnr, r4, #0x8 read INTMSKldrirqstat, r4, #0x10 read INTPNDbics irqstat, irqstat, irqnrbics irqstat, irqstat, irqnrbeq1002fmovirqnr, #01001:tstirqstat, #1bne1002f found IRQaddirqnr, irqnr, #1movirqstat, irqstat, lsr #1cmpirqnr, #32bcc1001b1002:.endm.macro irq_prio_table.endm4.2.11 arch/arm/mm目录下的相关文件 那里面则是移植好的有关arm的内存管理的代码。在mm-armv.c中,把init_maps-bufferable = 1;即可。init_maps是一个map_desc型的数据结构。Map_desc的定义在/include/asm-arm/mach/map.h文件中。4.2.12 arch/arm/mach-s3c2410目录下的相关文件那里面则是针对s3c2410这款处理器编写的所需代码。到此,移植的概要基本结束。本次实验内核移植的源码压缩文件、文件系统的压缩文件可以再试验电脑的E:ARMertar.gz中找到。分别是kernel0.tar.bz2、root_tech.tar.bz2。五、linux的内核、文件系统编译与下载5.1 编译linux内核试验提供的kernel0.tar.bz2需要修改其解压完成主目录中的Makefile文件,使用vim编辑器打开找到24行修改之!编译一份可以运行的linux,首先要对linux 进行配置。一般是通过make menuconfig 或者make xconfig 来实现的。我们选择make menuconfig,里面的设置项目基本调整完毕,可以不作改动,查看完成直接退出,然后需要如下几步:make dep这个仅仅是在第一次编译的时候需要,以后就不用了,为的是在编译的时候知道文件之间的依赖关系,在进行了多次得编译后,make 会根据这个依赖关系来确定哪些文件需要重新编译、哪些文件可以跳过make clean(该命令用于清除以前构造内核时生成的所有目标文件、模块文件和临时文件)make zImage编译内核。编译通过后,在目录arch/arm/boot下生成zImage内核文件。5.2 制作cramfs文件系统利用工具软件MKCRAMFS制作cramfs文件系统,MKCRAMFS工具在ARMer/tar.gz目录下,该文件系统是一个只读压缩的文件系统,文件系统类型可以是ext2,ext3等等。我们提供的一个系统目录是root_tech。它里面包含将来要用到的所有的文件,它在/ARMer/tar.gz/的目录内,root_tech.tar.bz2。把制作工具和root_tech放在同一个文件夹下,在终端下切换到那个文件夹目录下使用命令$ MKCRAMFS root_tech Leefs.cramfs 就可把root_tech制作成文件名为Leefs.cramfs 图4-3-2的只读的压缩的cramfs文件系统了。系统启动后,内核将把它加载到内存中,解压。图4-3-2为文件系统的目录。利用MKCRAMFS工具把新的root_tech制作成cramfs文件系统。如需要的话也可以在压缩之前把用户编写的程序添加到用户目录内,一并压缩。完成以上工作需要使用U盘把制作的zImage、Leefs.cramfs一并拷贝出来。5.3 内核和文件系统的下载5.3.1利用vivi通过超级终端下载vivi在WINDOWS下启动超级终端,设置其(115200,8位数据,1位停止位,无奇偶校验)。一般新的试验系统需要下载bootloader来引导启动开发板。可通过JTAG接口下载。本实验板已经下载好了vivi,如果需要重新下载,用串口线连接实验系统和PC机的串口。系统上电,敲击空格键进到vivi界面,在超级终端的vivi命令行下输入:vivi load flash vivi x,之后,通过xmodem协议发送vivi文件:viviLee,等待文件传送完成。可以使用part show 查看flash分区信息。5.3.2利用vivi烧写内核和root文件系统在超级终端的vivi命令行下输入:vivi load flash kernel x,通过xmodem协议发送kernel文件:zImage,等待文件传送完成。在超级终端的vivi命令行下输入:vivi load flash root x,通过xmodem协议发送root文件: Leefs.cramfs,等待文件传送完成。(Notice:提供两个系统文件:Leefs.cramfs和big.cramfs。miniroot.cramfs是一个小型的linux,主要用于建立一个Linux环境,并可以在此基础上使用后续的U盘挂载烧写、网络烧写方法烧写大的root系统,它在实验软件/small_sys/目录中,big.cramfs在/实验软件/big_sys/目录下。串口烧写速度太慢。慢的要人老命!)Vivi启动界面 下载zImage文件 完成下载内核5.3.3利用网络烧写软件imagewrite烧写内核和root文件系统根据第1章实验步骤的第4步,在LINUX系统下启动nfs,并且将存放供下载的可执行文件的目录共享。Imagewrite文件在/实验软件/tools内。在实验系统上mount LINUX主机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论