欢迎您访问科普小知识本站旨在为大家提供日常生活中常见的科普小知识,以及科普文章!
您现在的位置是:首页  > 科普文章

单片机实时多任务操作系统分析

科普小知识2022-09-06 21:19:30
...

[摘要]简要介绍美国keil公司开发的应用于mcs51系列单片机的实时多任务操作系统rtx51的基本情况和使用方法;分析这个内核的任务管理和内存管理的运行机制及其对硬件的要求,给出其在软件设计中应注意的问题。

[关键词]单片机 c51 rtx51

一、概述

一般说来,单片机的应用系统中都需要同时执行很多任务,我们可以利用实时操作系统来灵活地安排系统资源。rtx51是美国keil公司开发的一种小型的面向mcs51系列单片机的实时多任务操作系统,它可以工作于8051单片机以及派生家族中,简化了复杂的软件设计,缩短了项目周期。

二、rtx51介绍

rtx51有2个模式:rtx51完全模式和最小模式。rtx51最小模式版是rtx51完全版的一个子集,可以很容易地运行在8051系统上,而不需要外部ram(dxata)。rtx51完全模式有4个任务优先级,可以和中断函数并行处理,各个任务之间通过使用“邮箱”系统来进行信号和消息的传递,可以动态地申请和释放内存;同时,可以强制一个任务停止执行,等待一个中断,或者是其它中断传来的信号量或者消息。

(一)rtx51任务

rtx51包括2类任务:快速任务和标准任务。快速任务有很快的响应速度,每个快速任务使用8051一个单独的寄存器组,并且有自己的堆栈区域。rtx51支持最大同时有3个快速任务。标准任务需要多一点的时间来进行任务切换,因此使用的内部ram相对快速任务要少,所有的标准任务共用1个寄存器组和堆栈。wWw.11665.com当任务切换的时候,当前任务的寄存器状态和堆栈内容转移到外部存储器中。rtx51支持最大16个标准任务。

(二)rtx51任务状态

(1)运行(runnign)当前正在运行的任务处于running状态,同一时间只有1个任务可以运行。(2)就绪(ready)等待运行的任务处于ready状态,在当前运行的任务退出运行状态后,就绪队列中优先级最高的任务进入到运行状态。

(3)阻塞(blocked)等待一个事件的任务处于blocked状态,如果事件发生且优先级比正在运行的任务高,此任务进入运行状态;如果优先级比正在运行的任务低,此任务进入ready状态。(4)删除(deleted)没有开始的任务处于删除状态。

(三)rtx51中断处理

rtx51完全模式提供2种方法来处理中断:一种是c51的中断函数,另一种是rtx51的中断。它又可以分为快速任务中断和标准任务中断。对于中断函数这种方法,它同时也可以在不使用rtx51的情况下使用,当中断发生的时候,程序就跳到了相应的中断函数,它和正在运行的任务是互相独立的,中断的处理是在rtx51系统之外,和任务切换规则没有关联。对于任务中断的方法,不管使用快速是标准任务来处理中断,如果中断发生,等待中断的任务就从“等待”状态进入到就绪状态,并按照任务切换规则进行切换。

(四)任务调度rtx51

包含一个事件驱动的任务调度机制,它能够按照任务的优先级进行切换,也就是抢占式多任务系统;另外还有一个可选的时间片轮转切换任务模式,在这种模式下,rtx51使用8051内部定时器t0来产生定时节拍,各任务只在各自分配的定时节拍数(时间片)内执行。当时间片用完后,切换至下一任务运行,因此,各任务是并发执行的。同级别的任务是按照时间片分别占用cpu的。rtx51任务有4个优先级:0、1、2可以分配给标准任务,优先级3是为快速任务保留的。每个任务都可以等待事件的发生,而并不增加系统的负担;任务可以等待消息、信号、中断、超时事件或者它们的组合。

(五)任务控制

为了能描述和控制任务的运行,rtx51为每个任务定义了称作任务控制块的数据结构,主要包括四项内容:任务的代码入口地址,位于code空间,2字节为一个单位。

任务所使用堆栈栈底位置,位于idata空间,1字节为一个单位。

任务的定时节拍计数器,在每一次定时节拍中断后都自减一次。

任务状态寄存器,用其各个位来表示任务所处的状态。位于idata空间,以2字节为一单位。

(六)定时器t0中断服务程序的任务

(1)rtx51使用定时器t0作为定时节拍发生器,是任务切换、时间片轮转的依据。

(2)更新各个任务节拍数:将各任务节拍数寄存器减1,如果某任务超时(state[taskid].timer=0),并且该任务正在等待超时事件,则将该任务置为“ready”状态,使其返回任务队列。

(3)检查*堆栈空间:若*堆栈空间范围小于freestack(默认为20字节)时,可以调用宏stack_error,进行堆栈出错处理。

三、rtx51应用中应注意的问题

原则讲rtx51可以应用到基于mcs51系列单片机组成的任何系统中。rtx51的优点在于软件开发周期短、效率高;由于rtx51在运行时需要占用cpu的部分硬件资源,如通常占用定时/计数器t0,且对堆栈深度要求较高,因此,在使用时应注意rtx51对硬件配置的要求。

(一)rtx51对硬件的要求

rtx51分为完全模式和最小模式,对于rtx51完全模式,要求系统要有外部ram,同时,还应合理分配cpu的硬件资源,留出定时/计数器t0作为系统多任务执行的时间片发生器;对于简单的嵌入式系统,由于通常没有外部ram,通常选择rtx51最小模式。在最小模式下,定时/计数器t0用户不能使用,而是留给系统作多任务切换的时间片发生器。

(二)合理分配任务的时间片数和任务优先级

在执行多任务时,由于各个任务处理时,需要的时间不同,任务对实时性要求不同,所以,应合理配置各个任务的时间片数,尽量使任务在规定的时间片内完成,减少任务间的消息传递,确保系统资源的使用效率。在rtx51完全模式下,应注意各个任务的优先级配置;在rtx51最小模式下,各个任务没有优先级规定,各任务只能在时间片定时器的控制下并行执行。

四、结论

在can局域网节点设计过程中,我们成功地将rtx51最小模式应用到系统之中,简化了系统的软件设计,提高了开发效率,缩短了开发周期。