RTX51实时多任务操作系统.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《RTX51实时多任务操作系统.ppt》由会员分享,可在线阅读,更多相关《RTX51实时多任务操作系统.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机接口技术(C51版)第十三章RTX51实时多任务操作系统内容概述内容概述主要介绍多任务编程思想、RTX51操作系统的特点、模式及运行要求,RTX51的工作原理、RTX51TINY的配置及基于RTX51TINY的键盘显示系统设计。n教学目标教学目标1.了解多任务编程思想,理解多任务编程与单任务编程的区别及优点。2.了解RTX51的完全模式和最小模式的区别。3.理解任务的几种状态及其定义,掌握任务切换过程,能进行简单的任务切换程序设计;理解事件的定义,了解RTX51系统中的超时、间隔、信号、消息、中断等几个事件,能使用os_wait()函数同步2个或几个任务,能使用信号控制任务的启动和停止。
2、4.了解RTX51处理中断的中断函数和RTX51的任务中断(分为快速任务中断和标准任务中断)及实现过程。5.了解RTX51TINY的同步机制、调度规则、任务控制块、存储器管理等。掌握RTX51TINY的配置,能够修改RTX51TINY配置文件conf_tny.a51。6.掌握基于RTX51TINY的键盘、显示系统的程序设计。131多任务编程思想n13.1.1 单任务机制工作原理单任务机制工作原理n在单任务机制下,各功能模块按固定顺序构成一个整体,作为一个任务得到执行。各个模块要求的执行频率不一致时程序难以满足。n需在运行时动态改变执行结构的系统,程序需用许多条件判断和分枝转移语句进行控制,增加
3、了程序的复杂性。n其可读性和可维护性很差,调试不便。增加了系统扩充难度。13.1.2 多任务机制工作原理多任务机制工作原理n各功能模块处于等同地位。n各功能模块执行顺序可在程序运行过程中动态地改变。n各功能模块的执行频率表现为它们的优先级。n各子任务在自已的时间片内运行,通过合理设计时间片大小和各任务的优先级,可以自然地满足系统内各种复杂的时序要求。13.2RTX51的特点及运行要求nRTX51执行循环多任务处理,允许几个循环任务准并行执行。n任务并不同时执行而是按时间分段执行,有效的CPU时间划分成时间段并由RTX51将时间段分配给每个任务。每个任务允许执行预定数量的时间,然后RTX51切换
4、到另一个任务运行,时间段非常短,通常仅有几个毫秒,因此任务看起来好象是同时执行的。RTX51使用一个定时子程序,其中断驱动是由8051的硬件定时器产生周期性中断来驱动RTX51时钟。nRTX51不要求程序中有主函数。它自动从任务0开始执行,如果有主函数,则必须使用os_create_task(RTX51Tiny)或os_start_system(RTX51Full)函数启动RTX51。13.2.1RTX51的特点RTX51有2个模式:RTX51完全模式和最小模式。RTX51Tiny是RTX51的一个子集,支持RTX51中绝大多数的特性,且不需要外部RAM(XDATA)。RTX51Tiny支持R
5、TX51Full的许多特性,但不具有以下功能:n由循环多任务处理和信号实现任务切换n不支持优先任务切换n不包含信息子程序n无存储器库分配子程序13.2.2RTX51对硬件的要求13.2.3RTX51对软件的要求在使用实时多任务操作系统RTX51TINY时,需要以下软件支持:1)C51编译器2)BL51连接定位器3)A51宏汇编器库文件RTX51TNY.LIB必须存储在C51LIB下,必须指定C51运行库的路径。头文件RTX51TNY.H必须存储在C51INC下,必须指定C51包含文件的路径。RTX51TINY可以在没有外部数据存储器的单片机8051系统中运行,但应用程序可以存取外部存储器。RT
6、X51TINY可以使用C51编译器支持的存储器模式,存储器模式的选择仅影响应用程序目标文件的定位。RTX51TINY的系统变量以及应用程序的堆栈区总是位于8051的内部数据存储器中(DATA/IDATA),典型地,RTX51TINY应用程序应采用SMALL编译模式。13.3RTX51基本概念及实例分析n13.3.1任务的状态及定义RTX51区分2类任务:快速任务和标准任务。快速任务有很快的响应速度,每个快速任务使用8051一个单独的寄存器组,并且有自己的堆栈区域。RTX51支持最大同时有3个快速任务。标准任务需要多一点的时间来进行任务切换,因此使用的内部RAM相对快速任务要少,所有的标准任务共
7、用1个寄存器组和堆栈。当任务切换的时候,当前任务的寄存器状态和堆栈内容转移到外部存储器中。RTX51FULL支持任务最多达64个,但一般RTX51TINY支持最大16个标准任务。RTX51任务状态n1)运行(RUNNING):当前正在运行的任务处于RUNNING状态,同一时间只有1个任务可以运行。n2)就绪(READY):等待运行的任务处于READY状态,在当前运行的任务退出运行状态后,就绪队列中优先级最高的任务进入到运行状态。n3)阻塞(BLOCKED):等待一个事件的任务处于BLOCKED状态,如果事件发生且优先级比正在运行的任务高,此任务进入运行状态;如果优先级比正在运行的任务低,此任务
8、进入READY状态。n4)删除(DELETED):没有开始的任务处于删除状态。RTX51任务状态n5)任务切换RTX51是抢占式多任务系统;在时间片轮转模式下,同级别的任务是按照时间片分别占用CPU的。RTX51任务有4个优先级:0、1、2可以分配给标准任务,优先级3是为快速任务保留的。每个任务都可以等待事件的发生,而并不增加系统的负担;任务可以等待消息、信号、中断、超时事件或者它们的组合。任务切换是按照一定规则进行的,包括:进入到“就绪”状态的优先级高的任务先执行;如果“就绪”状态的几个任务是同一个优先级,那么最先进入“就绪”状态的先执行。任务状态切换如图13-3-1所示。图13-3-1 任
9、务状态切换图例13-3-1简单的RTX51程序n该程序中的三个任务都是简单的计数器循环,并分别对P1.0、P1.1、P1.2取反。RTX51开始执行函数名为job0的任务0,由该任务创建任务1和任务2。程序在任务0执行一段时间后到任务1执行一个时间段,再到任务2执行,在任务2执行一会儿后,RTX51TINY切换到任务0。该处理过程无限重复下去。#include/*RTX-51tiny头文件*/#includelongcounter0;/*任务0的计数器*/longcounter1;/*任务1的计数器*/longcounter2;/*任务2的计数器*/sbitP1_0=P10;sbitP1_1=
10、P11;sbitP1_2=P12;ob0()_task_0inti;os_create_task(1);/*启动任务1*/os_create_task(2);/*启动任务2*/while(1)/*无穷循环*/counter0+;/*counter0加1*/for(i=0;i1000;i+);P1_0=!P1_0;job1()_task_1inti;while(1)/*无穷循环*/counter1+;/*counter1加1*/for(i=0;i1000;i+);P1_1=!P1_1;job1()_task_1inti;while(1)/*无穷循环*/counter1+;/*counter1加1
11、*/for(i=0;i1000;i+);P1_1=!P1_1;13.3.2RTX51事件在等待一个任务的时间片到达时,RTX51使用os_wait函数通知RTX51,让另一个任务开始执行。这个功能终止正在运行的当前任务,然后等待指定事件的发生。这时,任意数量的其它任务仍可以执行。RTX51的等待功能支持以下事件:*超时(timeout):挂起运行的任务指定数量的时钟周期。*间隔(interval):类似于超时,但是软件定时器没有复位,典型应用是产生时钟。*信号(signal):用于任务内部同步协调。RTX51支持的事件n*消息(message):适用于RTX51Full用于信息的交换。我们可以
12、把一个消息发送到一个特定的邮箱。消息由2字节组成,可以是用户按照自己的需求定义的数据,也可以是指向数据的指针。如果邮箱的消息列表已满,而且是中断发送消息,这个消息将会丢失;如果是任务发送消息,那么任务将会进入到等待状态,直到邮箱重新有了位置可以接收这一条信息。邮箱是按照FIFO的原则来管理消息的,如果几个任务都在等待接收消息,那么最先进入等待接收队列的将接收消息。一个邮箱最多可以存储8条消息。当邮箱满的时候,最多只能有16个等待任务。RTX51支持的事件n*中断(interrupt):适用于RTX51Full,一个任务可以等待8051硬件中断。n*信号量(semaphore):适用于RTX51
13、Full,信号量用于管理共享的系统资源。通过使用“令牌”,允许在同一时刻只有一个任务使用某些资源。如果几个任务申请访问同一个资源,那么首先提出申请的将允许访问,其它的任务进入等待队列,直到第1个任务操作完毕,下一个任务才能继续。1使用os_wait函数nos_wait()函数挂起一个任务来等待一个事件的发生。这样可以同步2个或几个任务。它的工作过程如下:当任务等待的事件没有发生的时候,系统挂起这个任务;当事件发生时,系统根据任务切换规则切换任务。使用os_wait函数等待的最简单的事件是RTX51时钟报时信号中的超时周期,该类型的事件可用于需要产生延时的任务。这可用作代码中的切换查询在这样的情
14、况下只需要每50ms检查一次切换。n例13-3-2下面的例子演示在允许其它任务执行时,如何使用os_wait函数延迟执行。#include/*RTX-51tinyfunctions&defines*/longcounter0;/*任务0的计数器*/longcounter1;/*任务1的计数器*/job0()_task_0os_create_task(1);/*启动任务1*/while(1)/*无穷循环*/counter0+;/*counter0加1*/os_wait(K_TMO,5,0);/*等待超时信号:5个时钟报时*/job1()_task_1while(1)/*无穷循环*/counter
15、1+;/*counter1加1*/os_wait(K_TMO,10,0);/*等待超时信号:10个时钟报时*/job0先启动job1,然后在counter0加1计数以后job0呼叫os_wait函数暂停5个时钟报时信号。这时rtx51切换到下一个任务job1。在job1增加counter1计数以后,它也调用os_wait以暂停10个时钟报时信号。现在rtx51没有其他的任务需要执行。因此在它可以延续执行job0之前,它进入一个空循环,等待5个时钟报时信号过去。本例子的结果是counter0每5个时钟报时周期加1,而counter1每10个时钟报时周期加1。2使用RTX51的信号可以使用os_w
16、ait功能暂停一个任务并等待从另一个任务发出的信号或旗标。这可以用于协调两个或更多的任务,等待一个信号会系统会执行如下工作:如果一任务在等待一个信号并且信号标志是0,在这个信号被发送之前,这个任务将一直处于挂起状态;如果信号标志已经是1,当任务查询信号时,信号标志会被清除并且继续执行任务。例13-3-3信号使用示例。#includelongcounter0;/*任务0的计数器*/longcounter1;/*任务1的计数器*/longcounter2;/*任务2的计数器*/longcounter3;/*任务3的计数器*/job0()_task_0os_create_task(1);/*启动任务
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RTX51 实时 任务 操作系统
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内