




已阅读5页,还剩63页未读, 继续免费阅读
(电力电子与电力传动专业论文)基于dsp的嵌入式实时操作系统的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三至三垩奎耋三茎堡圭兰釜耋 a b s t r a c t l nt h et i m eo fp 0 s t p c ,w h j c h c t e m p o r a r yd i g i t a l i n f o m a t i o nt e c h n o l o g y d l i v e l o p sa ts p e e d ,w i t he m b e d d c ds y s t e m sa p p l i c a t i o ni v 8 s i v e ,e m b e d d e dr e a lt i m e o p e r a t i n gs y s t e m s a r cb o o m i n g t h i st h e s i s g i v c s ab f i e fi n t r o d u d i o nt ot h ec h a m c t e ro fe m b e d d e df e a l t i m e 叩e r a t i n gs y s t e m s ,卸矗l y s i n g t h e i rb a s i c t h e o r y a n ds o m eo f i m p o n a n tc o n c e p t s i n t d u c e dar t o s 硝习o s i i ,t h ek e m e lm e c h a n i s m ,t h ec o r cd a t as t m c t u r ea n da p i a r ed e e p e ra n a l y z e d c o s i ii ss u c c e s s f u lp o n c db yt m s 3 2 0 c 5 4 0 2d s kb o a r do f t c x a si n s t m m e n t sa n dt h ec c s ( c o d ec o m p o s c rs t l l d i o ) 2 oi n t e g r a t i o nd c v c l o p m c n t e n v i m n m e n t f i n a l l y ,s o m ef o u n c t i o n so f 弘c o s 一a 他c x p 鞠d c d 如di m p r o v e d t h i st h e s i si s 甲i z c d 蕊f o l l o w : 1 i n t r o d u c et h el l i s t o r y p r o s p e c to ft h ec m b c d d e dr e a lt i m es y s t e ma n dt h e t e c h n o l o g yl e v e lo ft h i sp c r i o di nc h i a ,a n dc n u m e r a t e 4k i n d so fc o m m o ne m b e d d e d r e a lt i m e o p e r a t i n gs y s t e m s 2 t h ee r t o s sc l a s s i f i c a t i o na n dd e t a i l sa r ci n t f o d u c e d ,w h i c hi n c l u d i n gt a s k , s c h e d u l e r ,r e e n t r 姐c y p f i o r j t y ,m u t u a le x d u s i o n ,d e a d l o c k 姐d s oo n 3 卢c ,o s - i i k 啪c li s a n a l y z e d f m mt 淞k m a n a g e m e n t , i n t e r t a s k c o m m u n i c a t i o n ,t i m cm a | i a g e m e n t ,i n t e m l p t sm a n a g c m e n t 4 t op o r tp c o s - i is y s t e mk e m e l t o1 m s 3 2 0 c 5 4 0 2d s p ,p a n so f c o s i i s y s t e m k e m e ia r ep r o g r a m m e d t b s t i n gt h ek e r n e la f t e rp o n i n g ,锄dm a k i n gs t a t i s t i co f t h ec p uu s a g er a t e ,m e m o r yr e q u i f c m e no fk e m e l ,a n de x e c u t i n gt i m eo fc o m m o n f o u n c t i o n 5 e x p a n d a n d i m p r o v e s o m ef o u n c t i o n so f 肛c ,o s - l i t h ed r i v e ro ft h e p e t i p h e r a lh a r d w a r e a r cp r o 罟即m m e d ,w h i c h 印e e c he n c o d c ri sr c a l i z c db a s e do n ; i n t e r m p ts e r v i c er o u t i n i so p t i m i z e d ;t 0r c d u c et h ea m o u n to fm e m o r yn e e d e di na n a p p l i c a t i o n ,i n t e r r u p t ss t a c k i sd e s i 驴e d k e y w o r d s :e m b c d d e d r e a l t i m eo p e r a t i 彻s y s t e m ;d s p ;卢c ,o s i i ;k e r e l i l 第一章绪论 1 1 引言 第一章绪论 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于 应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 它一般由嵌入式微处理器、外围硬件设备、嵌入式软件三部分组成,用于实现对 其他设备的控制、监视或管理等功能。嵌入式系统的概念出现在2 0 世纪7 0 年代。 当时,由于嵌入式软件开发大多数是基于处理器直接编写,不能将系统软件和应 用软件分开处理,它只能应用于某种特定的微处理器,这导致了嵌入式软件开发 周期长,重复劳动严重,可移植性差等不足。随着嵌入式系统中软件比重不断上 升,应用程序越来越大,也越来越复杂,对开发人员、应用程序接口、程序档案 的组织管理成为一个大的难题,可以说传统的开发模式已经严重制约了嵌入式软 件的发展。嵌入式实时操作系统( e r t o s ) 的引入相当于引入了一种新的开发与管 理模式。很好的解决了上述问题。 嵌入式实时操作系统是嵌入式应用软件的基础和开发平台,是一段嵌入在目 标代码中的软件,用户的其它应用程序都建立在e r t o s 之上。它使得开发人员可 以在一个较高的层次构造自己的嵌入式软件,大大降低了工作量,缩短了产品推 出周期。 1 2 嵌入式实时操作系统综述 1 2 1 嵌入式实时操作系统的发展 从1 9 8 1 年r e a d ys y s t e m 开发了世界上第一个商业嵌入式实时内核( v r t x 3 2 ) 【2 1 ,到今天已经有二十多年的历史。嵌入式实时操作系统先后从实模式进化到保 护模式,从微内核技术进化到超微内核技术,在系统规模上也从单处理器的 e r t o s 发展到支持多处理器的e r t o s 和网络e r t o s ,在操作系统研究领域中形 成了一个重要分支。 1 东工业大学工学硕士学位论 e r t o s 发展历史 嵌入式实时操作系统( e r t o s ) 的研究是从上世纪六十年代开始的。从系统结 构上看,e r t o s 到现在己经历了如下三个阶段: 1 早期的嵌入式实时操作系统 早期的嵌入式实时操作系统,其实还不能称为真正的e r t o s ,它只是小而简 单的,带有一定专用性的软件,功能较弱,可以认为是一种实时监控程序。它一 般为用户提供对系统的初始化管理以及简单的实时时钟管理,有的实时监控程序 也引入了任务调度及简单的任务间协调等功能。属于这类实时监控程序的有 r 1 m x 等。那个时期,实时应用较简单,实时性要求也不高。应用程序、实时监 控程序和硬件运行平台往往是紧密联系在一。起的。 2 专用嵌入式实时操作系统 随着应用的发展,早期的e r t o s 己越来越显示出明显的不足了。有些嵌入式 实时系统的开发者为了满足实时应用的需要,自己研制与特定硬件相匹配的实时 操作系统。这类专用嵌入式实时操作系统在国外称为r t o sd e v e l o p e di nh o l l s e 【3 ;i o 它是在早期用户为满足自身开发需要而研制的,它一般只能适用于特定的硬件环 境,且缺乏严格的评测,移植性也不太好。属于这类嵌入式实时操作系统的有i n t e l 公司的i m a x 8 6 等。 3 通用嵌入式实时操作系统 在各种专用e r t o s 中,一些多任务的机制如基于优先级的调度、实时时钟管 理、任务间的通信、同步互斥机构等基本上是相同的,不同的只是面向各自的硬 件环境与应用目标。实际上,相同的多任务机制是能够共享的,因而可以把这部 分很好地组织起来,形成个通用的嵌入式实时操作系统内核。这类嵌入式实时 操作系统大多采用软组件结构,以一个个软件“标准组件”构成通用的嵌入式实 时操作系统。一方面,在e r t 0 s 内核的最底层将不同的硬件特性屏蔽掉;另一方 面,对不同的应用环境提供了标准的、可剪裁的系统服务软组件。这使得用户可 根据不同的实时应用要求及硬件环境选择不同的软组件,也使得嵌入式实时操作 系统开发商在开发过程中减少了重复性工作。这类通用嵌入式实时操作系统,有 i n t e g r a t e ds y g t e m 公司的p s o s + 、i n t c l 公司的i i t m x 3 8 6 ,r e a d ys y s t e m 公司( 后与 m i c r o t e cr e s e a r c h 合并) 的v r t x 3 2 等mj 。 第一章绪论 e r t o s 的未来 将来,e r l o s 研究方向主要集中在如下几个方面: 1 e r t o s 的标准化研究 现在,国外的e r 丁0 s 开发商有数十家,提供了上百个e r t 0 s ,它们各具特 色。但这也给应用开发者带来难题,首先是应用代码的重用性难,当选择不同的 e i 汀o s 开发时,不能保护用户已有的软件投资,e r l d s 的标准化研究越来越被重 视。美国l e e e 协会在u n i x 的基础上二,制定了实时u n i x 系统的标准p o s i x1 0 0 1 4 系列协议,但仍有许多工作还待完成。 2 多处理器结构e r t o s 、分布式实时操作系统和实时网络的研究 实时应用的飞速发展,对e r l 、o s 的性能提出了更高的要求。单处理器的计算 机系统已不能很好地满足某些复杂实时应用系统的需要,开发支持多处理器结构 的e r t o s 己成为发展方向,这方面比较成功的系统有p s o s + m 等。至于分布式 e r t o s ,国外一些e r t o s 厂家虽己推出部分产品,如q n x ,c h o m s ,p l a n 9 等,但 分布式实时操作系统的研究还未完全成熟,特别是在网络实时性和多处理器间任 务调度算法上还需进一步研究。 3 集成的开放式实时系统开发环境的研究 e i 玎0 s 研究的另一个重要方向是集成开发环境的研究。开发实时应用系统, 只有e r t o s 是不够的,需要集编辑、编译、调试、模拟仿真等功能为一体的集成 开发环境的支持。开发环境的研究包括网络上多主机问协作开发与调试应用技术 的研究和e r t o s 与环境的无缝连接技术的研究等方面。 e r t o s 在中国 中国在计算机基础工业上落后于西方国家,在嵌入式处理器上也是如此的。 但是嵌入式系统面向应用的特点决定了处理器应用开发的产值要占有整个嵌入式 工业的大部分,而且将嵌入式处理器与具体应用结合这种知识创新,只能由精通 应用系统的用户来完成。因此中国在嵌入式系统方面存在着相当大的发展机会。 中国已经有1 0 万余名单片机开发工程师,其中很多人都是在资料和信息有限的条 什下通过实践,精通了单片机,并研制出了自己的产品。但是和国外的开发相比, 开发手段和水平还相对较低,标准化程度不够、重复劳动较多。这些问题主要是 由于单片机开发中缺乏工程化、标准化管理,缺少行业联合。在引入e i h o s 和嵌 广东工业大学工学硕士学位论 入式系统软件工程管理后这些现象可望得到很大的改变。 嵌入式系统是信息产业走向二十一世纪知识经济时代的最重要的经济增长点 之一,这是一个不可垄断的工业,对中国的信息产业来说充满了机遇和挑战。嵌 入式工业的基础是以应用为中心的芯片设计和面向应用的软件开发,实时多任务 操作系统( r t o s ) 进入嵌入式系统工业的意义,不亚于历史上机械工业采用三视图 后的发展1 6 j ,对嵌入式软件的标准化和加速知识的创新来说是一个里程碑。这应 特别引起中国信息产业界的关注。 1 2 2 嵌入式实时操作系统的特点 嵌入式实时操作系统并不是简单嵌入的操作系统,它与通用操作系统有很多 本质的不同。这些不同主要体现在体积小、实时性、可裁剪性和可靠性四个方面。 1 体积小。嵌入式实时系统有别于一般的计算机处理系统,它不具备像硬盘 那样大容量的存储介质,而大多使用闪存( f l a s l lm 锄o r y ) 作为存储介质。这就 要求嵌入式操作系统只能运行在有限的内存中,不能使用虚拟内存,中断的使用 也受到限制。因此。嵌入式操作系统必须结构紧凑,体积微小以满足嵌入式系统 硬件的限制。 2 实时性。因为嵌入式系统主要是对仪器设备的动作进行监测控制的,而一 般的通用操作系统基本上是根据人在键盘和鼠标发出的命令进行工作。相对而言, 仪器设备的动作具有严格的、机械的时序要求,而人的动作和反应在时序上并不 那么严格。比如,用于控制火箭发动机的嵌入式系统,它所发出的指令不仅要速 度快,而且多个发动机之间的时序要求非常严格,否则就会差之毫厘、谬之千里。 在这样的应用环境中,非实时的普通操作系统无论如何是无法适应的。如果我们 所开发的设备并不是像航空航天器那样生命攸关或者生产控制那样的关键任务系 统,而是像消费电子类那样,即使出现错误也不会造成灾难性后果的设备,实时 性也是同样很重要的! 因为设备的高可靠性可以有效地降低维护成本,同时,软 件运行效率高也会降低对c p u 的要求,从而降低硬件成本。 3 可裁剪性。因为对于任何个具体的嵌入式设备,它的功能是确定的, 所以应用于嵌入式环境的实时操作系统,在研发的时候就必须立足于改变自身、 开放自身,让开发人员可以根据硬件环境和应用环境的不同而对操作系统进行灵 4 第一章绪论 活的裁剪和配置,只要从原有操作系统中把这个特定应用所需的功能拿进来即可。 这一点与通用操作系统有很大的不同。通用操作系统的研究开发指导思想是尽可 能在不改变自身的前提下具有广泛的适应性。 这里要注意的是如果一个操作系统只能依靠手工的方式去掉一些代码,这根 本就不是可裁剪性。所谓可裁剪性是在软件工程阶段利用软件配置方法实现软件 构件的“即插即用”。 可裁剪性带给用户的一个最直接的好处是硬件成本降低,这对于成本敏感的 应用,如消费电子类设备,具有重要的现实意义。由于设备中只包含应用程序用 到的那部分操作系统功能,这就使得系统变得简单、易把握,同时也提高系统的 可靠性。 4 可靠性。嵌入式实时操作系统与通用操作系统在设计思路上另一个重大的 不同是通用操作系统假定应用软件与操作系统相比而言可以是不可靠的,而嵌入 式实时操作系统假定应用软件与操作系统一样可靠。 大多数通用操作系统都是上千万行代码的庞大而复杂的系统,即使有源代码 程序员也难以把握。而且对开发人员来说,通用操作系统庞杂的细节是隐蔽在一 个个的固定的接口下的,是一个黑箱,很难把握具体执行的线索。即便其内核是 足够可靠的,但它的应用环境复杂多样、千差万别,其中常常有一些应用并不是 那么稳定可靠,从而破坏了整体系统的可靠性。然而,嵌入式实时操作系统对软 件开发人员来说是完全开放的,是一个白箱,允许开发人员非常清楚地了解和掌 握操作系统内部情况,对存储器中的每一位和每一个i o 接口进行操作控制,从 而可以设计出高效稳定的应用软件。 1 2 3 常见的嵌入式实时操作系统 目前流行的e r t o s 有很多种,如w i n d 鼬v e r 公司的v x w o r k s ,i s i 的p s o s ,q n x 系统软件公司的q n x ,m i c r i u m 公司的“c ,o s i i 等。这类操作系统在结构和实现 上都针对所面向的应用领域进行设计的,不但满足实时性、高可靠性的要求,而 且大多提供了完备的系统开发和测试工具。 下面介绍一些常见的嵌入式实时操作系统: 1 t o r n a d o v x w o r k s 该操作系统是大名鼎鼎的火星探测器所用的嵌入式操作 ;:薹三些奎茎三耋璧圭兰堡鎏 系统,在美国市场位居第一,其性能优越性可见一斑。它由三个部分组成:t o m a d o 系列工具、v x w b r k 系统和可选的连接主机和目标机的通信软件包。v x w o r k s 支 持广泛的工业标准,这些标准促进了多种不同的产品之间的互用性,提升了可移 植性。v x w o r i 【s 具备一个高效的微内核,可支持实时系统的一系列特性包括多任 务,支持中断,任务抢占式调度等等。 2 i 玎l i 肌x 是一种嵌入式硬实时操作系统,它实现了一个小的实时内核,仅 支持底层任务创建、中断服务例程的装入、底层任务通信队列和l i n l l ) 【进程。r t l i n u x 将原来的非实时的l i n u x 内核作为一个可抢占式的任务运行于它的内核中, 所有的任务都在内核地址空间运行。 3 q n x 是一个分布式、可扩展规模的实时操作系统【”。它是一个微内核实 时操作系统,仅提供4 种服务:进程调度、进程间通信、底层网络通信和中断处 理,其进程在独立的地址空间运行。所以其内核非常小巧而且运行速度极快。 4 u c o s - i i 是一种可移植、可固化、可裁剪及可剥夺型的多任务实时内核, 适用于各种微处理器。源代码开放,代码大部分采用a n s i 的c 语言编写,具有 良好的可移植性哺j 。本课题将对该操作系统进行详细的研究。 1 3 论文主要内容安排 本文首先分析了嵌入式实时操作系统普遍具有的功能以及它们的评价指标, 然后引出本文主要研究对象斗c o s i i ,对斗c ,o s i i 的基本功能进行详细的介 绍,接着对“c o s i i 的移植进行了研究,最后对肛c o s i i 的功能经行了改进和扩 展。主要的研究内容如下( 如图1 1 ) : 1 嵌入式实时操作系统基本理论的介绍。 2 肛c o s i i 的基本功能的分析。全面了解并掌握c o s i i 的内核结构和基 本功能,为有效地应用u c o s i l 打下基础。 3 p c o s i i 的移植的研究。分析了移植的条件,以将“c 0 s i i 移植到 t m s 3 2 0 c 5 4 0 2d s p 为例,说明了移植的具体过程。并对内核的移植进行了测试, 统计了c p u 的利用率、内核的大小和内核中常用函数所需指令周期等参数。 4 扯c o s i i 功能的改进与扩展。在肛c o s i i 上编写了m c b s p 和d m a 的驱 动,实现了语音编解码功能;优化了中断服务程序;为了减少内存的浪费,设计 了中断堆栈。 圈1 1 论文整体框架图 f i g l l r e1 - 1f r a m co ft h e 髓e s i s 7 三至三些奎兰三兰璧圭兰篁兰 第二章嵌入式实时操作系统 2 1 嵌入式实时操作系统分类 嵌入式实时操作系统是指用于嵌入式系统的能进行实时处理的操作系统【9 1 。 根据不同的应用,可以有很多种不同的侧重点,不同的侧重点对应了不同的分类 方法。我们可以从实时调度算法和内核两个角度来划分。 2 1 1 实时调度算法角度来分类 1 硬实时系统 硬实时系统必须是对及时的事件做出反应,绝对不能错过事件处理的期限。 即各任务不仅要执行无误而且要做到准时,如果出现了差错就意味着巨大的损失 和灾难。 2 软实时系统 软实时系统是指如果在系统负荷较重的时候,允许发生错过期限的情况但是 不会造成太大的危害【1 0 】,即各个任务运行得越快越好,并不要求限定某一任务必 须在多长时间内完成。 硬实时和软实时的区别就在于对外界的事件做出反应的时间。主要依赖于所 选择的调度算法。选择基于优先级调度的算法足以满足软实时系统的需求,而且 可以提供高速的响应和大的系统吞吐率。而对硬实时系统来说,需要使用的算法 就应该是调度方式简单,反应速度快的实时调度算法。 2 1 2 内核角度来划分 1 前后台系统 前后台系统如图2 1 所示。应用程序是一个无限的循环,循环中调用相应的 函数完成相应的操作,这部分可以看成后台行为。中断服务程序处理异步事件, 这部分可以看成前台行为。一般来说。后台也可以叫做任务级,前台也可以叫中 断级。对于实时性要求特别严格的操作通常由中断来完成,但是因为中断服务 8 茎三耋璧垒塞查坠堡堡垂簦 提供的信息一直要等到后台程序走到该处理这个信息这步时才能得到处理,所 以这种系统在处理信息的及时性上比预计的要差。这个指标称作任务级响应时间。 最坏情况下的任务级响应时间取决于整个循环的执行时间。因为循环的执行时间 不是常数,程序经过某一特定部分的准确时间也是不能确定的。另外,如果程序 修改了,循环的时序也会受到影响。 图2 i 前螽台系统 f i g u r e2 一lf o r e g r o 哪怕a c k g r o u n ds y s t e m s 2 具有不可剥夺型内核系统 不可剥夺型内核系统如图2 2 所示。它要求每个任务主动放弃c p u 的所有权。 不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个c p u 。异步 事件由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就 绪状态。但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务 主动放弃c p u 的使用权时,那个高优先级的任务才能获得c p u 的使用权。 3 具有可剥夺型内核的系统 可剥夺型内核系统如图2 3 所示。它是指最高优先级的任务一旦就绪,总能 得到c p u 的控制权。如果是一个运行着的任务使一个比它优先级高的任务进入 了就绪态,当前任务的c p u 使用权就被剥夺了,或者说被挂起了,那个高优先级 的任务立亥4 得到了c p u 的控制权。如果是中断服务子程序使一个高优先级的任务 进入就绪态,中断完成后,中断了的任务被挂起,优先级高的那个任务开始运行。 广东工业大学工学硕士学位论 图2 2 不可剥夺型内核 f i g m 曹2 2n o n p 化e m p t i v ek c m d 这样,任务级系统响应时间得到了最优化。因此,使用可剥夺型内核,最高优先 级的任务在什么时候可以执行,在什么时候可以得到c p u 的控制权是可知的。 图2 3 可剥夺型内核 f i g u r e2 - 5p r e e m p i i v ek e r n e l 这里要注意的是使用可剥夺型内核时,应用程序不应直接使用不可重入型函 第二章嵌入式实时操作系统 数。如果要调用不可重入型函数,就必须满足互斥条件,这一点可以用互斥型信 号量来实现。因为当调用不可重入型函数时,如果低优先级的任务c p u 的使用权 被高优先级任务剥夺,不可重入型函数中的数据就有可能被破坏。 2 2 嵌入式实时操作系统内核性能的衡量指标 1 系统响应时间( s y s t e mr e s p o n s et i m e ) :系统在发出处理要求到系统给出应 答信号的时间。 2 任务切换时间( c o n t c x t s 、i t c h i n g t i m e ) :多任务之间进行切换而花费的时间。 3 中断延迟时间( i n t e h l l p t l a t e n c y ) :从接收到中断信号到操作系统做出响应, 并完成进入中断服务程序的时间。 2 3 嵌入式实时操作系统的一些重要概念 2 3 1 任务 任务是代码运行的一个映象,从系统的角度看,任务是竞争系统资源的最小 运行单元。每个任务处理一部分问题,并被赋予一定的优先级和一套自己的c p u 寄存器及堆栈。任务可以使用或等待c p u 、i ,0 设备及内存空间等系统资源,并 独立于其它任务,与它们一起并发运行( 宏观上如此) 。嵌入式实时系统中的大部 分任务是周期的,体现在编程上每个任务则是一个典型的无限循环。 任务的状态:睡眠、就绪、运行、延迟、等待。 2 3 2 内核调度 调度是内核的主要职责之一,是指决定该轮到哪个任务运行了。基本的调度 算法有先来先服务法f c f s ,最短周期优先法s b f 。优先级法蹦o r i t y ,轮转法 r d l l i l d r o b i n 等f 1 2 】。调度的基本方式有可占先式和非占先式。多数实时内核是基 于优先级调度的多种方法的复合,即每个任务根据其熏要程度的不同被赋予一定 的优先级,c p u 总是让处在就绪态的优先级最高的任务先运行。 广东工业大学工学硕士学位论 2 3 3 优先级 嵌入式实时系统中,每个任务都有自己的优先级。这里的优先级就像是任务 的身份证一样( 如果。一个任务只分配一个优先级) 。任务越重要,它的优先级就越 高。应用程序在执行过程中各个任务的优先级不变的,称为静态优先级;在执行 过程中优先级可以改变,称为动态优先级。另外,基于优先级的系统中可能会出 现优先级倒置的问题,一个好的实时内核应该提供解决优先级倒置的方法。 嵌入式实时系统主要是依靠优先级的大小来调度各个任务的,那么在设计实 时系统时如何分配优先级决定了整个系统的运行效斛1 4 】。现已开发出多种算法用 予实时任务的优先级分配,基本的有单调执行率调度法r m s 和最早期限优先法 e d f 等。 2 3 4 临界区 临界区是指一段处理时不可分割的代码。一旦开始执行,则不允许任何中断 打入。 进入临界区的方法有: 1 屏蔽中断。通常在代码执行前关闭中断,执行后打开中断,该方法只能用 于单处理机的情形。 2 通过信号量机制。 2 3 5 可重入性函数 可重入型函数是指可以被多个任务调用,而不必担心数据的破坏。它在任何 时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型 函数只使用局部变量,即变量保存在c p u 寄存器中或堆栈中。如果使用全局变量, 则要对全局变量予以保护。 2 3 6 互斥 互斥是指资源的使用必须独占。当某一地址空间用于数据交换时,为了避免 冲突,对于内存的锁定是非常重要的。两个或多个任务读写某些共享数据时,如 j 2 第二章嵌入式实时操作系统 果最后的结果取决于任务运行的精确时序,有可能得到错误值,这样就必须以某 种手段确保当一个任务在使用一个共享变量或文件时,其他任务不能做同样的操 作。主要有关中断、使用硬件指令、禁止任务切换和用信号量锁定资源等方法。 一般来说,关中断是最有效的解决互斥的方法。但这对于实时应用来说,它阻止 系统对外部事件的响应,无法满足实时性的要求。同样,中断延迟也是不能接受。 但是,它是在中断服务子程序中处理共享变量或共享数据结构的唯一方法。 2 3 7 死锁 死锁也称作抱死,指两个任务无限期地互相等待对方控制着的资源l l “。防i 卜 发生死锁的方法是让每个任务都: 先得到全部需要的资源再做下一步的工作; 用同样的顺序去申请多个资源; 释放资源时使用相反的顺序; 内核大多允许用户在申请信号量时定义等待超时,以此化解死锁。当等待时 间超过了某一一确定值,信号量还是无效状态,就会返回某种形式的出现超时错误 的代码,这个出错代码告知该任务,不是得到了资源使用权,而是系统错误。 2 3 8 任务问通信 在多任务系统中, 息,称为任务间通信。 通信方式:邮箱, 2 3 ,9 时钟节拍 任务之间存在相互制约的关系,或者任务之间需要交换信 队列,管道、事件标记、s o c k c t 等。 时钟节拍是运作系统跳动的心脏,是一种周期性发生的特殊中断。这个中断 使得内核可以将任务延迟若干个时钟节拍,以及当任务等待事件发生时,可以提 供系统等待超时的依据。时钟的时钟节拍越快,系统响应速度越快,但开销也越 大,程序的执行速度越慢。 各个实时内核都有将任务延迟若干个时钟节拍的功能,这里要注意的是这并 广东工业大学工学硕士学位论 不意味着延迟的精度是一个时钟节拍,只是在每个时钟节拍中断到来时,对任务 延迟做一次裁决而已。 2 3 1 0 可预测性 可预测性是指在系统运行的任何时刻、任何情况下,实时操作系统的资源调 配策略都能为争夺资源( 包括c p u 、内存、网络带宽等) 的多个实时任务合理地分 配资源,使各实时任务的实时性要求都能得到满足【1 8 】。简单说就是系统的行为是 可知的。 2 3 11 中断 中断是一种硬件机制,用于通知c p u 有个异步事件发生了,中断一旦被识别, c p u 保存部分( 或全部) 现场,即部分或全部寄存器的值,跳转到专门的子程序( 中 断服务子程序) 做事件处理,处理完成后,程序回到: 在前后台系统中,程序回到后台程序 对不可剥夺型内核而言,程序回到被中断了的任务 对可剥夺型内核而言,让进入就绪态的优先级最高的任务开始运行 中断使得c p u 可以在事件发生时才予以处理,而不必让微处理器连续不断地 查询是否有事件发生。 4 第三章uc o s i i 的结构分析 第三章i i c o s - i i 的结构分析 3 1 i l c ,o s i i 简介 u c o s i i 是由美国嵌入式系统专家j e a nj l a b r o s s e 先生开发的,是一种免费 公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统【1 9 】。其内核提供任 务调度与管理、时间管理、任务问同步与通信、内存管理和中断服务等功能。应 用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路 电话系统、自动提款机等。2 0 0 0 年,它得到美国航空管理局( r 诅) 的认证, 可以应用于飞行器中。与其他的e i 盯0 s 一样,c o s - i i 内核结构是十分复杂的, 南于篇幅所限,本章只对支撑整个内核的重要数据结构及其设计的特别之处加以 详细分析。 下面简单介绍一下它的特点: 1 公开源代码。源代码清晰易读且结构协调,注解详尽,组织有序。 2 可移植性。绝大部分肚c o s i i 的源代码使用移植性很强的a n s ic 写的, 和微处理器硬件相关部分采用汇编写,并且压到了最低限度。只要该处理器有堆 栈指针,有c p u 内部寄存器入栈出栈指令就可以移植n c o s - i i 。 3 可固化。u c o s i i 是为嵌入式应用而设计的,这就意味着,只要读者有固 化手段( c 编译、连接、下载和固化) ,uc o s i i 就可以嵌入到读者的产品中成 为产品的一部分。 4 可裁剪。可以只使用h c 0 s i i 中应用程序需要的那些系统服务。也就是 说某产品可以只使用很少几个“c o s i i 的功能,而另一个产品则使用了几乎所有 c o s i i 的功能,这样可以减少产品中的p c o s h 所需的存储器空间( r a m 和 r o m ) 。这种可剪裁性是靠条件编译实现的。 5 占先式。u c o s i i 完全是占先式实时内核,即总是运行就绪条件下优先级 最高的任务。 6 多任务。可以管理6 4 个任务,但系统保留了8 个任务,应用程序最多可 以有5 6 个任务。赋予每个任务的优先级必须是不相同的。 广东工业大学工学硕士学位论 7 可确定性。全部u c o s i i 的函数调用和服务的执行时间具有可确定性, 即它们的执行时间是可知的。进而言之,“c o s i i 系统服务的执行时间不依赖于 应用程序任务的多少。 8 任务栈。每个任务有自己单独的栈,u c o s i i 允许每个任务有不同的栈空 间。 9 系统服务。“c ,o s i i 提供多种系统服务,如邮箱、消息队列、信号量、块 大小固定的内存的申请与释放、时间相关函数等。 l o 中断管理。中断可以使正在执行的任务暂时挂起,中断嵌套层数可达2 5 5 层。 1 1 稳定性与可靠性。斗c o s i i 是基于c 0 s 的,斗c ,0 s 自1 9 9 2 年以来己 经有好几百个商业应用。斗c o s i i 与 l c o s 的内核是一样的,只不过提供了更多 的其他功能。 3 2 弘c o s - i i 内核结构 3 2 1 任务调度与管理 1 任务及任务状态 任务2 0 】【2 1 1 通常是一个无限循环,看起来与普通的c 函数很相似,有函数返回 类型,有形式参数变量。不同的是,任务完成后,任务可以自我删除。u c 0 s i i 可以管理多达6 4 个任务,但是c ,o s - i i 的作者建议用户不要使用优先级为o ,1 , 2 ,3 的任务,以及优先级为o sl o w e s tp r j o - 3 ,o sl o w e s tp 刚o 一2 , o sl o w e s tp r j 0 1 和o sl o w e s tp r j o 的任务,因为在未来的u c o s i i 版 本中可能会用到这些任务。因此,如果遵循作者的建议,不使用以上优先级最高 的4 个任务和优先级最低的4 个任务,则用户最多可以有5 6 个自己的任务。必须 给每个任务赋以不同的优先级,优先级号越低,任务的优先级越高。c 0 s i i 总 是运行进入就绪态的优先级最高的任务。表3 1 所示是一个典型的任务函数。 表3 1 任务函数 l i s t i n g3 1 协k 第三章uc ,o s - l i 的结构分析 断态。在任一时刻,任务的状态一定是这五种状态之一。图3 1 是斗c o s i i 控制 下的任务状态转换图。 图3 一l 任务的状态 f i g u r e3 一lt 船k s t a t e s 睡眠态( d o r m a n t ) 指任务驻留在程序空间,还没有交给h c o s i i 来 管理。把任务交给u c o s i i ,是通过调用下述两个函数之一:0 s t a s k c r e a t e ( ) 或 0 s t a s k c r e a t e e x t ( ) 来实现的。这些调用用来告诉c o s i i ,任务的起始地址在哪 里:任务建立时,用户给任务赋予的优先级是多少;任务要使用多少栈空间等。 就绪态( r e a d y ) 任务一旦建立,这个任务就进入了就绪态,准备运行。 任务的建立可以是在多任务运行开始之前,也可以动态地由一个运行着地任务建 立。如果多任务已经启动,且一个任务是被另一个任务建立的,而新建立的任务 优先级高于建立它的任务的优先级,则这个刚刚建立的任务将立即得到c p u 的使 用权。一个任务可以通过调用o s t a s k d e l ( ) 返回到睡眠态,或通过调用该函数让另 ;。:妄奎三些奎兰三:筌圭耋篓墼 一个任务进入睡眠态。 运行态( r u n n i n g ) 调用o s s t a r t ( ) 可以启动多任务。o s s t a r t ( ) 函数只能 在启动时调用一次,该函数运行用户初始化代码中已经建立的、进入就绪态的优 先级最高的任务。任何时刻只能有一个任务处于运行态。就绪的任务只有当所有 优先级高于这个任务的任务都转为等待状态,或者是被删除后,才能进入运行态。 等待状态( w a i t i n g ) 正在运行的任务可以通过调用以下两个函数之: 0 s t i m e d l y ( ) 或o s t i m e d l y h m s m ( ) ,将自身延迟一段时间,该任务就进入了等待 状态,一直到函数中定义的延迟时间到。这两个函数会调用任务切换函数,让下 一个优先级最高的,并进入了就绪态的任务运行。等待的时间过去以后,系统服 务函数0 s t i m e t i c k ( ) 使延迟了的任务进入就绪态。如果正在运行的任务需要等待 某一事件的发生,可以通过调用以下函数之一实现:0 s f l a g p e n d ( ) 、o s s e m p e n d ( ) 、 0 s m u t e x p e n d ( ) 、o s m b o x p e n d ( ) 或o s q p e n d 3 】,l lo s r d y t b l 【p r i o 3 】i ;o s m a p t b l 【p r i o o x 0 7 】;j 其中,o s m a p t b l 【】是位掩码,使用它可以使o s r d y t b l 【】和o s r d y g r p 的相应 元素置1 ,见表3 4 。 表3 - 4o s m 印t b l 【】的值 t a b l e3 - 4c 0 n t e n t so f o s m a p t b l 】 i n d e xb i tm a s k ( b i n a r y ) o0 0 0 0 0 0 0 l l 0 0 0 0 0 0 1 0 2 o o o 0 0 1 0 0 30 0 0 0 1 0 0 0 40 0 0 1 0 0 0 0 50 0 1 0 0 0 0 0 60 1 0 0 0 0 0 0 7 1 0 0 0 0 0 0 0 从就绪表中删除一个任务的算法如表3 5 : 表3 5 任务脱离就绪态 l s t i n g3 - 5r e m o v i n g at 如kf b mt h er e a d yi i s t lo s r d y g r p 一一o s m a p t b ll p r i o )3 】;l 以上代码将就绪表数组0 s r d y t b l 【】中相应元素的相应位清零,而对于 o s r d y g r p ,只有当被删除任务所在任务组中全组任务都没有进入就绪态时,才将 相应位清零。也就是说o s r d y t b l 【p r i 0 3 】所有的位都是零时,o s r d y g r p 的相应 位才清零。为了找到进入就绪态的优先级最高的任务,并不需要从o s r d y t b l ( o 】 开始扫描整个就绪任务表,只需要查另外一张表,即优先级判定表 o s u n m a p t b l 【2 5 6 】。查表法具有确定的时间,增加了系统的可预测性。0 s r d y t b l 【 中每个字节的8 位代表这组的8 个任务哪些进入了就绪态,低位的优先级高于 高位。利用这个字节为下标来查0 s u n m a p t b l 【2 5 6 】这张表,返回的字节就是该组 任务中就绪态任务中优先级最高的那个任务所在的位置,这个返回值在0 到7 之 间。确定进入就绪态的优先级最高的任务的算法如表3 6 : 第三章uc o s 1 i 的结构分析 袁3 6 确定最高优先级 l i s t i n g3 - 6f i n d i n g t h eh i g h e s tp r i o r i t yt a s kf e a d y - t o - r i l n 5 任务调度 u c 0 s i i 总是运行进入就绪态任务中优先级最高的任务。确定哪个任务优先 级最高以及应该运行哪个任务的工作是由调度器完成的。任务级的调度由函数 o s s c h e d ( ) 完成。中断级的调度由o s i n t e x t ( ) 完成。扯c ,o s i i 任务调度所花的时间 是常数,与应用程序中建立的任务数无关。如果不是在中断服务子程序中调用 0 s s c h e d ( ) ,并且任务调度是允许的,即没有上锁,则任务调度函数将找出进入就 绪态且优先级最高的任务。o s s c h e d ( ) 首先检验优先级最高的任务是不是当前正在 运行的任务,如果不是则进行任务切换, 免不必要的任务调度。为实现任务切换, 那个任务控制块。 如果是则不进行任务切换,这样可以避 0 s t c b h i g h r d y 必须指向优先级最高的 任务切换分为两步:先将被挂起的任务的微处理器寄存器推入堆栈;然后将 较高优先级的任务的寄存器值从栈中恢复到寄存器中。在c o s i i 中,就绪任务 的栈结构与中断发生后的栈结构很相似。因此,仙c o s i i 运行就绪态的任务所需 要做的工作就是恢复所有的c p u 寄存器并运行中断返回指令。为了做任务切换, 运行o st a s ks w ( ) ,人为模仿了一次中断。多数微处理器由软中断指令或者指 令陷阱来实现上述操作,给汇编语言函数o s c t x s w ( ) 提供中断向量。需要让当前 任务控制块o s t c b c u r 指向即将被运行的任务。 另外,o s s c h e d ( ) 的所有代码都属于临界区代码。在寻找进入就绪态的优先级 最高的任务过程中,为防止中断服务子程序把一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无偿租房协议书
- 进口金矿石合同协议
- 劳务分包合同实例
- 专业体育用品零售连锁店采购合同
- 《医疗质量管理体系》课件
- 五方股权转让合同
- 日文离婚协议书
- 转租广告位合同协议
- 死亡享保协议书
- 车辆座套广告合同协议
- 第五讲铸牢中华民族共同体意识-2024年形势与政策
- 2017年特高压互联电网稳定及无功电压调度运行
- 执法办案和执法监督注意事项课件
- 商品流通企业会计实务习题和参考答案与解析
- 客运驾驶人从业行为定期考核制度
- 【课件】高二下学期期中考试成绩分析家长会课件
- 2022年同等学力人员申请硕士学位日语水平统一考试真题
- 游泳池设备操作培训课件
- 城轨道交通人因事故分析及评价研究
- (完整版)羊水栓塞应急预案演练记录
- ZYWL-4000型履带式钻机
评论
0/150
提交评论