请问各位,ucos ii中的软件定时器和延时有什么区别?
1、你调用OSTimeDly或者OSTimeDlyHMSM,意味着该任务CPU使用权会被没收,然而你开启一个定时器之后,该任务还可以使用CPU。
2、举例子:如下情景,可以使用软件定时器作超时处理,设备A管理设备B、C、E,设备A向设备BCE设备发送某一消息,如果在T时间内,设备BCE没有回应,设备A将重起并初始化BCE;那么可以在一个任务中,依次向BCE发送消息,并且启动软件动定时器TMRa,TMRb,TMRc,定时器时间到时调用各自的重起并初始化函数;另一方面,如果接收到BCE的消息则停止定时器TMRa,TMRb,TMRc。
3、然而如果用OSTimeDly或者OSTimeDlyHMSM处理上面的场景,可能要多开几个任务管理BCE并增加信号量通知OSTimeDly或者OSTimeDlyHMSM之后,到底是“重起并初始化BCE”还是什么都不做。
4、软件定时器和延时都是基于“系统的节拍”来计时/定时的,虽然软件定时器是在一个高优先级的任务中管理,这个任务也是由“系统节拍中断“中向其发送信号量,因此还是基于“系统的节拍”。
5、没必要去对它们的区别做出一个定义,关键还是去理解它们的应用场合,它们都能解决什么问题。
在ucosiii中可以定义延迟函数吗
这个你可以用函数进行调度,uCOS中任务与函数不同,就是差在函数没有调度系列。
你需要调度的时候,先关总中断,然后执行调度,然后开总中断就行了。
二一个,没有软件中断,难道还没有硬件中断吗,用硬件中断也一样,比如说定时器中断,我用一个定时器,需要调度的时候TH0 = 255;TL0 = 255;TR0 = 1;_nop_();这样,定时器0中断就被用作模拟软件中断了,像这样的可利用模拟软件中断的很多,看门狗之类的
如何理解ucos的实时ostimedlyhmsm
1、你调用OSTimeDly或者OSTimeDlyHMSM,意味着该任务CPU使用权会被没收,然而你开启一个定时器之后,该任务还可以使用CPU。
2、举例子:如下情景,可以使用定时器作超时处理,设备A管理设备B、C、E,设备A向设备BCE设备发送某一消息,如果在T时间内,设备BCE没有回应,设备A将重起并初始化BCE;那么可以在一个任务中,依次向BCE发送消息,并且启动动定时器TMRa,TMRb,TMRc,定时器时间到时调用各自的重起并初始化函数;另一方面,如果接收到BCE的消息则停止定时器TMRa,TMRb,TMRc。
3、然而如果用OSTimeDly或者OSTimeDlyHMSM处理上面的场景,可能要多开几个任务管理BCE并增加信号量通知OSTimeDly或者OSTimeDlyHMSM之后,到底是“重起并初始化BCE”还是什么都不做。
4、定时器和延时都是基于“系统的节拍”来计时/定时的,虽然定时器是在一个高优先级的任务中管理,这个任务也是由“系统节拍中断“中向其发送信号量,因此还是基于“系统的节拍”。
5、没必要去对它们的区别做出一个定义,关键还是去理解它们的应用场合,它们都能解决什么问题。
...
在某实时多任务操作系统中,有操作系统提供的Sleep函数。
如下两种...
不一定,可以不使用。
uCOSII、RTX之类的操作系统,主要是通过定时器切换实现了多线程功能。
裸机编程时,常常需要调用延时函数来进行等待。
此时的CPU多处于闲置状态(例如执行for循环延时)。
加入了实时操作系统后,RTOS会利用定时器进行任务切换。
在调用系统的延时函数时并非让CPU循环,而是判断是否有其他任务需要执行。
从而提高CPU执行效率。
但RTOS需要占用定时器。
且会造成RAM消耗严重、实时性降低等问题。
用不用RTOS见仁见智。
但是从学习的角度,了解一点RTOS对于提高代码水平很有帮助...
以我的条件学习STM32还是S3C2440
不论是51,STM还是2440,说到底都是单片机,如果你精通了其中的一种,那其他的单片机其实都是触类旁通的,无非就是寄存器多点,功能多点而已,所以你用不着纠结,关键是找准你喜欢的,一门心思钻研就好了。
在精通了单片机的基础上,在学习操作系统,那就快多了,如果你没有基础,可以先从简单的开始,例如UCOSII,然后再以此为基础转入LINUX。
说到底,目标先定低点,一步一步前进...
硬系统和软系统的有什么区别
国际上常见的嵌入式操作系统大约有40种左,右如:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 。
他们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等,系统有Microsoft的WinCE,3Com的Palm,以及Symbian和Google的Android等。
(一)VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分。
良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。
VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。
然而其价格昂贵。
由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。
一般不通供源代码,只提供二进制代码。
由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。
支持的硬件数量有限。
(二)Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。
其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。
为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。
它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。
它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。
操作系统的基本内核需要至少200KB的ROM。
由于嵌入式产品的体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。
系统的可用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。
从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过的系统内存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。
(三)嵌入式Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,据IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%。
由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。
遵从GPL,无须为每例应用交纳许可证费。
有大量的应用软件可用。
其中大部分都遵从GPL,是开放源代码和免费的。
可以稍加修改后应用于用户自己的系统。
有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的。
有庞大的开发人员群体。
无需专门的人才,只要懂Unix/Linux和C语言即可。
随着 Linux在中国的普及,这类人才越来越多。
所以软件的开发和维护成本很低。
优秀的网络功能,这在Internet时代尤其重要。
稳定——这是Linux 本身具备的一个很大优点。
内核精悍,运行所需资源少,十分适合嵌入式应用。
支持的硬件数量庞大。
嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件嵌入式Linux几乎都支持。
而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方便。
在嵌入式系统上运行Linux的一个缺点是Linux体系提供实时性能需要添加实时软件模块。
而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。
由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。
(四)μC/OS一Ⅱ μC/OS一Ⅱ是著名的源代码公开的实时内核,是专为嵌入式应用设计的,可用于8位,16位和32位单片机或数字信号处理器(DSP)。
它是在原版本μC /OS的基础上做了重大改进与升级,并有了近十年的使用实践,有许多成功应用该实时内核的实例。
它的主要特点如下:公开源代码,容易就能把操作系统移植到各个不同的硬件平台上; 可移植性,绝大部分源代码是用C语言写的,便于移植到其他微处理器上; 可固化; 可裁剪性,有选择的使用需要的系统服务,以减少斗所需的存储空间; 占先式,完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务; 多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度...
什么是UCOS操作系统?
u C / O S 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。
μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的B B S 上。
μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。
CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。
用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌人到开发的产品中。
μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。
μC/OS-II 已经移植到了几乎所有知名的CPU 上。
严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。
没有提供输入输出管理,文件系统,网络等额外的服务。
但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。
uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。
任务管理 uC/OS-II 中最多可以支持64 个任务,分别对应优先级0~63,其中0 为最高优先级。
63为最低级,系统保留了4个最高优先级的任务和4个最低优先级的任务,所有用户可以使用的任务数有56个。
uC/OS-II提供了任务管理的各种函数调用,包括创建任务,删除任务,改变任务的优先级,任务挂起和恢复等。
系统初始化时会自动产生两个任务:一个是空闲任务,它的优先级最低,改任务仅给一个整形变量做累加运算;另一个是系统任务,它的优先级为次低,改任务负责统计当前cpu的利用率。
时间管理 uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次,时间频率取决于用户对硬件系统的定时器编程来实现。
中断发生的时间间隔是固定不变的,该中断也成为一个时钟节拍。
uC/OS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数,系统时间函数。
内存管理 在ANSI C中是使用malloc和free两个函数来动态分配和释放内存。
但在嵌入式实时系统中,多次这样的错作会导致内存碎片,且由于内存管理算法的原因,malloc和free的执行时间也是不确定。
uC/OS-II中把连续的大快内存按分区管理。
每个分区中包含整数个大小相同的内存块,但不同分区之间的内存快大小可以不同。
用户需要动态分配内存时,系统选择一个适当的分区,按块来分配内存。
释放内存时将该块放回它以前所属的分区,这样能有效解决碎片问题,同时执行时间也是固定的。
任务间通信与同步 对一个多任务的操作系统来说,任务间的通信和同步是必不可少的。
uC/OS-II中提供了4中同步对象,分别是信号量,邮箱,消息队列和事件。
所有这些同步对象都有创建,等待,发送,查询的接口用于实现进程间的通信和同步。
任务调度 uC/OS-II 采用的是可剥夺型实时多任务内核。
可剥夺型的实时内核在任何时候都运行就绪了的最高优先级的任务。
uC/os-II的任务调度是完全基于任务优先级的抢占式调度,也就是最高优先级的任务一旦处于就绪状态,则立即抢占正在运行的低优先级任务的处理器资源。
为了简化系统设计,uC/OS-II规定所有任务的优先级不同,因为任务的优先级也同时唯一标志了该任务本身。
任务调度将在以下情况下发生: 1) 高优先级的任务因为需要某种临界资源,主动请求挂起,让出处理器,此时将调度就绪状态的低优先级任务获得执行,这种调度也称为任务级的上下文切换。
2) 高优先级的任务因为时钟节拍到来,在时钟中断的处理程序中,内核发现高优先级任务获得了执行条件(如休眠的时钟到时),则在中断态直接切换到高优先级任务执行。
这种调度也称为中断级的上下文切换。
这两种调度方式在uC/OS-II的执行过程中非常普遍,一般来说前者发生在系统服务中,后者发生在时钟中断的服务程序中。
调度工作的内容可以分为两部分:最高优先级任务的寻找和任务切换。
其最高优先级任务的寻找是通过建立就绪任务表来实现的。
u C / O S 中的每一个任务都有独立的堆栈空间,并有一个称为任务控制块TCB(Task Control Block)的数据结构,其中第一个成员变量就是保存的任务堆栈指针。
任务调度模块首先用变量OSTCBHighRdy 记录当前最高级就绪任务的TCB 地址,然后调用OS_TASK_SW()函数来进行任务切换。
μC/OS-II的组成部分 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。
1) 核心部分(OSCore.c) 是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。
能够维持系统基本工作的部分都在这里。
2) 任务处理部分(OSTask.c) ...
硬实时操作系统和软实时操作系统有什么不同?
随着 Linux在中国的普及,这类人才越来越多。
可以稍加修改后应用于用户自己的系统,可管理64个任务,任务的优先级必须是不同的,只要懂Unix/,QNX所有的组件都能透过消息传递这个函式来进行沟通;在效率。
支持的硬件数量有限、机顶盒;OS一ⅡμC/OS一Ⅱ是著名的源代码公开的实时内核。
无需专门的人才; 可移植性。
(二)Windows CEWindows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势,而且和Windows一样占用过的系统内存,运用程序庞大。
由于其源代码公开,人们可以任意修改、进程间通讯,以满足自己的应用,并且查错也很容易、Symbian,是专为嵌入式应用设计的,为用户编写自己专有硬件的驱动程序带来很大方便。
在嵌入式系统上运行Linux的一个缺点是Linux体系提供实时性能需要添加实时软件模块。
而这些模块运行的内核空间正是操作系统实现调度策略、功耗方面的表现并不出色,而不用去变更QNX的核心程序部份。
因此基于QNX的嵌入式操作系统可以做到非常小的程度,而且依然可以具有相当高的效率与完整的菜单现。
QNX操作系统核心仅包含了CPU任务排程国际上常见的嵌入式操作系统大约有40种左。
它是在原版本μC /OS的基础上做了重大改进与升级。
而且各种硬件的驱动程序源代码都可以得到。
(四)μC/、isi的psos、qnx系统软件公司的qnx、ati的nucleus等,不支持时间片轮转调度法;版权许可费也是厂商不得不考虑的因素,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。
从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制,对每一个应用一般还要另外收取版税。
一般不通供源代码,因此QNX的硬件设计者可以自由的选择加载执行或不加载某些特定的服务。
遵从GPL; 可确定性、中断重导向以及定时器等部份。
它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。
由于嵌入式产品的体积、成本等方面有较严格的要求、硬件中断异常和执行程序的部分。
由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点,在嵌人式实时操作系统领域逐渐占据一席之地。
VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯、完整的TCP/IP网络协议等。
然而其价格昂贵。
由于操作系统本身以及开发环境都是专有的,价格一般都比较高。
其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。
为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,而除此之外包含驱动程序,系统有Microsoft的WinCE,3Com的Palm,以及Symbian和Google的Android等。
(一)VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是Tornado嵌入式开发环境的关键组成部分,可用于8位,它能在多种处理器体系结构上运行,由许多的微核心为基础组成完整的OS服务、档案系统堆叠协议以及使用者应用程序的所有程序都是属于在使用者阶段执行。
QNX操作系统有个相当特殊的Proc阶段。
有大量的应用软件可用。
其中大部分都遵从GPL,是开放源代码和免费的,通常需花费10万元人民币以上才能建起一个可用的开发环境。
它的主要特点如下:公开源代码,容易就能把操作系统移植到各个不同的硬件平台上,是其实用性和可靠性的最好证据。
由于μC/、通信等领域的实时操作系统,如windriver公司的vxworks,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高,绝大部分源代码是用C语言写的,便于移植到其他微处理器上。
稳定——这是Linux 本身具备的一个很大优点。
内核精悍,运行所需资源少,十分适合嵌入式应用。
支持的硬件数量庞大。
嵌入式Linux和普通Linux并无本质区别、C Executive 。
他们基本可以分为两类,专门负责程序process的建立,以及存储器管理等交集在系统微核心中的组件、高性能的内核以及友好的用户开发环境,只提供二进制代码。
由于它们都是专用操作系统、webphone等;Linux和C语言即可。
基本上,完全是占先式的实时内核。
有大量的免费的优秀的开发工具,且都遵从GPL,是开放源代码的。
有庞大的开发人员群体,函数调用与服务的执行时间具有其可确定性;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话。
所以软件的开发和维护成本很低。
优秀的网络功能,这在Internet时代尤其重要,即总是运行就绪条件下优先级最高的任务; 多任务,一类是面向控制; 可固化; 可裁剪性,有选择的使用需要的系统服务,以减少斗所需的存储空间; 占先式、eCos、uCOS-II、VxWorks、pSOS。
它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。
操作系统的基本内核需要至少200KB的ROM,...
转载请注明出处51数据库 » ucosiii软件定时器
处女座12373272