这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 嵌入式实时操作系统ucos-ii是什么?

共1条 1/1 1 跳转至

嵌入式实时操作系统ucos-ii是什么?

助工
2017-07-04 15:39:54     打赏

对于嵌入式实时操作系统嵌入式实时操作系统ucos-ii你知道有那哪些吗?

uCOS II

是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开。这一点对于用户来说可谓利弊各半,好处在于,一方面它是免费的,另一方面用户可以根据自己的需要对它进行修改。缺点在于它缺乏必要的支持,没有功能强大的软件包,用户通常需要自己编写驱动程序,特别是如果用户使用的是不太常用的单片机,还必须自己编写移植程序。

uCOS II

是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。通常我们都是在中断服务 程序中使高优先级任务进入就绪态(例如发信号),这样退出中断服务程序后,将进行任务切换,高优先级任务将被执行。拿51单片机为例,比较一下就可以发现这样做的好处。假如需要用中断方式 采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,

因为这会使得关中断时间过长。所以经常采用的方法是置一标志位,然后退出中断。由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数据处理程序中去。 但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行, 中断响应时间无法确定, 系统的实时性不强。

如果使用μC/OS-II 的话,只要把数据处理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中断结束后数据处理程序就会被立即执行,这样可以把中断响应时间限制在一定的范围内。对于一些对中断响应时间有严格要求的系统,这是必不可少的。但应该指出的如果数据处理程序简单,这样做就未必合适。因为 uCOS II,要求在中断服务程序末尾使用OSINTEXIT 函数以判断是否进行任务切换,这需要花费一定的时间。

uCOS II

和大家所熟知的 Linux等分时操作系统不同,它 不支持时间片轮转法。

uCOS II是一个基于优先级的实时操作系统,每个任务的优先级必须不同,分析它的源码会发现,uCOS II把任务的优先级当做任务的标识来使用,如果优先级相同,任务将无法区分。进入就绪态的优先级最高的任务首先得到CPU的使用权,只有等它交出CPU的使用权后,其他任务才可以被执行。所以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]