已阅读5页,还剩85页未读, 继续免费阅读
(通信与信息系统专业论文)基于arm处理器实时操作系统的研究及应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 嵌入式系统自二十世纪七十年代出现之后,随着其应用领域的不断扩展,已 经逐渐成为计算机应用领域的主角。作为个整机系统,对嵌入式系统的开发涉 及到应用领域的各个方面。该系统不仅硬件上要求有高效、可靠的嵌入式微处理 器,而且软件上要求有嵌入式实时操作系统的支持。在多任务操作系统的支持下, 如何设计出运行稳定、高效的应用软件同样关系到整个系统的质量。 本文首先阐述了实时操作系统在a r m 处理器上的移植过程,并针对a r m 处理 器不同于一般i n t e l 处理器的特点,对移植后的操作系统进行了改进,改进后的 操作系统不仅在运行效率上得到了提升,而且缩减了代码空间,节省了系统资源。 另外,为满足嵌入式系统响应事件的苛刻要求,对实时操作系统的多任务调 度可能导致的优先级反转及死锁问题提出了解决方案。本文首先分析了以往解决 优先级反转及死锁问题的各个方案,在综合比较了它们的优缺点之后,结合嵌入 式领域的特殊要求,提出了一个改进的解决方案。在保持高任务调度率和高系统 资源利用率的前提下,该方案对任务的优先级反转问题予以解决,与此同时,对 由于任务争抢资源而导致的死锁也提供了检测机制。 基于改进的实时操作系统基础之上,本文又阐述了一个面向网络应用的工业 平台,并详细描述了该平台的硬件规划和软件设计。最后针对该工业平台提出了 一个测试方案,并根据此方案得到的测试结果分析了该平台的执行效率及可靠 性。 关键字:a r m ,嵌入式系统,优先级反转,死锁 a b s t r a c t w i t hr a p i dp r o g r e s si nc o m p u t e rf i e l d ,e m b e d d e ds y s t e mw h i c ha p p e a r sa tf i r s ti n 1 9 7 0 s ,h a sb e e nal e a d i n ga c t o ri nt h ef i e l do fn o w a d a y sc o m p u t e ra p p l i c a t i o n s a sa s y s t e mi nw h o l e ,t h ed e v e l o p m e n to fe m b e d d e ds y s t e mc o v e r sm a n yd i f f e r e n ta s p e c t s o fa p p l i c a t i o n s t h es y s t e mr e q u i r e sn o to n l ya l le m b e d d e dc p uw i t hh i g he f f i c i e n c y a n dr e l i a b i l i t y , b u tt h es u p p o r to fa ne m b e d d e dr t o s m o r e o v e r , o nt h eb a s i so ft h e s u p p o r to fm u l t i t a s k i n go s ,t h eq u a l i t yo ft h ew h o l es y s t e m ,h o w e v e r , s t i l lc o n c e r n s h o wt od e s i g na na p p l i c a t i o ns o f t w a r et h a tn l n sw i t hs t a b i l i t ya n dh i g he f f i c i e n c y t h ep a p e rf i r s t l yi n t r o d u c e st h et r a n s p l a n t a t i o n o fr t o so na r mp r o c e s s o r s , c o n s i d e r i n gt h ef e a t u r e so fa r mp r o c e s s o r sd i f f e r e n tf r o mo r d i n a r y n t e lp r o c e s s o r s , a f t e rh a v i n gb e e nt r a n s p l a n t e d ,t h er t o si si m p r o v e dt oa c h i e v eh i g he x e c u t i o n e f f i c i e n c y , r e d u c e dc o d i n gs p a c ea n di n c r e a s e da p p l i c a b l es y s t e mr e s o u r c c s f u r t h e r m o r e ,i no r d e rt os a t i s f yt h ed e m a n d i n gr e q u i r m e n to fe m b e d d e ds y s t e m s r e s p o n s et oe v e n t s ,t h i sp a p e rp r e s e n t ss o l u t i o n st op r i o r i t yi n v e r s i o na n dd e a d l o c k r e s p e c t i v e l y , w h i c ha r el i k e l yt oh a p p e ni nm u t t - t a s ks c h e d u l eo fr t o s i nt h i s p a p e r ,f o r m e rs o l u t i o n st o t h ep r o b l e m so fp r i o r i t yi n v e r s i o na n dd e a d l o c ka r e r e v i e w e da tf i r s t ,a n df u l lc o m p a r i s i o n sa r em a d eb e t w e e nt h e m a f t e rt h a t ,a ni m p r o v e d s o l u t i o ni s p u tf o r w a r d ,t a k i n gi n t o a c c o u n ts p e c i a l i z e dd e m a n d so fe m b e d d e d s y s t e m s w h i l ek e e p i n gh i 曲s c h e d u l i n gr a t i oa n du t i l i z a t i o nr a t i o ,t h i sp a p e rs o l v e s p r i o r i t yi n v e r s i o np r o b l e m ,a n dp r o v i d ed e t e c t i o nm e c h a n i s m o fd e a d l o c ka tt h es a l t l e t i m e b a s e do nt h ei m p r o v e dr t o s ,t h i sp a p e rp r o p o s e da ni n d u s t r i a lp l a t f o r mf o r n e t w o r ka p p l i c a t i o n sa n dd e s c r i b e sa td e t a i lt h ed e s i g no fh a r d w a r ea n ds o f t w a r ei n t h ep l a t f o r m a tl a s tat e s t i n gs c h e m ei sp r e s e n t e d ,a n dt h e nr u n n i n ge f f i c i e n c ya n d r e l i a b i l i t yo ft h ep l a t f o r mi sa n a l y z e da c c o r d i n gt ot h er e s u l to ft e s t i n gs c h e m e k e y w o r d s :a r m ,e m b e d e ds y s t e m ,p r i o r i t yi n v e r s i o n ,d e a d l o c k 原创性声明 :苯人声明:所呈交的论文是本人在导师指导下进行的研究工作。 除了文中特别加以标注和致谢的地方外,论文中不包含其他人已发表 或撰写过的研究成果。参与同一工作的其他同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示了谢意。 签名:爿抛日期业 本论文使用授权说明 零人完全了解上海大学有关保留、使用学位论文的规定,即:学 校有j 汉保留论文及送交论文复印件,允许论文被查阅和借阅;学校可 以公布论文的全部或部分内容。 ( 保密的论文在解密后应遵守此规定) 戳:榉刷币聋两醐:剑 好n r y 一。 海大学t 学碗j | 沧文 基于a r m 处理器实时操作系统的研究及应用 第一章绪论 1 1 嵌入式系统概述 通用计算机具有计算机的标准形态,通过装配不同的应用软件应用在社会 的各个方面,其典型产品就是p c ;嵌入式计算机是以嵌入式系统的形式隐藏在 各种装置、产品和系统中。而嵌入式系统的概念最早出现在二十世纪7 0 年代, 经过三十多年的发展和演变,一般将嵌入式系统定义为:以应用为中心,计算机 为基础,软硬件可裁减、适应应用系统对功能、可靠性、成本、体积、功耗有严 格要求的专有计算机系统 1 ,2 。 嵌入式计算机在应用数量上远远超过了各种通用计算机,一台通用计算机的 外部设备中就包含了5 1 0 个嵌入式微处理器,键盘、鼠标、软驱、硬盘、显卡、 显示器、网卡、m o d e m 、声卡、打印机、扫描仪、数字照相机、u s b 集线器,还 有诸如信息家电、嵌入式因特网、掌上电脑等等都是由嵌入式处理器控制的。在 制造工业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、 消费产品等方面都是嵌入式计算机的应用领域。 综观嵌入式技术的发展,大致经历了以下四个阶段 1 ,3 ,4 : 1 第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监 测、伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工 业控制中,一般没有操作系统的支持,通过汇编语言对系统进行直接控制,运行 结束后清除内存。这一阶段的主要特点是:系统结构和功能相对单一,处理效率 低下,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单、价格 很低,以前在国内工业控制领域应用较为普遍,但是已经远远不能适应高效的、 需要大容量存储介质的现代化工业控制和新兴的信息家电等领域的需求。 2 第二阶段是以嵌入式c p u 为基础、以简单操作系统为核心的嵌入式系统。 这一阶段的主要特点是:c p u 种类繁多,通用性比较弱;系统开销小,效率高; 操作系统具有一定的兼容性和扩展性:应用软件比较专业,用户界面不够友好: 系统主要以3 2 位微处理器为基础。 3 第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要 特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作 系统内核精小,效率高,并且具有高度的模块化和扩展性:具备文件和目录管理、 设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用 程序接口( a p i ) ,开发应用程序简单;嵌入式应用软件丰富。 4 第四阶段是以i n t e r n e t 为标志的嵌入式系统,这是一个正在迅速发展的 阶段,目前大多数嵌入式系统还没有孤立于i n t e r n e t 之外,但随着i n t e r n e t 2 卜海大学j 二学硕上论文 基于a r m 处理器实时操作系统的研究及应用 的发展以及i n t e r n e t 技术与信息家电、工业控制技术等结合日益密切,嵌入式 设备与i n t e r n e t 的结合将代表着嵌入式技术的真正未来。 嵌入式系统( 结构如图1 1 ) 一般包括硬件和软件两部分。硬件包括嵌入处 理器微控制器( m c u ) 和相关支撑硬件。嵌入式处理器主要由一个单片机或微控 制器( m c u ) 组成。而这些嵌入式的c p u 目前多是8 位和1 6 位的,与3 2 位或6 4 位的高性能处理器相比,具有很强的经济性和现实性,同时对嵌入式处理器的功 耗、体积、成本、可靠性、速度、处理能力和电磁兼容性等方面的要求比较严格, 嵌入式系统的硬件都必须高效地设计,量体裁衣、去除冗余,力争在同样地硅片 面积上实现更高地性能,这样才能提高竞争力。相关支撑硬件包括显示卡、存储 介质( r o m 和r a m ) 、通讯设备、i c 卡或信用卡的读取设备等。 嵌入式软件是实现嵌入式系统功能的关键,它包括操作系统软件( 0 s ) ( 要求 实时和多任务操作) 、底层软件、图形界面、通讯协议、数据库系统、标准化浏 览器和应用软件等。嵌入式系统是以应用为中心的“芯片”设计和面向应用的软 件产品开发。嵌入式系统的应用软件是实现嵌入式系统功能的关键,对嵌入式处 理器系统软件和应用软件的要求也和通用计算机有所不同,它主要有如下重要的 特征 1 : 1 软件代码要求固态化存储 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都可以固化在存 储器芯片或者单片机本身中,而不是存储于磁盘等载体中。 2 软件代码要求高质量、高可靠性 存储空间的有限性和代码的实时性要求程序编写和编译工具的质量要高,以 减少程序二进制代码长度和提高执行速度。 3 操作系统( 0 s ) 要求具有高实时性 在多任务嵌入式系统中,对重要性各不相同的任务进行统筹兼顾的合理调度 是保证每个任务及时执行的关键,单纯通过提高处理器速度是无法完成的,这种 任务调度只能由优化编写的系统软件来完成,因此系统软件的高实时性是基本要 求。 4 多任务操作系统是知识集成的平台和走向工业标准化道路的基础。 3 海凡学t 学碗 j 论文 基十a r m 处理器实时操作系统的研究及应用 图1 1嵌入式系统结构图 1 2 嵌入式系统的技术特点及应用前景 嵌入式系统的运行环境和应用场合决定了嵌入式操作系统具有区别于其它 操作系统的一些特点。大多数操作系统至少被划分为内核层和应用层两个层次。 内核只提供基本的功能,如建立和管理进程、提供文件系统、管理设备等,这些 功能以系统调用方式提供给用户。一些桌面操作系统,如w i n d o w s 、l i n u x 等, 将许多功能引入内核,操作系统内核变得越来越大,占用的资源增多,剪裁麻烦。 而大多数嵌入式操作系统采用了微内核结构,内核只提供基本的功能,比如:任 务的调度、任务之间的通信与同步、内存管理、时钟管理等。其它的应用组件, 比如网络功能、文件系统、g u i 系统等均工作在用户态,以系统进程或函数调用 的方式工作。因而系统都是可裁减的用户可以根据自己的需要选用相应的组件。 实时操作系统作为嵌入式系统开发和应用的关键技术,已经受到嵌入式业界 高度重视,从八十年代起,国际上就开始进行一些商用嵌入式系统和专有操作系 统地开发,目前国内许多研究机构和公司投入了大量的人力和物力进行研究和开 发。研究出许多嵌入式操作系统,下面简单介绍几种嵌入式操作系统 2 ,4 ,5 , 6 : 1 w i n d o w sc e : m i c r o s o f tw i n d o w sc e 是一个简洁的,高效率的多平台操作系统。它不是削 减的w i n d o w s 9 5 版本,而是专门为嵌入式平台设计的多任务操作系统,其基本内 核至少需要2 0 0 k 的存储空间。从s e g a 的d r e a m c a s t 游戏机到现在的掌上电脑, 都采用了w i n d o w sc e 。 4 海人学i 学硕l 论文 基于a r m 处理器实时操作系统的研究及应用 v x w o r k s :是w i n d r i v e r 开发的专门面向嵌入式应用的实时多任务操作系统。 它采用微内核的结构,能够支持多种处理器,网络协议丰富,兼容性好,裁减方 便,同时具有动态连接和下载的功能。v x w o r k s 是目前嵌入式系统领域中使用最 广泛,市场占有率最高的系统。它支持多种处理器,如x 8 6 ,i 9 6 0 ,s u n s p a r c ,m o t o r o l am c 6 8 x x x ,m i p sr x 0 0 0 ,p o w e rp c 等等。使用的是和u n i x 不兼容 的环境,大多数的v x w o r k sa p i 是专有的。采用g n u 的编译器和调试器。 3 e e o s e e o s 是中科院计算机所组织开发的开放源码的嵌入式操作系统。该嵌入式 操作系统重点支持p - j a v a ,要求一方面小型化,一方面能复用l i n u x 的驱动和 其他模块。e e o s 实时操作系统包括r t o s 内核系统和一些支持组件,是一个扩展 能力强,功能完善的操作系统,支持p o s i x 标准。此外e e o s 实时操作系统提供 源代码。由于e e o s 实时操作系统专为嵌入式系统设计,所以代码尺寸小,同时 e e o s 实时操作系统结构上考虑了实时要求,具有很高的实时响应速度,因而能 够在各种环境下工作,具有良好的可伸缩性。 但是这些公司的嵌入式操作系统有的价格昂贵( 如v x w o r k s ) ,有的应用领域 局限性很强,还有的实时性能较差( 如w i n d o w sc e ) ,不能应用于实时性要求较 高的工业控制领域。随着嵌入式系统应用日益广泛的开展,一些源码开放又实时 性能较高的嵌入式操作系统应运而生。 l i n u x 和心0 s 作为多任务、多平台系统,支持多种处理器,安全可靠,性 能卓越。并且源代码全部开放,任何人均可自由获得源代码并进行分析研究。 由于二者自身的优点,均适合于作为嵌入式操作系统,但作为嵌入式操作 系统,心0 s 相比l i n u x 因其具有更小内核、更高可靠性、更强实时性等诸多优 点,使其在一般工业应用领域具有更广泛的应用前景。 发展嵌入式操作系统对于促进我国嵌入式系统工业,尤其是工业控制领域有 非常重要的现实意义。从软件角度来看,嵌入式系统具有系统配置要求低、专业 性和实时性强等特点。鉴于嵌入式系统的种种特点,可以预见在即将到来的后 p c 时代,嵌入式系统将发挥更大的作用,它将拉近人与计算机的距离,形成一 个人机和谐的工作与生活的环境。嵌入式系统在传统的工业控制和商业管理领域 已经具有了广泛的应用空间,如智能工控设备、p 0 s a t m 机、i c 卡等。在家庭领 域更具有广泛的应用潜力,如机顶盒、数字电视、w e b t v 、网络冰箱、袖珍电脑、 掌上电脑、车载导航器等方面应用,将极大地推动嵌入式技术深入到生活和工作 的方方面面。 卜海大学工学颂r 卜论文 基于a r m 处理器实时操作系统的研究及应用 1 3 本课题的目的和内容 嵌入式系统作为工业领域的一般性应用,实时性是其最为严格的要求,其次, 由于嵌入式系统一般具有内存资源有限、处理速度不够高等特点。因此,在软件 开发方面应尽可能缩减代码量,减少程序复杂度,提高可靠性。基于上述考虑下, 本课题选择了嵌入式实时操作系统c o s 作为系统的内核,在此基础上建立顶层 应用软件,搭建嵌入式系统应用平台。 论文的具体安排如下: 第二章介绍了基于a r m 处理器实时操作系统们o s 的移植,针对a r m 处理器 的特点重点阐述了移植i t c o s 需要解决的几个关键问题,包括临界代码的处理、 任务堆栈的设计以及任务切换函数的设计。针对a r m 处理器的模式切换所带来的 现场保护问题给出了详细的解决方案。 移植后的操作系统虽然已经能够运行,但是o s 的多任务调度策略对由于 任务争抢资源而导致的优先级反转与死锁的问题却并没有提供一个完整可靠的 解决机制,第三章重点阐述了改进o s 任务调度的方法。本设计在综合比较分 析了现存的解决上述问题的各种方案之后,提出了一种适合实时操作系统的改进 方案,并在o s 中予以实现。从而解决了本系统中存在的任务优先级反转和死 锁问题,提高了系统的实时响应性能。 基于a r m 核心处理器和改进的实时操作系统们o s 的基础上,第四章阐述了 嵌入式系统应用平台基于网络应用的远程监控平台,通过该系统可以实现远 程控制的目的。同时,描述了该应用平台的软硬件设计及网络接入设计,同时为 了达到嵌入式系统对可靠性的严格要求,本课题有针对性地设计了系统软件,提 高了系统的整体可靠性。 最后,针对整个系统应用平台设计了一种性能测试方案,并根据最后的测试 结果分析论证了系统的整体性能。 6 j :海大学r 学硕t 论文 基十a r m 处理器实时操作系统的研究硬应用 第二章实时操作系统c o s 的移植 选择一个可靠、实时的操作系统对于开发嵌入式系统是至关重要的。操作系 统在有效管理系统各种硬件资源、提供应用程序编程接口的同时,缩短了整个系 统的开发周期。本章首先描述了衡量一个实时操作系统性能好坏的各种指标,然 后简要介绍了实时操作系统心o s 的体系结构。最后,介绍了o s 在a r m 处理 器上的移植,针对a r m 处理器的特点分别介绍了移植需要解决的几个关键问题, 特别针对a r m 处理器不同模式对应不同寄存器组的特点,重点阐述了由此带来的 现场保护问题的解决方案。 2 1 实时操作系统的特性 实时操作系统与其他通用操作系统之间的最大不同点就是要满足任务处理 与时间的关系。在实时处理过程中,系统的正确性不仅仅依赖于计算的逻辑结果 而且依赖于结果产生的时间。实时操作系统根据对时间要求严格程度的不同可以 分为两类:硬实时系统( h a r dr e a l - t i m e ) 和软实时系统( s o f tr e a l t i m e ) 硬实时系统就是指系统必须及时对事件做出反应,绝对不能发生错过事件处理截 止时限( d e a d1 i n e ) 的情况。在硬实时系统中一旦发生超时限的情况就意味着 巨大的损失和灾难。比如核电站控制系统,如果没有对堆芯过热这一异常情况作 出及时的处理,后果将不堪设想。在软实时系统中,当系统在重负载的情况下允 许超过截止时限情况的发生。比如在通信系统中允许1 0 5 个电话中有一个接不 通。 评价一个实时操作系统性能一般可以从任务调度,内存管理,任务通讯,内 存开销,任务切换时间,最大中断禁止时间等几个方面来衡量。其中最重要的几 个指标介绍如下 7 ,8 : 1 最小内存开销 在r t o s 的设计过程中,最小内存开销是一个非常重要的指标,因为在工业 控制领域,基于降低成本的考虑,其内存的配置一般都不会很大。o s 作为一 个可剪裁的系统内核,其大小可以根据实际系统使用情况静态配置。 2 最大中断禁止时间 当r t o s 执行临界段代码时,为了防止对临界资源造成破坏而使系统处于关中 断状态,当退出临界段代码之后才响应外部中断请求,这一个过程所需要的晟长 时间就是最大中断禁止时间。最大中断禁止时间是衡量r t o s 实时性的一个最重 要指标,r t o s 关中断时间太长将会造成系统对应急事件反应的迟缓。 3 任务切换时间 7 卜海大学t 学硕卜论殳基于a r m 处理器实时操作系统的研究及应用 当一个任务退出运行时,r t o s 保存它的运行现场、并插入到相应队列、然后 依据一定的调度算法重新选择一个任务使之投入运行,这一过程所需要时间称为 任务切换时间。任务切换时间反映了系统的运行效率,因为任务切换本身是操作 系统的额外开销,如果这种开销太大则任务的实际执行时间必然减少,影响系统 的运行效率。 2 2i l c o s 的内核结构简介 在心o s 中,每个任务都是无限的循环,返回的参数类型必须是v o i d ,而任 务开始执行时可以有一个参数传递给用户的任务代码。这样,任务看起来就是一 个普通的c 函数,但是永远不会返回,当任务完成后,它可以自我删除,但是由 于任务已经启动,也就是说任务代码是确实存在于内存之中的,因此,该任务并 不是被真正地删除掉,只是o s 的内核不再理会这个任务罢了! c o s 中,任务的典型形式如下: v o i dt a s k ( v o i d * p d a t a ) w h i l e ( 1 ) 用户任务代码 ) o s 最多可以管理6 4 个任务,按照心o s 的建议,不用前四个最高和后四 个最低优先级任务,用户可以使用剩下的5 6 个优先级任务。o s 目前仅支持 不同优先级任务,也就是说必须给每个任务赋以不同的优先级。在o s 中,任 务总是处于五种状态之一,分别是:睡眠态,就绪态,运行态,等待态和中断服 务态 7 。 睡眠态:指任务代码驻留在内存空间之中,但是还没有提交给h c o s 来管理。 可以通过调用函数o s t a s k c r e a t e 0 或o s t a s k c r e a t e e x t 0 来创建任务,任务创建 后由睡眠态进入就绪态。任务创建函数的调用只是用于告诉们o s 任务的起始地 址在那里;任务建立时用户给任务赋予的优先级是多少;任务的栈空间是多少等 等。 就绪态:任务一旦通过上述两个函数建立,这个任务就进入了就绪态,准备 运行。任务的建立可以是多任务运行开始之前,也可以动态地由另一个运行的任 务建立。一个任务可以通过调用o s t a s k d e l 0 让自身或另一个任务返回到睡眠 态。 8 l 海大学工学硕士论文 基于a r m 处理器实时操作系统的研究及应用 运行态:调用o s s t a r t0 可以启动多任务。该函数只能在启动时调用一次。 该函数运行用户初始化代码中已经建立的、进入就绪态的优先级最高的任务。任 何时刻只能有一个任务处于运行态。只有当正在运行的任务进入等待状态或者是 被删除,才能使就绪态队列中优先级最高的任务进入运行态。如何使一个任务进 入等待状态参见下文。 等待状态:正在运行的任务可以通过调用o s t i m e d l y0 或o s t i m e d i y h m s m0 将自身延迟一段时间,这时任务就进入了等待状态,直到该函数延迟时间到。这 两个函数实现的功能是把运行该函数的任务挂起,并立即强制执行任务切换,使 下一个优先级最高的、进入就绪态的任务运行。等待时间过去以后,系统服务函 数o s t i m e t i c k 0 使延迟了的任务进入就绪态。若此时任务处于比正在运行的任 务更高的优先级,那么将立即进行任务切换。 正在运行的任务也可以因为等待某事件的发生而进入等待状态,可以通过 下列函数之一来实现:o s m u t e x p e n d ( ) ,o s s e m p e n d ( ) ,o s m b o x p e n d ( ) , o s q p e n d 0 ,o s f l a g p e n d 0 。如果某事件未发生,调用上述函数的任务就进入等待 状态,直到等待的事件发生,才再次进入就绪态。 中断服务态:如果正在运行的任务没有将中断关闭,那么正在运行的任务可 能因为发生中断而进入中断服务态,响应中断时,正在执行的任务被挂起,中断 服务子程序控制了c p u 的使用权。当中断服务程序退出时,p c o s 要判定处于中 断服务态的任务的优先级是否还是最高的,若不是,则该任务进入就绪态,c o s 进行任务切换到优先级最高的任务运行;若是,则恢复执行当前被中断了的任务, 该任务重新进入运行态。 任务状态转换图如下: 图2 1 任务状态转换图 9 卜海大学t 学硕“ 。论文 基十a r m 处理器实时操作系统的研究及应用 2 3 嵌入式实时操作系统斗c o s 的移植 2 3 1a 础垤处理器的特点 a r m 嵌入式处理器是一种高性能、低功耗的r i s c 芯片,具有r i s c 芯片的 一般特点。采用固定长度的指令格式,寻址方式简单,同时,a r m 处理器具有 大量寄存器,因此大多数操作都在寄存器中进行,指令执行效率很高。但是,另 方面,大量的寄存器也会造成任务切换时现场的保护面很大,使操作系统的任 务切换时间增加。 a r m 处理器采用特定的模式机制以支持操作系统的运行,共有七种模式, 分别是:用户模式,快速中断模式,外部中断模式,特权模式,数据访问终止模 式,未定义指令终止模式,系统模式。其中除了用户模式之外其它六种处理器模 式都称为特权模式,在特权模式下,程序可以访问系统所有资源,包括进行处理 器模式的切换,但是在用户模式下,程序的访问将受到限制,只能访问固定的系 统资源,并且没有切换处理器模式的权利。因此,为了防止用户任务发生错误而 对系统造成太大的破坏,用户任务应该运行于用户模式下,而操作系统内核运行 于系统模式下并负责管理系统的整体资源。 a r m 处理器本身除了具有七种模式外,还支持两种指令执行状态:a r m 指 令执行状态和t h u m b 指令执行状态。当外部存储器为1 6 位时,可以采用t h u m b 指令,t h u m b 指令为1 6 位,但是内核的体系结构不会变,也就是说采用t h u m b 指令后,可以在3 2 位指令执行环境下,获得更高的代码密度。当处理器执行a r m 指令时,称处理器处于a r m 指令执行状态,反之则称为t h u m b 指令执行状态 【1 0 。 a r m 处理器的七种模式和两种指令执行状态都在程序状态寄存器f c p s r ) 中 有相应的控制位,程序可以通过该寄存器来控制处理器的模式切换和指令执行状 态的转移。但是,除了上文已经提到的,当处理器处于用户模式下,程序不能改 变处理器的模式外,对于处理器的执行状态的改变也是有条件的。处理器执行状 态在用户模式或系统模式下不能通过直接给c p s r 寄存器赋值来改变,而必须通 过状态切换指令( b x 或b l x ) 来改变,而当程序从异常模式返回时可以通过给 c p s r 寄存器直接赋值来改变。这一点对操作系统的运行特别重要,操作系统进 行任务切换时,要恢复最高优先级任务的运行环境,其中要恢复的一个寄存器是 程序状态寄存器,而由于在系统模式下不能通过给程序状态寄存器赋值来改变处 理器的指令执行状态,因此必须首先使处理器进入一种异常模式,然后才能改变 处理器的指令执行状态,具体实现方式可以参见2 3 4 节1 9 ,1 0 】。 1 0 海人学工学硕l 论殳 基于a r m 处理器实时操作系统的研究及廊用 2 3 2 c o s 对临界代码段的处理 同其他内核一样,o s 为了处理临界代码段( c r i t i c a ls e c t i o n s ) 代码, 必须关中断,处理完毕后,再开中断。关中断使得c o s 能够避免同时有其他任 务或中断服务程序进入临界段代码致使系统崩溃。关中断的时间是实时内核应提 供的最重要的指标之一,因为这个指标影响用户系统对实时事件的响应特性。 斗c o s 已经尽力使关中断的时间降低到最短,但是,关中断的时问在很大程度上 取决于微处理器的结构以及编译器所生成的代码的质量 7 。 u c o $ 定义两个宏( m a c r o s ) 来执行开关中断的操作,以便避免不同的c 编 译器厂商选择不同的方法来处理开关中断。心o s 中的这两个宏分别是: o se n t e rc r i t i c a l 0 和o se x i t _ c r i t i c a l 0 。因为这两个宏的定义取决于所使 用的微处理器,所以在文件o s c p u h 中可以找到相关的宏定义。 o se n t e r _ c r i t i c a l0 和o s _ e x i t c r i t i c a l0 总是成对使用的,把临界段代 码包裹起来,如下所示: f o s e n t e r c r i t i c a l0 : 术们o s 临界段代码木 o s e x i tc r i t i c a l0 : l o s e n t e rc r i t i c a l 0 和o s e x i t _ c r i t i c a l 0 也可以用来保护应用程序中 的临界段代码:然而要特别小心,如果在调用一些如o s t i m e d i y 0 之类的功能函 数之前关中断,应用程序将会崩溃,原因很简单:任务调用o s t i m e d l y 0 挂起一 段时间,直到挂起时间到,但是由于中断被关掉了,时钟节拍一直得不到服务, 因此应用程序将永远不会就绪,程序将会终止。 在叩o s 中有三种方法来实现o s _ e n t e r _ c r i t i c a l0 和o s e x i t c r i t i c a l0 两个宏,具体的实现方法可以在系统配置文件o s c f g h 中进行不同实现方法的 配置 3 。 第一种方法:配置o s _ c r i t i c a l _ m e t h o d = i : 这是以最简单的方式来实现这两个宏定义的,用处理器指令关中断,完成 o s e n t e r _ c r i t i c a l ( ) ,用开中断完成o s e x i tc r i t i c a l 0 。但是,这种方法会 导致们o s 系统无法进行中断嵌套。如果在调用邮o s 的功能函数时,中断是关 掉的,则从o s 函数返回时中断就会打开。也就是说不论之前有多少次关中断, 只要当前一次开中断就会打开所有中断,因此这种实现方法有欠妥当! 卜海大学工学倒f 士论文 罐于a r m 处理器实时操作系统的研究发应用 第二种方法:配置o sc r i t i c a lm e t h o = 2 : 采用这种方法的基本思想就是在堆栈中保存中断的开关状态。实现 o s e n t e r c r i t i c a i ,0 的办法就是在堆栈中保存中断的开关状态,然后再关中 断。在实现o s e x i t c r i t i c a l ( ) 时,只需简单地从堆栈中弹出原来中断的开关 状态即可。这样就可以实现中断的嵌套,示意代码如下: # d e f i n eo s e n t e r c r i t i c a l 0 | a s m ( “p u s hp s w ”) a s m ( “d i ”) # d e f i n eo s e x i t s r i t i c a l 0 | a s m ( “p o pp s w ”) 这里采用了在c 编译器中直接插入汇编语句的方法进行压栈和弹栈操作,但 是有些c 编译器并没有那么灵敏,可能并不知道微处理器的栈指针因此而改变 了,这样就可能造成程序运行错误。 由于本课题采用的a r m 嵌入式系统的软件开发环境是由a r m 公司自己开发的 集成环境:a d s ,该环境集程序的编辑、编译、调试于一体,支持c 、c + + 、汇编 的相互调用。因此采取宏定义的形式在c 中直接插入汇编语句,并在任务的堆栈 之中保存中断的嵌套层数,以使中断的嵌套层数可见,示意代码如下: v o i do se n t e rc r i t i c a l ( v o i d ) 一a s m m r s r o ,s p s r o r r r o ,r o ,# n o i n t关闭中断 m s r s p s r ,r o ) o s e n t e r s u m + 十:中断嵌套层数加一 j v o i do s e x i t _ c r i t i c a l ( v o i d ) f i f ( 一一o s e n t e r s u m = = 0 )如果达到最后一层,就开中断 f a s m f m r s r o ,s p s r b i c r o ,r o ,# n o i n t 开中断 海大学t 学硕l 一论文 接十a r m 处理器实时操作系统的研究及应用 m s r s p s r ,r 0 ) 每个任务在运行时,都有自己的嵌套层数计数器。只有当该任务的中断层数 计数器到零时才开中断。而各个任务之间由于在任务切换时,把自己的中断状态 压入各自的堆栈之中,互不影响,彻底解决了中断的嵌套问题。 第三种方法:配置0 s c i r i t c a l _ m e t h o d = 3 : 某些编译器提供了扩展功能,用户可以直接得到当前处理器状态字的值,并 保存在c 函数的局部变量之中。同样,这个变量可以用于恢复p s w 。 具体实现方法此处从略,可以参看文献 7 。 2 3 3 任务堆栈的设计 h c o s 中的任务总是处于五种状态之一:睡眠态、就绪态、运行态、等待状 态和中断服务态。任何任务创建之后才有可能运行,任务创建函数 o s t a s k c r e a t e0 和o s t a s k c r e a t e e x t0 会初始化任务的栈结构,使堆栈看起来就 象刚刚发生过中断一样,所有寄存器保存在任务的堆栈之中。若要任务恢复执行, 只须最后执行一条中断返回指令即可。在心o s 的移植文件o s c p u c c 中,唯 一必要的函数就是0 s t a s k s t k l n i t0 。该函数会在任务创建时被调用,用来初始 化任务的堆栈结构。因此,在真正动手编写移植代码之前必须首先设计好任务的 堆栈结构 9 。 u c o s 要求任务堆栈初始化函数o s t a s k s t k l n i t0 的示意代码如下: o s s t k 0 s t a s k s t k i n i t ( v o i d * t a s k ,v o i d4 d a t a ,o s s t k * p t o s , i n t l 6 uo p t ) : 1 模拟带参数( p d a t a ) 函数调用; 模拟i s r 向量; 按照预先设计的寄存器值初始化堆栈结构; 返回栈顶指针给调用该函数的函数; ) 针对a r m 处理器本课题设计的堆栈结构如下所示: j :海人学工学硕上论文基于a r m 处理器实时操作系统的研究及应用 、 p c l rh 模拟的i s r 向量 l 、 r 1 2 列需要保存的寄存器 j r o 一需要传递的函数参 l 数保存于r 0 中 c p s r o s e n t e r s u m一关中断嵌套计数器 图2 2 任务堆栈结构图 在任务的堆栈初始化函数中,c p s r 必须把处理器模式初始化为用户模式。 这样当任务刚开始投入运行时,进入的便是用户模式,而在用户模式下又不能切 换处理器模式,因此,可以保护系统资源免受用户任务的破坏。 按照o s 的要求,在堆栈初始化函数o s t a s k s t k l n i t0 中,要求模拟编译 器的函数调用规则,造成好象函数启动运行时是被其它函数调用的假象。在通过 堆栈传递函数参数的函数调用规则中,需要把函数参数p d a t a 和函数的返回地址 按照编译器的函数调用顺序压入堆栈之中。由于a r m 编译器a d s 使用寄存器传递 函数参数,因此在o s t a s k s t k l n i t ( ) 函数中不能把参数p d a t a 压入堆栈之中, 而要保存到寄存器r o 之中,这样任务开始运行时参数会被自动传递。 2 3 4 任务切换函数的设计 任务切换部分关键需要改写三个函数,分别是o s s s t a r t h i g h r d y 0 : o s c t x s w ( ) 和0 s i n t c t x s w ( ) 。 o s s s t a r t h i g h r d y0 由函数o s s t a r t0 函数调用,功能是让进入就绪态的优 先级最高的任务运行,函数原型如下: v o i d0 s s t a r t h i g h r d y ( ) f 调用用户定义函数o s t a s k s w h o o k 0 ; 0 s r u n n i n g = t r u e :第一部分s t a r t ( 1 ) 海大学t 学硕仁论文 基于a r m 处理器实时操作系统的研究艘应用 获取堆栈指针s p = o s t c b h ig h r d y 一 o s t c b s t k p t r : 从新任务堆栈中恢复所有寄存器; 执行中断返回指令; 第二部分s t a r t ( 2 ) o s c t x s w 0 是一个任务级的切换函数,o s i n t c t x s w 0 是一个中断级的切换函 数。区别是前者是在任务需要进行切换时被宏o s j a s k s w 0 调用。而后者是在 中断退出时被函数o s i n t e x i t 0 调用的。一个服务于任务,一个服务于中断。这 两个函数颇有相似之处。 1 任务级切换函数o s c t x s w0 函数原型如下: v o i do s c t x s w ( v o i d ) i 保存处理器的寄存器到当前任务的堆栈中; 将当前任务的堆栈指针保存的该任务的o s j c b 中: o s t c b c u r 一 o s t c b s t k p t r = 堆栈指针;第一部分:c t x ( 1 ) 调用用户定义函数o s t a s k s w h o o k 0 : o s t c b c u r = o s t c b h ig h r d y : o s p r i o c u r = o s p r i o h i g h r d y : 第二部分:c t x ( 2 ) 获取新任务堆栈指针s p = o s t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届上海华东师大三附中高一化学第一学期期中复习检测试题含解析
- 【《红茶工艺对活性成分的影响探究报告综述》4200字】
- 《建筑业能源审计报告编写指南》DB11T 1556-2018
- 山东省滕州实验中学2026届化学高三上期中统考试题含解析
- 2026届上海市重点中学高三化学第一学期期中联考试题含解析
- 汽车代理销售合同范本
- 金融培训教学合同范本
- 智能电子销售合同范本
- 招商代理销售合同范本
- 收购餐饮餐饮合同范本
- 苏州市立达中学
- 初中生物实验室标准仪器配置及初中生物实验器材清单
- 四年级语文上册第七单元21古诗三首课件新人教版
- 《高效人士的问题解决术》
- GB/T 9145-2003普通螺纹中等精度、优选系列的极限尺寸
- GB/T 6071-2003超高真空法兰
- GB/T 23510-2009车用燃料甲醇
- 劳务派遣人员考核方案
- 膝关节镜手术配合
- 法律谈判实务完整版课件全套教学ppt教程
- 中油岗位职责
评论
0/150
提交评论