问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

嵌入式实时操作系统ucos-ii怎么样

发布网友 发布时间:2022-04-27 04:40

我来回答

1个回答

热心网友 时间:2022-06-26 09:02

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的使用权后,其他任务才可以被执行。所以它只能说是多任务,不能说是多进程,至少不是我们所熟悉的那种多进程。显而易见,如果只考虑实时性,它当然比分时系统好,它可以保证重要任务总是优先占有CPU。但是在系统中,重要任务毕竟是有限的,这就使得划分其他任务的优先权变成了一个让人费神的问题。另外,有些任务交替执行反而对用户更有利。例如,用单片机控制两小块显示屏时,无论是编程者还是使用者肯定希望它们同时工作,而不是显示完一块显示屏的信息以后再显示另一块显示屏的信息。这时候,要是ucos ii即支持优先级法又支持时间片更加合适。

4.ucos ii对共享资源提供了保护机制。正如上文所提到的,ucos ii是一个支持多任务的操作系统。一个完整的程序可以划分成几个任务,不同的任务执行不同的功能。这样,一个任务就相当于模块化设计中的一个子模块。在任务中添加代码时,只要不是共享资源就不必担心互相之间有影响。而对于共享资源(比如串口),ucos ii也提供了很好的解决办法。一般情况下使用的是信号量的方法。简单地说,先创建一个信号量并对它进行初始化。当一个任务需要使用一个共享资源时,它必须先申请得到这个信号量,而一旦得到了此信号量,那就只有等使用完了该资源,信号量才会被释放。在这个过程中即使有优先权更高的任务进入了就绪态,因为无法得到此信号量,也不能使用该资源。这个特点的好处显而易见,例如当显示屏正在显示信息的时候,外部产生了一个中断,而在中断服务程序中需要显示屏显示其他信息。这样,退出中断服务程序后,原有的信息就可能被破坏了。而在μC/OS-II中采用信号量的方法时,只有显示屏把原有信息显示完毕后才可以显示新信息,从而可以避免这个现象。不过,采用这种方法是以牺牲系统的实时性为代价的。如果显示原有信息需要耗费大量时间,系统只好等待。从结果上看,等于延长了中断响应时间,这对于未显示信息是报警信息的情况,无疑是致命的。发生这种情况,在μC/OS-II中称为优先级反转,就是高优先级任务必须等待低优先级任务的完成。在上述情况下,在两个任务之间发生优先级反转是无法避免的。所以在使用ucos ii时,必须对所开发的系统了解清楚,才能决定对于某种共享资源是否使用信号量。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...啊?我从嘴里吐出去是直的算过肺了吗?我不会从鼻子里出去_百度... 恶心呕吐是什么? 高考数学大题应注意哪些问题呢? 高考数学可不可以用高等数学啊 高考数学 基础知识点 常见考查方式 高考数学考什么内容 一般纳税人如何交所得税 以前的QQ忘记密码了那时候不要了就不找回密码了,现在想找回来,但是又没... 常州机场坐飞机流程 常州机场大巴时刻表 ...我早上九点起飞的飞机, 然后我这的机场快线大巴到机场时70分钟,_百 ... pycharm已经安装了django并成功新建了django项目,新建第二个django项... ucosii源代码是用什么语言写的 PyCharm 创建新项目的时候 project interpreter该选哪个? 在arm9上移植ucosii ,中断级任务切换时,如何处理不同的arm模式对应不同... 问ucos ii的问题 我使用任哲那本书学习的,已经大概了解的该系统,想实现书上的例子,不知道用该怎么编译 哪位有stm32f407的ucosii2.86的源码例程 如何利用pycharm建立一个程序分别定义三个类:triangle,rectangle,circl_百度问一问 嵌入式ucos2 是软件? 还是一段源代码 拷到keil里面就是了。 老师让自己回去看。。一点头绪都没有。。。 pycharm创建项目为何有两个路径,能选一样的吗? 移植ucos_ii 时发现ucosii.h这么多错误,哪位高人能说说这是怎么回事啊 用pycharm创建一个python工程之后怎么设置main 和各种class 求ucos ii 2.91源代码 《嵌入式实时操作系统uCOS-II》邵贝贝(第二版) 这本书的源码 谁有ucos ii的源代码,给我发一份,不胜感激! 2020年中旬有什么好一点的网络游戏推荐一下!~ 求ucos ii v2.52 源代码 ucos-ii源码怎么官方下载 2020 6 1关闭所有的腾讯游戏是真的吗? 中国目前永久免费的网络游戏都有什么? 企业年金管理费怎么收取? ucos-ii 移植问题 ucos ii是什么啊? pycharm 怎么自动创建python头文件? uCOS-II到底如何入门? 如何把UCos-ii ucos-ii 2.52是什么? 奥运会A标B标是什么意思? 2015福特福克斯车出现a标志是什么意思 女生没a标是什么意思啊 A标签是什么意思 顺丰快递A标是什么件? 牛栏山A标什么意思 顺丰快递单业务类型A标是什么意思 迈腾车内A标志是什么意思 游泳a标b标什么意思 长城干红窖藏葡萄酒系列现在有几种?还有A标和B标都是些什么意思? 男孩的小名叫什么好听点啊,请大家帮忙想想? 400电话靓号那里办理比较好? 什么样的号码算是靓号 手机靓号选移动还是联通的号码好,用哪间公司好