uClinux启动顺序论述.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
uClinux 启动顺序研究 小组成员: 陈伟静1061000255 陈晓1061000256 关然1061000260 侯雪峰1061000261 摘要:本文主要介绍了嵌入式系统uClinux的启动过程分析,并对相关的文件进行了注释说明,便于学习者更轻松容易的了解uClinux的启动过程和掌握改写的方法。 关键词: uClinux; 启动顺序; kernel; start_kernel 【Abstract】:This paper introduces uClinux embedded systems startup process analysis, and documents related to the explanatory notes to facilitate learners understanding easier uClinux startup process and to master the method of rewriting. 【key word】:uClinux;Boot sequence; kernel; start_kernel 引言: 32位ARM嵌入式处理器具有高性能、低功耗、高性价比的特性,已被广泛应用于消费电子产品、无线通信、控制和网络通信等领域。uCinux是专门为无MMU处理器设计的嵌入式操作系统,已支持ARM、Motorola等微处理器。目前采用ARM+uCinux作为嵌入式系统的一种开发模式非常普遍一个基于uCinux的完整的嵌入式系统由三个部分组成,即系统引导程序Bootloader、uCinux操作系统内核和文件系统。嵌入式系统的启动引导技术是嵌入式系统开发的一个难点,系统启动引导的成功与否决定了应用程序的运行环境是否能正确建立,系统启动成功是应用正确运行的前提而uCinux内核的启动过程也是其中重要一环,分析uCinux的启动过程,可以加快系统启动速度、正确建立应用环境。Bootloader是CPU开机后执行的第一个程序,它的任务就是将内核(压缩或是非压缩)装载到内核要求的地址。内核引导程序部分有狭义和广义之分,狭义指内核运行前的一段代码,一般在压缩的内核映像前有一段解压缩程序,负责将内核解压缩到某个地址,从开始解压缩到将控制权交给解压缩好的内核,这一段代码称为内核的引导部分。广义定义还要包括内核初始化部分,即直到有进程产生才算引导程序结束。 可将uClinux系统内核启动过程总结为一下几个阶段:(1)指向复位地址入口处的Bootloader代码。Bootloader完成一些基本的初始化,将系统的软硬件环境带到一个合适的状态;(2)Bootloader将控制权交给操作系统内核的引导程序后,开始uClinux内核的加载;(3)uClinux内核加载引导完成,启动init进程,完成系统的引导过程。 下图为一个简单的内核启动过程图,主要分为bootloader和内核两部分。 内核启动过程图 uClinux启动过程 嵌入式设备上电启动后,Flash中的程序获得控制权,Flash中的程序包括bootloader和一个压缩过的内核(另外还含有一个romfs的文件系统)。Flash中的程序首先配置内存地址,将本身由原来系统默认的地址配置为0x0到0x200000(2MByte),SDRAM配置为0xl000000(16MByte)到0x2000000(32MByte),然后把Flash的内容整体拷贝SDRAM中。拷贝完后,将SDRAM地址重新配置为0x0到0xl000000,F!ash的地址改为0xl000000到0xl200000。注意,这里Flash和RAM地址是同时修改的,修改地址后,接下来的指令就将从SDRAM中获得,由于SDRAM中的程序和原来Flash中的程序一样,并且地址也一样,所以不会影响指令的执行。 这里要说明一点的是,很多NOMMU的处理器上电后都是从地址0X0读程序并开始执行的,这是Flash地址,但处理器的中断向量地址表一般也都会放在0x0地址开始的RAM中,所以NOMMU的处理器一般都要经过上述的初始化过程,才可以使用自己编写的中断程序。而MMU的处理器可以通过MMU将物理地址中的0X0地址换成逻辑的非0X0地址。完成上面的工作后,SDRAM中的程序就解压缩内核到0x8000地址,最后跳到该地址执行。 当Bootloader将控制权交给内核的引导程序时,第一个执行的程序就是head,它完成了加载内核的大部分工作;misc.c则提供加载内核所需要的子程序,其中解压内核的子程序是head.调用的重要程序,另外内核的加载还须知道系统的硬件信息,该硬件信息在hardware.h中定义并被he

文档评论(0)

yy556911 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档