已阅读5页,还剩56页未读, 继续免费阅读
(计算机应用技术专业论文)基于arm的嵌入式linux系统的研究及应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 在各种嵌入式操作系统中,l i n u x 凭借其在结构清晰、源代码开放性等方面的 优势,成为了嵌入式歼发的首选。 本论文主要探讨和解决了如何根据目标嵌入式系统的需求对l i n u x 操作系统 进行修改和剪裁。通过内核的修改和剪裁,为进一步的移植奠定了基础,这也是 本论文选题的意义所在。 本文首先研究了l i n u x 内核的体系结构及典型的嵌入式l i n u x 操作系统。然后 概述了如何构建嵌入式l i n u x 开发环境,分析了启动引导代码b o o t l o a d e r ,深入分 析了如何进行l i n u x 内核的修改和剪裁,包括设备驱动、文件系统修改的详细过程。 之后研究了建立根文件系统的过程。最后,在开发板上实现了网络通信和串口通 信。 关键词:嵌入式操作系统l i n u x内核剪裁 a b s l r a c t a b s t r a c t i na l lk i n d so fe m b e d d e do p e r a t i n gs y s t e m s ,l i n u xh a st h ea d v a n t a g eo fc l e a r s t r u c t u r ea n do p e ns o u r c e ,s oi th a sb e c o m et h ec h i e fc h o i c eo fe m b e d d e dd e v e l o p m e n t i ti sm a i n l yd i s c u s s e da n dr e s o l v e dh o wt om o d i f ya n dt a i l o rl i n u xo p e r a t i n g s y s t e ma c c o r d i n gt ot h en e e do ft h et a r g e te m b e d d e ds y s t e m s t h r o u g hm o d i f y i n ga n d t a i l o r i n gt h ek e r n e l ,i tw i l ll a yt h eg r o u n d w o r kf o rt h ef u r t h e rp o r t i n g t h a t sw h a tt h i s p a p e ri sr e a l l ya b o u t a tf i r s tt h ea r c h i t e c t u r eo ft h el i m i xk e r n e la n ds e v e r a lt y p i c a le m b e d d e dl i n u x o p e r a t i n gs y s t e m sa r cs t u d i e d a f t e rt h a t ,i ti ss u m m a r i z e dh o w t ob u i l dad e v e l o p m e n t c o n d i t i o no ft h ee m b e d d e dl i n u x t h es t a r t u pg u i d ec o d eb o o t l o a d e ri sa n a l y z e d i ti s a n a l y z e dd e e p l yh o wt om o d i f ya n dt a i l o rt h el i n u xk e r n e l ,i n c l u d i n gm o d i f y i n gd e v i c e d r i v e ra n dt h ef i l es y s t e mi nd e t a i l a f t e r w a r dt h ep r o c e s so fb u i l d i n gt h er o o ts y s t e mi s s t u d i e d f i n a l l y , n e t w o r kc o m m u n i c a t i o na n ds e r i a lc o m m u n i c a t i o na r er e a l i z e do nt h e d e v e l o p i n gb o a r d k e y w o r d :e m b e d d e do p e r a t i n gs y s t e m l i n u xk e r n e lt a i l o r 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 1,一 本人签名:拿予j 姐日期如一7 莩砑玎日 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密,在年解密后适用本授权书。 本人签名:争孚丽本人签名:孑日q 导师签名: 胺拜 日期三竺:! 垒1 9 塑9 日期1 叻l 硝 第一章绪论 第一章绪论 1 1 课题背景 随着通信网络技术和集成电路设计的高速发展,嵌入式系统己成为了l t 业的 一个焦点。嵌入式操作系统是嵌入式系统的核心,但嵌入式操作系统并不总是必 须的,因为程序完全可以在裸板上运行。但对于复杂的系统,为使其具有资源管 理、系统管理和中断处理等能力,提供多任务处理,更好的分配系统资源的功能, 很有必要针对特定的硬件平台和实际应用移植操作系统。在各种嵌入式操作系统 中,l i n u x 凭借其在结构清晰、源代码开放性等方面的优势,成为了嵌入式开发的 首选。对于l i n u x 向别的平台上的移植技术方面的研究,在国内外无论是学术界 还是工程界都进行了很多,是l i n u x 在嵌入式领域中应用的一个热点。由于嵌入式 系统必须根据应用需要对硬件和软件进行剪裁,所以如何对l i n u x 内核进行修改和 剪裁以满足系统的需求,是移植技术中的关键。 目前,国内有相当多的$ 3 c 2 4 1 0 芯片还是采用l i n u x 2 4 内核,主要的原因是 三星的s d m k 开发板使用的这个内核,相对来说这个内核的驱动程序比较全。但 l i n u x 2 6 的代码结构比l i n u x 2 4 更加清晰,资源的定义进行了分类,可读性很好, 条理清楚,修改起来容易;l i n u x 2 6 的代码相当精炼,大量使用c 的s t n l c t 实现了 c + + 的面向对象风格:l i n u x 2 6 支持标准的高级电源管理:在同样的目标板上, l i n u x 2 6 的内核跑起来比2 4 省电,相差几十m a 。 实时可靠性是嵌入式应用较为普遍的要求,尽管l i n u x2 6 并不是一个真正的 实时操作系统,但其改进的特性能够满足响应需求。l i n u x2 6 已经在内核主体中 加入了提高中断性能和调度响应时间的改进,其中有三个最显著的改进:采用可 抢占内核、更加有效的调度算法以及同步性的提高“”。在企业服务器以及嵌入式 系统应用领域,l i n u x2 6 都是一个巨大的进步。在嵌入式领域,l i n u x2 6 除了提 高其实时性能,系统的移植更加方便,同时添加了新的体系结构和处理器类型 包括对没有硬件控制内存管理方案的m m u l e s s 系统的支持,可以支持大容量内 存模型、微控制器,同时还改善了i o 子系统,增添了更多的多媒体应用功能。 l i n u x2 6 内核支持$ 3 c 2 4 1 0 ,不用任何补丁。 1 2 国内外发展现状 1 2 1 嵌入式系统的发展现状 后p c 时代,嵌入式系统将拥有最大的市场。嵌入式技术已经无处不在,从随 基y - a r m 的嵌入式l i n u x 系统的研究及应用 身携带的m p 3 、语言复读机、手机、p d a 到家庭之中的智能电视、智能冰箱、机 顶盒,再到工业生产、娱乐中的机器人,无不采用嵌入式技术。各大跨国公司及 国内家电巨头如i n t e l 、t i 、s o n y 、三星、t c l 、联想和康佳等都面临着嵌入式 人才严重短缺的挑战。 近几年,嵌入式系统产品渐渐完善,并在全世界各行业得到广泛应用。2 0 0 4 年,全球嵌入式系统产品的产值已达2 0 0 0 亿美元,国内嵌入式软件的产值也达到 6 0 0 亿人民币。目前,嵌入式系统产品的研制和应用已经成为我国信息化带动工业 化、工业化促进信息化发展的新的国民经济增长点。随着消费家电的智能化,嵌 入式更显重要,像我们平常见到的手机、p d a 、电子字典、可视电话、v c d d v d m p 3 p l a y e r 、数字相机( d c ) 、数字摄像机( d v ) 、u d i s k 、机顶盒( s e tt o pb o x ) 、高 清电视( h d t v ) 、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车 电子、家电控制系统、医疗仪器、航天航空设备等等,都是典型的嵌入式系统。 据预测,随着i n t e m e t 的迅速发展和廉价微处理器的出现,嵌入式系统将在同常生 活罩形成更大的应用领域。 1 2 2 嵌入式l i n u x 的发展现状 l i n u x 从1 9 9 1 年问世到现在,短短的十几年时间已经发展成为功能强大、设计 完善的操作系统之一。可运行在x 8 6 ,a r m ,a i p h a ,m i p s ,p p c 等多种硬件平台 上,而且其开放源代码,可以定制,与各种传统的商业操作系统相比毫不逊色。 目前,越来越多的企业和研发机构都转向嵌入式l i n u x 的开发和研究上,这也使 l i n u x 在新兴的嵌入式操作系统领域内获得了飞速发展。 相对于桌面系统,要将l i n u x 应用到嵌入式系统中,必须要根据目标嵌入式系 统的需求对l i n u x 内核进行适当的剪裁,修改和补充。目| j 主要集中在以下几个方 面对l i n u x 进行改造: n 1 将l i n u x 内核移植到一些典型的微控制器或s o c 芯片上。目前在标准l i n u x 内核源码树的a r c h 目录下己经有很多针对不同的处理器的实现,通过在主机上进行 交叉编译就可以构成适用于各种处理器的可执行映像。但是,目标硬件上可能有 一些独特的资源和性质是标准l i n u x 没有加以充分利用的,所以需要补充。对于 a r m 平台而言,从c p u 级主要是对于各种不同的a r m 核的优化处理以及对内置的 协处理器的支持,例如对m m u 的控制操作的优化,对内置的协处理器的支持。从 s o c 芯片和开发板级,则主要是针对各种硬件平台的特性和新硬件进行支持。 ( 2 ) 针对一些常用的外部设备进行选择,修改和开发。般讲,在l i n u x 内核 源码树的d r i v e r 录中具有丰富的设备驱动程序。各个厂商所生产的同种外设在很 大程度上都很相似。因此,对这些设备驱动一般都是加以修改甚至是直接拿来就 第一章绪论 用,很少从头来写个设备驱动。由于基于a r m 处理器核和c p u 核所构成的s o c 芯片开发的嵌入式系统上的外设有片上外设和板上外设的区别,所以开发的主要 难点还在于对外设i o 的映射和g p i o 的分配。 ( 3 ) 对标准l i n u x 内核进行实时扩展。实时性对于某些嵌入式系统的重要性是 毋庸置疑的,目前大多数嵌入式操作系统都将其是否具有实时性作为一个重要的 指标。针对l i n u x 内核所进行的实时性改造主要有:优先级调度;提高时钟精度; 实现可抢占性调度。 1 3 研究内容及目的 本文主要研究了如何对l i n u x 操作系统进行修改和剪裁。根据实验条件采用了 h f r k 2 4 1 0 开发板,它是基于三星公司$ 3 c 2 4 1 0 高性能a r m 处理器的嵌入开发平 台,硬件软件都可根据自己的需求定制,具有高性能、低功耗、接口丰富等特点。 本文针对嵌入式l i n u x 系统的研究和应用,主要从以下几个方面进行了探讨和研 究: ( 1 ) 研究了l i n u x 操作系统内核的体系结构。 ( 2 ) 分析了交叉编译环境的建立方法。 ( 3 ) 研究了启动引导代码b o o t l o a d e r 的运行过程。 ( 4 ) 深入探讨和解决了如何对l i n u x 内核进行修改和剪裁。 ( 5 ) 实现了用于a r m 平台的嵌入式l i n u x 根文件系统。 ( 6 ) 分析了嵌入式l i n u x 应用程序开发软件环境的构建,实现了嵌入式l i n u x 环境下的网络通信和串口通信。 本论文所选课题的目的就是剖析如何根据目标嵌入式系统的需求对 l i n u x 2 6 1 4 内核进行恰当的修改、剪裁和补充,其中包括针对目标硬件上一些特 性对标准的l i n u x 内核进行补充,针对一些常用的外部设备进行选择、修改和开发。 这样就为进一步移植奠定了基础,这也就是本论文选题的意义所在。 第二章嵌入式l i n u x 操作系统分析 第二章嵌入式l i n u x 操作系统分析 2 1 嵌入式系统概述 1 、嵌入式系统的定义 广义地讲,凡是不用于通用目的的可编程计算机设备,就可以算是嵌入式计 算机系统。狭义上而言,嵌入式系统是指以应用为核心,以计算机技术为基础, 软硬件可裁剪,适于应用系统对功能、可靠性、成本、体积和功耗严格要求的专 用计算机系统。 总的来说,嵌入式系统是一个外延极广的概念,凡是与产品结合在一起的、 具有嵌入式系统特点的系统都可以称为嵌入式系统。可以从以下几个方面来理解 嵌入式系统的含义: 嵌入式系统是面向用户、面向产品、面向应用的,必须与具体应用相结合 才会具有生命力。正因为与具体应用的紧密结合,嵌入式系统彳。具有很强的专用 性。 嵌入式系统将先进的半导体技术、计算机技术和电子技术,以及各个行业 的具体应用相结合,是一个技术密集、资金密集、学科交叉和不断创新的知识集 成系统。 嵌入式系统必须根据应用需要对硬件和软件进行裁剪,以满足应用系统对 功能、可靠性、成本、体积和功耗的要求。 2 、嵌入式系统的组成 图2 1 嵌入式系统的硬件组成 嵌入式系统一般有3 个主要的组成部分: 硬件。图2 1 给出了嵌入式系统的硬件组成。其中,处理器是系统的运算核 心;存储器( r o m 、r a m ) 用来保存可执行代码,以及中间结果;输入输出设备 基1 二a r m 的嵌入式l i n u x 系统的研究及应h j 完成与系统外部的信息交换;其他部分辅助系统完成功能。 应用软件。应用软件是完成系统功能的主要软件,它可以由单独的一个任 务来实现,也可以由多个并行的任务来实现。 实时操作系统( r e a l - t i m eo p e r a t i n gs y s t e m ,r t o s ) 。该系统用来管理应用 软件,并提供一种机制,使得处理器分时地执行各个任务并完成一定的时限要求。 3 、嵌入式系统的特点 ( 1 ) 作为专用计算机系统的嵌入式系统与通用计算机系统相比,具有以下几个 重要特征: 嵌入式系统通常是面向特定应用的。嵌入式c p u 大多工作在为特定用户群 设计的系统中,它通常都具有低功耗、体积小、集成度高等特点。 嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力 争在同样的硅片面积上实现更高的性能,这样才能完成功能、可靠性和功耗的苛 刻要求。 实时操作系统支持。嵌入式系统的应用程序可以不需要操作系统的支持直 接运行,但是为了合理地调度多任务,充分利用系统资源,用户必须自行选配实 时操作系统开发平台。 嵌入式系统与具体应用有机地结合在一起,它的升级换代也是和具体产品 同步进行的,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。 嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中。 专门开发工具支持。嵌入式系统本身不具备自主开发能力,即使在设计完 成以后,用户通常也不能对程序功能进行修改,必须有一套开发工具和环境才能 进行开发。 , ( 2 ) 经过改造后的嵌入式l i n u x “”具有适合于嵌入式系统的特点: 内核精简,高性能、稳定; 良好的多任务支持; 适用于不同的c p u 体系架构:支持多种体系架构,如x 8 6 、a r m 、m 1 p s 、 a l p h a 、s p a r c 等: 可伸缩的结构:可伸缩的结构使l i n u x 适合于从简单到复杂的各种嵌入式应 用: 外设接口统一:以设备驱动程序的方式为应用提供统的外设接口; 丌放源码,软件资源丰富:广泛的软件丌发者的支持,价格低廉,结构灵 活,适用面广; 完整的技术文档,便于用户的二次开发。 第二章嵌入式l i n u x 操作系统分析 2 2 1l i n u x 内核特征 2 2l i n u x 内核的分析 内核是操作系统的内部核心程序,它向外部提供了对计算机设备的核心管理 调用。操作系统的代码分为以下两部分,内核所在的地址空问称为内核空阀,外 部管理程序与用户进程所占据的地址空间称为外部空间( 用户空问) 。通常,一个 程序会跨越两个空间。当执行到内核空间的一段代码时,称程序处于核心态;而 当程序执行到外部空问代码时,称程序处于用户态。 单一内核( m o n o l i t h i ck e r n e l ) 曾经是操作系统的主流,它是指操作系统中所 有的系统相关功能都被封装在内核中。它们与外部程序处在不同的内存地址空间 中,并通过各种方式防止外部程序直接访问内核中的数据结构。程序只有通过一 套称作系统调用( s y s t e mc a l l ) 的界面访问内核结构。 近些年来,微内核( m i c r ok e r n e l ) 结构逐渐流行起来,成为操作系统的主要 潮流。在微内核结构中,操作系统的内核只需要提供最基本、最核心的一部分操 作( 例如,创建和删除任务、内存管理、中断管理等) 即可,而其他管理程序( 如 文件系统、网络协议栈等) 则尽可能放在内核以外。这些外部程序可以独立运行, 并对外部用户程序提供操作系统服务,服务之间使用进程问通信机制( i p c ) 进行 交互。 l i n u x 系统使用了单一内核结构。这是由于l i n u x 是一个实用主义的操作系统。 l i n u st o r v a l d s 将代码执行效率作为自己操作系统的第一要务。在这样的发展过程 中,参与l i n u x 系统开发的程序员大多数为世界各地的黑客们。比起结构的清晰, 他们更加注重功能的强大和高效率的代码。于是,他们将大量的精力花在优化代 码上,而这样的全局性优化必然以损失结构精练作为代价,导致l i n u x 中的每个部 件都不能被轻易拆出,否则,必然破坏整体效率。 虽然l i n u x 是一个单一内核操作系统,但它与传统的单一内核u n i x 操作系统 不同。在普通的单一内核系统中,所有内核代码都是被静态编译连入的。而在l i n u x 中,可以动态装入和卸载内核中的部分代码。l i n u x 中将这样的代码段称为模块 ( m o d u l e ) ,并对模块给予了强有力的支持。在l i n u x 中,可以在需要时自动装入 和卸载模块。 l i n u x 的内核为非抢占式的( n o n p r e e m p t i v e ) 。这就是说,l i n u x 并不能通过 改变优先权来影响内核当前的执行流程。l i n u x 并不是一个“硬”实时操作系统。 l i n u x 操作系统的内核稳定而高效,以独占的方式执行最底层任务,来保证其 他程序的正常运行。它足整个操作系统的核心,具有独特的性质。 8 基丁a r m 的嵌入式l i n u x 系统的研究及应用 2 2 2l i n u x 内核体系结构 l i n u x 内核”。”由5 部分组成,它们分别是:进程管理、内存管理、文件系统 管理、进程间通信和网络接口。 1 、进程管理 进程是运行于自己的虚拟地址空间的一个程序。可以说,任何在l i n u x 系统下 运行的都是进程。l i n u x 系统中包括下面几种类型的进程。 交互进程:该进程是由s h e l l 控制和运行的。它既可以在前台运行,也可以 在后台运行。 批处理进程:该进程不属于某个终端,被提交到一个队列中以便顺序执行。 守护进程:该进程只有在需要时才被唤起在后台运行。它一般在l i n u x 启动 时开始执行。 进程是动态的,在处理器执行机器代码时进程一直在变化。进程不但包括程 序的指令和数据,而且包括程序计数器和c p u 的所有寄存器,以及存储临时数据 的进程堆栈。由此可见,正在执行的进程包括处理器当前的一切活动。l i n u x 是一 个多进程的操作系统,每个进程都有自己的权限和任务,某一进程的失败一般不 会导致其他进程的失败,进程之间可以通过由内核控制的机制相互通讯。 在进程的整个运行期间,它将会用到各种系统资源,会用到c p u 运行它的指 令,需要物理内存保存它的数据。它可能打开和使用各种文件,直接或间接地使 用系统中的各种物理设备。l i n u x 系统内核必须了解进程本身的情况和进程所用到 的各种资源,以便在多个进程之间合理地分配系统资源。 系统中最为宝贵的资源是c p u ,因为在一般情况下,一个系统只有一个c p u 。 l i n u x 是一个多进程的操作系统,所以,其他的进程必须等到正在运行的进程空闲 c p u 后彳能运行。当证在运行的进程等待其他的系统资源时,l i n u x 内核将取得 c p u 的控制权,并将c p u 分配给其他j 下在等待的进程。内核中的调度算法决定将 c p u 分配给哪一个进程。 进程管理程序能够进行进程的创建、激活、运行、阻塞、再运行、释放,以 及删除。进程管理程序执行下列操作:在多进程( 或者任务、线程) 系统中执行 每一个进程,使得进程状态可以切换。进程的顺序经过以下这些状态:“创建”、 “就绪或者激活”、“产生”( 创建且激活) 、“运行”、“阻塞”、“再运行”、 “完成”,以及“完成”之后的“就绪”( 当进程中存在无限循环时) 。最后,释 放或者删除( 在长进程中,阻塞和再运行可以发生很多次) 。 进程管理程序实现以下功能: 使进程能够顺序执行或者在需要资源时发生阻塞,并使其在资源可用时继 续运行。 第二章嵌入式l i n u x 操作系统分析 9 为进行资源管理( 包括c p u 上的进程调度) 实现了与资源管理程序的逻辑 链接。 限制某些资源只在某些进程间共享。 按照系统的资源分配机制分配资源。 管理系统中的进程和资源。 2 、内存管理 内存管理( m e m o r ym a n a g e m e n t ) 系统是操作系统中最为重要的部分,内存管 理程序子系统负责控制进程对硬件内存资源的访问。这是通过硬件内存管理单元 ( m e m o r ym a n a g e m e n tu n i t ,m m u ) 来完成的,该单元提供进程内存引用与计算 机的物理内存之间的映射。内存管理程序子系统为每个进程都维护一个这样的映 射关系,使得两个进程就可以访问同一个虚拟内存地址,而实际使用的却是不同 的物理内存位置。此外,内存管理程序子系统支持交换,它把暂时不使用的内存 页面移出内存,存放到永久性存储器( 如硬盘存储器) 中,这样,计算机就可以 支持比物理内存要多的虚拟内存。 内存管理程序提供以下一些功能: 大地址空间用户程序使用的内存数量可以超过物理上实际所有的内存 数量。 保护进程的内存是私有的,不能被其他进程所读取和修改。而且,内 存管理程序可以防止进程覆盖代码和只读数据。 内存映射可以把一个文件映射到虚拟内存区域,并把该文件当作内存 来访问。 对物理内存的公平访问内存管理程序确保所有的进程都能公平地访问 计算机的内存资源,这样可以确保理想的系统性能。 共享内存内存管理程序允许进程共享它们内存的一部分。 3 、文件系统管理 l i n u x 在设计时就考虑到支持许多不同的物理设备,甚至就一种特定类型的设 备而言,例如,硬盘驱动器,在不同的硬件厂商之阳j 也会存在许多接口上的差异。 除了l i n u x 所支持的物理设备以外,l i n u x 还支持大量的逻辑文件系统。正因为它 能支持许多逻辑文件系统,所以l i n u x 可以轻松地与其他操作系统进行互操作。 l i n u x 文件系统支持下列特性: 多个硬件设备提供对许多不同的硬件设备的访问。 多个逻辑文件系统支持许多不同的逻辑文件系统。 多个可执行格式支持许多不同的可执行文件格式( 例如a o u t 、e l f 、 j a v a ) 。 均一性为所有的逻辑文件系统,以及所有的硬件设备提供一个通用接 l o基丁:a r m 的嵌入式l i n u x 系统的研究及应用 口o 性能提供对文件的高速访问。 安全不会丢失或毁坏数据。 保密性限制用户访问文件的许可权限和分配给用户的总的文件大小。 目前,l i n u x 系统支持大约1 5 个文件系统:e x t 、e x t 2 、x i a 、m i n i x 、 u m s d o s 、m s d o s 、v i 诮= r 、p r o c 、s m b 、n c p 、i s 0 9 6 6 0 、s y s v 、h p f s 、a f f s 和u f s 。毫无疑问,l i n u x 系统支持的文件系统还会增加。 一个文件系统中不仅包括含有数据的文件,而且还存储着文件系统的结构。 文件系统中的信息必须是安全和保密的。 当l i n u x 引进e x t 文件系统时有了一个重大的改进:真正的文件系统从操作系 统和系统服务中分离出来,在它们之问使用了一个接口层虚拟文件系统v f s ( v i r t u a lf i l es y s t e m ) 。 v f s 允许l i n u x 支持多种不同的文件系统,每个文件系统都要提供给v f s 一 个相同的接口。这样,所有的文件系统对系统内核和系统中的程序来晚看起来都 是相同的。l i n u x 系统中的v f s 层使得用户可以同时在系统中透明地挂接很多不 同的文件系统。 v f s 能高速度及高效率地存取系统中的文件,与此同时它还得确保文件和数 据的正确性。这两个目标有时可能相互矛盾。由于v f s 在每个文件系统挂接和使 用时,把文件系统的有关信息暂时保存在内存中,所以当内存中的信息改变时, 例如,创建、写入和删除目录和文件时,系统要保证j 下确地升级文件系统中相关 的内容。如果了解在系统内核中运行的文件系统的数据结构,那么也就能比较容 易地理解文件系统读取的数据块的情况。系统缓存中最重要的就是缓冲区缓存, 它被集成到每个单独的文件系统存取它们的块设备所使用的方法中。每当系统存 取数据块时,数据块被放入到缓冲区缓存中,并且依照它们的状态保存到各种各 样的队列中。缓冲区缓存中不仅保存了数据缓冲区,而且还可以帮助管理与块设 备驱动程序之间的异步接口。 为了支持虚拟文件系统,l i n u x 使用了索引节点的概念。l i n u x 使用索引节点 来表示块设备上的文件。索引节点中包含了一些操作,根据文件所驻留的逻辑系 统和物理系统的不同,这些操作的实现方法也会有所变化。从这层意义上讲,索 引节点是虚拟的。索引节点接口使所有的文件在其他l i n u x 子系统看起来都是一样 的。索引节点可以用做一个存储设备,存储磁盘上与某个打开的文件相关的所有 信息。索引节点存储相关缓冲、以块为单位的文件总长度,以及文件偏移量和设 备块之间的映射。 如图2 2 所示为l i n u x 系统内核中的v f s 和实际文件系统之间的关系。v f s 必须管理同时挂接在系统上的不同的文件系统。v f s 通过使用描述整个v f s 的数 第二章嵌入式l i n u x 操作系统分析 据结构和描述实际挂接的文件系统的数据结构来管理这些不同的文件系统。 图2 2v f s 系统结构示意图 当一个文件系统初始化时,它将在v f s 中登记。这些过程在操作系统初始化 时完成。实际的文件系统或者内建到操作系统内核中,或者作为可装入模块在需 要时装入。当一个基于块设备的文件系统挂接时,当然也包括根文件系统,v f s 首先要读取它的超级块。每一个文件系统的超级块读取程序都必须先清楚文件系 统的结构,然后把有关的信息添加到v f s 的超级块数据结构中。v f s 中保存了系 统中挂接的文件系统的链表,以及这些文件系统对应的v f s 超级块。每一个v f s 超级块都包含一些信息和指向一些执行特别功能的子程序的指针。例如,代表挂 接的e x t 2 文件系统的v f s 超级块包含了一个指向e x t 2 索引节点读取程序的指 针。这个e x t 2 索引节点读取程序,与其他文件系统索引节点的读取程序一样, 把信息添加到v f s 索引节点中的字段中。每一个v f s 超级块都包含一个指向文件 系统中第一个v f s 索引节点的指针。对于根文件系统来说,第一个v f s 索引节点 是代表根目录( ) 的索引节点。这种对应关系对于e x t 2 文件系统来l 既十分有效, 但对于其他的文件系统则效果一般。当系统中的进程存取目录和文件时,需要调 用系统中的子程序来遍历搜索系统中的v f s 索引节点。例如,键入l s 或者c a t 命 令将导致v f s 搜索整个文件系统中的v f s 索引节点。因为系统中的每一个文件和 目录都由一个索引节点柬表示,那么有些索引节点将经常会被重复地搜索。这些 索引节点将保存在索引节点缓存中,这样将加快以后的存取速度。如果要找的索 引节点不在索引节点缓存中,那么进程将调用一个特殊的系统程序来读取相应的 索引节点。读取索引节点后,此索引节点将放在索引节点缓存中。最少用到的索 引节点将被交换出索引节点缓存。 4 、进程间通信 1 2 基于a r m 的嵌入式l i n u x 系统的研究及应用 l i n u x 提供进程问通信( i n t e r p r o c e s sc o m m u n i c a t i o n ,i p c ) 机制,是为了给并 发执行的进程提供一种方法,使它们可以共享资源,与其他进程同步并且交换数 据。因为在一些特殊应用的场合,需要一个以上的进程来完成单一的应用程序。 但由于这些不同的进程或线程享有的系统资源往往是独立的,无法直接分享,因 此操作系统核心必须提供进程间的通信机制,让这些不同的进程问可以互相交换 消息,也可以借此知道彼此的意图来做出相应的行为。 l i n u x 提供了下列形式的i p c 机制。 信号:最古老的u n i xi p c 形式。信号是发往某进程的异步消息。 管道和命名管道:允许在两个进程之问进行面向连接的单向的数据传输, 方法可以是显式地建立管道连接,也可以通过驻留在文件系统中的命名管道进行 通信。 信号量:传统信号量模型的一种实现,该模型还允许创建信号量数组。 消息队列:一种无连接的数据传输模型。消息是字节的序列,并带有相应 的类型。消息可以写入到消息队列中,并且可以通过从消息队列中读取来获得消 息,当然也可以限制读入消息的类型。 共享内存= 通过使用这种机制,几个进程可以访问物理内存的同一块区域。 其中信号量、消息队列、共享内存等属于s y s t e mvi p c ( 用首次出现的u n i x 的版本命名) 的机制。 5 、网络接口 随着嵌入式系统的迅速发展,与i n t e m e t 的连接是必要的,这就要求有t c p i p 协议的支持。然而,由于嵌入式系统的特点,以及l i n u x 原来的t c p i p 协议栈实 现上过于复杂,同时对实时性方面考虑也有欠缺。这样,对于l i n u x 上嵌入式t c p i p 的研究在不断的展开之中。比如对于i p v 6 的支持在嵌入式系统中是非常重要的, 因为每个设备一个唯一地址导致了i p v 4 地址的严重不足。基于t c p 1 p 网络的实时 通讯技术如以太网也是一个重要的值得研究的课题。 2 3 典型的嵌入式l i n u x 操作系统 嵌入式l i n u x 主要可以分为两类:第一类是在利用l i n u x 强大功能的前提下, 使它尽可能的小,以满足许多嵌入式系统对体积的要求,如m c l i n u x ;第二类是将 l i b u x 开发成实时系统尤其是硬( f i r m ) 实时系统,应用于一些关键的控制场合, 如r 刚n u x 。下面是典型的嵌入式l i n u x 操作系统分析。 1 、z c l i n u x 标准的l i n u x 内核采用虚拟内存管理技术来提高系统运行效率,这种设计在硬 件上需要有微处理器内嵌的内存管理单元( m m u ) 的支持。因此,在许多没有 第二章嵌入式l i n u x 操作系统分析 m m u 的嵌入式应用中,标准l i n u x 内核关于虚拟内存管理部分的代码就变得冗余 了,甚至会对系统整体性能产生负面的影响。z c l i n u xj 下是为了解决这一问题而开 发的。它是一种专为嵌入式系统设计的l i n u x ,这里字母即为m i c r o ( 微小) 的 意思,字母c 是c o n t r o l 的缩写。u c l i n u x 是一个完全符合g n u g p l 公约的操作 系统,完全丌放代码,现在由l i n e o 公司支持维护。 m c l i n u x 从l i n u x2 0 2 4 内核派生而来,z c l i n u x 的设计思想就是通过对标准 l i n u x 内核的剪裁,去除虚拟内存管理部分代码,并且对内存分配进行优化,从而 达到提高系统运行效率的目的。它经过各方面的小型化改造,形成一个高度优化 的、代码紧凑的嵌入式l i n u x ,虽然它的体积很小,但是仍然保留了l i n u x 的大多 数的优点:稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支 持,以及标准丰富的a p i 。它的主要特征如下: ( 1 ) 通用l i n u xa p i ; ( 2 ) 内核体积 5 1 2k b ; ( 3 ) 内核+ 文件系统 ”提示符。在下载模式下,v i v i 为用户提供 了一个命令行接口,通过该接口可以使用v i v i 提供的一些命令。对v i 命令总 基于a r m 的嵌入式l i n u x 系统的研究及应用 结如表3 1 所示。 表3 1v i 的命令 命令 功能 l o a d把二进制文件载入f l a s h 或者r a m p a r t 操作m t d 分区信息 p a m m 设置参数 b o o t 启动系统 f l a s h管理f l a s h ,如删除f l a s h 的数据 在v i v i 的代码中包含a r c h 、d f i v e 培、i n i t 、i n c l u d e 和i i b 等目录,共2 0 0 多个 文件,在此只对v l v l 的代码进行简要的分析n 9 3 。 v m 的运行也可以分为两个阶段。在第一阶段完成含有依赖于c p u 体系结构 硬件初始化的代码,利用汇编语言完成。第二阶段是用c 语言完成的。在跳转迸 m a i n o i 函数之前,利用汇编语言编写了一段t r a m p o l i n e 程序作为阶段2 可执行镜像 的执行a , t a 点。之后可以在t r a m p o l i n e 中用处理器的跳转指令进入m a i n 0 函数中去 执行。当m a i n 0 1 函数返回时,c p u 就进行复位。t r a m p o l i n e 程序的源代码如下: l d r s p ,d w _ s t a c k _ s t a r t m o v f p 加 m o va 2 加 b lm a i n m o v p c , # f l a s e _ b a s e m a i n 0 函数是在f l a s h 中还是r a m 中执行,与选择n a n df l a s h 还是n o rf l a s h 启动有关。v i 从n a n df l a s h 中启动时,在v i 配置的时候定义宏c o n f i g _ s 3 c 2 4 1 0n a n db o o t 以编译以下代码段。 # i f d e fc o n f i g _ s 3 c 2 4 1 0 _ n a n d _ b o o t b lc o p y _ m y s e l f l d rr l ,= o n t h e r a m a d d p c , r 1 舯 n o p n o p 1 :bl b i n f i n i t e l o o p o n t h e r a m : # e n d i f 该代码首先是将v i v i 自身复制到r a m 中,并跳转到r a m 中去执行。芯片 复位时,n a n d h a s h 中最前面的4 k b 代码会被自动拷贝到芯片内部的4 k b r a m , 第三章基于a r m 平台的嵌入式l i n u x 系统的研究 然后开始执行。由于代码不能在n a n df l a s h 中执行,所以v i v i 从n a n df l a s h 中启动的情况下,“b lm a i n ”是跳到r 加订中的m a i n 函数。 如果v i 是烧写到n o rf l a s h 中启动的,因为代码可以在n o rf l a s h 中执行, 所以在配置v i v i 的时候,就不需要定义宏c o n f i g _ s 3 c 2 4 1 0 _ n a n d _ b o o t 了。 上段代码在条件编译的时候不进行编译,那么v i v i 就没有复制自身到r a m 去, 整个过程都在n o rf l a s h 中运行,这也包括“b lm a i n ”。直到运行m a i n 0 函数都还是 在n o rf l a s h 中。所以这种情况下,“b lm a i n ”是跳转到f l a s h 中的m a i n 0 函数。 3 4 内核的修改和剪裁 3 4 1 内核初始化过程分析 上一节已经对b o o t l o a d e r 进行了分析,在此讨论b o o t l o a d e r 调用了内核的初 始化函数之后的相关过程。图3 5 给出了u n u x 系统初始化2 1 1 的基本过程。 和b o o t l o a d e r 类似,内核的初始化也分为了几个阶段。下面分别针对每一阶 段做一简要地分析。 1 、第一阶段:内核的入口s t e x t b o o t l o a d e r u s e rp r o 伊a m s 图3 5l m u x 系统初始化的基本过程 s t e x t 是b o o t l o a d e r 所调用的内核入口。根据硬件的不同,内核的分布也不相 l i 引导程序开始运行 lj ;l 引导程序将操作柔统内核读入内存i i i i i t : i 内核开始运行,并初始化系统 i l 上 i l 初始化内存和硬件 ij l 初始化设备驱动 l : 上 l i 挂载根文件系统 - i 0 ii 运行初始化程序 l 开始运行用户进程 基于a r m 的嵌入式l i n u x 系统的研究及应用 同,因此s t c x t 所在的地址也不相同。从s t e x t 进入后,将完成一些针对程序运行环 境的建立,如处理器类型和体系结构的查询,内核页目录表和内核堆栈的初始化 等。处理完成后。将会调用内核中的s t a r t _ k e r n e l ,进入对内核初始化的第二阶段。 2 、第二阶段:内核的初始化函数s t a r t _ k e r n e l s t a r t 是内核初始化的主体。对于平台来说,在调用这个函数的时_ k e r n e la r m 候,系统已经有了个初始化的页目录表。并且已经有了一个初始化的堆栈,图 3 6 给出了该函数的调用图。该阶段主要的函数及其描述如表3 2 所示。 3 、第三阶段:内核的初始化线程i n i t 位于k e m e l i n i t m a i n c 的i n i t 函数是内核启动时的第三个阶段。在s t a r t _ k e m e l 中, 通过创建了一个内核进程来执行i n i t 函数。对于a r m 平台来说,在调用这个函数的 时候,系统已经依次对内核中的如下基础设施进行了初始化: 初始化引导时使用的b o o t m e m 内存分配器,并对有m m u 的处理器调用 p a 舀n g j n i t 0 对系统的分页机制进行了初始化,并打开m m u 。 对系统的异常和中断处理结构己经进行了初始化。 调度,软中断,定时器都做了初始化。 s t e x t 0 + s t a r tk e m e l 0 s e t u p _ a r c h 0 - - - - :b o o t m e m _ i n 。i 幻 t r a pi n i t 0 i n i l i r q 0 s c h e di n i t o l _ i n i l t i m e r v a c s o s o f t i n g _ i n i t 0 t i m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 收获机械制造工操作技能测试考核试卷含答案
- 灌区供水工操作规程测试考核试卷含答案
- 金属轧制工安全培训评优考核试卷含答案
- 2025秋北师大版(2022)小学劳动技术三年级第一学期期末模拟试题及答案
- 函数的单调性与最值(2大考点+6大题型)-2026年新高考数学一轮复习(讲义+专练)解析版
- 解析通识教育
- 广西壮族自治区柳州市2024-2025学年四年级上学期语文11月期中试卷(含答案)
- 揭秘太空科学
- 教育科技创新探索
- 广西部分学校2025-2026学年高一年级上册开学质量检测物理试题(解析版)
- 2025年湖北专升本计算机基础考试真题及答案
- 2025江苏盐城海氧深冷科技有限公司招聘工作人员2人笔试考试参考试题及答案解析
- 2025年公安局工作总结(汇报报告)
- 工程EPC总承包项目成本管控方案
- 2025EAU指南:上尿路尿路上皮癌(更新版)课件
- 酒店电工基础培训
- 洁净车间管理培训
- 2026届新高考数学冲刺突破复习 解析几何
- 2025年生态农业企业有机农业生产模式实施方案
- 国企企划专员考试题库及答案
- 有线通信基础课件
评论
0/150
提交评论