(计算机系统结构专业论文)嵌入式linux的研究及其设备驱动程序的开发.pdf_第1页
(计算机系统结构专业论文)嵌入式linux的研究及其设备驱动程序的开发.pdf_第2页
(计算机系统结构专业论文)嵌入式linux的研究及其设备驱动程序的开发.pdf_第3页
(计算机系统结构专业论文)嵌入式linux的研究及其设备驱动程序的开发.pdf_第4页
(计算机系统结构专业论文)嵌入式linux的研究及其设备驱动程序的开发.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机系统结构专业论文)嵌入式linux的研究及其设备驱动程序的开发.pdf.pdf 免费下载

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

文档简介

摘要 ab s t r a c t e m b e d d e d l in u x p o s s e s s e s g r e a t a p p li c a t i o n v a l u e a n d h a s b e e n t h e h o t s p o t o f o s r e s e a r c h , b u t it f a c e s t h e d e f i c i e n c y c a u s e d b y g u n . t o d e v e l o p e m b e d d e d o s f o r c o m m e r c i a l p u r p o s e , t h e a u t h o r a p p l i e s t o t h e r e s e a r c h a n d d e v e l o p m e n t o f e m b e d d e d l i n u x . t h i s p a p e r i m p l e m e n t s a s i m p l e e m b e d d e d l i n u x r u n n i n g in 8 m f l a s h , a n d p r e s e n t s c o r r e l a t i v e m e t h o d s a n d p r o c e s s i n d e t a i l . i n o r d e r t o s h r i n k t h e e m b e d d e d l in u x s o a s t o a d a p t t o r e a l - t i m e e n v i r o n m e n t , t h i s p a p e r p r o b e s i n t o l i n u x k e rn e l , p o in t s o u t t h e r e a s o n w h y i t c a n n o t a d a p t t o r e a l - t i m e e n v i r o n m e n t , a n d p u t s f o r w a r d t h e i m p r o v e m e n t a p p r o a c h e s . t o i m p r o v e v i rt u a l m e m o ry m a n a g e m e n t m e c h a n i s m , t h e k e r n e l c o d e i s a m e n d e d t o a v o i d t h e i n c e rt it u d e c a u s e b y p a g e s c h e d u l in g , t h u s t h e r e s p o n d in g s p e e d i s e ff e c t i v e l y i m p r o v e d . t h e ir r a t i o n a l it y o f l in u x s c h e d u l i n g m e c h a n i s m i s a l s o a n a l y z e d , a n d t h e m e t h o d s a n d m o d e l s s u c h a s t o f o rt i f y s c h e d u l i n g o c c a s i o n a n d a d o p t d o u b l e k e r n e l a r e a l s o p r o p o s e d t o i m p r o v e it . b e s i d e s , t h i s p a p e r a n a l y z e s t h e v f s m e c h a n i s m a n d p r e s e n t s i m p r o v e m e n t a p p r o a c h . d e v i c e d r iv e r i s o n e o f t h e m o s t i m p o rt a n t c o m p o n e n t s o f l i n u x k e rn e l . i t r u n s i n k e r n e l s t a t u s , a n d a n y p r o b l e m w i l l a ff e c t t h e s t a b i l i t y o r e v e n l e a d t o c r a s h . t h i s p a p e r p r o b e s i n t o t h e m e t h o d o f d e s i g n i n g d e v i c e d r i v e r u n d e r l i n u x , w i t h e m p h a s i s o n m o d u l e , i n t e r r u p t io n m e c h a n i s m , d m人 a n d p r e s e n t s m e t h o d t o a v o id r e s o u r c e d e a d l o c k a n d r e a l i z e c o o p e r a t i o n a n d m u t e x a m o n g p r o c e s s e s b a s e d o n t h e r e s e a r c h a b o v e , t h e a u t h o r r e a l i z e s a s m a ll s c a l e e m b e d d e d l i n u x s y s t e m , t o g e t h e r w it h d e v i c e d r i v e r a n d a p p li c a t i o n s o ft w a r e , w h i c h h a s b e e n s t a b l y r u n n i n g i n 8 m f l a s h f i n a l ly , t h i s p a p e r b r i n g s f o r w a r d v i e w p o i n t f o r r e m a i n i n g p r o b l e m s o f d e v e l o p i n g e mb e d d e d r e a l - t i me l i n u x k e y w o r d s : e m b e d d e d l i n u x , f i l e s y s t e m , r e a l - t i m e , v i r t u a l me m o r y ma n a g e me n t , d e v i c e d r i v e r 第一章 绪论 第一章 绪论 计算机经过了 短短的几十年发展, 现在已 经进入了 后p c 时代2 4 。 人们对计算 机的认识正随着各种新技术的出现而变得越来越深刻。计算正逐步从桌面走进设 备里面,计算机系统也从各种有形的外观也变为无形。大到航天航空领域、小到 手中的一个 p d a ,都植入了计算机系统,人们把这样一个系统叫做嵌入式系统。 随着c p u以 及存储器的大幅降价这种把一个计算机系统植入设备方法将变得更加 普遍。 这一类应用正是现在计算机领域研究的热点, 也是我国i t行业扶植的重点。 1 . 1 嵌入式操作系统的发展及问题 嵌入式系统的发展 所谓嵌 入 式系 统 ! i4 ! ( e m b e d d e d s y s t e m s ) 是以 应用为 中 心、以 计 算 机技 术 为 基 础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要 求的专用计算机系统。这一类系统通常被植入设备里面,在外表看不出来,它里 面运行的程序能够自 动控制和管理设备,有的甚至具备自 适应能力,有着高度的 智能,因而这种技术具有极其广泛的应有价值。 嵌入式技术发展到今天, 嵌入式系统给世界带来的工业年产值已 超过了1 万亿 美元! 2 2 。 这个数字 还会随着技术的 发展和人类需求的不断挖掘而快速的增长。 所以对于嵌入式系统的研究有着巨大的商业和社会价值。 美国汽车大王福特公司 的高级经理曾宣称,“ 福特出售的 计算能力已超过了i b m! , 就是嵌入式系统 广泛应用的很好事例。 应用软件层 嵌入式操作系统 ( 嵌入式 l i n u x , w i n d o w s c e 等) 基于微处理器的嵌入式系 统硬件平台 图1 - 1 嵌 入式系统的基本结构 一个典型的嵌入式系统如图 1 - 1所示,该计算机系统应该包括基于微处理器/ 微控制器的硬件平台和与之相适应的软件平台。其中,硬件系统性能依赖于芯片 设计这一核心技术,主要是c p u的设计;而软件系统的关键技术则体现在操作系 嵌入式 l i n u x的研究及其设备驱动程序的开发 统的设计上。在固定的c p u上,操作系统的设计合理与否是嵌入式系统能否达到 最佳性能的关键。 从图1 - 1 中我们可以 看到, 上层的应用软件通过系统调用取得来自 于 操作系统 的服务, 操作系统响应应用层的请求、 处理底层硬件中断,屏蔽系统的硬件特征, 为应用软件提供良好的服务。一个优秀的操作系统要提供进程管理、内存管理、 设备管理以及事务处理等等多种服务。 目 前基于微处理器/ 微控制器的硬件平台主要有: x 8 6 体系, 如a m d 4 x x , i n t e l 3 8 6 e x , a l i 3 8 6 ; a r m体 系, 如i n t e l 开发i n t e l s t r o n g a r m, 主要 用于 机顶盒 应用; m o t o r o la 公司的6 8 k / p o w e r p c体系,它主要应用在路由 器、交换机等网 络或者 手 持设备中。这些都是市面上使用很多的嵌入式专用硬件平台。本文主要讨论的是 嵌入式操作系统方面的问题,在涉及到嵌入式的硬件系统时,只对有关的问题做 简单的介绍。 为了和嵌入式系统特点相匹配,一个典型的嵌入式操作系统一般要具有小巧、 速度快和响应可预测性等特点,必须保证实时任务在要求的时间内完成。要注意 的是,实时特性不是嵌入式系统所必需的,具备较好实时性的嵌入式操作系统严 格的讲应该是嵌入式实时操作系统。由于嵌入式系统很多情况下是用于工控等场 合,所以绝大多数的情况都对实时性有一定的要求。嵌入式系统一般没有外部存 储器,所有的程序和数据都装在f l a s h 等固态的电子盘上。 目 前,用于嵌入式环境的嵌入式操作系统种类繁多:微软的 wi n d o w s c e . i n t e g r a t e d s y s t e m s 公司的p s o s 、 美国a l a m e d a 公司的v x w o r k s . l y n x 的l y n x o s 以 及加拿大q s s l 公司开发的q n x等等, 都是当 今主流的嵌入式操作系统, 这些 操作系统都已处于稳定实用的阶段。我国的中兴通讯、华为技术等企业就是使用 p s o s 与v x w o r k s 来开发通讯产品的。 北京科银京成技术有限公司的d e lt a o s 以 及 所谓 “ 女蜗计 划” 的h o p e n 系统, 是我国自 主开 发的嵌入式 操作系统, 也是我 国嵌入式o s 的代表。以上这些操作系统也不全是实时的。 嵌入式操作系统存在的共同问题 上面我们列出的嵌入式操作系统从性能上看各有自己的特点, 是比较成熟的, 也是目前比较优秀的嵌入式操作系统。现在我们来看看他们所具有的特点,如表 1 . 1 所示 ( 相关的资料主要来自于嵌入式开发网 络2 5 1 ) o 第一章 绪论 表1 . 1常用嵌入式操作系统的特点比较 操作系统特点 价格 vx wo r k s 支持p o s i x 1 0 0 3 . 1 b 实时扩展,a n s i c ( 浮点支持) a n d t c p / i p网络协议:具备一个高效的 微内核。 每客户1 6 , 5 0 0美 兀 p s o s y s t e m完全可扩展的嵌入式实时操作系统; 支持很多类型的处 理器,多种文件系统;目前 销售额为世界第二, 在我国 市场占有率是最高:主要缺点在于其上下文切换时间 长,实时性不强。 首 次 1 6 - 2 2 万 r mb左右,以后 每 客户 收 费在 6 - 9 万r mb之间 q n xq n x是唯一可以 将实时p o s i x环境外加一个完全的窗 口 系统安装在 1 m 以 下的电子盘或只读存储器上的操 作系统;真正的微内 核,具有完全可伸缩性;在符合 p o s i x外,还为wi n 3 2 , 微软新c i f s 协议提供移植工 具:高性能、 健壮、可靠性好、 可以实现到桌面的无缝 连接。 按目标系统使用 的系统模块配置 价格 l y n x o s具有u n i x兼容,符合p o s i x标准,支持多 进程和多 线程等特性, 是专为要求快速、 确定响应的复杂的实时 应用设 计的 操作系统。 与n x o s符 合p o s ix的1 0 0 3 . 1 的系统调用接口 标准, 同时实现p o s i x的1 0 0 3 . 1 b 标准 规定的实时扩展和 1 0 0 3 . 1 c标准规定的线程扩展。 l y n x o s 包括4 . 4 b s d系统调用接口 和库函数,能为任 何一个u n i x的平台上的应用提供相当高程度的源码级 水平上的兼容。 开发环境许可证 7 0 0 0 美元 每客户 1 0 , 0 0 0 美 兀 wi n d o w s c e“ 维那斯” ,嵌入但不够实时,属于软实时操作系统; w i n d o w : 兼容, 小内 核, 可伸缩实时 操作系统, 满足大 部分嵌入式和非嵌入式应用的需要。 不详,非免费 从表1 . 1 中, 我们看到了 各种嵌入式操作系统需要具备的一些基本的特点就是: 体积小、具有微内 核;符合p o s i x标准, 有的甚至要符合p o s i x 1 0 0 3 . 1 b 实时扩 展标准;支持多种 c p u;支持网络环境;有较好的开发调试环境;有的还要有具 备很好的实时性。 但是我们看到了这些操作系统存在的共同问题就是价格特别昂贵,每客户都要 在2 。 万元r mb左右,更大的系统收取的费用更高,一些系统版本升级也需要付 费,这些都是嵌入式系统价格上的巨大屏障。 透过这种价格,我们还看到,用户对于这种操作系统的使用很不自由。由于系 嵌入式l i n u x 的研究及其设备驱动程序的开发 统内核不公开,一切开发要依赖于操作系统提供商提供的支持,用户无法根据自 己的需求方便地进行应用开发,这也是它们共同存在的问题。 正是这么昂贵的价格和核心的不公开使得嵌入式产品开发、应用变得非常困 难,但从另一方面讲,也使得对嵌入式操作系统的研究开发蕴含着巨大的商业价 值。而且,在我国到目 前为止,还没有一个真正实用的、有影响力的嵌入式操作 系统,这对于我国i t行业的发展很不利。 本文立题的基本思路之一是, 如果能够找到一种现存的基本满足或者通过改进 后能够满足这些基本条件的自由软件,以它为基础进行改造,对我们开发具有自 有知识产权、廉价的嵌入式操作系统来说,是非常有利的。而在众多的自由软件 中, l i n u x 由于其免费、 健壮、网 络支持好、 程序代码公开且具有部分微内 核等特 性而被认为是理想的嵌入式操作系统开发母板。 1 . 2 l i n u x 用于嵌入式环境的优势 我们知道l i n u x 是一个桌面系统, 但是在分析它的内核后我们可以 看到它内 核 健壮、精简、可剪裁并且具备有部分的微内核机制,同时它还具有强大的网络功 能,有一定的实时性,这些都是它适合于嵌入式环境的优势。此外,它还有其他 嵌入式操作系统所不具备的优点,比如免费等特点。 l i n u x 用于嵌入式环境的优势 具体表现如下: 1 , l i n u x内核精简, 各部分的功能明确, 可扩展性强, 容易剪裁。 在内核模块 中,进程管理、内存管理和文件系统是其三个最基本的子系统。如图 1 - 2 所示,阴影部分为它的单内核结构,用户程序可以直接通过系统调用或者 函数库来访问内核的资源。 用户进程 r 函数库 系统调用 文拌系统 内存管理 图1 . 2 l i n u x 单内核结构 第一章 绪论 2 、它免费, 可以 极大幅度的降低产品成本,它的产品在价格上面拥有优势, 只要不违反g p l协议,就可以自由发布和使用软件。l i n u x的开发者遍布 全球, 无数的自由 软件爱好者都会支 持它的发展,为它找“ b u g , 完善它 的性能。 3 、代码开放,可以免费获得,有利于后来者学习,缩短开发过程。 4 , l in u x 符合i e e e p o s i x . 1 标准, 有非常好的可移植性,而且具有非常稳定 的性能。 它对多种c p u都能够很好的支持,而且对驱动程序的管理有它自 己独特的方法。它本身是u n i x系统的一种克隆,支持商业u n i x的全部 功能,u n i x平台上众多的应用程序稍加修改就可以 应用到嵌入式环境中 l i n u x 平台。 5 、支持t c p / i p 协议, 有强大的网络功能。 l i n u x 天生就是一个网络操作系统, 几乎所有的协议和网络接口都被定制在其中,这一点是别的嵌入式操作系 统所不具备的。 6 、丰富的开发工具。 l i n u x 提供c , c + + , j a v a 以及其他很多的开发工具, 这 些工具可以 被免费地使用。而且这些工具本身在设计的时候就考虑到了 支 持各种不同的微处理器结构和调试环境。 7 、大量的文档。大量规范的文档有利于后来者能够快速的跟上最为先进的 l i n u x 技术, 跟得上l i n u x o s 的开发步骤。 1 .3 桌面l i n u x 用于嵌入式环境存在的问题 虽然l i n u x 用于嵌入式环境有着巨大的优势, 但是将其直接用于嵌入式环境还 是不行的。比如,嵌入式环境一般没有硬盘,只有电子盘,嵌入式环境对实时性 要求比桌面环境要高等。 诸如此类的嵌入式系统特点使得普通的桌面l i n u x 直接用 于嵌入式环境的确存在诸多不足。具体表现如下: 1 、系统过于庞大。安装一个桌面l i n u x操作系统少一点也需要 5 0 0 m左右, 系统越往后发展,需要的空间就越大。在一般情况下,只有几兆大的电子 盘是无法装下的,这些都需要采用必要的方法和技巧来解决。 2 、内核需要裁剪。 嵌入式产品的可用资源比较少, 不需要过多的考虑兼容性, 所以桌面的内核相对各种具体嵌入式系统来说就显得过大。要让它很好地 适应于环境,就需要裁剪其内核到可适用的大小。 3 、文件系统的选择。桌面的l in u x 用的是e x t 2 文件系统,该文件系统用于桌 面环境具有的优势是很明显的, 但是在嵌入式环境中便显得过大, 组织e x t 2 文件系统的数据结构中的一些成员相对而言就显得比较累赘。 嵌入式l i n u x 的研究及其设备驱动程序的开发 1 . 5 嵌入式l i n u x 研究存在的问题 嵌入式l i n u x 虽然发展迅速, 开发人员众多, 但是由于l i n u x自由软件的特性, 发展时间短暂,在发展过程中也出现了一些问 题。绝大开发商是使用桌面 l i n u x 改进而成 ( 除了 个别少数开发商从头开发外) ,在这种第二次开发的方式中,存在 以下几个问题: 1 、开发者大多数属于个体行为,使得开发的方法和过程不严密,而且对于方 法没有很好的提炼; 2 、对文件系统不断地提出修改建议,但是并没有从操作系统本身出发提供修 改的依据和方法,不能给后续开发者提供便利; 3 、 对虚拟存储机制一般采用关闭交换区的办法,而没有考虑从内核中剔除方 法,以 更好的满足实时性; 4 、 实时 性不强是l i n u x 用于实时 环境时的 主要缺点, 除了r t l i n u x i i 和k u r t f 对 l i n u x进行了实时扩展,其余的都绕过了这个难题。但是 r t l i n u x是从 头开发的,开发周期长。 5 ,由于嵌入式l i n u x 发展时间短, 多数现有的嵌入式l i n u x 版本并不稳定, 它 的健壮性、可扩展性以及实时性都不是很理想。 基于以 上的原因, 所以作者决定不采用现存的嵌入式l i n u x 作为母板开发一个 小型嵌入式l in u x , 而采用稳定的l i n u x 版本( r e d h a t l iu x , 内 核2 .2 . 1 4 ) 重新开发。 另一方面, 由于l i n u x 出现的比较早, 而且r e d h a t 公司是l in u x 开发最为优秀 的公司之一, 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 ,并对嵌入式操作系统的理论、技术进 行深入研究是非常必要的,而且富有深远的意义。作者在开发的过程中借鉴了众 多的l i n u x 爱好者的经验, 许多的网站提供了有用的资料, 这些经验和资料开拓了 我的思路,也避免了许多弯路。 1 .6本文解决的问题和各章节的内容简介 从前面的分析可以看出, 从头开发一个嵌入式l i n u x 不是一个明智的方法, 也 不是自由软件开发精神所鼓励的。为了项目的需要,缩短开发周期、节省开发成 第一章 绪论 本,作者选择通过将普通的桌面l i n u x ( r e d h a t 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 内核进程调度、 内 存管理、 设备管理等机制后, 找到了l i n u x 用于嵌入式实时环境时存在的问 题和缺 陷,并就对系统性能产生主要影响的文件系统、实时调度和虚拟存储器机制三个 方面提出了改进思路,并给出了相应的解决方案。 虽然这些问题在一些文献上也提出过,但是并没有给出代码级分析和修改的 详细方案。尤其在剔除虚拟存储管理机制方面,作者从操作系统内核入手,对内 核代码进行修改,去除了由于页面调度带来的响应不确定性,有效的提高了系统 的响应速度。在实时调度上,分析了l i n u x 现有调度机制的不合理性, 提出了增加 调度时机、 采用双内核等方法, 给出了改进的模型。作者还对文件系统 v f s机制 进行了分析,提出了改进方法。 作者开发了本项目的设备驱动程序, 论文中给出了l i n u x 下驱动程序开发的方 法,并对设备驱动程序中的影响系统健壮性问 题进行了总结和分析,从中 提炼出 了两类重要的问题,给出了解决的办法。同时也提出了其他驱动程序设计过程中 应该注意的问题。 作者最终实现的小型化嵌入式 l i n u x系统、所有的设备驱动程序以及全部的 应用程序已经在8 m 的电子盘中稳定运行。 以上所有的工作都由作者独立完成。 由于分析 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 的过程; 第三章提出了使用桌面l i n u x 开发嵌入式l in u x 需要改进的若干问题; 第四章分析了虚拟文件系统、e ) ct 2文件系统等,提出了文件系统的选择和改 进方案; 第五章分析了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 的实现 由于嵌入式l i n u x 实现和设备驱动程序设计和项目 相关密切, 所以有必要先对 项目 的背景做简单的介绍。 2 . 1项目 功能需求简介 作者参与 “ 计算机外部设备共享设备”的开发,该设备需要完成的功能如图 2 . 1 所示, 产品的整个控制系统装在一个标准机架 1 个u的标准设备里面。图中的 k为键盘信号线, v为显示器信号线, m为鼠标信号线。 服务器i服务器2 服务器7洛服务器i服 务器7 图2 . 1计 算机外部设备共享设 备功能图 该设备的基本功能是为多个服务器提供一套公共的外部设备( 包括键盘、 鼠 标 和显示器) ,从而避免为每一个服务器配置这些常用的外设,因为在服务器正常运 转时这些常用外设都出于空闲状态,不但占用资金,而且占用机房空间。本地的 管理员在身份确认后可以通过这个公共的外设对自己的服务器进行进行配置,管 理人员同时也可以通过互联网络对访问配置自己的服务器,所以的配置都要通过 身份验证。其功能概括起来包括以下几个方面: 1 、支持服务器本地或者远程启动和关闭操作,即使在服务器死机时也要保证 这种操作的可靠执行。 2 、支持本地或远程管理人员获取服务器运行的信息并对服务器进行配置和管 嵌入式l i n u x 的研究及其设备驱动程序的开发 理,所有的操作都必须经过身份验证。 3 、为了支持远程服务,设备要自 动选择目 标服务器,采集它的k . v . m信 号通过i n t e r n e t 网络送往远程, 并将来自 于 远程的任何控制信息进行传递、 解释和执行,以完成对目标服务器的控制。 4 、支持本设备中的操作系统、设备驱动程序以及所有的应用软件网络升级。 要完成这么复杂的任务,实现所有的功能,不是一套简单的控制程序所能够 胜任的,必须采用操作系统。而又由于该设备要求的体积小,所以必须采用嵌入 式操作系统。 基于设备体积和产品价格方面两方面的考虑,以及第一章所论述的原因,作 者决定采用市面上常见的桌面l i n u x 操作系统来作为作为嵌入式l i n u x的开发母 板,对该桌面的l i n u x 进行小型化,并把该小型化的嵌入式l i n u x 用作本设备的 操作系统。 在项目的第一期开发过程中,嵌入式的硬件系统采用x 8 6 c p u芯片、i s a总 线, 外加r a m. f l a s h 电 子盘、 网卡和专门 设计的数字采集设备等组成。 总体要求 小型化的嵌入式操作系统,包括操作系统、驱动程序以及应用软件在内必须装入 8 mb的f l a s h 盘中。该嵌入式系统的结构简单描述如2 .2 所示。 图2 .2计算机外设共享设备系统结构图 对于设备的硬件体系,作者在这里就不做过多的介绍了,本文主要想介绍作 者如何成功的开发了嵌入式 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 的过程 和方法。 第二章 一种简单的嵌入式l i n u x 的实现 2 . 2小型化后嵌入式l i n u x 组成部分 桌面l i n u x 的嵌入式应用实际上是l i n u x 小型化p 5 1 的过程。一个桌面系统一般需 要很大的磁盘来存储系统本身、数以百计的设备驱动以及庞大的应用程序, 这不 可能全部安装到一个只有几mb的f l a s h 上。好在l i n u x 本身是一个非常灵活的 系统,可以提供完成嵌入功能的基本内核和用户所需要的界面。通常来说,一个 经过小型化的嵌入式l i n u x 只是需要具备下面基本的元素就可以适用于一般的嵌 入式环境了: 1 、适当的引导工具,比如在普通的p c机上,使用l i l o引导装载系统; 2 、精简的l in u x 微内核,只留下包括内存管理,进程管理以及事务处理等部 分; 3 、初始化进程,与系统的硬件环境相关,c p u不同,初始化进程就不相同; 上面三项是最为基本的部分, 但是只有这些是不能做什么事情的, 它只是操作 系统的基本的框架,只是代表操作系统自己能够运行而己。如果要使系统能够真 正有用还必须加上: 4 、设备驱动程序。没有驱动程序的系统几乎不存在,有的设备上有不同的硬 件模块,这就可能需要加载多个驱动程序。驱动程序一旦加载,就会运行 在l i n u x内核中。 5 、提供应用程序。这些程序用来完成系统特定应用领域的功能,通常运行在 用户层。 6 、一般来说,还需要文件系统,通常放在 f l a s h中。文件系统可以自己做, 也可以 采用现存的文件系统如e x t 2 , m s - d o s 等。 7 、对于一个可以通过网络连接的系统而言, 有时还需要加入t c p / i p的网络堆 栈。如果将系统用在特定的工业网络或者交换机则需要增加相关的协议支 持部分。 具备了这些模块,整个的嵌入式系统就算完成了。在我们的项目 中,着重完 成的是l i n u x内核的定制、驱动程序的编写及合乎需求的应用软件的开发。 2 . 3开发嵌入式l i n u x 步骤 使用桌面的 l i n u x开发该嵌入式 l i n u x主要是根据应用系统设计的需要对 l i n u x内核源代码进行修改或者裁剪然后重新编译。当然开发设备驱动程序也是 其中主要的工作之一,驱动程序设计的好坏,直接影响内核稳定。应用程序的开 发不是操作系统本身的任务,但是考虑到开发的完整性,也将它列出来。具体的 过程如图2 . 3 所示。 嵌入式l i n u : 的研究及其设备驱动程序的开发 图2 .3嵌入式开发过程 源代码级修改内核 对于一个具体的应用来说, 需求很不一样, 所以在开发一个嵌入式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 内 核( k e r n e l ) 重 新编译l i n u x 内 核 ( k e r n e l ) , 去掉内 核中 不需要的 模块。 就本项目 而言, 只有 i s a 设备,所以应该去掉p c i 设备的支持的部分;也没有显示,应该去除 x - wind o ws 部分:但是网络驱动程序部分是必须保留。编译内核的主要步骤如 下: 1 、初始化环境,使用# m a k e c l e a n 。在l i n u x 安装和运行期间,系统的 / u s r / s r c / l i n u x / 目 录可能会产生一些文件,为了防止这些文件影响内核的编 译,需要使用该命令清除这些文件。 2 、配置内 核, 使 用指令# m a k e m e n u c o n f i g 对内 核进行配置以 支持具体的 硬件, 提供一种文本的窗口 进行内 核配置。当 然也可以 用# m a k e x c o n f i g , 但是该 第二章 一种简单的嵌入式l i n u x 的实现 指 令 只 有 在 x - w i n d o w 下 运行。 当 然也 可以 用 # m a k e c o n f ig 来 配置 。 3 、编译内核使用指令如下: # m a k e z i m a g e # m a k e b z i m a g e 第一个命令以普通的方式编译内核。此命令将在 / a r c h / x x x / b o o t/ ( 其中 x x x 为处理器的 结构) 目 录下产生名为 z i m a g e 的内 核。 如 果内 核的 映 像太大就必 须使 用第 二个命 令 m a k e b z i m a g e 生 成一个压 缩的内 核 。 还 有 m a k e z d is k、 m a k e z li lo 具 体 用 法 可以 参 看 相 关 的 书 籍 p o l p 2 1 4 、使用内核 编译好的内核存放在/ a r c h / x x x / b o o u ,可以在该目 录下将内核拷贝到/ b o o t / 目录下。 在通用的p c 上, 只要修改/ e t c / l i l o . c o n 嗽 可以使用刚刚编译好的新 内核了。 编写 b o o t l o a d e r 制作b o o t r o m用于加载嵌入式l i n u x 内核到内存中。当然,如果采用的 f l a s h 具有硬盘仿真能力,而且使用的c p u 是x 8 6 体系,就没有必要开发专门的b o o t l o a d e r 了,l i l o 就是很好的引导工具,功能强大,使用也方便。具体的l i l o 启动 的配置可以参看相关的书籍。 开发适当的设备驱动程序 驱动程序是直接和硬件打交道的部分, 它运行在内核态, 驱动程序的设计完美 与否不仅影响系统功能的完成,严重的时候还会导致系统崩溃。驱动程序设计是 开发嵌入式产品的很重要的部分。不同的设备需要不同的设备驱动程序,例如同 是打印机,不同厂商都有不同驱动程序。一个针对具体应用的嵌入式系统,它的 硬件设计往往是独特的。 对于驱动程序的设计,文章将在后面来阐述。 开发相关的应用程序 应用程序的开发收到嵌入式 l i n u x的限制,要注意该操作系统中提供的资源 和提供的功能,才能成功的开发出相关的应用程序。 嵌入式l i n u x 的研究及其设备驱动程序的开发 通过以上步骤,本项目 最终定制的嵌入式l i n u x 操作系统配置如图2 .4 所示 其中e z y d r i v e 是作者开发的设备驱程序。 应用软件 u0 s y s t e ml i n u x l i b r ai e s 操作系统 f i l e s y s t e mk e r n e lt c p / i p 驱动程序 s e r i al d r i v e r b z y d r i v e re t h e r n e t d ri v e r 物理硬件 图2 . 4嵌入式l i n u x 的最终配置 2 .4组建嵌入式l i n u x 的根文件系统 在上述的关键步骤完成之后,现在是要把整个系统安装到这个 8 mb的f l a s h 中了 。 也就 是说要 在f l a s h 中 形成l i n u x 的 根( r o o t ) 文 件系统, 这个根文件系统必 须包含支持整个嵌入式l i n u x 系统运作的所有内容。比如l i n u x内核、 驱动程序、 相关的设备以及相关的配置文件等等。所以在这个 f l a s h上必须包含一个最小化 的l i n u x 文件系统。由于采用了具有硬盘仿真功能的】 d e接口,所以只需要将该 f l a s h 插在计算机上,挂接在从硬盘的第二个 i d e插槽上。在开发的主机上编译 好内 核和需要的驱动程序, 然后将f l a s h 当成另外一个硬盘, 在上面建立子目 录。 将相关的内 容从开发的硬盘中拷贝过去就可以了。首先要在用于开发的硬盘上建 立 一 个目 录为 l b z y d i s k , 然 后将f l a s h 作为 一 个设 备m o u n t 上 去, 不 用的 时 候 使用 u m o u n t , 去掉它就可以了。 f l a s h 下, 应该包含的文件及目 录如下。 整个根文件目 录如图2 . 5 所示: / b o o t 儿i n / s b i n / d e v / e t . / l i b / m n t / p r o . / l m , / a s r / v . r 图2 . 5 嵌入式l i n u x 的根文件系统 i 、基本的文件系统结构; 第二章 一种简单的嵌入式l i n u x 的实现 2 、 最小的h 录集; / d e v , / p r o c , / b i n , / e t c , / l ib , / u s r , / t m p ; 3 、 基本的命令集: s h , i s , c p , e t c 4 、最小的配置文件集:i n it t a b , f s t a b , e t c . 5 、 必 要的设备: / d e v / h d * , / d e v / t t y * , / d e v / f d o , e t c 6 、相关的动态链接库。 实现过程 1 , 建立相关的目 录。 注意, 这些目录名字应该和l i n u x 文件系统原来的一样, 不要更改,因为l i n u x的配置文件中涉及到的目 录,这些目 录名是固定的。如果 更改了,系统可能找不到自己需要的东西而不能正确的执行。这些目 录包括 / b o o t , / b i n , / s b i n , / d e v , / e t c , / l i b , / m n t , / p r o c , a m p , / u s r , / v a r o 2 , 将需要的文件拷贝到相关的目 录下, 最终的文件系统结构图如2 .5 。 各目 录 下文件的作用如下: 内 核 映 像 位于 / b o o t 下, 该目 录 需 要 包 含b o o t .b , s y s t e m .m a p 和b z l m a g e o b o o t .b 是 合并s y s t e m .m a p 和b z l m a g e 的 文 件; s y s t e m .m a p是与内 核映 像 有 关的 a 数 定 位信息; b z i m a g e 则是重要的内 核映 像。 / b i n目 录下包含了常用的 用户命令, 主要有: c a t , c h m o d , b a s h , d a t e , s h , l o g i n , m o u n t , u m o u n t , c p , i s , ft p , p i n g , t e l n e t , r m , r m d i r , m k n o d o / s b i n目 录下主要包括所有的 系统, 主要有i n it , h a lt , i d c o n f i g , m i n g e t t y , r e b o o t , r d e v , r u n l e v e l , s h u t d o w n , m k f s , u p d a t e 等等。 / e t c目 录下是所有的配置文件。 完成对系统启动、 运行和终止的各种脚本。 主 要包括有 l i l o .c o n f , h o s t n .a me , f s t a b , g r o u p , i n it t a b , g r o u p , p a s s w d , p w d b .c o n f , r c . d等等。 其中l i l o .c o n f 是l i l o 的配置文件, 对于需要用l i l 。 引导的 系统需要正确配置该文件。 如果不需要l i l o , 就可以不要它。 in it t a b 用于决定运行 级别,到底是单用户还是多用户等等。r c .d目 录中包含了各运行级别需要的运行 脚本。也可以通过修改脚本把自己的程序添加到脚本里面,使系统在启动后自 动 运行自己的程序。 / d e v 目 录下含有系统所需要的 特殊的设备文件。 需要有c o n s o l e , f d o , h d a l , h d a 2 , h d a 3 , k e m e m , m e m , n u l l , t t y i , tt y s o . c o n s o le , b z y 表示 控 制台 设备; # d 0 为软驱; n u l l 表示l i n u x 系统中的空设备, 用于删除文件; h d a i 为第一 个i d e 硬盘的 第一 个

温馨提示

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

评论

0/150

提交评论