《实时多任务操作系统RTX-51TINY的应用.pdf》由会员分享,可在线阅读,更多相关《实时多任务操作系统RTX-51TINY的应用.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2 4卷第6期 咸 宁 学 院 学 报 V o l.2 4,N o.62 0 0 4年1 2月 J o u R n a l o fX i a n n i n gC o l l e g e D e c.2 0 0 4文章编号:1 0 0 6-5 3 4 2(2 0 0 4)0 6-0 0 3 0-0 4实时多任务操作系统R T X-5 1T I NY的应用*张红兵(咸宁学院 信息工程学院计算机系,湖北 咸宁 4 3 7 0 0 5)摘 要:R T X-5 1T i n y是集成于K e i lC 5 1开发环境中的实时多任务操作系统,该系统可以应用于所有具有8 0 5 1内核的单片机.它对于从
2、前后台编程模式走向基于实时多任务操作系统的编程模式提供了非常好的平台.本文详细叙述了应用该操作系统进行单片机开发的过程,并给出了实例.关键词:R T X-5 1T i n y;实时;操作系统中图分类号:T P 3 6 8.2 文献标识码:A1 采用实时多任务操作系统的意义在8 0 5 1系列单片机的开发过程中,人们习惯使用前后台系统来管理各个任务,即应用程序由多个任务组成,它们构成一个无限的循环,在循环中轮流执行各个任务,即一个任务完成后再执行另外一个任务.循环执行的任务被称为后台,当产生中断时,单片机执行中断服务程序,这被称为前台1.如果某个事件发生了,只有等到程序循环到查询该事件的标志时才
3、能得到处理.虽然在中断服务程序中也能及时处理异步事件,但是为了节省中断服务程序的执行时间,往往在中断服务程序中只是接收信息,然后退出中断,将需要处理的信息留待主循环程序中处理.因此,前后台式的系统不能很好地对异步事件及时响应.实时多任务操作系统(R T O S-R e a lT i m eO p e r a t i n gS y s t e m)以分时方式运行多个任务,好像所有的任务都是“同时”运行,因此它能在任何时候在指定的时间内给出响应.当前,在单片机中应用嵌入式操作系统是大势所趋.在8 0 5 1系列单片机上运行操作系统并非易事,因为它们的内部R AM很有限,仅仅1 2 8或2 5 6字
4、节,扩展外部R AM则会增加产品的成本.K e i l公司在其单片机集成开发环境V i s i o n 5 1以上版本中集成了R T X 5 1T i n y,它是一种实时多任务操作系统,利用它可以简化具有实时性要求的多任务复杂软件的设计,它可以在所有8 0 5 1系列单片机上实现而无需扩展外部R AM.2 R T X 5 1T i n y的工作原理R T X 5 1T i n y采用了基于时间片的轮询的任务调度机制.C P U的执行时间被划分为若干时间片,每个时间片的具体时间可依据实际的需要进行选择.系统将应用程序划分为多个可以并行运行的任务,每个任务都是一个无限循环.系统为每个任务分配一个
5、时间片,在该时间片内只执行这个任务.当时间到,在下一个时间片则无条件地执行另外一个任务.当所有的任务都轮询一次后,再回头执行第一个任务.由于时间片很短,一般从几个毫秒到几十个毫秒,因此看起来好像多个任务被同时执行了.R T X 5 1T i n y占用单片机内部定时器0,每隔一定的时间产生一次中断.相邻中断之间的时间就是时间片的长度.在其中断服务程序中进行任务调度以及判断执行了延时函数的任务的延时时间是否到.这种周期性的中断形成R T X 5 1的系统节拍.R T X 5 1T i n y最多可以定义1 6个任务,所有的任务都可以同时激活成为就绪态.其占用单片机内部资源除了定时器0外,还占用了
6、7字节的*收稿日期:2 0 0 4-1 1-0 2D ATA空间,3倍于任务数的字节的I D ATA空间以及9 0 0字节的C O D E空间.系统时钟为10 0 06 55 3 5周期,任务切换时间为1 0 07 0 0周期.R T X 5 1T i n y提供的系统函数及功能为2:(1)c h a r i s rs e n ds i g n a l(u n s i g n e dc h a rt a s ki d);/在中断服务程序中向t a s ki d确定的任务发送信号.(2)c h a ro sc l e a rs i g n a l(u n s i g n e dc h a rt
7、a s ki d);/清除由t a s ki d确定的任务的信号标志.(3)c h a ro sc r e a t et a s k(u n s i g n e dc h a rt a s ki d);/启动一个由t a s ki d指定的任务,只有执行该函数后该任务才被纳入到时间片切换任务的队列中.(4)c h a ro sd e l e t et a s k(u n s i g n e dc h a rt a s ki d);/停止一个由t a s ki d指定的任务,当一个任务执行后不必再运行它了,就可以使用该函数将任务从任务队列中删除,但是该任务的代码依然存在,在需要的时候依然可以激活
8、它.(5)c h a ro sr u n n i n gt a s ki d(v o i d);/返回当前任务的t a s ki d号.(6)c h a ro ss e n ds i g n a l(u n s i g n e dc h a rt a s ki d);/向由t a s ki d确定的任务发送信号,如果该任务正在等待信号,则使任务再次准备执行,否则信号被存储在所访问的任务信号标志内.(7)c h a ro sw a i t(u n s i g n e dc h a re v e n ts e l,u n s i g n e dc h a r t i c k s,u n s i g
9、 n e d i n td u mm y);/暂停当前任务而等待一个或几个事件,诸如时间到、间隔、另一个任务或中断发送的信号.其中e v e n ts e l为要等待的事件,只能在KI V L、KS I G、KTMO中选择,t i c k s为等待超时的定时器0产生的时钟脉冲数.d u mm y默认为0.3 R T X 5 1T i n y的使用R T X 5 1T i n y内置在V i s i o n 5 1中,因此使用起来很方便.3.1 系统配置在V i s i o n 5 1或V i s i o n 2集成开发环境下的O p t i o n s f o rT a r g e t菜单的T
10、 a r g e t栏目,在O p e r-a t i n g项选中R T X-5 1T i n y,则在编译时自动加入了R T X-5 1T i n y系统,用户无需增加额外的文件.在嵌入式系统启动后首先执行该背景程序,用户的应用程序是运行于该背景程序之上的各个任务,R T O S根据各个任务的要求,进行资源管理、消息管理、任务调度和异常处理等工作.用户还必须根据实时系统对时间的要求以及任务的多少调整系统配置,方法是对I k e i l I c 5 1 I r t xt i n y目录下的系统配置文件c o n ft n y.a 5 1的相应部分作出调整.I NTR E G B ANK E
11、QU 1;定义定时器0产生中断时中断服务程序使用的寄存器组的组号,默认为寄存器组1.I N TC L O C K E QU 1 00 0 0;用于决定定时器0多少时间产生一次中断,由它决定操作系统的时钟节拍.系统默认为1 00 0 0个机器周期,对于采用1 1.0 5 9 2 MH z晶振的单片机而言,系统的时钟周期为1.0 8 5 0 7 1 00 0 0=1 08 5 0s=1 0.8 5 07 m s.T I ME S HAR I NG E QU 5;定义任务切换的时间片的长度,即多少个系统时钟周期为一个时间片.系统默认为5个系统时钟,如果晶振为1 1.0 5 9 2 MH z,则时间片
12、为1 0.8 5 0 75=5 4.2 5 35 m s.注意:该值不能设定为0,否则系统不会进行任务切换.R AMT O PE QU0 F FH;定义单片机中堆栈的最高地址.注意如果是采用8 0 5 1内核的单片机,内部R AM为1 2 8字节,该值应当修改为7 FH.系统默认为8 0 5 2内核,内部R AM为2 5 6字节.F R E ES TA C KE QU2 0;定义堆栈的空间大小,系统默认为2 0字节.如果在任务切换过程中,堆栈中的自由空间不足,则会关闭中断并进入死循环.因此要合理设定堆栈的大小.3.2 使用R T X-5 1T i n y时编写程序的方法在程序的开始一定要加入包
13、含文件r t x 5 1 t n y.h,即:#i n c l u d e.使用R T X-5 1 T i n y时 用 户 程 序 中 不 需 要m a i n()函数,系统启动后会自动从任务0开始运行.任务0是整个应用程序的开始,因此必不可少.任务0是无须由其他程序启动的,但除此之外其它的任务都必须在启动它后才能运行.任务的定义是程序中的一段任务函数,该任务既可能纳入到任务调度的排队队列中,也可能永远都不被执行,除非执行了启动该任务的命令.任务的定义格式为:v o i df u n c t i o n(v o i d)t a s kt a s ki d f o r(;);/任务循环体 f
14、u n c t i o n为任务的名称,t a s k 是定义任务的关键字,t a s ki d是任务号,其值范围为:01 5,每13第6期 张红兵 实时多任务操作系统R T X 5 1T I NY的应用个任务对应一个唯一的任务号.R T X-5 1T i n y不支持可剥夺式任务调度,所有的任务的优先级都是相同的,因此任务号的选择并没有什么特殊要求,但是要注意任务0是所有任务的开始,所以一般在任务0中启动其它的任务.每个任务都是一个死循环,没有参数和返回值.中断服务程序的编写方式与不使用R T X-5 1T i n y操作系统下的编写方式相同.4 应用实例在视频监控领域经常要用到协议转换器,
15、它将一种协议的串行数据转换成另外一种协议的串行数据.在设计一款协议转换器时使用了R T X-5 1T i n y,整个应用被分为三个任务和一个中断服务程序.一个任务是从串口接受数据,对其结构和含意进行判断,并将其转换为对应协议的数据;一个是将转换后的数据从串口发送出去;还有一个是喂看门狗;当有串口数据成功发送或接受时,产生中断,在中断服务程序中向等待数据处理的任务发送信号.示意性程序如下:#i n c l u d e#i n c l u d e#d e f i n eR E C E I V E1/任务I D的定义#d e f i n eT R AN S M I T2#d e f i n eWA
16、T CHD O G3/*任务0:初始化系统,启动其它的任务*/v o i d i n i t i a l(v o i d)t a s k0i n i t i a l i z a t i o n();/初始化系统o sc r e a t et a s k(R E C E I V E);/启动接收任务o sc r e a t et a s k(T R A N S M I T);/启动发送任务o sc r e a t et a s k(WAT CHD O G);/启动喂看门狗任务o sd e l e t et a s k(0);/终止该任务/*任务1:等待串口中断发送的信息,并将从串口接收到的数据进
17、行分析和转换*/v o i dr e c e i v et a s k(v o i d)t a s kR E C E I V Ef o r(;)o sw a i t(KS I G,0,0);/等待信号 ;/数据处理 /*任务2:等待串口中断发送的信号,并向串口发送转换后的码流.*/v o i dt r a n s m i tt a s k(v o i d)t a s kT R AN S-M I T f o r(;)f o r(i=0;i 7;i+)o sw a i t(KS I G,0,0);/等待信号 ;/发送数据 /*任务3:定期喂看门狗*/v o i dw a t c hd o gt a
18、 s k(v o i d)t a s kWAT CHD O Gf o r(;)w a t c hd o g=!w a t c hd o g;/喂看门狗 o sw a i t(KTMO,1,0);/每隔一个时钟脉冲喂一次看门狗 /*串口中断服务程序*/v o i ds e r i a lI S R(v o i d)i n t e r r u p t4u s i n g2i f(R I)R I=0;i s rs e n ds i g n a l(R E C E I V E);/向任务1发送信号e l s e i f(T I)T I=0;i f(u p d a t af l a g=1)/只有当刷新
19、标志置位的时候才发送信号i s rs e n ds i g n a l(T R AN S M I T);/向任务2发送信号 23咸宁学院学报 第2 4卷5 结束语在嵌入式系统中应用实时多任务操作系统除了提高对事件的响应速度外,还能显著提高编程效率和稳定性,人们可以集中精力编写某个任务,而不必担心任务之间的关系,任务调度完全由操作系统来完成.R T X-5 1T i n y集成于k e i l公司提供的C 5 1开发环境中,且常用的系统函数只有5个,因而用户将其嵌入到应用中十分方便.但是在应用过程中也要注意几个问题,一是R T X-5 1T i-n y是基于时间片的任务轮询机制,不支持可剥夺式任
20、务切换,因此在对事件的响应速度要求非常严格的情况下不很适用;二是系统本身占用了单片机的定时器0,用户不能将定时器0用于其它用途.三是系统本身占用了C P U的运行时间和部分R AM、R OM,用户在使用的过程中都要考虑到这些因素.参考文献:1 陈明计,周立功.嵌入式实时操作系统S m a l lR T O S 5 1原理及应用M.北京:北京航空航天大学出版社,2 0 0 4.2 徐爱钧,彭秀华.单片机高级语言C 5 1 W i n-d o w s环境编程与应用M.北京:电子工业出版社,2 0 0 1.V h eA T T l i c a t i o no fR e a lV i m eO T
21、e R a t i n gS y s t e mR V X-5 1V i n yZ H A N GH o n g-b i n g(D e p a r t m e n to fC o m p u t e r,S c h o o l o f I n f o r m a t i o na n dE n g i n e e r i n g,X i a n n i n gC o l l e g e,X i a n n i n g4 3 7 0 0 5,C h i n a)A b s t R a c t:R T X-5 1T i n y i s a r e a l t i m eo p e r a t i
22、 n gs y s t e mi n t e g r a t e d i nK e i lC 5 1 i n t e g r a t e dd e v e l o p m e n t e n-v i r o n m e n t.I t c a nb ea p p l i e d i na l lM i c r oc o n t r o l l e rw i t h8 0 5 1c o r e.I th e l p se l e c t r o n i ce n g i n e e r s t ot u r nf r o mR o u n d-R o b i nm o d e l t or e a l t i m eo p e r a t i n gs y s t e m.A ne x a m p l ei l l u s t r a t e st h ed e v e l o p m e n tp r o-c e s s i n gw i t ht h eo p e r a t i n gs y s t e mi nd e t a i l.K e yS o R d s:R T X-5 1T i n y;R e a l t i m e;O p e r a t i n gs y s t e m33第6期 张红兵 实时多任务操作系统R T X-5 1T I NY的应用