当前位置:首页 > 安全管理
【亚博APP手机版】ucosii嵌入式操作系统的分析和移植
时间:2021-07-07 来源:亚博APP 浏览量 26631 次
本文摘要:ucosii的特性  1.ucosii是由Labrosse老先生编写的一个敞开式核心,最关键的特性便是源代码公布发布。

ucosii的特性  1.ucosii是由Labrosse老先生编写的一个敞开式核心,最关键的特性便是源代码公布发布。这一点针对客户而言称得上利与弊参半,好处取决于,一方面它是完全免费的,另一方面客户能够依据自身的务必对它进行修改。缺陷取决于它缺乏适度的抵制,没功能齐全的程序包,客户一般来说务必自身编写驱动器程序,尤其是假如客户用于的是但是于常见的单片机设计,还必不可少自身编写重置程序。  2.ucosii是一个潘顿式的核心,即早就就绪的高优先每日任务能够褫夺已经经营的低优先级队列每日任务的CPU所有权。

这一特性促使它的实用性比非潘顿式的核心好些。一般来说我们是在中断服务项目程序使得高优先每日任务转到就绪态(比如发出信号),那样散伙中断服务项目程序后,将进行每日任务变换,低优先级队列每日任务将被继续执行。拿51单片机为例证,比较一下就可以寻找那样保证的好处。倘若务必用中断方法搜集一批数据信息并进行应急处置,在传统式的程序编写方式中没法在中断服务项目程序中进行简易的数据处理方法,由于这不容易促使大关中断時间太长。

因此 经常应用的方式是改置一标志位,随后散伙中断。因为主程序是循环系统继续执行的,因此 它总还有机会检验到这一标示并转到数据处理方法程序中去。可是由于没法确定再次出现中断时程序到底继续执行来到哪些地方,也就没法鉴别要历经多久数据处理方法程序才不容易继续执行,中断响应速度没法确定,系统软件的实用性不强悍。假如用于C/OS-II得话,要是把数据处理方法程序的优先原著得低一些,并在中断服务项目程序使得它转到就绪态,中断完成后数据处理方法程序就不容易被马上继续执行。

那样能够把中断响应速度允许在一定的范畴内。针对一些对中断响应速度有严格管理的系统软件,它是不可或缺的。但理应觉得的是假如数据处理方法程序比较简单,那样保证就不一定合适。

由于ucosii回绝在中断服务项目程序结尾用于OSINTEXIT涵数以鉴别否进行每日任务变换,这务必花销一定的時间。  3.ucosii和大伙儿所了解的Linux等分时操作系统各有不同,它不抵制時间片当此方法。ucosii是一个根据优先的嵌入式操作系统,每一个每日任务的优先必不可少各有不同,剖析它的源代码不容易寻找,ucosii把每日任务的优先作为每日任务的标志来用于,假如优先完全一致,每日任务将没法区别。

转到就绪态的优先最少的每日任务最先得到 CPU的所有权,仅有等它交回CPU的所有权后,别的每日任务才能够被继续执行。因此 它不可以讲到是多个任务,没法讲到是多进程,至少并不是大家所熟识的那类多进程。不言而喻,假如只充分考虑实用性,它自然比分时系统好,它能够保证 最重要每日任务一直优先选择占有CPU。

可是在系统软件中,最重要每日任务确是是受到限制的,这就促使区别别的每日任务的优先权变成了一个令人费心的难题。此外,一些每日任务交叠继续执行反倒对客户更为不好。比如,用单片机设计操控两一小块显示器时,不论是程序编写者還是使用人认可期待他们另外工作中,而不是说明完后一块显示器的信息之后再作说明另一块显示器的信息。

此刻,如果ucosii即抵制优先法又抵制時间片当此方法就更为合适了。  4.ucosii对资源共享获得了维护保养体制。

如同上文所谈及的,ucosii是一个抵制多个任务的电脑操作系统。一个初始的程序能够区别成好多个每日任务,各有不同的每日任务继续执行各有不同的作用。那样,一个每日任务就相当于模块化中的一个子控制模块。

在每日任务里加到编码时,要是并不是资源共享就无需忧虑彼此之间有影响。而针对资源共享(例如串口通信),ucosii也获得了非常好的解决方案。一般状况下用于的是信号量的方式。

亚博APP

比较简单地讲到,再作开创一个信号量并对它进行复位。当一个每日任务务必用于一个资源共享时,它必不可少再作申报人得到 这一信号量,而一旦得到 了此信号量,那么就仅有等用于完后该資源,信号量才不容易被出狱。在这个全过程中即便 有优先权高些的每日任务转到了就绪态,由于没法得到 此信号量,也没法用于该資源。

这一特性的好处不言而喻,比如当显示器已经显示信息信息的情况下,外界造成了一个中断,而在中断服务项目程序中务必显示器说明别的信息。那样,散伙中断服务项目程序后,原来的信息就会有很有可能被损坏了。而在C/OS-II中应用信号量的方式时,仅有显示器把原来信息说明完后才能够说明新的信息,进而能够避免 这一状况。

但是,应用这类方式是以英勇献身系统软件的实用性为成本的。假如说明原来信息务必花销很多時间,系统软件迫不得已等待。从結果上看,相同减少了中断响应速度,这针对仍未显示信息信息是警报信息的状况,不容置疑是恐怖的。再次出现这类状况,在C/OS-II中称之为优先旋转,便是低优先级队列每日任务必不可少等待低优先级队列每日任务的顺利完成。

在上述所说情况下,在2个每日任务中间再次出现优先旋转是没法避免 的。因此 在用于ucosii时,必不可少对所产品研发的系统软件了解准确,才可以规定针对某类资源共享否用于信号量。  ucosii在单片机设计用于中的一些特性  1.在单片机设计系统软件中投射ucosii将加强系统软件的可信性,并促使调节程序看起来比较简单。过去传统式的单片机设计产品研发工作上经常遇到程序跑完飞过来或者陷入无限循环。

可以用看门狗1解决困难程序跑完飞过来难题,而针对后一种状况,特别是在是在其中涉及简易计算能力得话,仅有设定中断点,花销很多時间来逐渐剖析。假如在系统软件中投射ucosii得话,事儿就比较简单多了。能够把全部程序分成很多每日任务,每一个每日任务较为独立国家,随后在每一个每日任务中设定请求超时涵数,時间用完后之后,每日任务必不可少交回CPU的所有权。

即便 一个每日任务再次出现难题,也会危害别的每日任务的经营。那样既提高了系统软件的可信性,另外也促使调节程序看起来更非常容易。  2.在单片机设计系统软件中投射ucosii将降低系统软件的开支。

如今所用于的51单片机,一般就是指87C51或是89C51,其片内都具备一定的RAM和ROM。针对一些比较简单的程序,假如应用传统式的程序编写方式,早就不务必外阔储存器了。假如在这其中投射ucosii得话,在只务必用于线程同步、每日任务变换、信号量应急处置、廷时或请求超时服务项目的状况下,都不务必外阔ROM了,可是外阔RAM是必不可少的。因为ucosii是可减少的电脑操作系统,其所务必的RAM尺寸就不尽相同电脑操作系统作用的是多少。

亚博App登陆

举例来说,C/OS-II允许客户界定仅次每日任务数。因为每建立一个每日任务,必须造成一个与之较为不可的算法设计TCB,该算法设计要闲置不用非常大一部分存储空间。因此 在界定仅次每日任务数时,一定要充分考虑具体情况的务必。

假如以定得过大,必定会造成 多余的消耗。投射ucosii之后,总的RAM市场的需求能够由以下关系式下结论:  RAM总供给=运用程序的RAM市场的需求 核心数据信息区的RAM市场的需求 (每日任务栈市场的需求 仅次中断嵌入栈市场的需求)每日任务数  所幸的是,C/OS-II能够对每一个每日任务各自界定局部变量室内空间的尺寸,开发者可依据每日任务的具体市场的需求来进行栈室内空间的分派。

但在RAM容积受到限制的状况下,還是理应注意一下对大中型数组、算法设计和函数的用于,别忘记,涵数的形参也是要跳进局部变量的。  3.ucosii的重置也是一件务必特别注意的工作中。假如没现有的重置案例得话,就必不可少自己来编写重置编码。

尽管只务必修改2个文档,但仍务必对适度的微控制器比较熟识才讫,最烂参照了解的重置案例。此外,即便 有重置案例,在程序编写前最烂还要阅读者一下,由于里边涉及局部变量作业者。在编写中断服务项目程序时,把存储器跳进局部变量的次序必不可少与重置编码中的次序较为不可。

  4.和别的一些著名的嵌入式操作系统各有不同,ucosii在单片机设计系统软件中的起动全过程非常简单,不象一些电脑操作系统那般,务必把核心编写出一个光盘文档加载ROM中,通电废黜后,再作从ROM中把文档载入到RAM中来,随后再运行运用程序。ucosii的核心是和运用程序放进一起编写出一个文档的,使用人只务必把这个文件格式转换成HEX文件格式,加载ROM中就可以了,通电后,不容易像一般的单片机设计程序一样经营。  总结  由之上解读能够显出,ucosii具有完全免费、用于比较简单、可信性低、实用性好等优势,但也是有重置艰辛、缺乏适度的服务支持等缺陷,特别是在不象商业嵌入式操作系统那般得到 广泛用于和不断的科学研究重做。但开放式又促使开发者能够自主减少和加进需要的作用,在很多主要用途充分运用着特有的具有。

自然,否在单片机设计系统软件中投射ucosii应视所产品研发的新项目而定,针对一些比较简单的、降低成本的新项目而言,就沒有适度用于嵌入式操作系统了。  --节录INTERNET  44B0下ucos-ii的重置  要保证 ucosⅡ重置到微控制器后能精确经营;CPU需要不具有以下特点:  1)CPU的c编译器抵制可工作交接涵数  可工作交接的编码所说的是一段编码(如一个涵数)能够被好几个每日任务另外启用,而无需忧虑不容易损坏数据信息。换句话说,可工作交接型函数在任何时刻都能够被中断继续执行,过一段时间之后又可以以后经营,而会由于在涵数中断的情况下被别的的每日任务新的启用,危害涵数中的数据信息。

下边的2个事例能够比较可工作交接型函数和非可工作交接型函数:  程序1:可工作交接型函数  voidswap(int*x,int*y)  inttemp;  temp=*x;  *x=*y;  *y=temp;  程序2:非可工作交接型函数  inttemp;  voidswap(int*x,int*y)  temp=*x;  *x=*y;  *y=temp;  程序1中用于的是局部变量temp做为自变量。一般来说的Cc语言编译器,把局部变量分派在栈中。  因此 ,数次启用同一个涵数,能够保证 每一次的temp相互间不受影响。

而程序2中temp界定的是静态变量,数次调用函数的情况下,必然遭受危害。编码的可多次入性是保证 顺利完成多个任务的基本,除开在C程序中用于局部变量之外,还务必Cc语言编译器的抵制。

小编用于的是ARMSDT及其ADS的搭建产品研发自然环境,皆能够溶解可工作交接的编码。  2)在程序中能够合上和再开中断  在ucosⅡ中,能够根据OS_ENTER_CRITICAL()或是OS_EXIT_CRITICAL()宏来操控  系统软件再开或是合上中断。

这务必CPU的抵制,在ARM7TDMI的CPU上,能够设定适度的存储器来再开或是合上系统软件的全部中断。  3)CPU抵制中断,而且能造成计时器中断(ucosⅡ是根据计时器中断来搭建多个任务的生产调度,即時间片的造成)ucosⅡ是根据CPU造成的计时器的中断来搭建多个任务中间的生产调度的。

在ARM7TDMI的CPU上能够造成计时器中断。  4)CPU要具有一定的硬件配置局部变量总数  5)CPU要有将堆栈指针和别的cpu存储器储存和诵读局部变量(或是运行内存)的命令(如51的pop,push命令)。

  ucosⅡ进行线程同步的情况下,不容易把当前任务的CPU存储器储放在到此每日任务的局部变量中,随后,再作从另一个每日任务的局部变量中彻底恢复本来的工作中存储器,以后经营另一个每日任务。因此 ,存储器的入栈和出带栈是ucosⅡ多线程同步的基本。  ARM7TDMICPU基本上合乎所述回绝。


本文关键词:亚博APP,亚博APP手机版,亚博App登陆

本文来源:亚博APP-www.leospeak.com

版权所有咸阳市亚博APP 科技有限公司 陕ICP备57981074号-7

公司地址: 陕西省咸阳市望花区都斯大楼568号 联系电话:0211-24259000

Copyright © 2018 Corporation,All Rights Reserved.

熊猫生活志熊猫生活志微信公众号
成都鑫华成都鑫华微信公众号