第10章RTX51实时操作系统ppt课件

上传人:春*** 文档编号:244721735 上传时间:2024-10-05 格式:PPT 页数:47 大小:266.54KB
返回 下载 相关 举报
第10章RTX51实时操作系统ppt课件_第1页
第1页 / 共47页
第10章RTX51实时操作系统ppt课件_第2页
第2页 / 共47页
第10章RTX51实时操作系统ppt课件_第3页
第3页 / 共47页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,10,章,RTX51,实时操作系统,主要内容,操作系统基本概念,RTX51系统特点,RTX51的程序结构,RTX51,的功能函数,RTX51,的任务调度,RTX51,的系统配置,RTX51,的应用举例,10.1,操作系统基本概念,10.1.1,前后台系统,前后台系统的组成:前台和后台程序,后台:,是一个无限循环的应用程序,循环中调用相应的任务函数完成相应的操作,各个任务依次运行,没有调度,运行的次序不能改变。,前台:,是中断服务程序,处理异步事件。,适用情形:,一般不复杂且实时性要求不高的小系统很适合采用前后台系统,例如微波炉、电话机、玩具等。,在另外一些基于省电的应用中,由于平时微处理器处在停机状态,所有的事都靠中断服务来完成,因此也常常采用前后台系统模式。,10.1.2,操作系统,操作系统(,Operating System,,简称,OS,)是计算机中最基本的程序。操作系统负责计算机系统中全部软、硬资源的分配以及回收、控制与协调等并发的活动;操作系统提供用户接口,使用户获得良好的工作环境;操作系统为用户扩展新的系统功能提供软件平台。,操作系统的,主要包括四大,功能:,处理机管理:解决,CPU,的分时复用。,存储管理:配合,CPU,调度内存。,设备管理:分配外设的使用,包括独享、共享和虚拟。,软件资源管理:解决程序和信息的存取和管理等问题。,实时操作系统(,RTOS,)是指当外界事件或数据产生时,能够接受并以,足够快的速度,予以处理,其处理的结果又能在,规定的时间,之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。,用户的应用程序是运行于,RTOS,之上的各个任务,,RTOS,根据各个任务的要求,进行资源(包括存储器、外设等)管理、消息管理、任务调度和异常处理等工作。,实时多任务操作系统,以分时方式运行多个任务,看上去好像是多个任务,“,同时,”,运行。任务之间的切换应当以优先级为根据,只有具有,优先服务方式,的,RTOS,才是真正的实时操作系统,而时间分片方式和协作方式的,RTOS,并不是真正的,“,实时,”,。,10.1.3,实时操作系统,10.1.4,临界区,临界资源:任何时候都只允许一个任务访问的资源。,临界区或临界段:用于访问临界资源的代码段。,临界代码段,不允许多个并发任务交叉执行,,否则会产生严重后果,比如进入中断后的现场保护代码等。,为确保临界区代码的安全执行,在进入临界区之前要关中断,而临界区代码执行完以后要立即开中断,程序运行时可使用的软、硬件环境统称为资源。资源可以是输入,/,输出设备,例如打印机、键盘和显示器;资源也可以是一个变量、一个结构或一个数组等。,共享资源就是指可以被一个以上任务使用的资源。为防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫,互斥,。,10.1.5,资源与共享资源,任务,也称为线程,是一个简单的程序。一般地,每个任务都是一个无限的循环。,任务有五种状态:休眠态、就绪态、运行态、挂起态(等待某一事件发生)和被中断态。任何时刻,一个任务都处于这五种状态之一的状态下。,休眠态,相当于该任务驻留在内存中,但并不被多任务内核所调度。,就绪态,意味着该任务已经准备好,可以运行了,,但由于该任务的优先级比正在运行的任务的优先级低,还暂不能运行,。,运行态,的任务是指该任务掌握了,CPU,的控制权,正在运行。,挂起态,指该任务在等待,等待某一事件的发生。,被中断状态,是指,发生中断时,,CPU,提供相应的中断服务,原来正在运行的任务暂不能运行,就进入了被中断状态。,10.1.6,任务,10.1.7,内核与任务切换,内核,内核是操作系统最基本的部分。多任务系统中,内核负责管理各个任务,或者说为每个任务分配,CPU,时间,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。内核负责任务之间的通信,它提供的基本服务是任务切换。,任务切换,当多任务内核决定运行另外的任务时,保存正在运行任务的当前状态,即保存,CPU,寄存器中的全部内容。这些内容保存在任务的当前状态保存区,也就是任务自己的栈区之中。入栈工作完成以后,就把下一个将要运行的任务的当前状态从任务的栈中重新装入,CPU,的寄存器,并开始下一个任务的运行。这个过程就称为任务切换。,多任务切换示意图,调度是内核的主要职责之一,调度就是决定该轮到哪个任务运行了。任务的调度方式有基于时间片轮转的调度和基于优先级的调度。多数实时系统是基于优先级调度法的。基于优先级的调度法指,CPU,总是让处于就绪态的优先级最高的任务先运行。至于何时让高优先级任务掌握,CPU,的使用权,有两种不同的情况。,占先式调度;非占先式调度。,10.1.8,调度,占先式调度,任何时候具有最高优先级且已就绪的任务先执行。一个正在执行的任务放弃处理器的条件为:自愿放弃处理器(等待资源或执行完毕);有高优先级任务启动,该高优先级任务将抢占其执行。当一个运行着的任务使一个比它优先级更高的任务进入了就绪状态时,当前任务的,CPU,使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了,CPU,的控制权。如果是中断服务子程序是一个高优先级的任务进入了就绪态,则中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。,占先式调度的优点是实时性好、反应快,调度算法相对简单,可优先保证高优先级任务的时间约束,其缺点是,上下文切换多,。,非占先式调度,非占先式调度要求每个任务自我放弃,CPU,的所有权。这种方式下,异步事件还是由中断服务来处理。中断服务可以使一个高优先级的任务由挂起状态变为就绪状态,但中断服务以后控制权还是回到原来被中断了的那个任务,直到该任务主动放弃,CPU,的使用权时,那个高优先级的任务才能获得,CPU,的使用权。,非占先式调度的优点是上下文切换少,几乎不需要使用信号量保护共享数据;缺点是处理器有效资源利用率低,任务级响应时间不确定,可调度性不好。,10.1.9,函数的可重入性,可重入,(Reentrant),型函数:是指可以被多个任务并发使用,而数据不会遭到破坏的函数。,可重入型函数特征:,只使用局部变量,变量保存在,CPU,寄存器或堆栈中,可以在任意时刻被中断,再重新恢复运行时,数据不会被破坏;,若使用全局变量,则需满足互斥条件。,可重入型函数实例,void func1(int* x,int,* y) ,int,temp,;,temp= *x,;*,x = *y,;*,y = temp,;,不可重入型函数清单,static,int,temp,;,void func2(int* x,int,* y) temp = *x,;*,x = *y,;*,y = temp,;,不可重入型函数运行示意图,使用以下技术之一可使函数,func2(),具有可重入性:,(1),将,temp,定义为局部变量;,(2),在调用前,禁止中断,执行完毕后再开中断;,(3),在调用过程中,应用信号量独占使用该函数。,10.1.10,信号量,信号量,信号与信号量在英文中都是同一个词,Semaphore,,并不加以区别。是一种通信机制。主要用来实现任务间同步以及标识某类资源的可用个数。,两种类型:, 只取,0,和,1,两个值的,二值,(Binary),信号量,,这种信号量也称为信号;, 由若干位组合而成的,计数式,(Counting),信号量,,一般有,8,位、,16,位或者,32,位等若干种,具体是多少位取决于内核。,作用:, 满足互斥条件,实现共享资源的独占使用;, 标志某事件的发生;, 使两个任务的行为同步。,(,1),初始化信号量,也可称为建立,(CREATE),信号量,。信号量初始化时,要给信号量赋初值,等待信号量的任务列表应清空。,(2),等信号或申请信号量,可称做挂起,(PEND),。对于执行等待信号量的任务来说,若该信号量有效,则信号量值减,1,,任务继续执行;若信号量值为,0,,则任务继续被挂起。若内核允许定义等待超时,则超时后,该任务转入就绪,同时返回错误代码以示发生了超时错误。,(3),给信号,可称做发信号,(POST),。若没有任务等待该信号量,则信号量的值仅简单加,1,;若只有一个任务等待该信号量,则该任务转入就绪状态,信号量的值不加,1,;若有多个任务等待信号量,至于谁先得到信号量,那就要看内核是如何调度的了。一般有两种可能:一是按优先级原则,等待信号量的任务中优先级最高的先得到;二是按先进先出的原则,最早开始等待信号量的那个任务先得到。,工作原理,所谓死锁,是指各并发任务彼此等待对方所拥有的资源,且这些并发任务在得到对方的资源之前不会释放自己所拥有的资源,从而造成大家都想得到资源而又都得不到资源,各并发任务不能继续向前推进的状态。,最简单的防止死锁发生的方法有两种:,1.,让每个任务先得到全部需要的资源,再进行下一步工作。,2.,让每个任务用同样的顺序去申请多个资源,释放资源时使用相反的顺序。,10.1.11,死锁,10.1.12,消息队列,消息用于两个任务之间的通信,消息队列是保存消息的容器。通过内核提供的服务,任务或中断服务子程序可以将一个消息放入消息队列。同样,一个或多个任务可以通过内核服务从消息队列中得到消息。,通常,先进入消息队列的消息先给任务,遵循先进先出原则(,FIFO,)。,内核提供的典型消息队列服务如下:,1.,消息队列初始化,队列初始化时总是清为空;,2.,放一则消息到队列中去(,POST,);,3.,等待一则消息的到来(,PEND,);,4.,无等待取得消息。如果队列中有消息则任务可以取得消息,消息从队列中取走;但如果此时队列为空,则内核不将该任务挂起,只是用特别的返回代码通知调用者,队列中没有消息。,中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到以下部分:,1.,在前后台系统中,程序回到后台程序;,2.,对非占先式内核而言,程序回到被中断了的任务;,3.,对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。,10.1.13,中断,时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。中断之间的时间间隔取决于不同应用,是机器周期的一个整数倍,一般为,10,200ms,,视系统的复杂性和对实时性的要求而定。内核对,任务的切换和延时,等操作都是基于时钟节拍的。时钟节拍的频率越快,系统的额外开销就越大。,10.1.14,时钟节拍,RTX51,是一款小巧的针对基于,8051,系列嵌入式系统的多任务实时操作系统。它的使用可以简化比较复杂、有严格时间限制的软件的设计过程。,RTX51,主要有两个不同的可用版本:,RTX5lFull,标准版,,既可以以循环(,Round,一,Robin,),方式执行任务,也可以按,4,级任务优先级的方式切换不同优先级的任务。,标准版以并行方式工作,支持中断管理,信号和消息可以通过邮箱系统在不同任务之间传递。,RTX5lTiny,精简版,,是其标准版的一个子集。它可以很容易地运行在,8051,的单芯片系统而不需要任何外部数据存储器。通用性强,系统需求低,但功能上受到限制。,它只支持循环方式和信号方式的任务切换,而不支持优先级方式的任务切换。,KEIL C,中自带了,RTX5lTiny,,以下只讲解,RTX5lTiny,的内容,出现,RTX51,的地方默认为其精简版,RTX51Tiny,。,10.2 RTX51,系统特点,RTX51,可以在所有的,8051,系列芯片上运行。用户只需要用标准的,C,语言编写,RTX51,程序,然后用,C51,编译器编译即可生成代码。,RTX51,程序设计需要包含实时运行头文件和必要的库文件,并且要用,BL51,连接定位器来实现连接。,在,Keil,中,你只需要在目标选项的,Target,标签中的,Operating,中选择,RTX-51 Tiny,,,在你的头文件中加上,#include ,即可。,在,RTX51 TINY,环境下生成代码,需要用到下列工具:,C51,编译器,BL51,连接,/,定位器,A51,宏汇编器,此外,库文件,RTX51TNY.LIB,必须存放在环境变量,C51LIB,所指定的路径下。,RTX51 Tiny,版可以运行在,8051,的单芯片嵌入式系统上,且不需要任何外部数据存储器,但也不排斥应用程序访问外部的数据存储器。,RTX51 Tiny,版本可以使用,C51,所支持的所有存储模式。所使用的存储模式只影响应用对象的存储位置。,RTX51 Tiny,的系统变量和应用程序的堆栈区总是存储在,8051,的片内,RAM,中(即,DATA,和,IDATA,)。,典型的,RTX51 Tiny,应用程序一般运行于,SMALL,存储模式下。,RTX51 Tiny,版本使用了,8051,的定时器,0,和定时器,0,的中断信号。,SFR,中的全局中断允许位或定时器,0,中断屏蔽位都可能使,RTX51 Tiny,停止运行。因此,除非有特殊的应用目的,应该使定时器,0,的中断始终开启,以保证,RTX51 Tiny,的正常运行。,实时操作系统的性能参数对嵌入式系统的应用开发也有着直接影响,,RTX51,的性能参数如下表所示。,描述,RTX51 TINY,版本,任务数,16,RAM,需求,7 Byte data, 3(,任务数,) Byte,idata,代码要求,900 Byte,硬件要求,定时器,0,系统时钟,100,65535,周期,中断响应时间,20,周期,任务切换时间,100,700,周期依赖于堆栈装载,10.3 RTX51,的程序结构,RTX51Tiny,通过循环(,Round-Robin,),方式来实现多任务,以达到多个无限循环或任务的准并行执行。这里的多任务并不是真正同时执行的,而是使用不同的时间片来执行,即只是宏观上的同时执行。它将可用的,CPU,周期分成多个时间片,由,RTX51,把这些时间片分配给每一个任务使用。每个任务只能在预定的时间片里运行。然后,,RTX51,再切换到另一个己经准备就绪的任务,让它再执行一定的时间片。,时间片一般是比较短促的,一个时间片大约只有毫秒级时间。正是由于这个原因,在用户看来,多个任务似乎是在同时执行的。,RTX51,利用了一个由,8051,定时器中断信号驱动的定时程序来实现控制。定时器产生的周期性中断信号用来驱动,RTX51,的定时节拍。,RTX51,与用户程序中的,main,函数是无关的。用户程序中即使没有,main,程序,,操作系统也会自动从设定的任务,0,开始执行,。如果用户程序中已经有了,main,函数,就必须用人工方式来启动,RTX51,。,这对于,RTX51 Tiny,版,可以调用,os_create_task,函数来完成,.,例:,使用,RTX51,的,Round-Robin,任务方式实现两个任务的调度执行。程序中的两个任务都是简单的计数循环。,#include ,int,counter0;,int,counter1;,void job0(void) _task_ 0,os_create_task(1);,/*,任务,l,己准备就绪*,/,while (1),/*,无限循环*,/,counter0+;,/*,更新计数值,counter0*/,void job1(void) _task_ 1,while(1),/*,无限循环*,/,counter1+;,/*,更新计数值,counter1*/,10.4 RTX51,的功能函数,RTX51,精简版支持的功能函数表,函数,描述,执行周期数,os_create_task,将任务移入执行队列,302,os_delete_task,执行队列中移去某任务,172,os_send_signal,发送一信号到某任务,(从某任务调用),408,(任务切换),316,(快速任务切换),71,(不含任务切换),os_clear_signal,删除一发送信号,57,isr_send_signal,发送一信号到某任务,(从中断调用),46,os_running_task_id,返回当前执行的任务号,os_wait,等待某事件,68,(对未就绪信号),160,(对未就绪消息),os_wait1,等待某事件,os_wait2,等待某事件,10.4.1,信号控制函数,isr_send_signal,函数原型,char,isr_send_signal(unsigned,char task_id);,功能说明,发送一个信号到,task_id,说明的任务。如果此任务已在等待一个信号,那么调用函数将使此任务就绪,准备执行。否则,信号将存储在此任务的信号标志中。此函数只能从中断函数中调用。,返 回 值,如果执行成功,此函数返回,0,值;如果所指定的任务不存在,则返回,-1,。,os_clear_signal,函数原型,char,os_clear_signal(unsigned,char task_id);,功能说明,清除由,task_id,说明的任务的信号,返 回 值,如果信号清除成功,此函数返回,0,值;如果所指定的任务不存在,则返回,-1,os_send_signal,函数原型,char,os_send_signal(unsigned,char task_id);,功能说明,发送一个信号到,task_id,说明的任务。如果此任务已在等待一个信号,那么调用函数将使此任务就绪,准备执行。否则,信号将存储在此任务的信号标志中。此函数只能在任务函数中调用,返 回 值,如果执行成功,此函数返回,0,值;如果所指定的任务不存在,则返回,-1,10.4.2,任务控制函数,os_create_task,函数原型,char,os_create_task(unsigned,char task_id);,功能说明,启动已定义的由,task_id,说明的任务。此任务根据,RTX51,运行规则,标记为就绪,并准备执行。,返 回 值,如果任务成功启动,此函数返回,0,值;如果没有,task_id,说明的任务,则返回,-1,os_delete_task,函数原型,char,os_delete_task(unsigned,char task_id);,功能说明,停止,task_id,说明的任务,此任务将从任务表中删除。,返 回 值,如果任务成功启动,此函数返回,0,值;如果没有,task_id,说明的任务,则返回,-1,。,os_running_task_id,函数原型,char,os_running_task_id(unsigned,char task_id);,功能说明,判断当前执行任务的编号,返 回 值,返回当前正在执行的任务的编号,返回值为,0,15,。,10.4.3,延时控制函数,os_wait,函数原型,char,os_wait,( unsigned char,event_sel,/*,将要等待的事件*,/,unsigned char,tisks,/*,将要等待的定时器时标数*,/,unsigned char dummy );,/*,未用参数*,/,功能说明,停止当前执行的任务,并等待一个或多个事件,如时间间隔、超时、从另一个任务或中断发出的信号等。参数,event_sel,说明所等待的一个事件或几个事件的组合。事件种类如下表所示。,事件,描述,K_IVL,定时器溢出,K_SIG,收到信号,K_TMO,时间片超时,RTX51,的事件类别,os_wait,函数的返回值表,os_wait1,函数原型,char os_wait1(unsigned char,event_sel,);,功能说明,暂停当前任务,等待一个事件的发生。它是,os_wait,函数的一个子集,不接受针对,os_wait,函数提供的全部事件。参数,event_sel,指定了等待的事件,它只能是,K_SIG,。,返 回 值,当信号事件发生时,任务就被允许执行,任务的执行将恢复。返回用于识别事件、使任务重新启动的常量。,返回值,描述,SIG_EVENT,信号被接收,TMO_EVENT,发生超时或事件间隔已过,NOT_OK,event_sel,的值非法,os_wait2,函数原型,char os_wait2( unsigned char,event_sel,/*,将要等待的事件*,/,unsigned char,tisks,);,/*,将要等待的定时器时标数*,/,功能说明,与,os_wait,相同,但是不需要,dummy,参数。,返 回 值,与,os_wait,相同,10.5 RTX51,的任务调度,RTX51,利用任务状态来管理各个任务。用户为,RTX51,定义的每个任务都会以各种状态的某一种来运行。,RTX51,内核为每个任务保留了适当的状态如下表所示。,RTX51,的任务状态表,状态,描述,Running,运行状态,当前正在执行的任务,在任一时刻只能有一个任务处于运行状态,Ready,就绪状态,等待执行的任务,当前任务执行完后,接着执行就绪状态任务,Waiting,等待状态,等待某一事件的任务,如事件发生,任务进入就绪状态,Deleted,删除状态,没有启动的任务,Time-out,超时状态,与就绪状态相似,放在,round-robin,中尚未执行的任务,RTX51,以,round-robin,多任务方式执行程序,它支持多个无限循环或任务的,准并行执行,。任务不是被同时执行,而是以,分时的方式轮片执行,。可用的,CPU,时钟周期被分成多个时间片,然后由,RTX51,将这些时间片分配给各个任务。每个任务只允许在预定的时间片中执行,时间片用完时,,RTX51,就切换至另一个就绪的任务,继续执行一段时间。时间片的具体长度可以用配置函数,TIMESHARING,来定义。,如果遇到因为一个任务处于等待并且占用了时间片而暂时无法往下执行,可以调用系统函数,os_wait,来通知,RTX51,,,以便将当前的,任务挂起,而提前执行另一任务。,RTX51,中处理任务分配的模块称为调度程序(,Scheduler,)。,调度程序驱动哪个任务运行是按照以下的规则进行的:,(,1,)如果发生以下情况时,当前运行的任务将被中断:,调用,os_wait,函数,而所等待的事件未来到;,任务的执行时间已经超过所定义的,Round-Robin,循环时间间隔,(,2,)如果发生以下情况时,另一个任务将被启动:,已没有正在执行的任务;,将要执行的任务处在就绪状态或超时状态。,10.6 RTX51,的系统配置,编写,RTX51,程序需要包含,RTX51TNY.H,文件。在程序中,需要用一个关键字“,_task_”,来声明一个函数的任务属性。,RTX51,程序不需要,main,函数。在进行连接处理时,会将,启动任务,0,的执行所需要的代码连接进来,作为开始执行的代码。,用户可以更改配置文件,CONF_TNY.A51,中的以下几个参数:, 系统定时器中断所用的寄存器组,系统定时器的时间间隔,Round-Robin,的超时(,time-out,),值,内部数据存储器的大小,RTX5l,启动后的自由堆栈大小,以下是配置文件的部分内容:,;RTX51,的硬件定时器,;,用下面的,EQU,可预置,RTX51,的定时器时间常数,;,用,8051,定时器,0,作为控制软件的定时器,;,定义定时器中断用的寄存器组,INT_REGBANK EQU 1,;,默认为寄存器,1,组,;,定义,8051,定时器,0,溢出所需的机器周期数,INT_CLOCK EQU 10000,;,默认周期数为,10000,;,定义,Round-Robin,的,Timeout,所需的定时器溢出数,TIMESHARINGEQU 5,;,默认为,5,次,;,注意:,Round-Robin,任务切换可用,TIMESHARING,为,0,来屏蔽,;RTX51,堆栈空间,;,以下的,EQU,语句定义了堆栈区的片内,RAM,体积和最小自由堆栈空间,;定义了堆栈空间耗尽后所执行的宏代码,;定义最大的堆栈,RAM,地址,RAMTOP EQU 0FFH,;默认地址是,255,;,定义最小的堆栈自由空间,FREE_STACK EQU 20,;默认为,20,字节堆栈自由空间,;,;发生堆栈用尽时的执行代码,STACK_ERROR MACRO,CLR EA,;,关闭所有中断,SJMP $,;,如堆栈空间耗尽,进入死循环,ENDM,在这个配置文件中,定义了许多可以修改的参数,以适应用户特定的应用程序环境。这些参数的说明详见下表。,配置文件参数说明,参数,描述,INT_REGBANK,说明,RTX51,系统所用的寄存器组,INT_CLOCK,定义系统时间间隔,系统用这个间隔产生一个中断信号,,定义的数据是指每次中断发生所需的,CPU,周期数,TIMESHARING,定义,Round-Robin,任务切换的超时间隔(,time-out,),,它是定时器溢出中断次数,发生指定次数中断后切换任务。,如果是,0,,则多任务,Round-Robin,机制被屏蔽,RAMTOP,说明,8051,片内,RAM,的最大地址,,8051,为,7FH,,,8052,为,0FFH,FREE_STACK,定义任务切换的堆栈自由空间体积字节数。,RTX51,会检验堆栈体积是否合理。,如太小,引用,STACK_ERROR,宏,STACK_ERROR,当,RTX51,检测到堆栈出错时执行的宏,,可以根据应用程序需求更换这个宏,10.7,RTX51,的应用举例,采用,RTX51,实现的简单的交通灯控制,交通灯控制过程如下:,绿灯亮,车通行;,绿灯保持,10,秒后,闪烁,3,秒转亮黄灯,3,秒;,黄灯灭后,红灯亮,10,秒,人通行;,然后又亮绿灯,周而复始。,为方便学习调试,这里采用串口输出不同的文本串来指示绿灯亮、绿灯闪烁(文本串闪烁)、黄灯亮、红灯亮,4,种状态。,应用演示,C:Documents and SettingsAll Users,桌面,Keil,uVision2.lnk,小结,本章介绍了,RTX51Tiny,版的使用。,RTX51,是一款适合做,8051,嵌入式系统平台的实时操作系统。,RTX51,专门针对,51,设计,小巧紧凑,代码开放。很多应用证明这是一个成功的,8,位单片机的,RTOS,。,但是在应用过程中应该注意它的使用场合。比如说,开发一个某家电的红外遥控器,可以用,8051,实现,但没必要加入个,RTOS,,,为其编写个专用的监控程序就可以了。此外,由于,RTX51,是一个多任务的操作系统,所有在它的框架下所使用的函数一般都要求有,可重入性,。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!