时间片轮转调度在微控制器C8051F020中的实现及应用
在微机控制领域中,多数系统是实时控制系统。实时的含义是对随机发生的外部事件做出及时的响应并对其进行处理。为了更好地完成实时数据的采集、处理、存储和相应的多种实时控制操作,必须同时考虑到实时性和多任务并行性这2个因素。既要保证系统以足够快的速度对外部事件进行响应并处理,又能在宏观上并行执行多个任务。实时多任务系统依靠适当的任务调度方法来决定在系统中哪个任务可以获得CPU和其他系统资源,哪个任务暂时退出运行状态,从而达到实时处理多任务的目的。时间片轮转算法是实现多任务调度的常用算法。在这种算法中,如果将某个时间片分配给某个任务,那么在此时间片内,这个任务获得CPU并运行,然后在下个时间片到来时又将CPU分配给另一个任务。这样,并发任务在微观上交替运行,而在宏观上并行执行。
1实时多任务机制的实现
实时控制系统中允许多个实时任务并行执行,在一些测控系统中有数据采集、端口检测、模拟量输出、开关量输出数据处理和存储等多种任务。在单片机中,要达到这样的效果:在微观上,某一时刻只能运行一个任务,但在宏观上这些任务是同时运行的。
实时任务通过分时处理实现,相当于操作系统中的进程。每个任务有3种状态,即运行状态、就绪状态和等待状态,某个任务一旦建立后即处于这3种状态之一。处于运行状态的任务独占CPU 和其他一些资源;就绪状态是该任务已获得了除处理机以外的一切所需资源,运行条件满足,只因为缺少CPU而不能运行;等待状态是一个任务在等待某个事件(如其他任务的信息,等待某系统资源等)的发生而暂时停止执行。通过有效的任务调度来完成3个状态的转变。在实时多任务系统中任务调度算法的优劣直接关系到系统的实时性与并行性。
时间片轮转法是根据某一时间片的切换轮流地调度所有就绪任务的方法:将CPU 的运行时间划分为许多小的时间片,由调度程序按一定顺序分配给不同任务,每个任务分别在自己的时间片内访问CPU,中断实现系统对外界信息的实时响应,同时担当时间片切换的驱动力。考虑到不同任务的实时性要求不同,不能统一划分,我们采取以最小时间片为基准,其他时间片是他的倍数,这样就提高了系统的资源利用率。
在这种调度算法中,时间片的选择很重要,通常要考虑所要完成任务的数目、各任务的不同实时性要求、系统的处理能力等因素。
2时间片轮转调度在火车闸片摩擦系数测试系统中的应用
2.1系统分析
要模拟火车刹车的过程,完成对火车闸片的摩擦系数的测试,需实现以下几个步骤:
(1)用模拟输出端口输出0~10 V电压作为变频器的频率设定值,使变频器控制电机按升速时间将车轮转速逐步提升,按升速时间达到设定速度。
(2)据设定气压和实际气压的比较决定应该排气还是进气,并执行相应的打开/关闭进气阀或出气阀的操作,使气压达到设定值。在未测试前要不断检测气压状态,保持气压的稳定。
(3)测试按钮按下时,打开加压阀,开始刹车。由于要模拟火车的刹车惯量,电机不能立即停止,因此在加压的同时,要使变频器控制电机逐步减速。系统按降速时间降到0,在这个减速刹车的过程中,同时记录从测力传感器采集并平滑后的数据放入指定变量区。
既要保证任务的实时响应,又要实现多任务在宏观上的同时进行,我们采用时间片轮转调度算法,且根据不同任务的不同实时性要求, 以最小时间片为基准,划分不同时间片。该测试系统要实现数据采集,模拟量输出,开关量输出/读入等操作,这些操作对应的具体任务及其实时性要求如表1所示。
实时性要求相同的任务,为同一级别,用状态变量来区分任务是处于就绪状态,还是等待状态,从而决定是否分配时间片。
2.2时间片的选定
在时间片轮转算法中,时间片的大小对系统性能有很大影响。如果时间片太大,大到每个任务都能在该时间片内执行完毕,则时间片轮转调度算法就失去意义,而且可能耽 误一些实时性较强的任务;时间片过小,会使一些任务来不及响应。由上面的分析,可以看出在这个测试系统中,所要选择的基准时间片为1 ms,其他的时间片为他的倍数。
3软件设计与实现
3.1软件设计
每个子任务时间片的划分由系统时钟定时完成,系统调度程序将他分给各个子任务。系统用其内带的定时器来完成这一工作,定时频率设计为各子任务要求执行频率的整数倍。
使用CYGNAL公司的C8051F020微控制器,系统时钟选择f=11.059 2 MHz;采用定时器中断和记数来实现时间片:
主要测试任务的实时要求为10 ms,将10 ms划分为10块,一个任务执行时间为1 ms,那么每隔10 ms,一个特定任务就会调度一次,且在这10 ms
实现 应用 C8051F020 控制器 轮转 调度 时间 相关文章:
- 3DES算法的FPGA高速实现(06-21)
- 基于DSP的Max-Log-MAP算法实现与优化(05-27)
- DSP中DMA操作的无阻塞请求实现(06-18)
- 二维DCT编码的DSP实现与优化(09-08)
- 基于DSP处理器上并行实现ATR算法(01-29)
- 基于DSP的H.324终端设计(05-27)