免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
长春工业大学硕士学位论文 摘要 嵌入式系统作为实现设备小型化、智能化的一个重要元素,目前己经广泛应用于 国防、工业、交通、能源、信息技术以及日常生活等各个领域,并发挥着极其重要的 作用。嵌入式系统软件的核心是嵌入式操作系统。目前国内在嵌入式系统软件开发上 还存在许多困难。首先,国外成熟的嵌入式实时操作系统r t o s 大都价格昂贵,不利 于在国内中d 、企业特别是大中专院校推广应用;其次,因为大部分r t o s 不公开源代 码,使开发的嵌入式产品存在安全隐患若应用于军工产品,这是不能不考虑的问题; 最后,嵌入式系统开发人员多为特定领域的专家,在一定程度上缺乏计算机科学理论 基础,而用好嵌入式实时系统要求对计算机操作系统、计算机算法、面向对象技术理 论等概念有着深刻的理解。 针对以上问题,免费公开源代码的嵌入式操作系统正备受瞩目,uc o s 一就是其 中之一pc o s - i i 是面向中小型企业应用的,基于优先级的可剥夺的嵌入式实时内核, 其特点是小巧、性能稳定、可免费获得实现代码。i 眦l 是面向对象技术的标准建模语 言,是面向对象领域的主要成果之一,u m l 支持对嵌入式实时内核的建模。文中首先 对uc o s - i i 实时内核进行了详细的分析,并对uc o s i i 优先级任务调度算法和时钟 管理存在的不足作出了相应的改进;其次应用u m l 对实时内核进行相关的研究。 关键词:嵌入式系统r t o s uc o s - i iu m l 长春工业大学硕士学位论文 a b s t r a c t a sa l li m p o r t a n te l e m e n to fi n t e l l i g e n ta n ds m a l l - s i z ee q u i p m e n t , e m b e d d e ds y s t e mh a s n o w w i d e l yu s e da n dp l a y sav e r ys i g n i f i c a n tr o l ei nm a n yf i e l d ss u c h 器n a t i o n a ld e f e n c z i n d u s t r yc o n t r o l ,a a f f i c ,e n e r g ys o u r c e s ,i n f o r m a t i o nt e c h n o l o g ya n dc i v i ll i v i n g b u ta sa s o r w a r ek e r n e lo ft h ee m b e d d e ds y s t e m ,t h ee m b e d d e dr e a l - t i m e o p e r a t i n gs y s t e mi s p r e s e n t l yd e v e l o p e dw i t hi n c o n v e n i e n c ei no u rc o u n t r y f i r s t l y m o s to ft h ee x t e r n a l e m b e d d e do p e r a t i o ns y s t e mi st o oe x p e n s i v et op o p u l a r l yb eu s e di nm i n i t y p ec o r p o r a t i o n s e s p e c i a l l yi na c a d e m ya n du n i v e r s i t y s e c o n d l yb e c a u s et h ek e r n e lo fm o s to fe m b e d d e d o p e r a t i o ns y s t e mi sn o to p e na n df r e e i tm a k e st h ep r o d u c t sw h i c ha l ed e v e l o p e do nt i l e e m b e d d e do p e r a t i o ns y s t e me x i s tp o t e n t i a lp r o b l e m e s p e c i a l l yi tm u s tb ec o n s i d e r e di fi ti s u s e di nm i l i t a r yp r o d u c t i o n a tl a s t ,m a k i n gg o o dr i s eo ft h ee m b e d d e do p e r a t i o ns y s t e m d e m a n dt h ed e v e l o p e rh a ss o l i db a c k g r o u n di no p e r a t i o ns y s t e m ,c o m p u t e ra r i t h m e t i c ,a n d o b j e c t - o r i e n t e dt e c h n o l o g i e s b u tm o s to ft h ee m b e d d e ds y s t e ms o j h v a r ed e v e l o p e r sa r e e x p e r t so f t h eo t h e rf i e l d sw h ok n o wf e wt h e o r yo f c o m p u t e rs c i e n c e b e c a u s eo fa b o v ep r o b l e m s ,m o r ea t t e n t i o nh a sp u to nt h ee m b e d d e do p e r a t i o ns y s t e m w h o s ei m p l e m e n tc o d ec a nb eg o t t e nf r e e l y o c o s - i ii sj u s to n eo ft h eb e s te m b e d d e d o p e r a t i o ns y s t e ma m o n gt h e m a sae m b e d d e dr e a l t i m ek e r n e lb a s e do nt a s kp r i o r i t y , p c o s i i h a sb e e nm a i n l yu s e di nt h em i n i t y p ee m b e d d e da p p l i c a t i o n i th a sm a n yv i r t u e s s u c ha ss m a l ls i z e ,s t a b i l ep e r f o r m a n c ea n df r e e u m li st h et h es t a n d a r do fo b j e c t - o r i e n t e d m o d e l i n gt e c h n i q u e t h e r e f o r e ,b a s e do nu m l ,ih a v ear e s e a r c ha n da p p l i c a t i o nd e s i g no n 心0 s i i i nt 1 1 cp a p e r , f i r s t l yih a v ea n a l y z e da n di m p l e m e n to fg c o s i i ,a n di m p r o v e d t h e 耻c o s - i i sd e f i c i e n c y ,ih a v ea n a l y z e dt h er e a l - t i m ek e r n e lu s i n gu m l k e y w o r d s :e m b e d d e ds y s t e mr t o s p c o s - u m l 长春工业大学硕士学位论文 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下。独立进行研究工作 所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经 发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均己在文中 以明确方式标明。本声明的法律结果由本人承担。 论文作者硌寺4 4 己- 野7u 一。 日期: 2 7 年;月;d 日 长春工业大学硕士学位论文 第一章绪论 1 1 论文选题的背景 随着现代计算机技术的飞速发展和互联网技术的广泛应用,现代社会正从p c 时 代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3 c ( 计算机、通信、 消费电子) 一体的后p c 时代。后p c 时代里,嵌入式系统扮演了越来越重要的角色, 被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。 嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件 可裁减的,适用于对功能、可靠性、体积、成本,功耗等综合性能有严格要求的计算 机系统。随着嵌入式系统的广泛应用,传统的前后台程序开发机制已经不能满足日益 复杂和苛刻的实时要求,因而现在常常采用嵌入式实时操作系统r t o s ( r e a lt i m e o p e r a t i o ns y s t e m ) 开发实时多任务系统。嵌入式实时操作系统一般可以提供多任务调 度、时间管理、任务问通信和同步以及内存管理m m u ( m e m o r ym a n a g eu n i t ) 等重要 服务,使得嵌入式应用程序易于设计和扩展。 采用r t o s 可以使嵌入式产品更可靠、开发周期更短。在嵌入式应用中使用r t o s 己经成为当前嵌入式应用的一个热点。完成简单功能的嵌入式系统一般不需要操作系 统。如,以前由许多m c s 5 l 系列单片机组成的小系统就是利用软件实现的简单控制 环路;但是随着所谓后p c 时代的来临,嵌入式系统设计日趋复杂,嵌入式操作系统就 必不可少了 嵌入式r t o s 在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专业 性等方面具有较为突出的优势。一般而言,嵌入式操作系统不同于一般意义的计算机 操作系统,它有占用空间小、执行效率高、方便进行个性化定制和按照软件要求固化 存储等特点。 从2 0 世纪8 0 年代起,国际上就有一些i t 组织和公司,开始进行商用嵌入式操 作系统和专用操作系统的研发。这其中涌现了一些著名的嵌入式操作系统,如m i c r o s o f t 公司的w i n d o w sc e 和w i n d r i v e rs y s t e m 公司v x w o r k s 就分别是非实时和实时嵌入 式操作系统的代表。但是商用产品的造价都十分昂贵,用于一般用途会提高产品成本 从而失去竞争力。 i l c o s i i 是一种性能优良,应用广泛的嵌入式操作系统。p c o s i i 是一个公开源 代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、 时间管理、任务间同步与通信、内存管理和中断服务等功能。c 0 s i i 适合小型控制 系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核 可编译至2 k b 。t t c o s i i 内核是针对实时系统的要求设计实现的,相对简单,可以满 足较高的实时性要求。i , c o s i i 实时内核占用空间小、执行效率高、实时性能优良, 长春工业大学硕士学位论文 且针对各种处理器的移植相对简单。 1 2 论文研究的目的和意义 嵌入式实时操作系统的设计与应用是操作系统研究领域的一个新方向。嵌入式实 时操作系统应用于实时性要求较高的实时控制系统。i | t c o s i i 是一个具备现代操作系 统特点的r t o s 。设计和研究基于g c o s i i 实时内核的嵌入式实时应用系统有以下意 义: 开发基于i | t c o s i i 的实时应用系统在实时领域具有一定的应用前景,同时对 于以后利用开源代码开发嵌入式实时操作系统具有参考价值。因为相对于 皿,i n u x 它具有良好的实时性能,r t c o s i i 的商业价值得到了认可,一些基于 p c o s i i 的商业软件也可以买到,如t c p i p 协议栈、蓝牙通信软件、红外通 信软件等。 不受无内核源代码的困扰,可在现有代码的基础上进行二次甚至多次开发并 应用于特定环境,并且可以借助网上免费的内核演进版本,且永远不受知识 产权的困扰。 同时可用于教学和实践。虽然现在商用的嵌入式实时系统软件已经十分成熟, 并为用户提供了强有力的开发工具和调试工具,但是商用嵌入式实时操作系 统价格昂贵,对于国内中小型系统的开发并不划算,因此采用免费软件和开 发代码不失为一种选择。 构建一个完摧的实时应用系统,没有必要从零开始,这样做工作量太大、效率低 而且实现的功能也由于没有经过严格的验证而缺乏稳定性。目前有众多的开源代码可 供选择,其性能是经过很多人的使用检验过的、是值得信赖的。其不足之处还可通过 修改其源代码来完善或修改以满足特殊应用的要求。 本文主要的研究内容如下: 1 在研究和分析了i a c o s i i 源代码的基础上,利用pc o s i i 原有的优先级判定 表格,重新定义了存放任务优先级的字节并重新建立任务就绪表,把6 4 个 任务扩充到2 5 6 个任务,改进了相应的优先级调度算法。 2 简单介绍了统一建模语言u m l 的相关概念和基本理论,并利用u m l 对嵌入 式抢占式实时内核、c o s 1 i 静态模型及z c o s 文件系统进行了相关的设 计研究。 2 长春_ 业大学硕士学位论文 第二章嵌入式系统概述 2 1 嵌入式系统概念和特点 嵌入式系统( e m b e d d e ds y s t e m ) 按照i e e e ( 国际电气和电子工程师协会) 的定义, “用于控制、监视或者辅助操作的机器和设备“( d e v i c e su s e dt oc o n t r o lo ra s s i s tt h e o p e r a t i o n o f e q u i p m e n t , m a c h i n e r y o r p l a n t s ) 【i 翔。目前国内普遍认同的嵌入式系统定义 为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可 靠性、成本、体积、功耗等严格要求的专用计算枫系统。 可以从以下几个方面理解国内对嵌入式系统的定义: 嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才 会具有生命力、才更具有优势。可以这样理解上述三个方面的含义,即嵌入式 系统是与应用紧密结合的,它具有很强的专用性。 嵌入式系统是将先进的计算机技术、半导体技术和电子技术以及各个行业的具 体应用相结合后的产物i 这一点就决定了它必然是一个技术密集、资金密集、 高度分散、不断创新的知识集成系统。 嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠 性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其 上开发适应各种需要的系统,是一个比较好的发展模式。目前,嵌入式系统的 核心往往是一个只有几k b 到几十k b 的微内核,需要根据实际的使用进行功 能扩展或者裁剪,正是由于微内核的存在,使得这种扩展能够非常顺利地进行。 嵌入式系统本身还足一个外延极广的名词。凡是与产品结合在一起的具有嵌入 式特点的控制系统都可以叫嵌入式系统,而且有时很难绘它下一个准确的定 义。现在人们讲的嵌入式系统,在某种程度上是指近些年来比较热的具有操作 系统的嵌入式系统。 由于嵌入式系统是应用在特定环境下的,针对特定用途来设计的系统,所以不同 于通用计算机系统。嵌入式系统是针对具体应用设计的“专用系统”。它的硬件和软件 都必须高效地设计,“量体裁农”,“去除冗余”,在较少的资源上实现更高的性能。与 通用的计算机系统相比,它具有以下显著特点【l ;4 】: 专用性强。嵌入式系统通常是面向某个特定应用的,所以嵌入式系统的硬件是 为特定用户来设计的,它通常都具有某种专用性的特点。 可裁剪性好。嵌入式系统的硬件和操作系统都必须设计成可裁剪的,以便用户 根据应用需要量体裁衣,去除冗余,从而使系统在满足应用要求的前提下达到 最精简的配置。 实时性与可靠性好。嵌入式系统中的软件一般不是存储于磁盘等载体中,而是 长春工业大学硕士学位论文 固化在存储器芯片或单片系统的存储器里,在加上精心设计的嵌入式操作系 统,可以快速地响应外部事件,同时也大大提高了系统的可靠性。 系统内核小。由于嵌入式系统一般是应用于小型电子装置,系统资源相对有限, 所以内核比传统的操作系统小得多。 系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其在 功能设计与实现上过于复杂,这样一方面有利于控制系统成本,同时也有利于 系统安全。 2 2 嵌入式操作系统基础 2 2 1 实时操作系统r t o s 实时操作系统r t o s ( r e a l t i m eo p e r a t i o ns y s t e m ) 是指能支持实时控制系统工 作的操作系统。其首要任务是调度一切可利用的资源完成实时控制任务,其次着眼于 提高计算机系统的使用效率,其重要特点是要满足对时间的限制和要求。实时操作系 统大多数都支持多任务的运行。由于多数实时系统是嵌入式的,多数嵌入式系统具有 一定的实时性,但不同嵌入式系统对实时性的要求不一样,本文中,若不特别说明, 将嵌入式实时操作系统和实时操作系统作为形同的概念。 实时操作系统按照时白j 正确的程度来分可分为: 硬实时操作系统硬实时操作系统对于所提交的每一项任务及时间要求,或 者作出承诺,或者立即拒绝,对于作出的承诺则保证在系统要求的时间内实 现。 软实时操作系统软实时操作系统只是根据以往的经验和对系统能力的分 析和估计能完成的概率有多大来对提交的任务作出承诺,系统对完成实时任 务的截止时间不是十分严格。目前大多数的实时操作系统都属于软实时系 统。 2 2 2r t o s 的体系结构和微内核技术 r t o s 的体系结构有以下几部分构成【1 2 1 ( 如图2 1 所示) : 硬件抽象层( l l ) 包括了所有和硬件平台相关的代码,直接访问和控制硬 件,对其上层r t o s 中的机器无关代码提供访问和控制服务。这样可以简化 r t o s 内核的移植工作。 r 1 o s 内核( k e r n e l ) 是用来为大多数程序乃至操作系统( 网络、文件系统、 驱动程序) 构件一系列在抽象文件上工作的抽象机,使用户程序及上层操作 系统组件对系统设备透明。 在提供的r t o s 接口上修改对用户程序提供的函数接口,专门为用户定制网 4 长春工业大学硕士学位论文 络、图形、视频等接口。并且提供驱动程序开发界面,方便开发者对不同需 求的设备定制驱动程序。 图2 - 1r t o s 的体系结构图 2 0 世纪9 0 年代初期,国外提出了微内核的思想,即将传统操作系统中许多共 性的东西抽象出来,构成操作系统的公共基础即内核,真正具体的操作系统功能则由 构造在微内核之外的服务器实现。所谓微内核技术是指将必要的功能( 如进程管理、 任务管理、中断处理、进程调度) 放在内核中,而将那些不是非常重要的核心功能和 服务( 文件系统、存储系统、网络通信、设备管理等等) 作为内核之上可配置的部分p j 这样,整个操作系统就是由提供一些基本服务机制的微内核加上一些服务进程构成, 系统的各个系统调用和服务都是由内核发消息到不同的服务进程,服务进程执行相应 的操作,然后以消息的方式返回内核。r t o s 的内核实现使用了微内核体系结构,使 得r t o s 体积很小,便于直接放在r o m 中,同时方便进行模块化的扩展。 微内核的基本功能如下1 3 j : 进程管理。在具有微内核结构的o s 中,把进程作为资源分配的基本单位,允 许一个进程拥有若干个线程,再把线程作为独立运行和调度的基本单位。在同 一进程中的各线程可以共享进程所拥有的资源,允许这些线程并发执行进程 管理也包括进程间和线程间的同步。 存储器管理。通常在微内核中都提供了虚拟存储管理功能,用于为进程分配必 要的运行空间,并能从逻辑上扩充内存容量,以满足更多用户的需求。内存分 长春工业大学硕士学位论文 配和回收的基本单位,通常是具有固定大小的页。每当进程要访问的页面不在 内存时,便通过缺贞中断进入微内核,由微内核将所缺页面调入内存。 进程通讯管理。为实现进程之间的通信,在微内核中采用了消息传递机构,即 进程之间是以消息作为交换单位。客户进程利用发命令将一份消息送到一个服 务进程的消息队列上;服务进程利用接收命令从消息队列上取出信息。在有的 系统中,还允许将一份消息同时发送到多个目标 v o 设备管理。在微内核中,为每一个连接到主机上的i o 设备配置一个设备 驱动程序,用以实现设备的i o 处理,因此,通常在微内核中都有若干个f o 设备驱动。 2 2 3 嵌入式操作系统的基本概念 嵌入式操作系统被定义为一种支持嵌入式系统应用的操作系统软件。嵌入式操 作系统为多样的嵌入式系统提供统一的基本操作系统特性和软件资源支持,同时又满 足目标系统的特定运行性能要求,而且达到隔离与系统结构无关的应用层软件的目的。 它是嵌入式系统极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内 核、设备驱动接口、通信协议、图形界面等。 一般来说,嵌入式操作系统具有如下特点l l 捌: 实时操作系统。实时操作系统( r t o s ) 是一段在嵌入式系统启动后首先执 行的背景程序,用户的应用程序是运行在r t o s 之上的各个任务,r t o s 根 据各个任务的要求,进行资源( 包括存储器、外设等) 管理、消息管理、任 务调度及异常处理等工作。在r t o s 支持的系统中,每个任务均有一个优 先级,r t o s 根据各个任务的优先级,动态地切换各个任务,保证对实时性 的要求。 任务。一个任务也称作线程,是一个简单的程序,该程序可以认为c p u 完 全属于该程序自己。实时应用程序的设计过程,包括如何把问题分割成多个 任务,每个任务都是整个应用程序的某一部分,被赋予一定的优先级,有自 己的一套c p u 寄存器和栈空间。 代码的l 临界区。代码的临界区也称为临界区,指处理时不可分割的代码,运 行这些代码不允许被打断。一旦这部分代码开始执行,则不允许任何中断进 入。为确保l 临界区代码的执行,在进入临界区之前要关中断,而临界区代码 执行完成以后要立即开中断。 资源。程序运行时可使用的软、硬件环境。资源可以足输入输出设备。资源 也可以是一个变量、一个结构或一个数组等。 共享资源。可以被一个以上任务使用的资源。为了防止数据被破坏,每个任 务在与共享资源打交道时,必须独占该资源。 6 长春工业大学硕士学位论文 任务切换。当任务内核决定运行另外的任务时,它保存正在运行任务的当前 状态,即c p u 寄存器中的全部内容。这些内容保存在任务的当前状态保护 区,也就是任务自己的栈区之中。入栈工作完成以后,就把下一个将要运行 的任务的当前状态从任务的栈中从新装入c p u 的寄存器,并开始下一个任 务运行的过程。 内核。多任务系统中,内核负责管理各个任务,或者说为每个任务分配c p u 时间,并且负责任务之间的通信。内核提供的基本服务是任务切换。 调度。调度是内核的主要职责之一。调度就是决定该轮到哪个任务运行。多 数实时内核是基于优先级调度算法的,每个任务根据其程序的不同而赋予一 定的优先级。基于优先级的调度算法是指c p u 总是让处于就绪态的优先级 最高的任务先运行。 任务优先级。任务的优先级是表示任务被调度的优先程度。每个任务都具有 优先级。任务越重要,赋予的优先级应越高,越容易被调度而进入运行态。 非抢占式内核。非抢占式内核要求每个任务自我放弃c p u 的所有权。非抢 占式调度法也称作合作型多任务,各个任务彼此合作共享一个c p u 中断 服务可以使一个高优先级的任务由挂起状态变为就绪状态。但中断服务以后 还是回到原来被中断的那个任务,直到该任务主动放弃c p u 的使用权,那 个高优先级的任务才能获得c p u 的使用权。 抢占式内核。当系统响应时间很重要时,要使用抢占式内核。最高优先级的 任务一旦就绪,总能得到c p u 的控制权。当一个运行着的任务使一个比它 优先级高的任务进入就绪状态时,当前任务的c p u 使用权就被剥夺了,或 者说被挂起了,那个高优先级的任务立刻得到了c p u 的控制权。如果是中 断服务子程序使一个高优先级的任务进入就绪状态,中断完成时,中断的任 务被挂起,优先级高的那个任务开始运行。 中断。中断是一种硬件机制,用于通知c p u 有个异步事件发生了。中断一 旦被识别,c p u 保存部分( 全部) 上下文,跳转到专门的子程序。 时钟节拍时钟节拍是特定的周期性中断。时钟的节拍式中断使内核可以将 雇务延时若干个整数时钟节拍,以及当任务等待事件发生时,提供等待超时 的依据。时钟节拍率越快,系统的额外开销就越大。 2 2 4 常见的嵌入式操作系统【1 甜j l w i n d o w sc e 操作系统。m i c r o s o f tw i n d o w sc e 是一个3 2 位的多任务嵌入 式操作系统,它的模块化设计允许用户方便地进行定制,它是微软“维纳斯 计划”的核心,包含了i n t e r n e te x p l o r e r 可以和i n t e r a c t 实现连接与同步。系 统的基本内核需要至少2 0 0 k 的r o m 。从s e g a 的游戏机到现在的大部分 长春上业大学硕士学位论文 高端掌上电脑都采用了w i n d o w sc e ,但由于其价格较高,使得整个产品的 成本急剧上升。 v x w o r k s 操作系统。v x w o r k s 是w i n dr i v e r 公司开发的具有工业领导地位 的高性能实时操作系统内核,具有先进的网络功能。v x w o r k s 的开放式结构 和对工业标准的支持,使得开发人员易于设计高效的嵌入式系统,并可以以 很小的工作量移植到其它不同的处理器上。 n u c l e u s 操作系统。n u c l e u sp l u s 是为实时嵌入式应用而设计的一个抢占式 多任务操作系统内核,其9 5 的代码是用a n s ic 写成的,因此,非常便于 移植并能支持大多数类型的处理器。从实现角度来看,n u c l e u sp l u s 是一 组c 函数库,应用程序代码与核心函数库连接在一起,生成一个目标代码, 下载到目标板的r a m 中或直接烧录到目标板的r o m 中执行。n u c l e u s p l u s 核心代码区一般不超过2 0 k 。n u c l e u sp l u s 的组件包括任务控制、内存管 理、任务间通信、任务的同步与互斥、中断管理、定时器及i o 驱动等。 e c o s 操作系统。e c o s 是r e d h a t 公司开发的源代码开放的嵌入式实时操作 产品,是一个可配置、可移植的嵌入式实时操作系统,设计的运行环境为 r e d h a t 的g n u p r o 和g n u 开发环境。e c o s 的所有部分都开放源代码,可 以按照需要自由修改和添加。e c o s 的关键技术是操作系统的可配置行,允 许用用户组自己的实时组件和函数实现,特别允许e c o s 的开发者制定自己 的面向应用的操作系统,使e c o s 有更广泛的应用范围。 嵌入式l i n u x 。g l i n u x 是从l i n u x 2 0 2 4 内核派生而来,沿袭了主流l i n u x 的绝大部分特征。它是专门针对没有m m u 的c p u ,并且为嵌入式系统做 了许多小型化的工作。适用于没有虚拟内存或内存管理单元的处理器。由于 u l i n u x 在标准的l i n u x 基础上进行了适当的裁剪和优化,形成了一个高度优 化的、代码紧凑的嵌入式l i n u x ,虽然体积很小,止i n u x 仍然保留了l i n u x 的大多数优点:稳定、良好的移植性,优秀的网络功能,对各种文件系统完 备的支持,以及标准丰富的a p i 等。 u c o s 操作系统。“c o s i i 是由美国人j e a n j l a b r o s s e 编写的一个完 全免费的嵌入式实时操作系统。源代码公开、可移植、可固化、可裁剪及抢 占式的实时多任务操作系统。uc ,o s i i 通过了联邦航空局( f a a ) 商用航 空器认证,符合r t c a ( 航空无线电技术委员会) 1 ) o - 1 7 8 b 标准,该标准是 为航空电子设备所使用软件的性能要求而制定的。 长春工业大学硕士学位论文 第三章i lc o s - i i 实时内核分析 3 1pc o s 一内核特点 pc o s i i 是一个源代码公开的实时嵌入式操作系统,它提供了实时系统所需要 的基本功能,其包含全部功能的核心代码只有8 3 k 字节。而且由于u c o s - i i 是可裁 剪的,所以用户系统中实际的代码最少可达2 7 k 字节可谓短小精悍。uc o s i i 实 际上是一个实时操作系统内核,只包含任务管理、时间管理、内存管理、中断管理和 任务间的通信与同步等基本功能,没有提供输入输出管理、文件系统、网络管理等额 外服务。 作为一个实时内核,uc o s i i 有以下几个显著特征: 精简性。uc o s i i 是一个源码公开的实时嵌入式操作系统,它提供了实时系统 所需要的必备功能。其包含全部功能的核心代码只有8 3k 字节,事实上,由于 pc o s 1 i 的可裁剪性,用户系统中实际的代码最少可达2 7 髓。 可裁减性。uc o s n 系统由多个相对独立的,短小精炼的目标模块组成,用户 可以根据需要选择适当的模块来裁剪和配置系统,这样,通过目标模块之间的按 需组合,可以减少产品中uc o s i i 所需要的存储空间,这种裁减性是靠条件编 译实现的。由于uc o s i i 源码的开放特性,用户还可以针对自己的硬件优化代 码,以获得更好的性能。 可移植性。uc o s i i 的大部分代码是用a n s ic 写成的,只有与处理器硬件相 关的一部分代码用汇编语言编写。所以pc o s i i 的移植性很强,可以在绝大多 数8 位、1 6 位、3 2 位微处理器、数字信号处理器上运行。 多任务。uc o s i i 可以管理6 4 个任务,其中系统占用8 个,应用程序最多可以 使用5 6 个任务。 可确定性。全部c o s i i 服务的调度执行时间是可知的,即u c o s i i 系统服 务的执行时间不依赖于应用程序任务的多少。 3 2pc 0 s - l i 内核任务管理 3 2 1 任务的概念 一个任务通常是一个无限的循环。任务看起来与其他c 语言函数一样,有函数返 回类型,有形式参数变量。但是任务是不返回的,故返回参数必须定义成v o i d 类型。 任务必须是以下两种结构之一: v o i dy o u r t a s k ( v o i d + p d a t a ) f任务初始化代码; 9 长春工业人学硕士学位论文 f o “;) 用户代码: ,调用“c o s - i i 的服务函数之一, o s m b o x p e n d ( ) ; o s q p e n d o ; o s s e n p e n d o ; o s t a s k s u s p e n d o ; o s t a s k d e i ( o s _ p r i o _ s e l t 3 ; o s t a s k s u s p e n d ( o s _ p r i o _ s e l f ) ; o s t i m e d l y o ; o s t i m e d l y h s m 0 ; 用户代码; , 或者 v o i dy o u r t a s k ( v o i d + p d a t a ) 用户代码: o s t a s k d e l ( o s - p r i o _ s e l d ; 对于执行无限循环的任务,用第一种形式;对于只执行一次就自我删除的任务, 用第二种形似。两者的共同点是,都有一个p c o s i i 的系统调用,以保证函数不返回 和让出c p u 资源;不同点是,对于第二种形式,当任务完成以后,任务可自我删除。 形式参数变量由用户代码在第一次执行时输入。该变量的类型是一个指向v o i d 的指针。这是为了允许用户应用程序传递任何类型的数据给任务。这个指针好比一辆 万能的车子,如果需要,可运载一个变量的地址或一个结构,甚至是一个函数的地址: 也可建立许多相同的任务,所有任务都使用同一个函数( 或者说是同一个任务代码程 序) 。 3 2 2 任务的状态 在嵌入式系统中只有一个c p u ,所以在某一个具体时刻只能允许一个任务占用 c p u 。根据任务足否占用c p u ,以及是否处于被中断、等待等情况,p c o s 中每个 任务可能有如下五种状态: 休眠态( d o r m a n t ) 指任务驻留在程序空间中,还没有交给内核管理。把任务 交给内核是通过调用o s t a s k c r e a t e o 和o s t a s k c r e a t e t e x t 0 实现的。 长春j = 业_ 人学硕士学位论文 就绪态( r e a d y 任务一旦建立,这个任务就处于准备运行态。任务可以动态 地被另一个程序建立,也可以在系统运行之前建立。通过调用o s t a s k l ) e l o 可以使任务返回休眠态。就绪态的任务都放在就绪列表中。当任务被调度时, 指针o s t c b h i g h r d y 指向优先级最高的就绪任务,也就是立刻就要运行的 任务。 运行态( r u n n n i n g ) 准备就绪的最高优先级任务获得c p u 的控制权,从而处于 运行态。指针o s t c b c u r 指向正在运行的任务。 等待或挂起态( p e n d i n g ) 正在运行的任务由于调用延时函数o s t i m e d l y 0 或 等待事件信号量的来临而将自身挂起,因而处于等待或挂起态。等待某事件 而被挂起的任务被放在该事件的等待列表中。 中断态( i n t e r r u p t 】正在运行的任务町以被中断( 除非是该任务将中断关闭) , 任务被中断后进入中断服务程序i s r 。如果中断服务程序使一个更高优先级 的任务进入准备就绪态,则在这个中断服务程序结束后,更高优先级的任务 才开始运行。任务在不同的状态之问转换如图3 - 1 所示。 o s t a s k d e l ( ) 删除任务 休眠 o s t a s k c r e a t e ( ) 嗜磐嚣正 等待或挂起 任务得到资源进入就绪 o s m b o x p o s t ( ) o s q p o s t ( ) o s q p o s t f r o n t ( ) o s s e m p o s t ( ) o s t a s k r e s u m e 0 o s l 3 m e d l y r e s u m e ( ) o s l l m e 1 i c k ( 1 o s s t a r t ( ) o s i n t e x i t ( ) o s - t a s k - s w ( ) 退出中断,调度 任务 o s 舶t l a 睦s k f f d 名e 1 0 任务被抢占 删除任务、 o s t a s k d e l ( ) 图3 - 1 任务状态转换图 因等待而挂起 o s m b o x p e n d ( 1 o s q p e n d ( 1 o s s e m p e n d ( ) o s t a s k s u s p e n d ( ) o s t i m e d l y ( 1 o s t i m e d l y 0 h m s m ( ) 。;、堑偷 q 。,p 目m 。口+ 压仃k _ 二( 享荔再“ ,夕o 蹦s i n ”t e x 甄i t (琚函中研 长春工业大学硕士学位论文 3 2 3 任务控制块 一个任务建立之后,其对应的任务控制块o st c b 开始初始化。任务控制块是 一个数据结构,当任务的c p u 使用权被剥夺时,p c o s i i 用它来保存该任务的状态。 当任务重新得到c p u 使用权时,任务控制块能确保任务从当时被中断的那一点正确地 继续执行。o st c b 全部驻留在r a m 中。 任务控制的基本结构定义如下: t y p e d e fs t r u c to s t c b ( o ss t k * o s t c b s t k p t r ; 指向任务堆栈栈顶的指针 # i f o s _ t a s kc r e a t e _ e x t _ e n v o i d* o s t c b e x t p t r ;指向任务控制块扩展的指针 o ss t k * o s t c b s t k b o t t o m ;指向任务堆栈栈底的指针 i n t 3 2 u o s t c b s t k s i z e ; ,指向堆栈的长度 i n t l 6 u o s t c b o p t ; 仓, j 建任务时的选择项 i n t l 6 u o s t c b i d ; ,目前该域为被使用 托n d i f s t r u c to st c b* o s t c b n e m ;指向后一个任务控制块的指针 s t r u c to st c b* o s t c b p r e v ;指向前一个任务控制块的指针 # i f f o s _ i u n & ( o s m a x _ o s = 2 ) ) i i o s _ m b o x _ e n i i o s _ s e m _ e n o se v e n t * o s t c b e v e n t ;指向事件控制块的指针 # e n d i f i f ( o s - q - e n & & ( o s m a x q s 2 2 ) ) i i o s _ m b o x e n v o i d * o s t c b m s g ; 指向传递给任务消息的指针 f e n d i f i n t l 6 u o s t c b d i y ; ,任务等待的时限 i n t 8 u o s t c b s t a t ;任务当前状态标志 i n t 8 u o s t c b p r i o ; 任务的优先级别 i n t s uo s t c b b x ;,用于快速访问就绪链表的数据 i n t 8 uo s t c b b y ;佣于快速访问就绪链表的数据 i n t 8 u o s t c b b i t x ;用于快速访问就绪链表的数据 i n t 8 u o s t c b b i t y ; 用于快速访问就绪链表的数据 # i f o s t a s k d e l e n b o o l e a n o s t c b d e l r e q ; 请求删除任务时用到的标志 托n d i f o st c b ; 长春工业大学硕士学位论文 o s t c b s t k p t r 是指向当前任务栈项的指针。i _ t c o s i i 允许每个任务有自己的栈, 尤为重要的是,每个任务的栈容量可以是任意的。有些商业内核要求所有任务栈的容 量都一样,除非用户写一个复杂的接口函数来改变它。这种限制浪费了r a m ,当各任 务需要的栈空间不同时,也得按任务中预期栈容量需求最多的来分配栈空间。 o s t c b s t k p t r 是o st c b 数据结构中唯一的一个能用汇编语言来处置的变量( 在任务 切换段代码c o n t e x t - s w i t c h i n gc o d e 中) ,把o s t c b s t k p t r 放在数据结构的最前面,使得 从汇编语言中处理这个变量时较为容易。 o s t c b n e x t 和o s t c b p r e v 用于任务控制块o st c b s 的双重链接,该链表在时 钟节拍函数o s t i m e t i c k 0 中使用,用于刷新各个任务的任务延迟变量o s t c b d l y ,每 个任务的任务控制块o st c b 在任务建立的时候被链接到链表中,在任务删除的时候 从链表中被删除。双重连接的链表使得任一成员都能被快速插入或删除。 o s t c b e v e n t p t r 是指向事件控制块的指针。 o s t c b m s g 是指向传给任务消息的指针。 o s t c b d i y 当需要把任务延时若干个时钟节拍时要用到这个变量或者需要把任 务挂起一段时间以等待某事件的发生,这种等待是有超时限制的。在这种情况下这个 变量保存的是任务允许等待事件发生的最多时钟节拍数。如果这个变量为0 ,表示任务 不延时或者表示等待事件发生的时间没有限制。 o s t c b s t a t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论