(机械电子工程专业论文)基于μcosⅡ嵌入式开发平台的设计与实现.pdf_第1页
(机械电子工程专业论文)基于μcosⅡ嵌入式开发平台的设计与实现.pdf_第2页
(机械电子工程专业论文)基于μcosⅡ嵌入式开发平台的设计与实现.pdf_第3页
(机械电子工程专业论文)基于μcosⅡ嵌入式开发平台的设计与实现.pdf_第4页
(机械电子工程专业论文)基于μcosⅡ嵌入式开发平台的设计与实现.pdf_第5页
已阅读5页,还剩70页未读 继续免费阅读

(机械电子工程专业论文)基于μcosⅡ嵌入式开发平台的设计与实现.pdf.pdf 免费下载

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

文档简介

西北工业大学硕士学位论文 摘要 摘要 嵌入式系统融合了微电子、计算机软硬件、通信和电子工程等多种技术、广 泛应用于航空、航天、仪器仪表、工业控制、家用电器、信息家电和3 c ( c o m p u t e r 、 c o m m u n i c a t i o n c o n t r 0 1 ) 等领域,是科技集成创新的主要手段。嵌入式操作系 统也由于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 ) 的编程方式比传统的编程方式有着 明显的优越性,在越来越多的场合得到广泛的应用。研究和开发具有现场总线功 能的嵌入式实时操作系统丌发平台具有重要的现实意义。 论文首先从嵌入式系统的基本概念入手,对在嵌入式系统中使用r t o s 的必要 性,r t o s 的发展现状和发展趋势等方面进行了简单综述,然后着重分析了操作系 统uc o s i i 内核结构,如:任务调度、时间管理、通讯机制以及内存管理等。在 此基础上,并以带有数据处理能力较强的8 位单片机的z 8 4 c 1 5 开发机为控制对象, 以抢占式内核uc o s i i 为嵌入式操作系统,以b o r l a n dc + + 4 5 为编译环境搭建 了一套嵌入式操作系统软硬件开发平台,并完成了基于uc o s i i 的部分板级支持 包b s p ( b o a r ds u p p o r tp a c k a g e ) 的开发,包括数据队列( d a t aq u e u e ) 的设计、串 行输入输出控制器s i o ( s e r i a li n p u t o u t p u tc o n t r o l l e r ) 驱动程序设计、微控 制器局域网c a n ( c o n t r o l l e ra r e an e t w o r k ) 现场总线驱动程序设计。 在设计的开发平台之上,通过开发平台与设计的实验板通讯程序调试,验证 了数据队列的设计、s i o 驱动程序设计和c a n 总线驱动程序正确性。这种开发过程 简洁方便,体现了基于嵌入式操作系统平台的开发优势,达到了预期的设计目的。 该平台可以避免嵌入式开发人员对z 8 4 c 1 5 重复性设计,缩短开发周期。同时也使 嵌入式开发人员从繁杂的c p u 和硬件控制工作中解脱出来,从而能够专注于应用 系统的开发,提高开发效率。论文最后指出了操作系统uc o s - i i 的缺陷,如时钟 中断延时、内存和任务栈的浪费,并提出了改进方案,为下一步的研究工作提供 了有价值的建议。 关键词:嵌入式实时操作系统,任务调度,数据队列,微控制器局域网 西北工业大学硕士学位论文 a b s t r a c t e m b e d d e ds y s t e mi n v o l v e sm u c ht e c h n o l o g y , i n c l u d i n g m i c r o e l e c t r o n i c s , e l e c t r o n i ce n g i n e e r i n g ,t h es o f t w a r e & h a r d w a r eo fc o m p u t e r , c o m m u n i c a t i o n ,a n ds o o n i th a sb e e nu s e di ne v e r yw a l ko fl i f e ,s u c ha sa v i a t i o n ,s p a c e f l i g h t ,i n s t r u m e n t , i n d u s t r i a l c o n t r o l ,a p p l i a n c ee q u i p m e n t ,i n t e l l i g e n tf a c i l i t y , a n dc o m m u n i c a t i o n , c o m p u t e r , c o m m u n i c a t i o n c o n t r 0 1 e m b e d d e ds y s t e md e s i g ni sam a i nm e t h o do f s c i e n c ea n dt e c h n o l o g yi n n o v a t i o n s i m u l t a n e i t y , e m b e d d e do p e r a t i o n s y s t e mh a s b e e na p p l i e dw i d e l yi nm a n yf i e l d s ,o w i n gt oi t sa d v a n t a g eo f p r o g r a m m em o d et h a n t r a d i t i o n s b e g i n n i n gw i mt h eb a s i cc o n c e p t i o no ft h ee m b e d d e ds y s t e m t h ea r t i c l e i n t r o d u c e st h en e c e s s i t yo fu s i n gr t o si nt h ee m b e d d e ds y s t e m ,t h ec u r r e n ts i t u a t i o n o ft h ed e v e l o p m e n to fr t o sa n dd e v e l o p m e n tt r e n d e t c t h i st h e s i si n t r o d u c e st h e r e a l - t i m eo p e r a t i o ns y s t e m c o s i ia n da n a l y z e sk e m e lp a r t i c u l a r l y , f o ri n s t a n c e , t a s k s c h e d u l e r , t i m e - m a n a g e ,c o m m u n i c a t i o n - p r i n c i p l ea n dm e m b e r - m a n a g e b a s e d 0 1 1i t ,a u t h o rd e s i g n st h es o f t w a r e & h a r d w a r e p l a t f o r mo f e m b e d d e do p e r a t i o ns y s t e m , w h i c hr e g a r d sz 8 4 c 1 5d e v e l o p e ra sc o n t r o lo b j e c t ,r e a v i n gk e r n e l “c o s - i ia s o p e r a t i o ns y s t e m b o r l a n dc + + 4 5a sc o d ew a r r i o r a n dc o m p l e t e st h ed e s i g no f b o r d s u p p o r tp a c k a g ea b o u td a t aq u e u e ,s e r i a li n p u t o u t p u tc o n t r o l l e r , c o n t r o l l e ra r e a n e t w o r k b yc o m m u n i c a t i o np r o g r a m m ed e b u g 西n gb e t w e e nt h ep l a t f o r ma n d e x p e r i m e n t a lc i r c u i tb o a r d ,t h ep a p e rv a l i d a t eb o r ds u p p o r tp a c k a g eo fd a t aq u e u e , s i o ,c a n t h ed e v e l o p i n gp r o c e s si sl a c o n i ca n dc o n v e n i e n t ,w h i c he m b o d i e s a d v a n t a g eo fr t o s a n da c c o m p l i s h e se x p e c t e dp u r p o s e s i m u l t a n e i t yt h ep l a t f o r m c a na v o i dr e p e a t e dd e s i g no nz 8 4 c 1 5 ,r e d u c ed e v e l o p i n gt i m e ,s i m u l t a n e i t yw h i c h c a nr e l e a s ep r o g r a m m e r sf r o mb o t t o md e s i g n ,i no r d e rt of o c u so na p p l i c a t i o n e v e n t u a l l y , t h ep a p e rp o i n t so u tl i m i t a t i o no f p c o s i i ,f o re x a m p l ed e l a yo f t i m et i c k , w a s t eo fm e m o r ya n dt a s ks t a c k ,a n db r i n gf o r w a r da m e l i o r a t e dp r o j e c t s w h i c h o f i e r sv a l u a b l ea d v i c ef o rf u t u r er e s e a r c h k e y w o r d s :e m b e d d e dr e a l t i m eo p e r a t i o ns y s t e m ,t a s ks c h e d u l e ,d a t aq u e u e , c o n t r o l l e ra r e an e t w o r k i l 西北工业大学硕士学位论文第一章绪论 1 1 引言 第一章绪论 在早期的嵌入式系统中,没有操作系统,应用程序完全控制c p u 和外围接口, 这对嵌入式系统开发人员提出了较高的要求。而且应用程序对硬件的依赖性很 强,硬件只要发生简单的变化,软件就要作大量的改动。操作系统的出现,为应 用程序提供了一个虚拟的硬件平台,这为嵌入式软件开发人员节省了大量的时 间。从整个系统的角度来讲,操作系统就是资源管理器,主要完成c p u 的运算、 内存资源和中断资源管理等。从应用角度来讲,操作系统为应用程序提供了一个 函数库,便于对硬件进行操作。 在现在嵌入式系统中,由于引入了操作系统,减少了很多不确定的因素,系 统的稳定性也得到了极大的保证,同时缩短了开发周期。嵌入式开发人员也从繁 杂的c p u 和硬件控制工作中解脱出来,从而能够专注于应用系统的开发0 1 。 1 2 嵌入式系统的发展与现状 嵌入式系统是以应用为中心,软硬件可裁减,适应于对功能、可靠性、成本、 体积、功耗等综合性严格要求的专用计算机系统。嵌入式系统主要由嵌入式处理 器、相关支撑硬件、嵌入式操作系统及应用软件组成,它是集软硬件于一体的可 独立工作的系统【3 】。纵观嵌入式技术的发展,大致可分一下3 个阶段: l 早期的实时操作系统 早期的实时操作系统还不能成为真正的r t o s ,它只是小而简单的,带有一 定专用性的软件,功能较弱,可以认为是一种监控程序。它一般为用户提供对系 统初始化管理以及简单的实时时钟管理【4 】。这个时期应用较简单,实时性也要求 不高,应用程序、实时监控程序和硬件运行平台往往是紧密联系在一起的。 2 专用实时操作系统 随着应用的发展,早期的r t o s 已越来越显出不足了。有些实时系统的开发 者为了满足实时应用的需要,研制与特定硬件相匹配的实时操作系统。这类操作 吐北工业大学硕士学位论文 第一章绪论 系统在国外称为r e a l t i m eo p e r a t i n gs y s t e md e v e l o p e di nh o u s e 它是在早期用 户为了满足自身开发需要而研制的,它一般只能适用于特定的硬件环境,且缺乏 严格的评测,移植性也不好【5 】。 3 通用实时操作系统 在各种专用r t o s 中,一些多任务的机制如优先级的调度、实时时钟管理、 任务间的通讯、同步互斥机构基本上是相同的,不同的是面向各自硬件环境与应 用目标。实际上,相同的多任务机制是能够共享的,因而可以把这部分很好的组 织起来,形成一个通用的实时操作系统。一方面,在r t o s 内核的最底层将不同 的硬件特性屏蔽掉;另一方面,对不同的应用环境提供标准的、可裁减的系统服 务组件【6 】。这使得用户可根据不同的实时应用要求及硬件环境选择不同的组件, 也使得实时操作系统开发商在开发的过程中减少重复性工作。 嵌入式操作系统经过多年发展技术逐渐成熟,目前占据市场的主要有 w i n c e 、v x w o r k s 、l a c l n u x 及论文所研究的u c o s - i i 等。嵌入式操作系统已广 泛应用于家庭、工业、商业、通讯、国防领域,其产品形态丰富多样,例如掌上 电脑p d a 、机顶盒、手机、数码相机、数字电视、航天飞机、太空飞行器中都 应用了嵌入式操作系统叽1 1 3 选题的背景和意义 目前在国内,特别的在工业自动控制等专业领域,嵌入式系统的开发工作大 多由领域专家承担。而领域专家一般并不具备很深厚的计算机理论基础,多年以 来已经习惯于先设计硬件,然后编写汇编语言来开发控制系统的模式。很多时候 甚至都不使用高级语言,就更谈不上使用嵌入式操作系统了。这样的现状决定了 当前我国的嵌入式技术发展比较缓慢,而且应用的广度与深度都不够。在这样的 情形之下,选择一个合适的操作系统,在一个大家比较熟悉的硬件平台之上构建 一个嵌入式控制系统的开发平台,将是一件非常有意义的工作。 在这个嵌入式控制系统开发平台之上,开发人员不需要对操作系统的内核实 现有详细的了解就能够进行一些嵌入式控制器的开发工作。控制领域的专业人员 在利用本平台开发嵌入式系统的时候,可以在一定程度上绕开操作系统这个专业 壁垒。有一个嵌入式控制系统的开发平台作为基础,开发者只需将精力集中在各 2 西北上业大学硕士学位论文第一章绪论 个功能模块的编写之上,模块之间的联系都遵循同样的接口协议。这样不同开发 者就可以很方便的进行协作开发,提高开发的效率,而且各个开发者开发的模块 也可以相互利用,很好的做到资源共享。这样的开发平台,势必对嵌入式系统在 工业控制领域内的应用起到促进作用“1 。 u c o s 是由j e a n 1 a b r a s s e 于1 9 9 2 年编写的一个嵌入式实时多任务操作系 统。最早这个系统叫做u c o s ,后来经过1 0 年的应用和修改,在1 9 9 9 年 j e a n 1 a b r a s s e 推出了此o s l i ,并在2 0 0 0 年得到了美国联邦航空管理局对于 应用飞机的、符合r t c ad o 一1 7 8 b 的标准认证,从而证明了p c o s - i i 具有足够的 稳定性和安全性。该操作系统是用c 语言和汇编语言编写的,其中大部分代码都 是用c 语言编写的,只有极少部分与处理器密切相关的代码是用汇编语言编写, 所以用户只需做很少的工作可以很方便的移植到各类8 位、1 6 位、3 2 位嵌入式 处理器上。该操作系统结构简洁精练,可读性强,并具有较强的可扩展性”3 。 1 4 论文主要研究的内容与论文结构 论文研究的目的是开发一个基于c o s i i 的嵌入式控制系统应用平台,该 平台由硬件系统和软件系统两个部分组成,主要工作如下: 1 c o s i i 的移植 以z 8 4 c 1 5 为嵌入式微处理器,以b o r l a n dc + + 4 5 为编译环境,完成嵌 入式实时操作系统c o s - i i 的移植。 2 移植代码的检测 在没加入应用代码的情况下检测内核运行的情况,确保移植的正确性。 3 开发数据队列 为了平衡高速的c p u 与低速的外设时钟匹配,建立数据缓冲区。 4 开发s i o 串行通信模块 5 开发c a n 现场总线通信模块 3 西北r 业大学硕十学位论文第二章嵌入式操作系统原理及c o s i i 内核结构 第二章嵌入式操作系统原理及“c o s i i 内核结构 操作系统( o p e r a t i n gs y s t e m ,o s ) 是一种介于计算机硬件与应用程序之间,通 过应用程序接i i ( a p p l i c a t i o np r o g r a m m i n gi n t e r f a c e ,a p i ) 屏蔽系统硬件工作的细 节的系统软件。它的存在使应用程序的设计人员得以在一个友好的平台上进行应 用程序设计和开发,提高了产品的开发效率”1 。嵌入式系统作为一种计算机系统, 同样需要一个合适的操作系统支持,这种应用于嵌入式系统中的操作系统就叫做 嵌入式操作系统。 2 1 嵌入式操作系统 人们把为了对对象进行智能控制而使其具有智能化并可嵌入到对象体系中 的专用计算机系统,称为嵌入式计算机系统,简称为嵌入式系统。“嵌入性、专 用性、计算机系统”是嵌入式系统的三个基本要素。1 。 2 1 1 嵌入式操作系统 运行在嵌入式硬件平台之上,对整个系统及其操作的部件、装置等资源进行 统一协调、分配和控制的系统软件就口q 做嵌入式操作系统。由于嵌入式操作系统 的硬件特点、应用环境的多样性和开发方式的不同,使其与普通的操作系统有着 很大的不同,其主要特点如下: ( 1 ) 微型化嵌入式系统芯片内部存储器容量通常不会很大,因而不允许操作 系统占用较多的资源,在保证应用功能的前提下,操作系统的规模越小越好。 ( 2 ) 可裁减性嵌入式系统运行的硬件平台多种多样,所以要求操作系统中提 供的各个功能模块可以让用户根据需要选择使用,即要求它具有良好的可裁减 性。 ( 3 )实时性目前,嵌入式操作系统广泛应用于生产过程控制、数据采集、 交通运输等场合,这些应用的共同特点是要求系统能快速响应事件,因此操作系 统要有较强的实时性。 ( 4 ) 高可靠性嵌入式操作系统广泛的应用于军事、航空航天的重要的领域, 4 西北工业大学硕士学位论文 第二章嵌入式操作系统原理及c o s i i 内核结构 所以必须有极高的可靠性,对关键、要害的应用还要提供必要的容错和防错措施。 ( 5 ) 易移植性为了适应多种多样的硬件平台,嵌入式操作系统可在不做大量 修改的情况下稳定的运行于不同的平台。1 。 2 1 2 实时操作系统 如果操作系统能使计算机系统及时响应外部事件请求,并能及时控制所有实 时设备与实时任务协调运行,且能在一个规定的时间内完成对事件的处理,那么 这个操作系统就是一个实时操作系统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 ) 。 实时系统有两个基本的要求:第一,实时系统的计算必须产生正确地结果, 称为逻辑和功能正确( l o g i c a lo rf u n c t i o n a lc o r r e c t n e s s ) ;第二,实时系统 的计算必须在预定的时间内完成,称为时间正确( t i m i n gc o r r e c t n e s s ) “。 按时问正确程度来分,实时操作系统又分为硬实时操作系统和软实时操作系 统两种。如果要求系统必须在严格的时间内完成实时任务,那么这样的系统就叫 做硬实时操作系统。相对来说,软实时操作系统对于计算超时具有一定的容忍度, 超过允许时间得到的运算结果不会没有用途,只是这个结果的可信度要有某种程 度的降低“。 2 1 3 分时系统 如果操作系统按管理的任务数把c p u 分成若干个时间片,将每个时间片分配给 一个任务,c p u 按照时间片轮流执行这些任务,那么这种操作系统就叫做分时操 作系统。 2 2 嵌入式系统与前后台系统的比较 简单的系统一般设计成如图2 1l 所示,这种系统可称为前后台系统或超循环 系统( s u p e r l o o p s ) 。应用程序是一个无限的循环,循环中调用相应的函数完成 相应的操作,这部分可以看成后台行为( b a c k g r o u n d ) 。中断服务程序处理异步事 件,这部分可以看成前台行为( f o r e g r o u n d ) ,后台也可以叫做任务级,前台也 叫中断级。时间相关性很强的关键操作( c r i t i c a lo p e r a t i o n ) 是靠中断服务来保 5 堕! ! 1 些叁堂硕士堂笪堡塞 第二章嵌入式操作系统原理发p c o s 一儿内核结构 证的。系统长时间处于中断服务程序中将使整个系统的中断相应速度严重恶化, 因此,一般的做法是在中断服务程序中做少量的工作,例如改变几个标志位( 一 般为全局变量) ,然后退出中断回到后台程序,循环检测标志位的变化,检测到 不同的标志位就处理不同的操作。这样处理就避免了中断长时问关闭的问题,但 也存在隐患“。 后台 图2 1 前后台系统 从程序设计的角度来看,前后台系统也存在不足。因为所有的程序都存在于 一个大的循环体之中,当系统任务简单时,前后台系统设计显得简洁方便。而当 系统要完成一些较为复杂的功能时,或者在一个简单系统添加许多功能时,程序 的复杂度将随功能的需求而成指数级上升。任何一处微小的改动,都将对整体造 成一定的影响。这对程序的维护和扩展带来很大的困难。 引入操作系统后,上述两个问题能得到很好的缓和。在操作系统中,应用 程序被分为多个任务在系统中运行,由操作系统内核统一调度,通过合适的算法, 使得中断响应时间可以完全确定,这样的系统称为实时系统“。同时由于应用程 序被划分为相对独立的多个任务,任务与任务之间通过操作系统提供的通讯机制 进行通讯,从而形成一个有机的整体。这样的格局有利于系统功能的扩展,同时 系统的维护也变得简单。 6 兰堕e 型堡壁塑堕主堂壁堡塞 笙三至壁垒生堡堡至竺里里墨竖! ! ! :! ! 堕堕笪塑 2 3 嵌入式实时操作系统p c o s i i 简介 c o s - i i 是- - 个完整的,可移植、固化、裁减的占先式实时多任务内核, 是专为嵌入式应用设计的,可移植在8 位、1 6 位和3 2 位单片机或d s p 中 。 心o s i i 主要特点: 1 源代码开放全部源代码约5 5 0 0 行,源码清晰易读,结构协调。 2 可移植性( p o r t a b l e ) 心o s - i i n 代码绝大部分是用移植性很强的a n s ic 语言编写,仅与硬件相关的部分是用汇编语言写的,便于l jc o s - i i 便: :移植到 其他微处理器。 3 可固化( r o m a b l e ) 心0 s i i 是为嵌入式应用设计的,只要具备合适的系列 软件工具( c 编译器、汇编、连接及下载固化) ,就可以将uc o s - i i 嵌入到产品 中作为产品的一部分。 4 可裁减( s c a l a b l e ) 可以通过条件编译只使用uc 0 s - - i 1 0 0 应用程序需要 的系统服务。 5 可剥夺性( p r e e m p t i v e ) 心o s - - i i 是完全可剥夺型的实时内核,即pc o s i i 总是运行在就绪条件下优先级最高的任务。 6 多任务心o s i i 最多可管理6 4 个任务,由于系统占用8 个,留给用户的应 用程序最多可有5 6 个任务。赋予每个任务的优先级必须是不同的,也即是uc o s i i 不支持时间片轮回调度法( r o u n d - r o b i ns e h e d u l i n g ) 。 7 任务栈每个任务都有自己单独的栈,心o s i i 允许各个任务有不同的栈空 间,以便压低应用程序对r a m 的需求。使用uc 0 s i i 的栈空间校验函数,可以 确定每个任务到底需要多少个栈空间。 8 系统服务心o s i i 提供很多系统服务,例如信号量、互斥型信号量、事件 标志、消息邮箱、消息对列、内存的申请与释放及时间管理等函数。 9 中断管理如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断 嵌套全部退出后立即执行,中断嵌套层数可达2 5 5 层。 1 0 稳定性和可靠性心0 s i i 已经通过了严格的测试,得到了美国航空管理 局( f e d e r a la v i a t i o na d m i n i s t r a t i o n ) 的认证,可以用在飞行器上,说明u c o s i i 是稳定可靠的“”。 了 西北工业大学硕士学位论文 第二章嵌入式操作系统原理及“c o s 1 1 内核结构 2 4 p c o s - i i 的体系结构 uc 0 s i i 作为嵌入式实时操作系统包括以下基本模块: ( 1 ) 初始化管理完成实时内核的初始化工作并启动实时调度; ( 2 ) 任务管理完成应用任务的管理,足操作系统内核的核心部分。它具 有创建任务、删除任务、挂起任务、解除挂起任务、设置任务优先级等功能; ( 3 ) 时间管理为应用系统的实时响应提供支持,保证整个系统的实时性、 正确性,以提高整个嵌入式系统的实时工作能力; ( 4 ) 中断管理完成响应中断的一些必要处理,支持中断嵌套时任务堆栈 和中断专用堆栈的切换; ( 5 ) 任务间的通信、同步、互斥管理本模块提供应用任务之间通信、 同步和互斥机制,对各任务之间的协调工作起着重要的作用。 ( 6 ) 内存管理提供申请可变大小数据块和申请固定大小数据块的管理。 2 4 1 任务管理 圉2 2 内核结构 任务是操作系统的并发程序设计中的一个非常重要的概念。程序足存储在 r o l l 上的包含可执行机器指令的数据的静态实体,任务是具有一定功能的程序关 f 一个数据集合的运行活动,是处于活动状态的程序。它是随执行过程不断变化 于一个数据集合的运行活动,是处于活动状态的程序。它是随执行过程不断变化 蔼 两北工业大学硕士学位论文 第二章嵌入式操作系统原理及c o s i i 内核结构 的实体,与程序要包含指令和数据一样,任务也包含程序计数器和c p u 寄存器的 值,同时它的堆栈中存储着如子程序参数、返回地址以及变量之类的临时数据。 在多任务操作系统中,任务具有独立的权限和职责,如果系统中某个任务崩溃, 不会影响到其它的任务。各个任务运行在各自的地址空间中,通过一定的通讯机 制达到制约和同步“。 因为在嵌入式系统中只有一个c p u ,所以在个具体的时刻只允许一个任务 占用c p u ,根据任务的是否占用c p u ,以及是否处于中断、等待等情况,任务在 k o s 一1 i 中可能处于图2 3 所示五种基本状态之一。 图2 3 任务的五种状态 1 休眠态任务驻留在程序空间中,还没交给此o s i i 管理; 2 就绪态任务本身具备运行条件,等待c p u ; 3 运行态任务占有c p u ,正在运行; 4 等待态等待除c p u 之外的其它资源或条件( 信号量等) ,不能运行; 5 中断态正在运行的任务被中断,进入中断服务子程序。 1 任务控制模块数据结构 实时操作系统此o s - i i 对任务的管理和调度主要是通过任务控制块和任 务就绪表来实现的。 任务控制块是一个数据结构,它与任务是一一对应的。在操作系统初始化 9 两北 业大学硕士学位论文 第二章嵌入式操作系统麟哩及p c o s i i 内核结构 o s i n t 时,系统申请了一块r a m 空间来存储空闲任务块。一旦任务建立,系统就 会分配一个任务控制模块o s t c b ( t a s kc o n t r o lb l o c k s ) 给该任务。当任务的 c p u 使用权被剥夺时,c o s i i 用它来保存该任务的状态,当任务重新得到c p u 的使用权时,任务控制块能确保任务从断点处继续执行下去。o s t c b 全部驻留 在r a m 中,在任务建立时,o s j c b 被初始化“。数据结构如下: t y p e d e f s t r u c to st c bf o s s t k + o s t c b s t k p t r ; # i f o s _ t a s k _ c r e a t ee x te n v o i d + 0 s t c b e x t p t r ; o s s t ko 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 ; i n t l 6 u o s t c b i d ; # e n d i f s t r u c to st c b o s t c b n e x t ; s t r u c to st c b + o s t c b p r e v ; # i f ( o s 翼一e n ( o s a v t & xq s - 2 ) ) 0o s _ m b o x e n i lo ss e m _ e n o s _ e v e n t + o s t c b e v e n t p t r ; # e n d i f # i f ( o s q e n ( o sm a x _ q s = 2 ) ) “o s _ m b o x _ e n v o i d + o s t c b m s g ; # e n d i f r n t l 6 u o s t c b d l y ; 1 n t 8 uo 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 8 u o s t c b x ; i n t 8 u o s t c b y ; 1 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 st a s kd e le n b o o l e a n o s t c b d e i r e q ; # e n d i f o s _ t c b ; 其中0 s t c b s t k p t r 是指向当前任务栈栈顶的指针,此o s i i 允许每个任务有 自己的栈而且每个任务栈的容量可以任意设定,o s t c b s t k p t r 是0 s j c b 数据结 构中唯一的一个能用汇编语言来处理的变量,把0 s t c b s t k p t r 放在数据结构最前 面,使得从汇编语言中处理这个变量较为容易。 0 s t c b e x t p t r 指向用户定义的任务控制块扩展; 1 0 两北丁业大学硕十学位论文 第二章嵌入式操作系统原理及c o s - i i 内核结构 o s t c b s t k b o t t o m 是指向任务栈底的指针; o s t c b s t k s i z e 存有任务栈可以容纳的指针元数目而不是字节表示的栈容量 总数,也即是如果栈中可以保存1 0 0 0 个入口地址,每个地址宽度为3 2 位时,则 实际栈容量是4 0 0 0 字节; o s t c b o p t 是设置任务建立时任务栈检验功能选项; o s t c b b l d 用于存储任务的表示码; o s t c b n e x t 和o s t c b p r e v 用于控制模块o s t c b s 的双重链接,每个任务的任务 控制块在任务建立时被链接到该链表中,在任务被删减时从链表中被删除。双重 链接的链表使得任意成员都能被快速插入或删除; 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 l y 当需要把任务延时若干时钟节拍时要用到这个变量,或者需要把任 务挂起一段时间以等待某事件的发生,这种等待是有超时限制的,在这种情况下, 该变量保存的是任务在等待事件过程中允许挂起的最多时钟节拍数。如果该变量 为0 ,表示等待该事件发生的时间没有限制; o s t c b s t a t e 是任务的状态字。当o s t c b s t a t e 为0 时,表示任务进入就绪态; o s t c b p r i o 是任务优先级,高优先级任务的o s t c b p r i o 值小; o s t c b x ,o s t c b y ,0 s t c b b i t x ,o s t c b b i t y 用于加速任务进入就绪态的过程或 进入等待事件发生状态的过程; 圳c o s i i 实现任务管理所需要的另一个数据结构就是就绪表。就绪表中有 两个变量o s r d y g r p 和o s r d y t b l 。在o s r d y g r p 中,任务按优先级分组,8 个任 务为一组。o s r d y g r p 中的每一位表示8 组任务中每一组中是否进入就绪态的任 务。任务进入就绪态时,就绪表o s r d y t b l 口中相应位置位,就绪表o s r d y t b l 口 数组大小取决于0 s l o w e s t p r i o 。 在c o s i i 中每个任务的就绪态标志都放在就绪表中,每个任务在就绪表 中的位置通过该任务的优先级大小决定。任务的优先级的低三位用于确定任务在 总就绪表o s r d y t b l 中的所在位,接下来的三位用于确定该任务的就绪态标志 是在o s r d y t b l 数组的第几个元素。它们之间的关系如图2 4 所示。 童l 垩! ! ! :些查堂堡主堂垡丝塞 塑兰童壁垒蔓塑堡墨竺垦堡墨堕! ! ! :望塑壁熊塑 l - , 在o s r d y g r r p 中位的位置 最高优先级任务 编号 图2 4 任务就绪表 当某一任务进入就绪态时,只要将就绪表中相应位置位,而从就绪表删除一 个任务时,则将就绪表数组o s r d y t b l 中相应元素的相应位清零,对于o s r d y g r p 只有当被删除任务所在组的全组任务中没有一个任务进入就绪态时,才将相应位 清零。系统在创建任务时必须给每一个任务赋予不同的优先级,优先级可以从0 到o s l o w e s t _ p r i o 一2 ,优先级号越低,任务的优先级越高。p c o s - i i 总是运行 进入就绪态的优先级最高的任务。为了找到那个进入就绪态的优先级最高的任 务,c o s i i 并不需要从o s r d y t b l 0 开始扫描整个就绪表。只需要查找优先级 判断表o s u n m a p t b l 2 5 6 。确定进入就绪态的优先级最高的任务是用一下代 码来实现的“。 y = o s u n m a p t b l o s r d y g r p ; x = o s u n m a p t b l o s r d y t b l y ; p r i o = ( y 8 : s t k ( i n t l 6 u ) o x l1 0 0 获得任务最高有效地址 任务地址低8 位 任务地址高8 位 初始化主寄存器 a f 曲北工业人1 二硕士学位论义 第三章此( 1 _ 一i i 在z 8 4 c 1 5 单片机上的移植 s t k ( i n t l 6 u 、0 x 2 2 2 2 十s t k ( i n t l 6 u ) p d a t a s t k ( i n t l 6 u 10 x 4 4 4 4 一一stk = ( i n t l 6 u ) 0 x 5 5 5 5 : * - - sik = ( i n t l 6 u ) 0 x 6 6 6 6 : 一一st k = ( i n t l 6 u ) 0 x 7 7 7 7 : 一一s t k = ( i n t l 6 u ) 0 x 8 8 8 8 : 一s t k = ( i n t l 6 u ) 0 x 9 9 9 9 : 一st k = ( i n t l 6 u ) o x a a a a : r e t u r n “o s s t k ) s t k ) ) 3 6 文件o s c p u a a s m 的移植 b c d e h l 初始化备用寄存器 a f b c d e h l i x i y 返回栈顶指针 u c o s - i i 的移植实例要求用户编写四个汇编语言函数: 1 ( ) s s t a r t h i g h r d y ( ) 2 o s c t x s w ( ) 3 ( ) s i n t c t x s w 0 4 o s t i c k l s r0 这4 个函数是移植的关键函数,实时操作系统的任务切换、消息通信、进 程管理等工作的核心是c p u 的寄存器内容的切换。 o s s t a r t h i g h r d y 0 的任务是进行任务调度和切换,作为一个操作系统,能 够进行任务调度和切换是它的主要功能; o s c t x s w0 的任务是强制c p u 进行寄存器和程序计数器的切换; o s i n t c t x s w ( ) 的任务是在中断返回时进行任务切换; o s t i c k l s r ( ) 是定时器的中断服务程序,用来产生进行任务调度的时间“。 3 6 1 函数o s s t a r t h i g h d y o 的移植 使就绪状态的任务开始运行的函数叫做o s s t a r t0 。在用户调用o s s t a r t0 3 0 西北工业大学硕十学位论文 第三章此0 s i i 在z 8 4 c 1 5 单片机上的移植 之前,用户必须至少已经建立了自己的一个任务。o s s t a r t h i g h r d y 0 默认 o s t c b h i g h r d y 指向的是优先级最高的任务的任务控制块。前面曾提到过,在 , c o s i i 中处于就绪状态的任务的堆栈结构看起来就像刚发生过中断并将所有 的寄存器保存到堆栈中的情形一样。要想运行最高优先级任务,用户所要做的是 将所有处理器寄存器按顺序从任务堆栈中恢复出来,并且执行中断的返回。为了 简单一点,堆栈指针总是储存在任务控制块( 即它的0 s j c b ) 的开头。换句话说, 也就是要想恢复的任务堆栈指针总是储存在o s _ t c b 的0 偏址内存单元中。“。 0 s s t a r t h i g h r d y ( ) 必须调用o s t a s k s w h o o k 0 ,因为用户正在进行任务切换 的部分工作用户在恢复最高优先级任务的寄存器。而o s t a s k s w t t o o k 0 可以 通过检查o s r u n n i n g 来知道是o s s t a r t h i g h r d y ( ) 在调用它( o s r u n n i n g 为f a l s e ) 还是正常的任务切换在调用它( o s r u n n i n g 为t r u e ) o s s t a r t h i g h r d y 0 还必须在最高优先级任务恢复之前和调用 o s t a s k s w h o o k0 之后设置o s r u n n i n g 为t r u e 。 o s s t a r t h i g h r d y : c a l lo s t a s k s w h o o k 调用钩子函数o s t a s k s w h o o k 0 l da 1o s r u n n i n g = 1 l d ( o s r u n n i n g ) ,a l d h l ,( o s t c b h i g h r d y ) 得到即将运行的任务栈指针 l d ( o s t c b c u r ) 。h l把待运行任务指针赋予当前任务控制块 l d e ,( h l )把即将运行的任务块指针压栈 i n ch l l d h 。( h l ) l d l ie l d s p ,h l p o pi y恢复待运行寄存器 p o pi x e x a f ,a f e x x p o p t t l p o pd e p o pb c p o pa f e xa f a f e x x p o p h l p o pd e p o pb c p o pa f 西北工业大学硕士学位论文 第三章此0 s 一在z 8 4 c 1 5 单片机上的移植 r e t e n d 3 6 2函数o s c t x s w 0 的移植 中断返回,将任务入口地址从堆栈弹出 任务缴的切换问题是通过发软中断命令或依靠处理器执行陷阱指令来完成 的。中断服务例程,陷阱或异常处理例程的向量地址必须指向o s c t x s w 0 。 如果当前任务调用c o s i i 提供的系统服务,并使得更高优先级任务处于 就绪状态,p c o s i i 就会借助上面提到的向量地址找到o s c t x s

温馨提示

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

评论

0/150

提交评论