欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    ARM Linux启动过程分析.docx

    • 资源ID:1677885       资源大小:30.03KB        全文页数:6页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ARM Linux启动过程分析.docx

    ARM1.inUX启动过程分析赵楠本章学习目标: 了解1.inUX结构及平台属性 f解boot1.oader的相关知识 熟悉并掌握启动过程摘要:从嵌入式系统到超级效劳站,嵌入式1.inux的可移殖性使得我们可以在各种电产品上看到它的身影.1.inux是一个完整通用的UniX类分布式操作系统,它的结构紧凑、动能强、效率高、可移植性好且在Interne1.上可自由取用.而于不同体系结构的处理落来说1.inUX的启动过程也有所不同.本文以S3C241OARM处理器为例,详细分析了系统上电后boot1.oader的执行流程及RM1.inUX的启动过程.关键词:ARM1.inuxboot1.oader启动过程Abstract:fromthee三beddcdsystentosuperservicestation,embedded1.inuxportabi1.itya1.1.owsUStovariouse1.ectronicproductsinthefor®ofseeingit.1.inuxisacomp1.etegenera1.Unixc1.assdistributedoperatingsysten.it*sstructureconpncttthefunctionisstrong,highefficiency,goodportabi1.ityandintheInternetcanbefreetotake.Eordifferentsystemstructureoftheprocessoristhestartofthe1.inuxprocessisa1.sodifferent.BasedontheARMprocessorS3C21IOasanexamp1.e,thepaperana1.ysessystemaftertheexecutionf1.owofe1.ectricboot1.oaderandRM1.inuxstart-upprocess.Keywords:ARM1.inuxboot1.oaderstart-upprocess1 .引1.inux最初是由瑞典林尔辛基大学的学生1.inusTorVi1.1.dS在1991年开发出来的,之后在GNU的支持下,1.inux来得了巨大的开展.虽然1.inux在桌面PC机上的普及程度远不及微软的Windows操作系统,但它的开展速度之快、用户数;及的H益增笠,也是微软所不能轻视的。从嵌入式系统到邮级效劳站,1.inux已获得广泛的应用。1.inux是一个完整通用的UniX类分布式操作系统,它的结构紧凑、功能强、效率高、可移植性好且在Internet上可自由取用.1.inux和UniX操作系统一样,操作系统的主要功能集中在内核,内核中包含进程管理、文件管理、设备管理和网络管埋等同部.近些年来1.inux在嵌入式领域的迅猛开展,史魁给1.inux注入了痂的活力.1.1 内核结构及平台相关性本文以分析的内核版本为2.6.9.当我们使用tar命令将IinUX-2.6.9.tar.bz2解开时,内核源代码被放到了IinUX-2.6.9/目录中。1.inux内核各功能文件分别存放在IinUX-2.6.9/目录下的相应子目录中。1.inux操作系统可以工作在多种不同硬件平台上,如80n86CPI系列(80386以上)、SUNSParC64和ara26等.为了让1.inUX表达优良的可移植性,1.inux内核代码针对不同的便件平价包含有对应的启动和初始化程序.这些程序处于HrCh/子目录中,用户完全可以根据自己的需要,从内核代码中各取所需,即时编译和更换系统内核,这也是1.inUX操作系统获得世界各地网络宠好者普遍支持的主要原因。鉴于绝大局部1.inUX应用于In1.e1.80x86系列平台,所以本文也仅限对1.inUX在80x86系列平台的启动过程进行分析。本文所要探讨的启动程序位于archi386boo1.目录.系统的启动过程主要由bootsect,s、setup.s和head,s等3个汇编程序完成,其中boot1.oader是系统启动或宓位以后执行的第一段代码,它主要用来初始化处理器及外设,然后两用1.inUX内核.1.inux内核在完成系统的初始化之后需要挂我某个文件系统做为根文件系统(Root),根文件系统是1.inux系统的核心组成局部,它可以做为1.inUX系统中文件和数据的存储区域,通常它还包括系统配置文件和运行应用软件所需要的库。应用程序可以说是嵌入式系统的“灵魂*.它所实现的功能通常就是设计该嵌入式系统所要到达的目标.如果没有应用程序的支持.任何硬件上设计精良的嵌入式系统都没有实用意义.从以上分析我们可以百出boot1.oader和1.inux内核在嵌入式系统中的关系和作用.BOotIoader在运行过程中虽然具有初始化系统和执行用户给入的命令等作用,但它最根本的功能就是为了启动1.inux内核.在嵌入式系统开发的过程中,很大一同制精力都是花在bo。I1.oader和1.inux内核的开发或移植上,如果能清楚的了解boot1.oader执行流程和1.inUX的启动过程,将有助于明确开发过程中所衡的工作,从而加速嵌入式系统的开发过程.而这正是本文的所要研究的内容.3. Bt1.oader3.1 BOOtIOader的概念和作用BootIoader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于PC机上的BIOS,在完成对系统的初始化任务之后,它会将非易失性存储器(通常是FmSh或IK)C等)中的1.inux内核拷贝到RAM中去,然后跳转到内核的第条指令处维续执行,从而启动1.inUX内核。由此可见,boot1.oader和1.inux内核有料密不可分的联系,鬟想清楚的了解1.inUX内核的启动过程.我们必须先得认识bout1.oader的执行过程这样才能对嵌入式系统的整个月过程行清晰的家旌.3.2 BOOt1.Oader的执行过程不同的处理器上电或发位后执行的第一条指令地址并不相同,对于ARM处理器来说,该地址为0x00000000.对于一般的嵌入式系统,通常把F1.ash等非历失性存储港映射到这个地址处,而buo1.IOadCr就位于该才饰器的最前端,所以系统上电或复位后执行的第一段程序使是boot1.oader,而因为存储boot1.oader的存储涔不同.boot1oader的执行过程也并不相同,下面将具体分析.嵌入式系统中广泛采用的非易失性存储器通用.是F1.ash,而F1.ash又分为NorF1.ash和NandF1.aSh两种.它们之间的不同在于:NorF1.ash支持芯片内执行(XIP,eXecutcInP1.ace),这样代码可以在FIaSh上直接执行而不必捋贝到RAM中去执行.而NandF1.aSh并不支持XIP,所以要想执行NandF1.ash上的代码,必须先招兵拷贝到RAM中去,候后跳到RAM中去执行.实际应用中的boot1.oader根据所需功能的不同可以设计得很复杂,除完成根木的初始化系统和调用1.inUX内核等根木任务外,还可以执行很笠用户输入的命令,比方设前1.inUX启动参数,给F1.ash分区等:也UJ以设计得很简单,只完成农根本的功能,他为了能到达启动1.inUX内核的目的,所有的boot1.oader都必须具备以下功旎:1 .初始化RAM因为1.inux内核一般都会在RAM中运行,所以在调用1.inux内核之前bo。I1.oader必须设置和初始化RAM,为调用1.inUX内核整好准备,初始化RAM的任务包括设置CP1.的控制存放器参数,以便能正常使用RAM以及检测RAV大小等.2 .初始化串口申口在1.inUX的启动过程中有芍非常小要的作用,它是1.inUX内核和用户交互的方式之1.1.inux在启动过程中可以将信息通过串口输出,这样便可清楚的了解1.inUX的启动过程。虽然它并不足boo1.1.oader必须要完成的工作.但是通过串口娥出信息是调试boot1.oader和1.inUX内核的强有力的工具,所以一般的boot1.oader布会在执行过程中初始化一个中”做为两试端1.3 .检测处理号类型Bu。IIUader在调用1.inUX内核前必须检测系统的处理器类型,并将其保存到某个常量中提供应1.inUX内核.1.inux内核在启动过程中会根据该处理器类型调用相应的初始化程序.4. ”1.inUXjB动XBoOtIoader在执行过程中必须设出和初始化1.inux的内核启动参数,目前传递启动参数主要枭用两种方式:即通过structparamstruct和SIrUCIIaR(标记列我,1.aggedIis1.)两种结构传递structparam_S1.rUC1.是一种比较老的参数传递方式,在2.4版本以前的内核中使用较多.从2.4版本以后1.inux内核根本上采用标记列衣的方式.但为了保持和以前版本的兼容性,它仍支持structParam_StrUCt参数传递方式,只不过在内核启动过程中它将被转换成标记列表方式。标记列表方式是林比较新的参数传递方式,它必须以ATAG.CORE开始,并以ATAGNoNE结尾,中间可以根据需要参加其他列表.1.inux内核在启动过程中会根描该启动参数进行相应的初始化工作.5. 调用1.inuX内核映像BOOtIOader完成的最后一项工作便是调用1.inUX内核,如果1.inUX内核存放在F1.ash,并且可宜接在上面运行(这里的F1.ash指NorF1.ash),那么可直接跳转到内核中去执行.但由于在P1.ash中执行代码会有种种限制,而且速度也远不及RAM快,所以-般的嵌入式系统都是符QnUX内核拷贝到RAM中,然后跳转到RAM中去执行。不管哪衿情况,在跳到1.inux内核执行之前CUP的存放器必须湎足以下条件:r0=0,r1.=处理器类型.r2=标记列表在RAM中的地址.4 .启动过程分析主要对buo1.sec1.s、setup,s和head,s的工作机理做了较为详细的阐述.4.1 bootsect模块分析bootsect,s代码是磁盘引导块程序,驻留在引导盘的引导扇区(0道,0磁头,第1扇区在PC加电ROMBIOS自检后,boo1.sect.s由BIOS自动加我到内存0x7Coo处,然后将自己移到内存0x90000处,图2代码显示了boo1.scc1.s的移动过程,其中#BOOTSEG为0x7CoO.JiINITSEG为0x9000,接卜来,程序利用BIoS中断,INT0x13招SetUP模块从磁盘第2个扇区开始读到0x90200开始处.共读4个扇区.如果读出描误,则CF标志置位,程序复位动器.并受试.加段SetUP模块后,程序利用中断取感盘驱动器参数,并将中断返网的每磁道南区数保存在变Iftsectors中,然后程序将SyStem模块加我到内存OX1.oOoO处。加我SySIem模块期间,显示“1.oadingSySIe信息.为了提高加载速度,只要可能,就每次加成整条横道的数据。从任盘读取一次数据后,程序就比较当前所波段是否就是系统数据末端所处的段SENDSEG),如果不是.就跳转至Ok1.read标号处继续读数据。M后,程序向状驱控制卡的猴动潜门0x3f2写0.关闭软驱电动机.程序运行jmpiO,SET1.PSEG,跳转到0x9020:0000处,CpU开始执行Seu1.P模块。1.UVg.QhDiJISiCJavdo,xxxova.三5I!U1ST>11Vf孱丫工b",0对sub»sisubd>rXiSTOWIf1.2bootxcct移动代以4.2 setup模块分析SetUP.s首先利用RoMBIoS中断读取机器系统参数(光标位黄、扩展内存数、硬也参数去等),并将这些数据保存到内存0x9CIOcIO开始的位置(陵盖掉了Imxhscci程序晨这%参数将被内核中相关程序使用,例如设符物动程序集中的ttyio.c.随后系统进入保护模式运行.CPt1.在实模式下运行,寻址一个内存地址主要是使用段基址和段内偏格伯段位被存放在段存放器中:而在保护模式运行方式下,段存放涔中存放的是一个描述衣中某项的索iJIffto索引信指定的描述符项中含有御要寻址的内存段的基地址、段的最大长收值和段的访问级别等信息,和实模式卜的寻址相比,段存放器值换成了段描述符项隹引。接卜来,程序关闭中断,将SySIC1.n模块整体向内存低端移动OX100K每次移动0x8000字,循环执行8次.然后程序执行Iidtidt_48加载中断描述符我(idt)存放器:执行IgdtgdJ48加我全局描述符表(gdt)存放器.此时中断描述符表中只有一个空J(ft全为0),全局描述符友中有3个描述符项;第1项无用,但必须存在:笫2项(索引值OXO8是系统代码段描述符,所定义的段基址为0,段中代码可被读和执行,段长为8M;第3项(索引值ONI0)是系统数据段描述符,所定义的段的基址为0,段中数据可读和可写.段限长为8M.最后,程序里置协处理济,对8259中断控制芯片煽程,完成进入保护虚地址模式的所有准备工作,通过设置机器状态字MSW(第0号控制存放器CKO的低16位)中的PE位使CPIJ进入保护模式,开始运行SySIen模块中的head.s(指令jmpi0,8)。注意,CPV已在保护模式下运行,CSW8表示诂求特权级0,Hf用全局描述符表中的笫1项(索引值OXO8)°图3显示了SemPs结束后内存分布。图3setup结索后内存分布5 .总结1.inux内核是一个非常庞大的工程,经过十多年的开展,它已从从最初的几百KB大小开展到现在的几百兆.消嘛的了解它执行的每一个过程是件非常困难的事.但是在嵌入式开发过程中,我们并不需要十分清楚1i11ux的内部工作机制,只要适当修改IinUX内核中那些与硬件相关的局部,就可以将IinuX移植到其它目标平台上。通过对Iinux的扇动过程的分析,我们可以看出哪些是和硬件相关的,哪些是Iinux内核内部已实现的功能,这样在移植IinUX的过程中便有所针对.而IinUX内核的分层设计相使IinUX的移植变得更加容易”,参考文献1 Ar1.rewST,A1.bun1.SW.Operatingsystem(desiRiandimp1.ementation)M.Prentice-Ha1.1.Intemation1.inc,1996.2刘淼.嵌入式系统接11设计与1.inUX驱动程序开发M.北京航空航天大学出版社.2006.63BnbeddedSystemConferenceSanFrancisco.March.200241.inUX内核编程M.陈莉君,贺炎,刘南林.机械工业出版社.2006.7ARM1.inux启动过程分析学生:赵楠学号:2008310606指导老师:江春茂年级I2008级班级:A(1)班专业I计算机科学与技术系别:计算机科学与信息技术学院I计算机科学与信息工程学院哈尔滨师范大学2011年12月2日

    注意事项

    本文(ARM Linux启动过程分析.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开