嵌入式实时操作系统 ucos ii 的分析
摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个
话题。本文通过对一种源码公开的嵌入式实时操作系统 ucos ii 的分析,以 51
系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优缺点,以及在
应用中应当注意的一些问题。
关键词:实时操作系统;ucos ii;单片机
引言
早在 20 世纪 60 年代,就已经有人开始研究和开发嵌入式操作系统。但直
到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处
理的领域所曰益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈
论的往往是一些著名的商业内核,诸如 VxWorks、PSOS 等。这些商业内核性
能优越,但价格昂贵,主要用于 16 位和 32 位处理器中,针对国内大部分用户
使用的 51 系列 8 位单片机,可以选择免费的 ucos ii。
ucos ii 的特点
1.ucos ii 是由 Labrosse 先生编写的一个开放式内核,最主要的特点就
是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费
的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的
支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果
用户使用的是不太常用的单片机,还必须自己编写移植程序。
2.ucos ii 是一个占先式的内核,即已经准备就绪的高优先级任务可以剥
夺正在运行的低优先级任务的 CPU 使用权。这个特点使得它的实时性比非占先
式的内核要好。通常我们都是在中断服务程序中使高优先级任务进入就绪态
(例如发信号),这样退出中断服务程序后,将进行任务切换,高优先级任务
将被执行。拿 51 单片机为例,比较一下就可以发现这样做的好处。假如需要
用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程
序中进行复杂的数据处理,因为这会使得关中断时间过长。所以经常采用的方
法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会
检测到这一标志并转到数据处理程序中去。但是因为无法确定发生中断时程序
到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,
中断响应时间无法确定,系统的实时性不强。如果使用 μC/OS-II 的话,只要把
数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,
中断结束后数据处理程序就会被立即执行。这样可以把中断响应时间限制在一
定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。
但应该指出的是如果数据处理程序简单,这样做就未必合适。因为 ucos ii 要求
在中断服务程序末尾使用 OSINTEXIT 函数以判断是否进行任务切换,这需要
花费一定的时间。
3.ucos ii 和大家所熟知的 Linux 等分时操作系统不同,它不支持时间片
轮转法。ucos ii 是一个基于优先级的实时操作系统,每个任务的优先级必须不
同,分析它的源码会发现,ucos ii 把任务的优先级当做任务的标识来使用,如
果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到
CPU 的使用权,只有等它交出 CPU 的使用权后,其他任务才可以被执行。所
以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。
评论0
最新资源