《基于嵌入式实时操作系统μ C_OS-Ⅱ的多任务算法研究.pdf》由会员分享,可在线阅读,更多相关《基于嵌入式实时操作系统μ C_OS-Ⅱ的多任务算法研究.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2 0 1 0 葺e 3,e j电子测试M a r 2 0 1 0第3 期E L E C T R O N I CT E s TN o 3基于嵌入式实n 慨作系统wc o s-l l V j 多任务算法研究夏梦宇,王勇(南京邮电大学南京2 1 0 0 0 3)摘要:I XC O S I I 是一个高度简洁、可固化、可裁剪、实现抢先式实时多任务的操作系统内核。而嵌入式软件系统的一个重要特征是实时响应和多任务处理。本文白先简要介绍了斗C O S-I I 及其斗C O S I I 在应用系统软件的设计中的仟务状态和任务调度。基j:集成开发环境l A P-E W A R M,提出了一种基于斗C O S-
2、I I 的多任务调度算法以实现“欢迎使用”的衡定时间交替显示的功能,着荤介绍了“C O S-I I 中多任务间的切换和调度的实现机理。斗C O S I I 作为一个精简、可靠的多任务操作系统,在中小型,I:业领域中有着广泛的虚用前景。关健词:嵌入式系统;操作系统;实时性;多任务算法中图分类号:T P 3 0 1 6 文献标识码:AS t u d yo ft h ed e v e l o p m e n to fe m b e d d e dr e a l-I。t i m em u l t i t a s k i n gB a s e do nI J LC O S I IX i aM e n g
3、 y u,W a n gY o n g(N a n j i n gU n i v e r s i t yo f P o s t sa n dT e l e c o m m u n i c a t i o n sN a m i n g2 1 0 0 0 3)A b s t r a c t:C O S I Io fT h eR e a l T i m eO Si sah i g h l yp o r t a b l e,R O M a b l e,v e r ys c a l a b l e,p r e e m p t i v er e a l t i m e,m u l t i t a s k
4、i n gk e r n e l(R T O S)T h ei m p o r t a n tc h a r a c t e ro fe m b e d d e ds o f t w a r es y s t e mi sr e a l t i m er e s p o n s ea n dm u l t i t a s k i n gp r o c e s s i n g T h ep a p e rf i r s d yi n t r o d u c e d 斗C O S I Ia n di t St a s ks t a t e t a s ks c h e d u l i n gi n
5、t h ed e s i g no fa p p l i c a t i o ns y s t e m T h u su n d e rt h ei n t e g r a t e dd e v e l o p m e n te n v i r o n m e n tI A RE W A R M,t h er e a l i z a t i o no fa l t e r n a t i n gd i s p l a yo f“W e l c o m et ou s e”i ne q u a lt i m ei sp r e s e n t e db a s e do nm u l t i t
6、 a s k i n gs c h e d u l i n ga l g o r i t h m T h ea r t i c l em a k ea ne m p h a s i so nt h ec o n v e r s i o na n ds c h e d u l i n gb e t w e e nt a s k s A sap o r t a b l e,d e p e n d a b l em u l t i t a s k i n gk e r n e l,灿C O S 1 1w i l lh a v eab r o a da p p l i e dp r o s p e c
7、 ti nm e d i u ma n ds m a l li n d u s t r i a lf i e l d K e y w o r d s:e m b e d d e ds y s t e m;o p e r a t i n gs y s t e m;r e a l。t i m e;m u l t i t a s k i n ga l g o r i t h m0 引言I X C O S 是由J e a n J L a b r o s s e 于1 9 9 2 年首先没计编写的。1 9 9 9 年,L a b r o s s e 又编写了I X C O S I I。该操作系统已被认为
8、是每个希望掌握实时操作系统的技术人员的经典学习版本。恤C O S I I 是一个完整、可移植、可固化、可裁剪的占先式实时多任务内核。I x C O S I I 用A N S IC 语言编写,包含一小电圣逊量巴 万方数据部分汇编语言代码,使之可以供不同架构的微处理器使用。斗C O S I I 可以管理6 4 个任务,具有信号量、互斥信号量、事件标志组、消息邮箱、消息队列、任务管理、时问管理和内存管理等系统功能。至今,从8 位到6 4 位,斗C O S 一1 1 已在多种架构的微处理器上运行。应用系统软件的设计(1)初始化硬件:在系统中,软件运行环境为一特定的目标机,所以在启动后对目标的C P U
9、 板、存储器板、总线接口等进行初始化操作。(2)任务状态:斗C O S I I 是以一组基本的多任务机制支持实时系统,其控制的基本单位是任务。在应用层软件的设计中,功能模块划分为一定规模的任务。斗C O S I I 控制下的任务有5 种状态。睡眠态是指任务驻留在程序空间,还没有交给“C O S I I 来管理。而任务一旦建立,这个任务就进入了就绪态。程序用O S S t a r t()启动多任务,该函数运行用户初始化代码中己经建立的、进入就绪态的优先级最高的任务,使任务进入运行态。正在运行的任务可以通过调用O S T i m e D l y()或O S T i m e D I y H M S
10、M()将自身延迟一段时间,于是此任务进入等待状态;另种情况时正在运行的任务要等待某一事件的发生,而事件并未发生,这也使任务进入等待状态。如果正在运行的任务或“C,O S-I I 没有关中断,正在运行的任务可被中断,进入中断服务态。(3)任务调度:斗C O S I I 总是运行进入就绪态任务中优先级最高的任务,这要求各个任务的优先级不能相同,优先级号越低,任务的优先级越高。在程序设计过程中,一般把重要的任务或执行时间长的任务优先级设置得较高。任务调度分为任务级屯茅则i 式的调度和中断级的调度。前者是通过O S S c h e d()来寻找最高优先级的任务,宏调用O S _ T A S K _ S
11、 W()完成任务切换。对于后者,由于中断是对外部和内部事件提供立即响应服务的机制,对于可剥夺型实时内核来说,中断返回函数将决定是返回到被中断的任务,还是让优先级最高的任务运行,后一种情况下,内核要做任务切换,恢复中断的时问要长一些。斗C O S I I 需提供周期性信号源,时钟节拍是特定的周期性中断,它使得内核可以将任务延时若千个整数时钟节拍,以及当任务等待事件发生时,提供等待超时的依据。2uC O S l i T 作原理C O S-I I 是一个源码公开的实时多任务操作系统,其工作流程如图l 所示。图中,任务切换的核心是利用出栈指令将各个任务的工作现场再现,并利用子程序返回指令改变P c 指
12、针以完成任务的切换。逦I9亨对任务堆栈区进行根据任务创建T l初始化O S T a s k S t k i n i O+l 根据任务优先级数量创建任务启动多任务O S S t a r)就绪表及任务优先级表臣覃tt0 堑塑堡苎一)图1I JC O S I I 的-r 作原理图型 万方数据3 实例假设某仪器要在屏幕上显示流动字符“欢迎使用”,即“欢迎使用”四个字轮流显示。将每个汉字显示时间控制为2 0 个单位,并且同一时刻只显示一个汉字,相邻字符显示时间I 日j 隔相同。显示部分采用L M l 9 2 6 4 A 液晶显示模块,软件的开发环境主要由组成集成开发环境I A RE W A R M 和仿
13、真器I A RJ-L i n kJ T A G。I A RE W A R M 支持众多的A R M内核,本次试验采用的是S H A R PL H 7 9 5 2 0 微控制器。6 个任务如表l 所示(包含系统空闲任务)。表1 任务优先级表任务名优先级操作空闲任务O SL O W E S TP R l 0空操作统计任务0 SL O W E S TP R I O 一1每秒做一次统计计算C P U 利用率A p p T a s k l1 0清除“用”字,显示“欢”字保存“欢”宇A p p T a s k 21 2清除“欢”字,显示“迎”字保存“迎”字A p p T a s k 31 4清除“迎”字,
14、显示“使”字,保存“使”宇A p p T a s k 41 6清除“使”宇,显示“用”字,保存“用”字巴应片j 程序设汁:预定义仟务优先级#d e f i n eT A S KlP R l 0l O#d e f i n eT A S K2P R I O1 2#d e f i n e1 A S K3P R l 01 4#d e f i n eT A S K4P R i O1 6弋乡M a i n();E 函数弋夕O S l n i t 0;系统初始化弋夕O S T a s k C r e a t e(A p p T a s kl;T A S K-l P R I O);创建仔务l,优先级l OO
15、S T a s k C r e a t e(A p p T a s k2;T A S K 一2 一P R I O);创建任务2,优先级1 2O S T a s k C r e a t e(A p p T a s k3;T A S K 一3 一P R I O);H t!,J 建任务3,优先级1 4O S T a s k C r e a t e(A p p T a s k4;T A S K _ 4 一P R I O);仓 J 建任务4,优先级1 6一哆启动彩仟务O S S t a r t n通过在主函数中建立了4 个任务,并指定优先级(见图2o C O S l I 是可剥夺型内核,它的主要任务就是
16、多任务间的凋度与同步,最高优先级任务一旦就绪,总能得到C P U 的使用权。优先级号越低,任务的优先级越高。通过调用O S S t a r t()开始运行多任务,任务l 优先级最高,首先运行显示“欢”字,而后运行O S T i m e D l y(8 0),任务1 被挂起,等待延迟结束。为了保证每个字符显示相同的2 0 单位时间,在执行下一优先级任务2 时先执行O S T i m e D l y(2 0),此时任务3 运行,同样首先执行延迟函数,但想到任务2 显示的“迎”字也要显示2()单位时间,加上任务2 本身延迟的2 0 单位时问。任务3 首先执行延迟函数为O S T i m e D l
17、y(4 0),任务3 也被挂起。最低优先级的任务4 得以运行,同样为了保证任务3 的“使”字显示2 0 单位时间,加上任务3 本身延迟的4 0 单位时I 日J,任务4 执行延迟函数O S T i m e D l y(6 0)。也就是说当任务1 被挂起时,任务2、任务3、任务4 依次得到运行,并且都被挂起,此时系统运行空闲函数,等待下一个就绪态优先级最高的任务。当任务2 延迟2 0 单位时间后,任务l 由于还有6 0 个单位时间的延迟而继续被挂起。任务2 得以运行,首先清除任务l 显示的“欢”字,显示“迎”字,然后任务2 被挂起,延迟6 0 单位时间。然而任务3 因为还要等待2 0 单位时间、任
18、务4 要等待4 0 单位时I u J i i i i 继续被挂起,系统又去运行2 0 单位时间的空闲任务。然后任务l、任务2 因还要等待4 0 单位时间而继续被挂起,任务3 得以运行,首先清除任务2 显示的“迎”字,接着显示“使”字,而后凶执行O S T i m e D l y(4 0)又被挂起。系统查看当前就绪表序列,任务l、任务2、任务3 都需等待4 0 单位时间,任务4 需等待2 0 个单位时问,系统自动执行空闲任务。2 0 个单位时间后,任务l、任 万方数据务2、任务3 还要等待2 0 个单位时间,任最低优先级的任务4 得以运行,清除任务3 显示的“使”字,显示“用”字。而后执行延迟函
19、数O S T i m e D l y(2 0),则在2 0 单位时间后,任务l、任务2、任务3、任务4 的等待时间都结束,一次周期显示“欢迎使用”完成。C O S I I 中任务一旦建立,如果任务代码不执行删除函数,只要该任务条件满足就会得以再次运行。由于任务l 优先级最高,首先得以重新运行,实现了下一次周期显示“欢迎使用”。详细任务调度模块流程见图3。利用斗C O S I I 是以一组基于多任务机制支持实时系统且其控制的基本单位是任务这一特点,实现了分别显示四个字符的目的。通过任务2、3、4先执行延迟函数保证了每一字符显示的时间都相同,然后通过每个任务先执行清除函数清除前一任务显示的字符后显
20、示下一字符,实现了字符交替显示这一功能。I 时钟节拍每隔8 0 个时间单位循环一次)A D p T a s k lIT A S K 一1 一P R l 0清除“用”字时间延迟8 0显示“欢”宇保存“欢”宇A p p T a s k 2T A S K 一2 一P R0清除“欢”字显示“迎”字保存“迎”宇A p p T a s k3I 时间延迟4 T A S K 一3 一P R l 0I清除“迎”宇时间延迟4 0显示“使”宇l保存“使”字A p p T a s k4鼢。T A S K 一4 _ P R l 0f清除“使”字时间延迟2 0显示“用”宇L保存“用”宇图3 调度模块流程图函数说明:(1)
21、建立任务函数:I N T 8 UO S T a s k C r e a t e(v o i d(木t a s k)(v o i d 木p d),v o i d 木p d a t a,O S S T K 宰p t o s,I N T 8 Up r i o)(2)清除2 4*2 4 汉字汉字(剪贴板拷贝到显存):v o i dC l i p b o r a d C o p y t o L c d m e m(矩形左上X 轴位置,矩形左上Y 轴位置,矩形右下x 轴位置,矩形右下Y 轴位置)(3)显示2 4*2 4 汉字函数:v o i dD i s p 2 4 x 2 4 W o r d(x轴起始点
22、,Y 轴起始点,显示汉字编码)(4)保存刚显示的2 4*2 4 汉字(显存拷贝到剪贴板):v o i dL c d m e m C o p y t o C l i p b o r a d(矩形左上x 轴位置,矩形左上Y 轴位置,矩形右下x 轴位置,矩形右下Y 轴位置)(5)时间延迟函数:v o i dO S T i m e D l y(I N T l 6 Ut i c k s)4 实验结果界面在集成开发环境I A RE W A R M 和仿真器I A RJ-L i n kJ T A G 帮助下,依照上述编程思想,经过调试代码,通过多任务的循环调度实现了“欢迎使用”的衡定时间交替显示的功能。在L
23、 M l 9 2 6 4 A 液晶显示模块上的显示结果如图4 所示。5 结论图4L M l9 2 6 4 A 液晶屏显示结果基于pC O S I I 实时操作系统上的软件没计都是以任务形式设汁的。实时应用程序的设计过程,包括如何把问题分割成多个任务,每个任务都是整型 万方数据个应用的某一部分并被赋予一定的优先级,有它自己的一套C P U 寄存器和自己的栈空间。通过斗C,1 5】O S I I 的多任务抢占式优先级调用这一特点,以任务为基本单位调度,实现了“欢迎使用”的衡定时间交替显示的功能。斗C O S I I 作为一个精简、可【6】靠的多任务操作系统,在中小型工业领域中有广泛的应用前景。比以
24、前以单线程程序实现具有更高的【7 1实时性和可靠性,并可实现更为复杂的智能算法,具有很高的实用性。【8】参考文献2 C I【1 K i r kZ u r e U。嵌入式系统的C 程序设计I M】艾克武,张剑波,艾克文等泽北京:机械工业出版社,2 0 0 2 L M l 9 2 6 4 A 液晶显示模块应用参考【D B O L l,h a p:W W W t o p w a y d i s p l a y c o r n黄燕平u C O SA R M 移植要点详解【M】北京:北京航空航天大学出版社,2 0 0 5 W a y n eW o l f 嵌入式计算机系统没计原理【M】孙玉芳,梁彬,罗保
25、国等译北京:机械工业出版社,2 )0 2【1 1J e a nJ L a b r o s s e,嵌入式实时操作系统I X C O S I I M ,作者简介:夏梦字。南京邮电大学硕2 版,邵贝贝译北京:北京航天航空大学出版社,士研究生。主要研究方向为虚拟仪器在2 0 0 3 通信信息系统中的应用。【2】王田苗,嵌入式系统设计与实例开发【M】,北京:E-m a i l:y z u x m y 2 0 0 8 1 6 3 c o m o清华大学出版社,2 0 0 3 王勇,教授,博士,南京邮电大学大学实验中心主【3】任哲嵌入式实时操作系统斗C O S I I 原理及应用任。主要研究方向为虚拟仪器
26、,测量与控制技术,各类【M】。北京:北京航空航天大学出版社,2 0 0 5 通信网检测。监控与管理o【4】J e a nJ L a b m s s e 卜C O S I I 源码公开的实时嵌入式E m a i l:w a n g y o n g n j u p t e d u c n操作系统I M】邵贝贝泽北京:中国电力出版社,(上接2 6 页)优化【J J 计算机工程,2 0 0 9 了由于代理服务器失效造成的其他代理服务器负载【4】郑凯,一种P 2 PV O D 系统的缓存部署及调度机制【J】的加重甚至负载不平衡的现象。华南师范大学学报,2 0 0 9 参考文献【1】马杰,樊建平具有高缓存
27、写入效率的流媒体分段缓存方法阴计算机学报,2 0 0 7【2】2王飞,奚宏,生杨坚集群式V o D 系统中文件分块存储策略m 计算机工程,2 1 X)8【3】3徐锦,朱明,郑烩,姜建平媒体分发网络存储策略巴【5】黄晓涛,郑涛P 2 P 流媒体点播的缓存机制研究【J】计算机工程与科学,2(x】8 作者简介:余红梅。重庆邮电大学通信与信息工程的硕士。研究方向:下一代网络技术。E m a i l:h o n g m e y u 16 3 c o m 万方数据基于嵌入式实时操作系统 C/OS-的多任务算法研究基于嵌入式实时操作系统 C/OS-的多任务算法研究作者:夏梦宇,王勇,Xia Mengyu,W
28、ang Yong作者单位:南京邮电大学,南京,210003刊名:电子测试英文刊名:ELECTRONIC TEST年,卷(期):2010(3)参考文献(8条)参考文献(8条)1.任哲 嵌入式实时操作系统 C/OS-原理及应用 20052.王田苗 嵌入式系统设计与实例开发 20033.Jean J.Labrosse;邵贝贝 嵌入式实时操作系统 C/OS-20034.Wayne Wolf;孙玉芳;梁彬;罗保国 嵌入式计算机系统设计原理 20025.黄燕平 uC/OS ARM移植要点详解 20056.LM19264A液晶显示模块应用参考7.Kirk Zurell;艾克武;张剑波;艾克文 嵌入式系统的C程序设计 20028.Jean J.L,abrosse;邵贝贝 C/OS-源码公开的实时嵌入式操作系统 2001 本文链接:http:/