基于ARM的嵌入式Linux系统移植技术研究与应用.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学
硕士学位论文
基于ARM的嵌入式Linux系统移植技术研究与应用
姓名:钱连举
申请学位级别:硕士
专业:计算机应用技术
指导教师:江春华
20060103
摘要
摘要
近年来,随着计算机技术、通信技术的迅速发展,特别是互联网的迅速普及和3c(计算机、通信、消费电予)合一的加速,微型化和专业化成为发展的新趋势,嵌入式系统开发己经成为了信息产业的热点。
基于ARM硬件平台及Linux操作系统的嵌入式产品应用开发已成为主流。
而在嵌入式的开发过程中,针对目标平台的操作系统移植成为影响嵌入式产品开发进度的一个关键因素。
本文正是基于上述现状,对基于ARM平台的Linux系统移植技术进行了全面的分析,对系统引导、文件系统等诸多方面的移植进行了研究与实现。
主要工作包括:
1.系统分析了Linux内核的结构、各功能模块及其对系统移植的影响,并总结分析了内核对系统移植的支持和限制。
2.提出了在Linux下进行系统移植的内容、重点及基本方法,分析了Linux源代码树与ARM系统移植的相关性。
3.剖析了嵌入式Linux系统引导、内核启动、设备驱动、文件系统等相关技术。
4.在此基础上,对Linux向目标平台的系统移植进行了实现。
关键词:嵌入式系统,Linux,ARM,系统移植,内核
Abstract
Abstract
Recently,alongwiththefastdevelopmentofcomputerandcommunicationstechnology,especiallyrapidpopularizationofIntemetandsyncretismaccelerationofspecialization
turnintothe3C(ComputerCommunication&ConsumeElectric),micromationandbec
omethemaindevelopingtrend,atthesanletime,embeddedproducts
tothemainstreamofinformationindustry.Systemportingtarget‘platformisthemain
factorwhichaffectstheprocessofembedded—systemsdevelopment.
AStheaboveissues,thisthesismakesadetailedanalysisattheoriesandtechniquesforportingLinuxtoARMembeddedSystem.ThisthesisalsoexploresandimplementedtheportingofBootIoader.filesystemandotherparts.
areThemainresultsasfollows:
1.ThearchitectureofLinuxiSanlyzed,andthetelationofthemwithLinux
tOLinuxkernelportingispresentedindetail.Thesupport+sandrestricationof
portingisintrducedtoo.
2.Thecontent,emphasisandbasicapproachresourcearesystempresented.ThenthetreeofthecodesofLinuxis
porting.analyzed,especiallythepartswhichhasmuchrelationwithARMsystem3.The
systemareportingtechniquesofBootloader,kemel’sstartup,devicedriver,fileanalyzedindetail:
4.Finally,theimplementationoftargetplatformisgNenKeywords:EmbeddedSystem,ARM,Linux,Systemporting,KernelII独创性声明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。
据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得电子科技大学或其它教育机构的学
位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。
签名:j薛耍扛日期:哆,‘年,月g日
关于论文使用授权的说明
本学位论文作者完全了解电子科技大学有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。
本人授权电子科技大学可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。
(保密的学位论文在解密后应遵守此规定)
签名:蝉导师签名:日期:力pg
第一章引言
第一章引言
1.1研究背景及意义
随着通信网络技术和集成电路设计的高速发展,嵌入式系统己成为了IT业的一个焦点。
嵌入式系统大量的应用于自动控制、工业生产、军事技术和家用消费电子等各个领域。
PC已经从高速增长进入到平稳发展的时期,单纯由PC带领的电子产业蒸蒸日上的时代已经成为历史,现在的电子产业的发展需要寻找一个新的发展点。
人们提出了“后Pc时代‘17】[63”的概念,计算机无所不在,无时不有,它渗透到生活和工作的方方面面。
后PC时代的绝大多数的计算机是以非传统意义上的Pc的形式出现的,例如智能手机、个人数字助理、路由器、机顶盒等等。
这些设备中的大多数是以嵌入式系统的形式存在。
开发中国自主知识产权的嵌入式处理器、嵌入式操作系统和嵌入式高端产品,对于我们国家的民族IT业来讲,将有十分重要的战略意义‘7】【闭。
我们应该抓住机遇,组织力量,重点出击,取得主动权。
本文以深圳步进科技(上海)人机电子公司的工业触摸屏开发过程中的相关技术为例,介绍了嵌入式系统开发的一般过程,着重论述了嵌入式操作系统移植过程中的主要内容和关键技术。
1.2Linux操作系统的国内外研究动态
尽管嵌入式系统有着无比广阔的市场需求和发展前景,但嵌入式系统的发展多年来却经历了一个曲折和痛苦的历程。
随着微处理器的产生,价格低廉、结构小巧的CPU和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈就突出表现在了软件方面。
从八十年代末开始,陆续出现了一些嵌入式操作系统,比较著名的有VxWol-kS,PalmOS,Nucleus和WindowsCE,QNx,以及沸沸扬扬的“女蜗计划”,中国人自己的嵌入式操作系统HOPEN,DELTAOS和现在谈论最多的嵌入式Linux操作系统
等等。
在这众多嵌入式操作系统中,嵌入式Linux以其所具备的稳定、高效、易定制、易裁剪、硬件支持广泛、源代码开放等特点,
电子科技大学硕士论文
在嵌入式系统领域近两年内迅速崛起,成为嵌入式领域的一匹黑马。
国际上许多大型的跨国企业己经选中Linux操作系统作为开发嵌入式产品的工具。
现在国外基于嵌入式Linux系统的产品有:韩国三星公司的LinuxPDA可联网的Linux相机,美国Transmeta公司的Linux手机,NetGem的机顶盒,IBM的Linux腕表等。
另外嵌入式Linux还用在手持设备、因特网装置、客户机、防火墙等。
国内的嵌入式Linux厂商也在逐渐发展壮大中,主要的嵌入式Linux厂商有中软、红旗、蓝点、网虎科技和共创软件联盟等。
它们开发的嵌入式Linux均有自己的技术特点。
如中软股份开发的中软嵌入式Linux操作系统,具有微秒级的强实时功能,己经在数据领域得到了很好的应用;中科红旗的嵌入式Linux已在机顶盒、彩票机等方面得到了广泛应用。
Linux作为开发嵌入式产品的操作系统具有巨大的潜力。
虽然Linux在嵌入式领域的发展只有几年时间,但是对有嵌入式要求的技术人员进行的调查结果【16I显示:过去的一年中有13%的用户开始使用嵌入式Linux系统进行开发;有52%的户决定在未来24个月内开始使用Linux作为嵌入式系统为开发原型。
1.3问题的提出
在选择一个操作系统进行产品开发的过程中,要考虑很多问题:例如使用该操作系统进行开发需要哪些开发工具,采用什么样的编译器、调试器等等。
如果说编译器和调试器是操作系统开发的前提,那么操作系统向硬件接口移植的难度就是操作系统到硬件的移植的关键了,它是关系到整个系统能否按期完工的一个关键因素。
因此需要选择那些可移植性程度高的操作系统,从而避免操作系统难以向硬件移植而带来的种种困难,加速嵌入式系统的开发进度。
那些硬件高度相关的问题要求工程师有相当的知识结构背景和经验。
但不管基于什么样的操作系统进行开发,都需要开发人员熟知该操作系统对目标系统的移植所提供的内核支持,移植过程中应该采用的方法和策略以及如何引导系统、启动内核、编写设备驱动程序和构建文件系统等方面的知识,基于以上的嵌入式开发工作中诸多的问题和难点,这篇论文详细阐述了一个完整的嵌入式Linux系统开发过程中的关键技术,以作为参考资料指导嵌入式工程师进行嵌入式开发。
2
第一章引言
1.4研究内容
本文针对嵌入式Linux系统移植存在的普遍问题,并结合深圳步进科技(上海)人机电子公司的工业触摸屏的开发工作,对嵌入式Linux移植以下几个方面进行了探讨:
◆Linux内核的组织结构、模块功能及其对系统移植的支持等相关内容。
◆Linux下进行系统移植的主要内容、重点及基本方法,以及Linux源代码
树与ARM系统移植的相关性。
◆嵌入式Linux系统移植过程中的几项关键内容及移植实现技术:系统引导、
内核启动、设备驱动、文件系统的移植
1.5论文章节安排
本文安排如下:
第一章对本课题研究的背景和意义、Linux操作系统的国内外研究动态等进行了阐述,为后续内容做好铺垫。
第二章从操作系统的特点、发展历程、内部结构方面,阐述了它们对移植的影响。
第三章从移植的角度详细分析了Linux的内部组织结构及其对系统移植的影响,分析了Linux内核对系统移植提供的技术支持,由此提出了在Linux系统移植中的需要处理的问题、难点、步骤和方法,最后通过对Linux源代码目录树的分析,进一步明确源代码树中需要注意和处理的总体范围。
第四章介绍了本次系统移植的目标硬件平台和现有的软件基础,明确了本文系统移植所阐述的内容范围和前提。
第五章以本次开发的目标系统为例,以理论分析为基础,移植实现为目标,围绕系统移植的主要内容做了重点阐述和实现,主要包括以下几个方面:
/详细的分析了Linux系统引导的过程,并具体阐述了U-BOOT对系统的引
导实现;
/深入分析了内核的启动过程,并对内核启动过程中与移植相关的其它几个
阶段进行了分析;
/详细的分析了Linux设备驱动程序的相关理论和移植过程中需注意的相关问题,并以目标平台LCD移植的实现为例,对Linux设备驱动移植的具电子科技大学硕士论文
体过程加以阐述;
/以JFFS2文件系统的移植实现为例,阐述了Linux中根文件系统的构建。
第六章结束语,对全文进行了总结。
4
第二章操作系统与系统移植
第二章操作系统与系统移植
操作系统移植概述
操作系统的出现、使用和发展是自计算机问世以来计算机软件领域的一个重大进展。
操作系统是管理系统资源、控制程序执行、改善人机界面、提供各种服务,合理组织计算机工作流程并为用户有效使用计算机提供良好运行环境的一种
计算机发展到今天,大到巨型机,小到手挣设备,几乎无一例外都配置一种或多种操作系统,操作系统已经成为现代计算机系统的重要组成部分,它为人们建立各种各样的应用环境奠定了重要的基础。
操作系统在计算机系统中的作用可2.1以从三个方面来理解【2】【251。
1.操作系统是用户和计算机硬件之间的接口。
可以认为操作系统是对计算机硬件系统的第一次扩充,用户通过操作系统来使用计算机系统。
经过操作系统改造和扩充过的计算机不仅功能更强,使用也更为方便,应用层用户可以直接调用操作系统提供的各种功能,而无需了解许多软硬件本身的细节,低层开发人员则只需要实现与硬件关系紧密的部分。
2.操作系统为用户提供虚拟机。
操作系统把硬件的复杂性和用户隔离开来。
当计算机覆盖上操作系统之后,可以扩展基本功能,为用户提供一台功能显著增强、使用更加安全、可靠性好、效率明显提高的机器,称为操作系统虚拟机。
3.操作系统是计算机资源的管理者。
操作系统作为计算机硬件资源的管理者,要为用户提供简单有效的使用手段,提高资源利用率。
应用软件
(^pPlicatlnFroorams,
系坑软件
(Utflit血日)
操作系统
(Ope'ationsystem)
计算机硬件
(Comput口Hardware)图2.1操作系统在计算机系统中的作用电子科技大学硕士论文
由图2.1可见,操作系统是计算机系统中最靠近硬件的软件层,是计算机软件系统中和硬件关系最紧密的部分。
因此,要想使操作系统运行在不同的硬件体系结构上,就需要根据相应的体系结构对操作系统进行移植。
而且,随着硬件技术的不断发展,新的电子器件层出不穷,计算机硬件更新换代的速度不断加快。
与此同时,计算机硬件的体系结构也在不断的变化,比如,分页、中断、通道技术
的出现,这些都需要对操作系统进行调整,根据新的硬件体系结构进行移植。
但是,由于操作系统和硬件系统之间的紧密联系以及操作系统本身的复杂性,会给系统移植带来复杂性的主要有以下几个方面:
1.硬件相关性大。
如前所述,操作系统和硬件系统关系紧密,硬件平台的细微变化都可能会对操作系统造成影响。
而操作系统的移植工作就是针对硬件平台展开的,而且在多数情况下,硬件平台的变化都很大,这就需要对操作系统进行大的改动,移植工作难度之大可想而知。
2.操作系统本身较为复杂。
操作系统的设计希望软硬件部分能够区分开,同时硬件部分尽可能小,与其他部分关系清晰,这样才可以增加系统的可移植性。
但是,现代操作系统软硬件之间关系紧密,很难将软件部分和硬件部分完全分开。
操作系统结构复杂,各部分之间关系紧密,接口复杂。
这就大大增加了操作系统移植的难度。
3.注重效率。
操作系统是计算机系统中使用最为频繁的软件,操作系统本身的效率直接影响到整个计算机系统的效率。
为了提高硬件系统的利用率以及操作系统本身的运行效率,操作系统通常会针对特定的硬件平台进行优化,以充分发挥整个计算机系统的效能。
但这就使得操作系统与硬件平台关系更为紧密,甚至要依赖于硬件平台的某些特性,从而提高操作系统移植的难度。
针对上述问题,现代操作系统在设计的时候采取一定的措施,以提高整个系统的可扩展性和可移植性。
目前通常采用的办法主要有:
1.硬件抽象和板级支持包
为了提高操作系统的可移植性,通常采用硬件抽象层HAL(HardwareAbstractLevel)和板级支持包BSP(BoardSupportPackage)的底层设计技术。
HAL抽象了与硬件设备无关的特性,屏蔽了硬件平台的细节和差异,向操作系统上层提供了统一的接口,保证了系统的可移植性。
而一般由硬件厂家提供的按给定的编程规范完成的BSP,使操作系统可以在新推出的硬件平台上运行。
2.模块化结构在设计操作系统的时候应该采用模块化的结构,力求设计出结构良好的程序。
第二章操作系统与系统移植
尝试采用软件工程的方法,即运用工程的概念与原理,以及系统的、规范的和可定量的技术和方法来开发、运行和维护操作系统。
2.2操作系统移植技术的发展过程
从计算机诞生至今,随着计算机硬件技术的不断发展,操作系统也经历了从早期的串行处理,到单道批处理,多道批处理,直至现在的多任务、多用户系统的不断变化发展的过程。
在此期间,操作系统的移植技术也在不断的变化和发展,下面简要总结一下操作系统移植技术走过的发展历程:
1.无需移植技术阶段:计算机诞生之后的很长一段时间,由于计算机造价昂贵,仅有少数厂家可以制造。
而这一时期的主要操作系统还是串行处理、单道批处理、多道批处理这样的简单系统,而且它们大都由特定的厂家或机构根据特别的机器编写,有的甚至没有操作系统,因此这个时期操作系统没有移植的必要。
2.完全重写阶段:在这个阶段,由于操作系统大都由针对特定机器的汇编语言写成,操作系统设计也不考虑可移植性的问题,所以几乎没有任何可移植性。
移植实际上就是将整个系统完全重写的过程。
3.可移植性大大增强阶段:这个阶段是以C语言的创立和Unix用c语言改写为开始标志的。
c语言效率高、可移植性好的优点使其成为编写操作系统的首选。
同时,操作系统的设计也开始考虑到可移植性,通过分层和模块化设计将硬件平台相关代码和硬件平台无关代码分离。
这些都大大增加了操作系统的可移植性。
虽然使用C语言能够增加操作系统的可移植性,但是操作系统中还是有部分代码必须用汇编语言来编写,特别是和特定体系结构相关的部分。
4.通过工具可配置阶段:这个阶段的操作系统提供了内核配置工具来进行内核功能的增减,还可以通过配置选择操作系统支持的目标硬件体系结构及需要支持的硬件设备和功能等等,这就大大增加了操作系统的灵活性,使操作系统对硬件平台的支持能力大大增强。
当然,虽然通过工具可以对内核进行部分的配置,增加了内核的灵活性,但是还是有很多工作需要开发人员根据具体的硬件平台特性来进行移植。
2.3操作系统内在结构与系统移植由于操作系统内核的结构层次的不同,其可移植性也有很大的差别,一般来
电子科技大学硕士论文
讲,按其内部组织结构层次,可将操作系统划分成以下几类[21【l刿:1.整体式结构的操作系统
整体式结构的操作系统又称为单体内核(monolithickernel),是采用结构化程序设计的方法实现的。
早期操作系统(如IBMS/360操作系统)采用这种方法,主要设计思想和步骤如下:把模块作为操作系统的基本单位,按照功能需要而不是根据程序和数据的特性把整个系统分解为若干模块,每个模块具有一定独立功能,若干个关联模块协作完成某个功能。
明确各个模块之间的接口关系,各个模块间可以不加控制,.自由调用,数据多数作为全程量使用。
模块之间需要传递参数或返回结果时,其个数和方式也可以根据需要随意指定;然后,分别设计、编码、调试各个模块。
最后把所有模块连接成一个完整的系统。
这种结构设计方法的主要优点是:结构紧密、组合方便,对不同环境和用户的不同需求可以组合不同模块来满足,灵活性大;由于划分成模块和子模块,设计及编码可齐头并进,能加快操作系统的研制进程。
但是,这种结构的操作系统的各个部分都集中在内核中,各部分关系紧密,模块独立性差,模块间牵连太多,形成了复杂的调用关系,从而造成了系统结构不清晰,可靠性降低,系统功能的增删十分困难等缺点。
因此,整体式结构的操作系统移植起来非常困难。
2.层次结构的操作系统
为了能让操作系统结构更加清晰,使其具有较高的可靠性,较强的适应性,易于扩充和移植,在模块接口结构的基础上产生了层次式结构的操作系统。
所谓层次式结构,是把操作系统划分为内核和若干模块,这些模块按功能的调用次序排列成若干层次,各层之间只能是单向依赖或单向调用关系,即低层为高层服务,高层可以调用低层的功能,,反之则不能。
层次结构的最大优点是把整体问题局部化,由于把复杂的操作系统按照一定的原则分解成若干单一功能的模块,这些模块组织成层次结构,具有单向依赖性,使层次间的依赖和调用关系更为清晰规范,因此,这种结构在增加、修改或替换某一层次时对其它层次的影响相对较小,对操作系统的移植、扩充和维护非常有利。
通常,在划分层次的时候,把和机器硬件相关的程序模块放在最底层,形成一个硬件相关层,并在其上进行硬件抽象构筑一个硬件抽象层,以便把其它层与硬件隔离开。
这样,在移植的时候,只需把硬件相关层的功能按新机器硬件特征加以修改、移植或实现就可以了,而其他层的内容基本不改动,大大方便了操作
第二章操作系统与系统移植
系统的移植。
最理想的情况下,移植层次结构的操作系统只需要重写硬件相关层的代码。
但实际操作过程中,很难明确划分硬件相关层和硬件抽象层,也就很难将硬件的所有特性完全隔离在硬件相关层中去实现,只能尽可能将硬件相关操作放在一层中。
而且,使用层次结构构造操作系统,目前还没有一个非常切实可行高效的分层方法,具体的分层方法对操作系统可移植性的影响很大。
同时,纯粹的层次结构也会导致系统运行速度下降,主要是因为高层必须通过调用一系列连续的低层接口才能处理完自己的任务。
在实际设计中,为了提高速度,层次结构通常会允许包含某些上层跨越其直接下层调用更低层,这样虽然提高了速度,但却违背了层次设计的原则,也使层次间的替换工作更加困难,增加了移植的难度。
3.客户机朋艮务器与微内核结构的操作系统
客户朋艮务器结构的思想如下:将操作系统分成两个部分,一是运行在用户态并以客户朋匣务器方式活动的进程;二是运行在核心态的内核。
除内核部分外,操作系统的其他部分被分成若干相对独立的进程,每一个进程实现一类服务,称服务器进程。
如,进程管理服务、存储管理服务、文件管理服务等,用户进程也在该层并以客户侑匣务器方式活动。
由于操作系统绝大多数功能由用户态进程来实现,内核只完成极少的核心态任务,所以称为微内核(microkemel)。
微内核的设计希望把内核做的尽可能小,微内核中仅存放那些最基本的核心操作系统功能,其他服务和应用则建立在微内核之外,作为独立的服务器在用户模式下运行,通过微内核提供的消息传递机制完成其余功能模块之间的联系。
因此,在微内核结构的操作系统中增加一种新的特性,就是增加一个服务。
而且新的或修改过的服务的影响被限制在相应的子集中,并不需要修改内核。
在微内核结构中,微内核中包含那些直接依赖于硬件的功能,以及支撑操作系统用户模式的应用程序和服务所需的功能,这些功能可概括为:存储管理、进程通信、I/O和中断管理。
使用微内核结构,所有与特定cPu和硬件有关的代码都集中在一个极小的内核中,因而,把操作系统移植到一个新的硬件体系结构上所做的改动很小,全部集中在内核部分,与各种服务无关。
所以,采用微内核结构的操作系统比较易于移植,可移植性良好。
但微内核结构的一个重大缺点就是性能问题,由于微内核结构把操作系统大量功能放到内核之外以进程的方式实现,而各个进程间往往都需要通过微内核提供的消息传递机制进行通信,从而使系统在发送消息和接收消息需要花费很大的时间代价,并成为影响系统性能的瓶颈。
在一个通信频繁的系统中,微内核往往效率不高,这也是商用操作系统没有一个完全采用微内核结构的原因。
电子科技大学硕士论文
第三章Linux系统移植的基本理论与方法
3.1Linux系统结构分析
Li3.1.1FlUX系统的抽象结构
Linux操作系统的内核结构从层次上来说,是整体式的结构‘121[181。
其主要组成结构如图3-1所示:
Xs斟w
Vi,EmacsMysqL.Corr珀ileGEl3e¥用户进程Shen
系统调用接口
操作系统内核茉绩调用接臼
Linux内棱
设各驱动程序。