Linux操作系统移植.ppt_第1页
Linux操作系统移植.ppt_第2页
Linux操作系统移植.ppt_第3页
Linux操作系统移植.ppt_第4页
Linux操作系统移植.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、Linux操作系统移植,组长:冯启阳 组员:李宽 唐杏 殷贝 马鼎 马妍璐,项目内容,1、嵌入式linux概述 2、bootloader概述 3、 linux开发环境建立 4、 uboot移植 5、 linux内核移植 6、 linux文件系统移植 7、 项目任务,嵌入式linux概述,嵌入式linux -是将日益流行的Linux操作系统进行裁剪修改,使之能在 嵌入式计算机系统上运行的一种操作系统。 嵌入式Linux的特点 -是版权免费、性能优异、软件移植容易、代码开放、有许 多应用软件支持、产品开发周期短、新产品上市迅速、实 时稳定安全等。,嵌入式linux特性,精简的内核,性能高、稳定,多

2、任务。 适用于不同的CPU,支持多种体系结构,如X86、ARM、MPIS、SPARC等。 能够提供完善的嵌人式GUI以。 提供嵌人式测览器、邮件程序、MP3播放器、MPEG播放器、记事本等应用程序。 提供完整的开发工具和SDK,同时提供PC上的开发版本。 用户可定制,可提供图形化的定制和配置工具。 常用嵌入式芯片的驱动集,支持大量的周边硬件设备,驱动丰富。 针对嵌人式的存储方案,提供实时版本和完善的嵌入式解决方案。 完善的中文支持,强大的技术支持,完整的文档。 开放源码,丰富的软件资源,广泛的软件开发者的支持,价格低廉,结构灵活,适用面广。,嵌入式Linux版本,RT-Linux 这是由美国墨

3、西哥理工学院开发的嵌入式Linux操作系。 成功地应用于航天飞机的空间数据采集、科学仪器测控和 电影特技图像处理等广泛领域。 uCLinux uCLinux主要是针对目标处理器没有存储管理单元MMU( Memory Management Unit)的嵌入式系统而设计的。 特点:稳定、良好的移植性、优秀的网络功能、对各种文 件系统完备的支持和标准丰富的API。 其编译后目标文件可控制在几百KB数量级,并已经被成功 地移植到很多平台上。,红旗嵌入式Linux由北京中科院红旗软件公司推出的嵌入式Linux是国内做得较好的一款嵌入式操作系统。 中科院计算所自行开发的开放源码的嵌入式操作系统:Easy

4、Embedded OS(EEOS)也已经开始进入实用阶段了。该款嵌入式操作系统重点支持p-Java。系统目标一方面是小型化,另一方面能重用Linux的驱动和其它模块。,bootloader概述,引导加载程序是计算机系统加电后运行的第一段软件代码 对于计算机系统来说,从开机上电到操作系统启动需要一个引导过程,一个嵌入式Linux系统从软件的角度来看,通常可以分为四个层次:,1.引导加载程序 包括固化在固件(firmware)中的引导代码(可选)和 BootLoader两大部分。 2Linux内核 特定于嵌入式板子的定制内核以及内核的启动参数。 3文件系统 包括根文件系统和建立于Flash内存设备

5、之上文件系统。通 常用ramdisk来作为rootfs。 4用户应用程序 特定于用户的应用程序。有时在用户应用程序和内核之间 可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI 有:MicroWindows和MiniGUI等 。,BootLoader的操作模式(Operation Mode),两种不同的操作模式: 启动加载模式(Boot loading) 远程下载模式(Downloading)。 仅对于开发人员才有意义。 1)启动加载模式 这种模式也称为自主(Autonomous)模式,BootLoader从目 标机上的某个固态存储设备上,将Kernel Image加载到RAM中 运行,整

6、个过程并没有用户的介入。这种模式是嵌入式产品发 布时的通用模式,也是BootLoader的正常工作模式,因此在嵌 入式产品发布的时侯,BootLoader显然必须工作在这种模式,远程下载模式 在这种模式下,目标机上的BootLoader通过串口连接或网 络连接等通信方式,从宿主机下载文件,比如:下载 Kernel Image和Root Filesystem Image等。从宿主机下载 的文件,通常先被BootLoader保存到目标机的RAM中,然 后再被BootLoader写到目标机中的FLASH类固态存储设备 中。BootLoader的这种模式通常在第一次安装内核与根文 件系统时被使用。,像

7、Blob或U-Boot等这些功能强大的BootLoader,通常都支持这两种工作模式,并且允许用户在这两种工作模式之间进行切换。比如,U-Boot在启动时处于正常的启动加载模式,但是它会延时5秒,等待终端用户按任意键将U-Boot切换到下载模式。如果在5秒内没有按键,则U-Boot继续启动Linux内核。,BootLoader的工作流程,1.启动操作系统的方式 BootLoader的主要功能是引导操作系统 (1)磁盘启动方式 (2)网络启动方式 需要把BootLoader安装到开发板上的EPROM或Flash中。BootLoader通过以太网接口远程下载Kernel Image和Root Fi

8、lesystem Image等,Flash启动方式 大多数嵌入式系统都使用Flash存储介质。Flash有很多类型,包括NOR Flash、NAND Flash和其它半导体盘。其中,NOR Flash和NAND Flash使 用最为普遍。 NOR Flash,也就是线性Flash,支持随机访问,即代码可以直接在NOR Flash上执行。 除了NOR Flash,还有NAND Flash、Compact Flash、DiskOnChip等,这 些Flash具有价格低、存储容量大的特点。但是,这些芯片一般是通过专用 控制器的I/O方式来访问,不能随机访问,因此引导方式跟NOR Flash也不 同。

9、在这些芯片上,需要配置专用的引导程序。通常,这种引导程序起始 的一段代码就把整个引导程序复制到RAM中运行,从而实现自举启动,这 跟从磁盘上启动有些相似。,BootLoader一般存储在Flash芯片上。另外,Kernel Image和Root Filesystem Image等也可以存储在Flash(通常是NAND Flash)上。 通常把Flash分区使用,每个区的大小应该是Flash擦除块大小的整数倍。 BootLoader区:BootLoader一般放在Flash的底端或者顶端,这要根据处理器的复位向量设置情况而定。不过,BootLoader的入口地址一定是CPU上电后执行的第一条指令

10、的地址。 参数区:是BootLoader向操作系统内核传递的参数所在的区域。 内核映像区:BootLoader引导操作系统内核,就是从该区将Kernel Image解压到RAM中,然后跳转到Kernel Image的入口地址去执行。 文件系统区:如果使用Ramdisk文件系统,BootLoader需要把它解压到RAM中。如果使用JFFS2文件系统,将直接挂接为根文件系统。 其它区:还可以分出其它一些数据区,这要根据实际需要和Flash大小而定。 这些分区由开发者定义,BootLoader直接读写对应的偏移地址。在Linux内核空间,可以配置成MTD设备来访问Flash分区。另外,有的BootL

11、oader支持分区的功能,如Redboot等,可以创建Flash分区表,并且内核的MTD驱动可以解析出Redboot的分区表。,2.BootLoader启动流程,大多数BootLoader分为stage1和stage2两部分。 Stage1-包含了依赖于CPU体系结构的代码,比如设备初始化代码等,并且,通常是用汇编语言来实现,以达到短小精悍的目的。 Stage2-通常是用C语言来实现,这样可以实现更复杂的功能,而且代码具有更好的可读性和可移植性,stage1 BootLoader在stage1中主要完成以下工作: (1)基本硬件设备初始化 目的是为stage2的执行以及随后的kernel的执行

12、准备好一些基本的硬件环境 。通常包括以下步骤(以执行的先后顺序): 屏蔽所有中断:为中断提供服务通常是OS设备驱动程序的责任,因此在BootLoader的执行过程中可以不必响应任何中断。中断屏蔽可以通过写CPU的中断屏蔽寄存器或状态寄存器(比如ARM的CPSR寄存器)来完成。 设置CPU的速度和时钟频率。 RAM初始化:包括正确设置系统内存控制器的功能寄存器以及内存控制寄存器等。 初始化LED:一般是通过GPIO来驱动LED,用来表明系统的当前状态(OK或Error)。如果开发板上没有LED,也可以通过初始化UART向串口打印提示信息。 关闭CPU内部指令/数据cache。,2)为stage2

13、准备RAM空间 为了获得更快的执行速度,通常把stage2加载到RAM空间中执行,因此必须为加载stage2准备好一段可用的RAM空间范围。 由于stage2通常是用C语言实现,因此在考虑空间大小的时候,除了stage2可执行映象的大小外,还要将堆栈空间也考虑进来。另外空间大小最好是memory page大小(通常是4KB)的整数倍。 (3)拷贝stage2到RAM中 stage2的可执行映像在固态存储设备的存放起始地址和终止地址; RAM空间的起始地址。 (4)设置堆栈指针sp: 堆栈指针的设置是为执行stage2的C语言代码做好准备。 (5)跳转到stage2的入口地址,在上述一切都就绪后

14、,就可以跳转到stage2去执行了。比如,在ARM系统中,这可以通过修改PC寄存器的值来实现。 2)stage2 (1)用汇编语言跳转到main函数 虽然stage2的代码通常是用C语言实现的,但是与普通C语言应用程序不同的是 ,在编译和链接BootLoader这样的程序时,不能使用glibc库中的任何库函数,这样 就带来一个问题:从哪里跳转到main()函数呢?直接把main()函数的起始地址作为 整个stage2执行映像的入口地址或许是最直接的想法,但是,这样做有两个缺点: 无法通过main()函数传递函数参数。 无法处理main()函数的返回情况。 一种巧妙的方法是利用trampolin

15、e(弹簧床)的概念。即用汇编语言编写一段 trampoline小程序,并将这段小程序的起始地址作为stage2可执行映象的入口地址 。然后在trampoline小程序中用CPU跳转指令跳入main()函数中去执行;当main()函 数返回时,PC的值再次指向trampoline小程序的起始地址。 简而言之,这种方法的思想就是用这段trampoline小程序作为main()函数的外部包裹 (external wrapper)。,(2)初始化本阶段要使用到的硬件设备 (3)检测系统的内存映射 (4)加载Kernel Image和Root Filesystem Image (5)设置内核的启动参数。

16、 (6)调用内核 stage2调用Linux内核的方法是直接跳转到内核的第一条指令处,也即直接跳转 MEM_START0 x8000地址处。在跳转时,下列条件要满足: CPU寄存器的设置: R00;R1机器类型 ID;关于 Machine Type Number,可以参见 linux/arch/arm/tools/mach-types。R2启动参数标记列表在RAM中起始基地址; CPU模式: 必须禁止中断(IRQs和FIQs);CPU 必须SVC模式; Cache和MMU的设置: MMU 必须关闭; 指令 Cache 可以打开也可以关闭;数据 Cache 必须关闭;,linux开发环境建立,虚拟机和linux安装配置 虚拟机安装 VMware-workstation-6.5.1-126130”目录下包含了虚拟机的安装软件的压缩包,安装了之后,就可以在PC上不用改动分区的情况安装Linux操作系统了。 Linux安装 Ubutu federal 10,交叉编译环境的建立,交叉编译-在一个平台上生成可以在另一个平台上执行的代码 1)工具 EABI_4.3.3_EmbedSky_20091210.tar.

温馨提示

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

最新文档

评论

0/150

提交评论