(计算机应用技术专业论文)基于嵌入式linux的绘图仪控制器软件设计.pdf_第1页
(计算机应用技术专业论文)基于嵌入式linux的绘图仪控制器软件设计.pdf_第2页
(计算机应用技术专业论文)基于嵌入式linux的绘图仪控制器软件设计.pdf_第3页
(计算机应用技术专业论文)基于嵌入式linux的绘图仪控制器软件设计.pdf_第4页
(计算机应用技术专业论文)基于嵌入式linux的绘图仪控制器软件设计.pdf_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

摘要 本论文是在嵌入式l i n u x 的基础上,实现大幅面彩色喷墨绘图仪中央控制器的 主要功能。设计包括:分析嵌入式i _ j n u x 的实时性,指出l i n u x 实时性不足的地方, 提出改进l i n u x 实时性的方案,对l i n u x 内核进行裁减,构建一个嵌入式l i n u x 实 时操作系统;深入研究绘图仪中央控制器的系统结构和工作原理,实现各个部分 的功能:利用上位机和中央控制器的网络通信实现原始数据传输,将从上位机传 输过来的图像控制信息和四色数据进行分离,对四色数据进行重组,利用中央控 制器和运动控制器c p c 的串口通信把控制命令发送给c p c ,利用p c i 标准接口卡 把重组后的数据发送给喷头驱动控制电路p e ,为此要了解l i n u x 环境下p c i 设备 驱动的设计方法,了解p c i 9 0 5 4 芯片的系统结构和工作原理,编写p c i 9 0 5 4 芯片 的驱动程序,实现数据的高速传输。 关键词:l i n u x 实时性内核裁减喷墨绘图仪中央控制器 数据重组p c i 9 0 5 4 驱动 a b s t r a c t t l l i st h e s i si st or e a l i z et h em a i nf u n c t i o no ft h ec e n t r a lc o n t r o l l e ro ft h ew i d e f o r m a tc o l o ri n k - j e tp l o t t e rb a s e do nt h ee m b e d d e dl i n u x ,i n c l u d i n gt h e s ec o n t e n t : a n a l y z et h er e a l - t i m ep e r f o r m a n c eo fl i n u x ,p o i n to u tt h ef a c t o r sa f f e c t i n gt h er e a l - t i m e p e r f o r m a n c eo fl i n u x ,p u tf o r w a r dt h es c h e m et oi m p r o v et h er e a l - t i m ep e r f o r m a n c eo f l i n u x ;r e d u c et h el i n u xk e r n e lt oc o n s t r u c ta ne i n b c d d c dl i n u xr e a l - t i m eo p e r a t i n g s y s t e m ;l u c u b r a t et h es y s t e ms t r u c t u r ea n d w o r kp r i n c i p l eo f t h ec e n t r a lc o n t r o l l e ro ft h e c o l o ri n k - j e tg r a p hp l o t t e r , r e a l i z et h ef u n c t i o no fe a c hs e g m e n t s :u s et h en e t w o r k c o m m u n i c a t i o nb e t w e e nt h eu p p e rm a c h i n ea n dt h ec e n t r a lc o n t r o l l e rt ot r a n s m i tt h e r a wp r i n td a t a , d e c o d et h eg r a p hc o n t r o li n f o r m a t i o na n dt h ef o u rc o l o rd a t a , r e c o m p o s e t h ef o u rc o l o rd a t a ,u s et h ec o mc o m m u n i c a t i o nt os e n dt h ec o n t r o lc o m m a n dt ot h e c p c ( m o v e m e n tc o n t r o lu n i o ,s e n dt h er c c o m p o s e dp r i n td a t at ot h ep e ( d r i v e rc o n t r o l c i r c u i ot h r o u g ht h ep c is t a n d a r di n t e r f a c ec a r d ,t or e a l i z et h i sf u n c t i o n ,i ti sn e c e s s a r y t ou n d e r s t a n dt h ed e s i g nm e t h o do fp c id r i v e ri nl i n u x ,u n d e r s t a n dt h es y s t e ms t r u c t u r e a n dw o r kp r i n c i p l eo fp c i 9 0 5 4 ,p r o g r a m m et h ed r i v e ro fp c i 9 0 5 4 , r e a l i z et h ed a m s h i g hs p e e dt r a n s m i s s i o n k e yw o r d s :l i n u xr e a l - t i m ep e r f o r m a n c e k e r n e ir e d u c e c e n t r a lc o n t r o l l e ro fe o l o ri n k j e tg r a p hp l o t t e r d a t ar e c o m p o s i t i o n p c l 9 0 5 4d r i v e r 创新性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:塞壁笙日期z o o o i g 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。 本人签名: 导师签名: 口* h 砌s 1 1 置 口删釜 第一章绪论 第一章绪论 1 1 研究背景 绘图机是计算机用来绘制图形图像的大型输出设备,从绘图原理上,可将绘 图机分为笔式( 矢量) 绘图机和无笔式( 点阵) 两种。彩色喷墨绘图机诞生于1 9 9 1 年, 由h p ( 惠普) 公司率先推出。九十年代以来,由于墨水和打印头技术的突破性进展, 彩色喷墨绘图机在绘图精度、色彩表现力和可靠性方面都有了飞跃性的提高。世 界上许多著名绘图机制造厂商都迅速推出了自己的彩色喷墨绘图机产品。这些产 品具有绘图速度快、噪声低、绘图介质广、实用性强、价格低等特点,在许多应 用领域中已基本取代了笔式绘图机,占领了绘图机市场的绝大部分市场份额。用 户对彩色喷墨绘图机的认知度也越来越高,使其应用领域不断拓展,由过去的c a d 领域逐渐向测绘、交通等行业的g i s ( 地理信息系统) 和其它图形图像输出领域渗 透,如:印刷行业的印前数码打样,广告行业中巨幅招贴画、灯箱、海报的喷绘, 摄影行业中数码影像的彩扩洗印等。 目前,我国大幅面彩色喷墨绘图机的整体应用状况正处于上升阶段,但是我 国在大幅面和超大幅面绘图机领域比较落后,尚无自主知识产权的同类产品。因 此,所需的大幅面和超大幅面彩色喷墨绘图机基本依赖进口,国内的喷墨绘图机 市场也为几个国外的c a n o n 、h p 、e p s o n 等几大公司所占领。为了满足办公自动化、 测绘、气象以及图形图像民用等色彩鲜明、层次清晰的大幅面图像的需求,我国 花费大量外汇进口喷墨绘图机设备。另外,如果军事、地质勘测等敏感行业的图 形图像输出过于依赖国外品牌绘图机也会带来潜在的危机。所以,我国应该拥有 自主品牌、自主技术的大型彩色喷墨绘图机。 1 2 本论文的来源和主要内容 本论文的选题来源于外部设备研究所承担的国家“十五”重点预研项目军 用彩色喷墨绘图机技术( 4 0 3 1 6 0 5 0 1 ) ,目的是构建适用于绘图机的嵌入式l i n u x 操作系统,并以此为基础实现绘图机中央控制器的功能。 本论文的编排设计如下: 第一章阐述研究背景、本论文的选题来源和主要内容、嵌入式l i n u x 和p c i 等相关技术的现状。 第二章分析l i n u x 系统的实时性,指出l i n u x 实时性不足的地方,提出改进 方案,根据本设计的要求构建一个嵌入式l i n u x 系统。 2 基于嵌入式l i n u x 的绘图仪控制器软件设计 第三章分析绘图仪的系统结构、中央控制器的功能以及各个功能模块的工作 原理,详细介绍各个模块的软件设计。 第四章分析l i n u x 环境下p c i 设备驱动的设计方法,p c i 9 0 5 4 芯片的系统结构 和工作原理,设计p c i 9 0 5 4 驱动程序。 第五章对本设计进行总结。 本文对嵌入式l i n u x 系统的实时性进行了比较深入的研究,有针对性地提出 改进实时性的方案,对l i n u x 实时性的研究有一定的参考价值。 本文对彩色喷墨绘图机关键技术进行积极的研究,将嵌入式技术应用于绘图 机中央控制器的开发设计,探讨嵌入式环境下网络通信、串口通信及高速数据处 理技术的实现,所做的工作对国内绘图机的研制开发具有一定实用参考价值。 本文对l i n u x 环境下p c i 设备驱动的设计方法进行了比较深入的研究,对p c i 驱动程序设计有一定的实用参考价值。 下面对相关的技术进行概述: “” 1 3 嵌入式l i n u x 概述 嵌入式系统【1 】( e m b e d e ds y s t e m ) 是以应用为中心、以计算机技术为基础,并 且软硬件可裁剪,能够满足应用系统对功能、可靠性、成本、体积、功耗等指标 的严格要求的专用计算机系统。 嵌入式系统的出现至今已经有3 0 多年的历史了,嵌入式技术也经历了几个发 展阶段。综观嵌入式技术的发展,大致经历了以下4 个阶段1 2 j 。 第一阶段是以单芯片为核心的可编程控制器形式的系统,同时具有与监测、 伺服、指示设备相配合的功能。这种系统大部分应用于一些专业性极强的工业控 制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制, 运行结束后清除内存。这一阶段系统的主要特点是:系统结构和功能都相对单一, 处理效率较低,存储容量较小,几乎没有用户接口。 第二阶段是以嵌入式c p u 为基础、以简单操作系统为核心的嵌入式系统。这 一阶段系统的主要特点是:c p u 种类繁多,通用性比较弱;系统开销小,效率高; 操作系统具有一定的兼容性和扩展性;应用软件较专业,用户界面不够友好;系 统主要用来控制系统负载以及监控应用程序运行。 第三阶段是以嵌入式操作系统为标志的嵌入式系统。这一阶段系统的主要特 点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系 统内核精小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理、 设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用 程序接口( a p i ) ,开发应用程序简单;嵌入式应用软件丰富。 第一章绪论3 第四阶段是以基于i n t e r n e t 为标志的嵌入式系统,这是一个正在迅速发展的 阶段。目前大多数嵌入式系统还孤立于i n t e r n e t 之外,但随着i n t e r n e t 的发展 以及i n t e r n e t 技术与信息家电、工业控制技术等结合日益密切,嵌入式设备与 i n t e r n e t 的结合将代表着嵌入式技术的真正未来。 在嵌入式操作系统领域,全球主要有4 大嵌入式操作系统 3 1 :w i n c e 、p a l mo s 、 e p o c 和l i n u x 。 微软窗口操作系统拥有在个人电脑上的操作系统占有率的优势,使w i n c e 【4 l 拥 有强大的窗口资源支援。 , p a l m0 s 1 5 1 操作系统拥有全球p d a 产品7 0 的市场占有率;同时获得3 c o m 、i b m 和索尼等跨国公司的支持。 e p o c 6 i 是发展自欧洲的操作系统、是由世界上最大的3 家移动电话厂商诺基 亚、爱立信和摩托罗拉所共同开发、整合组成新公司,开发出来的新操作系统: 在3 大电话厂商的合作下,e p o c 市场潜力很大,且占有率高,但应用功能以手机 为主,目前并不开放授权。 在3 大主流操作系统品牌外,l i n u x 也将是今后一股强劲的力量;由于l i n u x 开放源码,经过这些年的发展,已经成为一个健壮的可靠的高性能的操作系统。 愈来愈多的嵌入式系统设计员发现l i n u x 可以成为一个优秀的嵌入式操作系统。 目前,国际上对嵌入式l i n u x 的研究主要集中在以下几个方面: ( 1 ) 内核裁减:嵌入式设备的硬件资源通常是有限的,因此对软件的体积有严 格要求。但是l i n u x 使用单一模块结构,体积较大,不适合直接在嵌入式设备中 应用。开发符合原l i n u x 接口标准、体积很小的l i n u x 内核,并加强其可裁减性 和可配置性,是当前嵌入式l i n u x 的研究和发展方向之一。 ( 2 ) 实时性:嵌入式对操作系统的实时性有较高的要求。l i n u x 并非实时操作 系统,因而必须提高其实时性,以满足高实时性系统的要求。 ( 3 ) 可移植性和可重用性:良好的可移植性和可重用性将大大缩短软件的开发 周期、降低开发成本。 国内对l i n u x 的研究主要集中在体积、能源管理、g u i 、开发环境、中文化和 驱动程序这几个方面。 1 4 p c i 总线的起源及特点 在当今信息爆炸的时代,尤其是多媒体技术、高速网络技术等出现之后,对数 据传输的要求也越来越高。传统意义上的e i s a 、i s a 等总线很难满足实际的需要。 为了解决这个问题,i n t e l 公司提出了将高速高带宽的外围功能移到靠近c p u 的地 方,并通过个系统接口( 主桥路) 与处理器存储器连接的“局部总线”的解决 4 基于嵌入式l n u x 的绘图仪控制器软件设计 方案。随后,i n t e l 公司联合i b m 、c o m p a q 、a s t 、h p 、d e c 等1 0 0 多家大公司成立 了p c i s i g ( p e r i p h e r a lc o m p o n e n ti n t e r c o n n e c ts p e c i a li n t e r e s tg r o u p ) 小 组,并在1 9 9 3 年推出了p c 局部总线标准p c i 局部总线,即外部器件互联 ( p e r i p h e r a lc o m p o n e n ti n t e r c o n n e c t ) 总线。随后陆续推出了一系列版本,目 前的版本是1 9 9 9 年2 月发布的p c i 2 2 修订版。 p c i 总线作为现代总线的标准,具有很多色彩鲜明的特点 7 1 : ( 1 ) 高性能:p c i 局部总线以3 3 m h z 的时钟频率工作,采用3 2 位数据总线,可 支持多组外围部件和附加卡。数据传输率可高达1 3 2 m b s ,远远超过e i s a 或者i s a 总线,能更好地支持图形系统和高速实时系统。 ( 2 ) 线性突发传输:p c i 支持一种称为“线性突发”的数据传输模式,可确保 总线不断满载数据。线性突发传输指的是从某一个地址开始传输大量的数 据,每次只需将地址自动加1 ,便可以接收数据流中的下一个数据。这样 可以减少无谓的地址操作,更有效率地运用总线的带宽去传输数据。 ( 3 ) 极小的存取延误:支持p c i 的设备,存取延误很小,能够大幅度减少外围 设备取得总线控制权所需的时间。 ( 4 ) 采用总线主控和同步操作:总线主控是大多数总线都具有的功能,目的是 让任何一个具有处理能力的外围设备暂时接管总线,以加速执行高吞吐量、 高优先级的任务。同步操作是p c i 独有的功能,可保证微处理器能够与这 些总线主控同时操作,不必等待后者的完成。 ( 5 ) 不受处理器限制:p c i 局部总线独立于处理器,其结构是一种独特的中间 缓冲器设计方式,将中央处理器子系统与外围设备分开。 ( 6 ) 适合于各种机型:p c i 局部总线不仅适用于标准的桌面( 台式) 电脑,同 时也适用于便携式电脑和服务器。可以提高它们的图形性能,缩小内部零 件的尺寸,减少零件的数目,提供更多的i o 接口。 ( 7 ) 兼容性强:p c i 总线可以与i s a 、e i s a 及m c a 总线完全兼容,并且可以提 供一个“共用插槽”,这大大节省了插槽所需占用的空间。 ( 8 ) 预留了发展空间:p c i 局部总线在开发时就预留了充足的发展空间,这是 它的重要特性。例如,它可以将总线宽度由3 2 位升级到6 4 位,这时数据 传输率将达到2 6 4 m b s 。 ( 9 ) 低成本、高效益:p c i 的芯片将大量系统功能高度集成,节省了逻辑电路。 ( 1 0 ) 是立足现在放眼未来的标准:p c i 局部总线既迎合了当今的技术要求,又 能满足未来的高要求,是计算机界公认的最具高瞻远瞩的局部总线标准。 第二章嵌入式l i n u x 实时性分析与系统设计 第二章嵌入式l in u x 实时性分析与系统设计 2 1 操作系统选型 5 l i n u x 是类u n i x 操作系统的一个分支,最初是由l i n u s ( 芬兰) 于1 9 9 1 年为 基于i n t e l 8 0 3 8 6 的i b m 兼容机开发的。其构想源于改进另外一款类u n i x 操作系 统m i n i x ,开发一个更有效的u n i x 个人计算机版本。l i n u x 通过i n t e r n e t 广 泛流传,通过i n t e r n e t 由上千名开发人员合作维护,现在l i n u x 已经成为了一个 功能强大的操作系统,在嵌入式市场也得到了很大的发展。 l i n u x 之所以能在嵌入式市场取得如此快的发展,得益于其作为嵌入式操作系 统的优良特性1 8 1 1 支持多种体系结构 l i n u x 支持x 8 6 、a r m 、i p s 、a l p h a 、a p a r c 等多种体系结构。目前,l i n u x 已 被移植到数十种硬件平台上,几乎支持所有流行的c p u 。原型可以在标准平台上开 发然后移植到具体的硬件上,加快了软件与硬件的开发过程。 2 功能强大的内核,性能高效、稳定、多任务 l i n u x 内核的高效和稳定已在各个领域特别是网络服务器领域得到了事实验 证。而且,l i n u x 内核小巧灵活,易于裁剪,非常适合于嵌入式系统。 3 开放源码,软件丰富 l i n u x 是自由的操作系统,它的源代码开放使用户获得了最大的自由度,并节 省大量开发费用。l i n u x 的软件资源十分丰富,每一种通用程序在l i n u x 上都可以 找到,并且每天都在增加。在l i n u x 上开发程序往往不需要从头做起,而是选择 一个类似的自由软件,根据需要进行二次开发。 4 完善的网络通信和文件管理机制 l i n u x 自产生之日起就与网络密不可分,其微内核直接对网络提供支持,具有 非常强大的网络功能,基本上所有的网络协议和网络接口都可以在l i n u x 上找到, 并且能比标准的u n i x 更加高效地处理网络协议,系统的网络吞吐性能也非常好。 更重要的是,l i n u x 的网络功能和协议是以内核可选的模块方式提供的,允许用户 自由地裁剪和优化。 同时,l i n u x 支持e x t 2 、e x t 3 、f a t l 6 、f a t 3 2 、r o m f s 等多种文件系统。 5 大量周边硬件设备,驱动丰富 l i n u x 上有丰富的驱动程序,支持各种主流硬件设备和最新硬件技术,而且随 着l i n u x 的广泛应用,许多芯片厂家开始提供l i n u x 上的驱动,这进一步促进了 l i n u x 在各种硬件平台上的应用。 6 基于嵌入式l i n u x 的绘图仪控制器软件设计 鉴于l i n u x 作为嵌入式操作系统的强大优势,所以作者决定采用l i n u x 作为 本设计的嵌入式操作系统平台。 然而,大幅面彩色喷墨绘图仪是一个高端产品:它处理的数据量非常大,要 与上位机进行网络通信、与运动控制器进行串口通信、把重组后的数据通过高速 输出设备发送出去,还要控制面板显示屏幕、按键控制器、及时反馈各种状态、 对各种情况做出快速的响应,所以,它对系统实时性的要求是比较高的,它需要 一个实时操作系统。 实时操作系统( r e a lt i m eo p e r a t i n gs y s t e m ,r t o s ) 是指管理计算机软硬件 资源、并提供人机命令和编程接口的系统,它能在固定时间内对一个或多个由 外设发出的信号做出适当的反应。 实时计算四1 可以定义成这样一类计算,即系统的正确性不仅取决于计算的逻 辑结果,而且还依赖于产生结果的时间。一般说来,在实时系统中,某些任务是 实时任务,它们具有一定的紧急程度。这类任务试图控制外部世界发生的事件, 或者对事件做出反应。由于这些事件是“实时”发生的,因而实时任务必须能够 跟得上它所关心的事件。因此,通常给一个特定的任务制定一个最后期限,最后 期限指定开始时间或结束时间。 实时任务的另一个特征是它们是周期还是非周期的。一个非周期任务有个必 须结束或开始的最后期限,或者有一个关于开始时间和结束时间的约束。而对于 周期任务( p e r i o d i ct a s k ) ,这个要求描述成“每隔周期t 一次”或者“每隔t 个 单位”。 现在让我们来分析一下l i n u x 的实时性。 2 2l i n u x 实时性分析 l i n u x 操作系统是一个分时操作系统,它的调度程序追求的是平均响应时间、 吞吐量和在进程之间的公平的c p u 时间分配n 。l i n u x 实时性不足具体体现在以 下几个方面: 1 非抢占内核 l i n u x 在用户态支持可抢占调度策略,而在核心态却不支持可抢占调度策略, 这样运行在核心态的进程是不能被其他优先级更高的进程抢占,这在实时系统是 不能忍受的。而且,还会带来优先级逆转1 1 的问题:低优先级的任务l 因为占用 临界资源但没有执行权,高优先级的任务h 拥有执行权,但是没有临界资源,这 样低优先级的任务将优先执行,而且,如果系统不断有中优先级任务m 到来,系 统的任务调度将会变得不稳定又难以预测。 与非占先式内核相关的问题是系统的同步。为保护数据可能被非同步地操作, 第二章嵌入式i a n u x 实时性分析与系统设计 7 比方说中断处理函数,系统设计者通常在临界区代码中选择关中断的方式来处理, 比起信号量( s e m a p h o r e s ) 或者自旋锁( s p i n l o c k s ) 1 羽,这是更为简单有效的技 术。但禁止中断是系统能力与系统对外部事件的快速响应的一个折中。 2 时钟粒度粗糙m 1 l i n u x 的时钟频率为i o o h z ,时钟周期为l o m s ,时钟粒度太粗糙,不能满足实 时性的要求。而且,l i n u x 的软定时器由时钟定时器完成,当定时器比较多时,将 会引起共享时钟定时器的冲突。 3 虚拟内存 在l i n u x 中采用了虚拟内存的技术:当访问的页面不在实际内存时,可以通 过交换空间把需要的页面调到实际内存里,通过这种技术可以使进程运行在比实 际内存大的多的虚拟空间里,但是由于页面频繁地换进换出,使得实时进程的运 行难以预料,影响了实时性。 4 中断管理 l i n u x 在中断处理和虚拟内存缺页处理时允许屏蔽中断,这就使得l i n u x 实施 调度的粒度比较大,而且,内核进程经常关闭中断以尽快完成自己的任务,所以, 假如有更高优先级的进程的中断到来,系统也无法响应。 如果关中断的时间过长,就有可能丢失外部中断信号,以致于一些实时任务 不能得到及时处理,因此中断处理程序应尽可能短。为了处理有时必需的“长” 中断服务程序,在l i n u x 操作系统内核中,将中断处理分为t o ph a l f 和b o t t o m h a l f 两个部分。t o ph a l f 是在i d t 表中登记的中断服务程序的入口部分,它必须 关中断运行。系统处理中断时,首先由t o ph a l f 读取来自设备的数据,保存到 预定的缓冲区,时间尽可能短。之后通知b o t t o mh a l f ( b ha c t i v e 置位) 并返回, 由b o t t o mh a l f 执行剩下的不急需且耗时的处理,此时处于开中断状态,可以接 收新的外部中断1 1 4 1 。 在l i n u x 系统中,有许多中断的b o t t o mh a l f 处理,它们形成一个任务队列, 由l i n u x 调度管理。在这种中断机制下,由于b o t t o mh a l f 队列的调度,会引起 中断处理的延迟。 此外,l i n u x 系统允许中断嵌套,当执行一个中断处理程序时,允许更高优先 级的中断来打断( 当运行于用户态时) ,等更高优先级的中断处理完成后,再回复 到原来的中断处理现场。针对各个硬件中断响应的及时性,l i n u x 利用外部中断管 理器来设置不同的中断优先级,确保各个任务都能及时处理。但这也会在一定程 度上延迟某些中断请求的响应时间,使得中断响应时间难于准确估计。 另外,l i n u x 的中断处理句柄是不可调度的,不能依优先级高低进行调度。而 在实时系统中,希望中断处理句柄和实时任务一样,可以有优先级被系统的调度 程序调度。 8 基于嵌入式l i n t t x 的绘图仪控制器软件设计 5 进程调度 在操作系统中,任务切换时间包括保存目前任务的时间,新任务调入系统的 时间和操作系统选择下一个任务的调度时间,其中任务调度时间是决定任务切换 时间长短的主要因素。而影响这一时间的因素主要是任务调度策略和被调度的任 务数。调度策略越简单,被调度的任务总数越少,调度时间就越短。对一个实时性 能较强的操作系统而言,系统必须规定不同进程的优先级,把不同类型的进程分 成不同的队列,并把优先级作为唯一的进程调度标准,尽量缩短任务调度时间。 l i n u x 在内核1 3 版本之后加进了p o s i x 实时扩展部分,引进了实时进程概念, 允许将一个进程的属性确定为实时进程。 实时进程的调度策略为:s c h e d _ f i f o 和s c h e d _ r r ,普通进程的调度策略为; 动态优先调度t 1 5 o s c h e d f i f o :调度只取决于进程的优先级,只要就绪进程队列没有更高优先 级的任务,该实时进程可以一直运行下去,直到运行完毕或者因等待某种资源而 阻塞,相同优先级的进程采用先来先服务的策略。 s c h e d r r :每一个实时进程都有一个时间片,当进程的时间片用完就把它放 到就绪进程队列的末尾,并重新为其分配时间片。 动态优先调度:选择进程的依据是进程c o u n t e r 值的大小t 1 6 1 0 进程创建时, 优先级p r i o r i t y 被赋一个初值,同时也是计数器c o u n t e r 的初值。p r i o r i t y 代表 分配给该进程的时间片,c o u n t e r 表示该进程剩余的时间片。在进程运行过程中, c o u n t e r 不断减少,而p r i o r i t y 保持不变,以便在c o u n t e r 变为0 时( 该进程用 完了所分配的时间片) 对c o u n t e r 重新赋值。当一个普通进程的时间片用完以后, 并不马上用p r i o r i t y 对c o u n t e r 进行赋值,只有所有处于可运行状态的普通进程 的时间片( p - c o u n t e r = = o ) 都用完了以后,才用p r i o r i t y 对c o u n t e r 重新赋值, 这个普通进程才有了再次被调度的机会。在普通进程运行过程中,c o u n t e r 的减小 给了其它进程得以运行的机会,即进程正在运行时可以被其他c o u n t e r 值更大的 进程中断,但只有当该进程的c o u n t e r 值减为0 时才完全放弃对c p u 的使用,这 就相当于优先级在动态变化,所以称之为动态优先调度。 在l i n u x 里,实时进程的优先级设置成比所有的普通进程的优先级都高( 实 时进程的优先级为c o u n t e r + 1 0 0 0 ,而普通进程的优先级只为c o u n t e r ) ,所以实时 进程总是先于普通进程运行,但这只是软实时,未能满足高实时性要求的应用。 而且,所有的进程不管是实时进程还是普通进程都放在一个就绪队列里,这将影 响实时进程的响应。 可见,l i n u x 不能满足实时操作系统的要求,为了提高l i n u x 的实时性,现提 出以下方案: 第二章嵌入式l i n u x 实时性分析与系统设计 2 3l i n u x 实时性改进理论分析 目前,提高l i n u x 实时性的方法主要有两种:双内核方法和修改内核方法,具 体改进方法如下: 2 3 1 双内核方法 这种方法是在同一硬件平台上采用两个相互配合,共同工作的系统核心,一 个提供精确的实时多任务管理,另一个提供复杂的非实时通用功能1 1 7 1 。 典型的例子是r t l i n u x :通过在l i n u x 系统的最底层增加一个实时核心层来实现, 实时核心层负责硬件管理并提供实时任务管理,l i n u x 核心被看作是实时核心中优 先级最低的任务来调度,只有当没有可运行的实时任务时l i n u x 核心才被调度t 1 8 l 。 对于实时内核来说,它始终不关闭硬件中断,可以接受所有的中断信号,当 中断信号需要实时进程来处理时,实时进程将抢占l i m l x 内核,如果中断信号需要 l i n u x 内核来处理时,则由实时内核将信号传给l i n u x 内核,实时内核中提供了一 个用来模拟l i n u x 内核的关中断情况:1 表示l i n u x 内核打开中断,0 表示l i n u x 关闭中断,实时内核在中断到来的时候检查该标志位,如果该位是1 ,立刻把中断 传给l i n u x 内核,否则,将所有待处理的中断放到一个队列里,直到l i n u x 打开中 断时才把它们传给l i n u x 内核。 图2 1 双内核体系结构 在双内核方法中,实时进程和普通进程的通信方法有:共享内存和管道设备 接口。管道缓冲区在内核空间分配,实时任务管道的接口包括创建、销毁、读和 写等操作函数,读和写都是原操作,不能被阻塞。 因为实时内核只调度实时任务,所以可以实现一个效率极高的可抢占调度算 法和任务切换算法。将实时任务分为两种:“一次性”和“循环性”,并为每个实 时任务赋予一个优先级和应运行时刻,“一次性”实时任务应运行的时刻只有一个, 它被调度以后,便将此任务从实时任务队列中删除。而“循环性”实时任务被调 度以后,应运行时刻将往后移动一个时间间隔,以保证任务能被循环调度。调度 时,先比较任务的应运行时刻是否在当前时刻之前,如果是,则该任务参加c t u 1 0 基于嵌入式l i n u x 的绘图仪控制器软件设计 竞争,根据任务的优先级选出下一个运行任务。由于实时任务是以内核线程存在 的,在任务切换时,线程没有上下文切换,所以切换很快。 2 3 2 修改l i n u x 内核 对l i n u x 内核的源代码进行修改,使其变成一个真正的实时操作系统。修改 l i n u x 内核可以从以下几点入手: 1 细粒度定时器 普通l i n u x 提供1 0 m s 的时钟粒度,不能达到实时响应速度的要求,为了满足 实时性的要求,要细化定时器时钟粒度,引进两种定时器模式:周期模式和一次 性模式。 周期模式:通过增加l i n u x 中的h z 宏来实现,如增加h z 到t 0 0 0 0 0 可以得到 l o u s 的粒度,虽然这将增加系统的开销,但是,在某些周期性比较强的地方还是 可以应用的。 一次性模式:许多实时应用真正需要的不是在每一个微秒都发生时钟中断, 而是在每一个微秒里都允许时钟中断。这样不再将时钟芯片设置为固定的时钟频 率,而是设置为下一个事件要发生的时间。 2 提高内核抢占性 有两种方法提高内核的抢占性:插入抢占点和完全抢占式内核设计1 1 9 l o 插入抢占点:分析影响l i n u x 实时性的关键因素,找出影响实时性能的瓶颈 位置,在关键的代码中插入一些调度语句,这样实时进程不必等待低优先级的系 统调用完成,当一个高优先级的实时进程竞争c p u 资源时,核心只需要执行一小 段代码就可以被实时进程抢占,当没有实时进程竞争c p u 资源时,核心只是检查 一下,然后继续执行原来的进程。插入抢占点方法比较简单,修改内核的地方比 较少,但是在l i n u x 内核插入抢占点并不是一件容易的事,i n g o sp a t c h 插入的 抢占点多达4 6 处【到,分布在各个模块,如下表所示: 模块插入点数 文件系统 1 4 核心9 内存管理 9 进程通信 l 控制台驱动1 0 对用户态的内存拷贝 3 表2 1 实时l i n u x 抢占点分布 最令人担心的是,没有一套机制保证抢占前后内核状态的一致性,对于任何 第二章嵌入式l i m t x 实时性分析与系统设计 一个地方分析不周全,特别是插入位置不当,不仅不能减少实时任务的延迟时间, 甚至可能使得系统崩溃。 完全抢占式内核设计:利用l i n u x 支持s m p ( 对称多处理器) 的实现,允许多 个进程运行在核心态,通过信号量锁或自旋锁( s p i n l o c k ) 对内核数据结构存取 访问进行保护的原理,实现内核的可抢占性调度。该方法允许处于系统调用状态 的用户进程被更高优先级的进程抢占,但是,这种内核抢占方式并不是在内核源 代码的所有地方都是安全的,如在临界区就不能被抢占。 3 改进l i n u x 进程调度的策略 针对l i n u x 进程调度不管进程是实时进程还是普通进程都放在一个就绪队列, 可以将所有进入系统的任务分为三类:硬实时,软实时和非实时任务,对于硬实 时任务要保证可调度的,这可根据任务可调度性的条件( c j p i ) = 1 ( p i 为事件 i 发生的周期,ci 为每次处理事件i 所花的c p u 时间) 。不同的分类用t a s ks t m c t 中的p o l i c y 来进行区分:s c h e df i f o 代表硬实时任务,s c h e dr r 代表软实时 任务,s c h e d 代表非实时任务。将就绪的三类任务放入三个队列中,硬_other 实时进程放在r e a d y _ q u e u e o ,软实时进程放在r e a d y _ q u e u e 1 ,非实时进程放在 r e a d y _ q u e u e 2 ,而且,每个就绪队列都对本队列里的任务按照优先级进行排队, 高优先级的任务排在前面。如下图所示 厂- 1r r lr e a d y _ q u e u e o 】卜一硬实时任务1 卜一硬实时任务2 卜+ i - - - - _ ji _ j1 _ 一 r r r lr e a d y _ q u e u e 1 】卜一软实时任务1 卜一软实时任务2 卜卜 i _ ji _ ji - j r 1r _ r _ 1 ir e a d y _ q u e u e 2 卜+ | 非实时任务1l 一非实时任务2l + 图2 2 改进后的进程调度队列 这样分类之后,调度就可以方便多了,先判断硬实时任务队列是否为空,如 果不为空,则调度第一个硬实时任务运行,否则判断软实时任务队列是否为空, 如果不为空,则调度第一个软实时任务运行,否则调度第一个非实时任务运行。 与之密切相关的中断处理做以下处理:如果系统正在执行硬实时任务,直接 返回,硬实时任务不能被抢占,如果系统正在执行非硬实时任务,发生中断,可 以进行一次任务调度,如果引发此次中断的是硬实时任务,则立刻投入运行。当 系统处于内核态时,出现中断,为了提高软实时任务的实时性,系统内核如果不 是在运行硬实时进程,可以进行一次调度,使优先级较高的软实时任务得以运行。 4 非虚拟内存 针对虚拟内存当发生缺页中断时引发换页操作使得实时进程的运行变得不可 预测,所以可以考虑将虚拟内存去掉,但是,要去掉虚拟内存,将要对l i n u x 源 代码进行比较大的修改,非常费事,可以采用一种迂回的方法:将交换空间的大 1 2 基于嵌入式l i n u x 的绘图仪控制器软件设计 小设为o ,系统将会认为交换空间用完不执行虚拟内存操作。但这只是一种折中的 办法,会产生大量的冗余代码。 而且,为了防止实时进程运行时,虚拟内存把该实时进程需要的资源交换到实 际内存外,可以使用内存锁定的办法来保证在实时进程运行时它需要的资源不被 换出实际内存。 以上对改进l i n u x 实时性的方法进行了分类讨论,但是它们并不是互斥的, 反而,要提供更高更好的实时性需要它们的相互配合,发挥它们各自的优点。另 外,因为嵌入式针对性很强,没有什么通用的高性能嵌入式系统,要根据实际应 用的要求采用适当的方法来构造一个高实时性的系统。 2 4 嵌入式操作系统构建 大幅面彩色喷墨绘图仪是一个高端产品,它对系统实时性的要求是比较高 的,从上面的分析可以看出,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 的内核有非常深刻的深入的了解, 要考虑很多因素、很多细节,要考虑很全面,要做大量的工作,在这方面,国内 真正做到的人少之又少,而著名的嵌入式实时操作系统r t l i n u x 的公司为了更好 地推广r t l i n u x ,推出了一些简化的免费内核,可以将这些内核加到l i n u x 内核上, 提高系统的实时性,因为作者后面还有很多工作要做,综合考虑之后,作者下载 了l i n u x 的内核和r t l i n u x 的免费补丁,把这个r t l i n u x 的免费补丁加到l i n u x 内核上,构建一个实时性比较高的系统,具体的构造过程如下: ( 1 ) 获取新版本内核 l i n u x 内核版本发布的官方网站是h t t p :w w w k e r n e l o r g 。新版本的内核分 两种,一种是f u l ls o u r c e 版本,另外一种是p a t c h 文件,即补丁。完整的内核 版本比较大,一般是t a r g z 或者是b z 2 文件,二者分别是使用g z i p 或者b z i p 2 进行压缩的文件,使用时需要解压缩。p a t c h 文件则比较小,一般只有几十k 到几 百k ,但是p a t c h 文件是针对

温馨提示

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

评论

0/150

提交评论