打印

CY芯片的Uc/Os有谁搞过。

[复制链接]
1279|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
上山砍老虎|  楼主 | 2015-7-21 15:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
操作系统的作用:
实时操作系统(Real Time Operating Systen,RTOS)包含实时内核和其它高级的服务,比如:文件管理,协议栈,一个图形用户用户接口(GUI)和其它元件。很多额外的服务都围绕着I/O设备。
操作系统是嵌入式系统中不可缺少的部分。下面通过下面的一个例子说明操作系统的作用:
     应用1:要求读按键的值,并更新显示设备。对于这个简单的应用来说,通过一个循环就可以实现。
     应用2:一个信号采集系统,每25ms采集一个数据,然后使用FIR滤波器进行处理,处理完的结果送到显示器进行显示。同时这个系统还通过UART接口,接收来自上位机的控制命令。
    对于这个应用,可以使用多个中断服务程序进行处理。并且在中断服务程序中要编写大量的服务处理程序。并且由于中断服务程序的存在,导致主程序运行的实时性的不可控制性。
解决这个问题的方法是使用RTOS。将每个活动作为一个单独的任务。这样代码就简单清楚,并且容易修改。
       根据应用,下面嵌入式应用中,通常使用RTOS:
典型的嵌入式控制应用由多个任务组成,这些任务需要按照一个特定的序列或安排来执行。随着所涉及的控制任务的增加,人工组织子任务和分时享用所要求的工作变得十分困难。当复杂度增加时,这样一个程序的响应能力和性能大大降低。
分解这些任务作为单独的应用程序,并且在一个操作系统上实现这些应用程序会变得更加直观。
一个内核允许在一个抽象层上编写代码,而不是在微控制器级独立代码上编写代码。
很多普通常规的应用程序都依赖于操作系统的服务,例如文件系统,时间管理等。
沙发
雾霾和青山| | 2015-7-21 15:41 | 只看该作者
Micrium提供了一套完整的RTOS元件,其中包括:μC/FS(嵌入式文件系统)、μC/TCP-IP(TCP/IP协议栈)、μC/GUI(图形用户接口)、μC/USB(USB设备主机和OTG协议栈)和其它更多的元件。这些元件中,大多数可以独立运行。
除了μC/TCP-IP外,实时内核并不要求在一个应用程序中使用元件。事实上,用户可以挑选应用程序中所需要使用的元件。

使用特权

评论回复
板凳
雾霾和青山| | 2015-7-21 15:41 | 只看该作者
μC/OS操作系统于1992年首次发布,经过很多年的不断变化,其最新的于2009年首次发布的μC/OS-III(发音位Micro C OS Three)是一个可扩展的、可固化、强占的实时内核,用于管理大量的任务。μC/OS-III是第3代内核,提供了现代RTOS所希望的所有服务,包括:资源管理、同步、任务间通信和其它。然而,它还提供了其它实时内核中没有的,一些独一无二的服务。比如:提供了实时运行时,执行性能测量的能力,给任务直接发信号或者发送消息和等待处理多个内核目标,比如:信号量和消息队列。

使用特权

评论回复
地板
zb0830| | 2015-7-21 15:43 | 只看该作者
μC/OS-III提供的主要特性包括:
      1.源代码
       μC/OS-III向授权(免费和付费)的用户提供了ANSI-C的源代码格式。
      2.直观的应用程序接口(Application Programming Interface,API)
     μC/OS-III非常的直观。一旦熟悉了所使用的、一致的编码约定,则很容易预测出用于所要求服务的函数调用,甚至可以预测出需要的参数。
      3.抢占多任务
      μC/OS-III是一个抢占的多任务的内核,因此,μC/OS-III总是运行最重要的准备运行的程序。

使用特权

评论回复
5
zb0830| | 2015-7-21 15:43 | 只看该作者
4.同等优先级的轮询调度
       μC/OS-III允许多个任务运行在相同的优先级上。当同等优先级的任务准备运行时,优先级是最重要的级别,在一个用户指定的时间(称为时间片)内,μC/OS-III运行每个任务。每个任务能定义它自己的时间片,如果不要求全部的时间片,任务能放弃CPU,使得将CPU提供给相同优先级的其它任务。

使用特权

评论回复
6
电子信使| | 2015-7-21 15:45 | 只看该作者
较低的中断禁止时间
       μC/OS-III有大量的,原子访问的内部数据结构和变量。为了保证这些,μC/OS-III通过所锁定调度器,而不是禁止中断,提供了对临界区的保护。因此,可以在很短的时间内禁止中断。这样能使得μC/OS-III能响应一些最快的中断源。
确定性
       μC/OS-III对中断的响应是确定的。也就是说,μC/OS-III所提供的大多数服务的执行时间是确定的。

使用特权

评论回复
7
电子信使| | 2015-7-21 15:46 | 只看该作者
可扩展性
       基于应用的要求,可以调整代码和数据所占用的空间。在编译的时候,通过在OS_CFG.H内#define定义的大约40个参数,执行添加或者去除特性(比如服务),这些服务存在μC-OS/III的源代码中。运行时,μC/OS-III也执行大量的传递到μC/OS-III服务参数的检查。
        特别的,μC/OS-III验证用户没有传递NULL指针,没有从ISR中调用任务级的服务,那些参数在可允许的范围内,指定的选项是有效的,等。可以禁止这些检查,以进一步的减少代码所占用的空间,提高性能。事实上,μC/OS-III是可扩展的,允许用于宽范围的应用和工程中。

使用特权

评论回复
8
关小波522| | 2015-7-21 15:53 | 只看该作者
没有搞过,Uc/Os用的少

使用特权

评论回复
9
没有六一了| | 2015-7-22 15:25 | 只看该作者
可移植性
      μC/OS-III可以移植到大量的CPU结构中。
可固化
      μC/OS-III是专用于嵌入式系统,因此能和应用程序一起固化到ROM中。
可运行时配置
       μC/OS-III允许用户在运行时,配置RTOS。特别的,所有内核的对象比如:任务,堆栈,信号量,事件标志组,消息队列,消息数量、互斥信号量、内存划分和定时器,都由用户在运行时分配。这就防止在编译时,过度分配资源。

使用特权

评论回复
10
没有六一了| | 2015-7-22 15:25 | 只看该作者
不限数量的任务
        μC/OS-III支持不限制数量的任务。从实践的立场来说,任务的数量是由处理器所能访问的存储器的数量(代码和数据空间)所限制。每个任务要求自己的堆栈空间,μC/OS-III提供这样一种特性,即允许在运行时监控任务的堆栈增长。处理基于所使用的CPU,限制了最小的大小外,μC/OS-III不限制每个任务的大小。

使用特权

评论回复
11
zb0830| | 2015-7-22 15:41 | 只看该作者
不限数量的优先级
       μC/OS-III支持无限制的优先级数量。然而,对于大多数的应用来说,配置μC/OS-III在32-256个不同的优先级已经足够了。
不限数量的内核对象
       μ C/OS-III允许任意数量的任务、信号量、互斥信号量、事件标志、消息队列、定时器和存储器划分 。在运行时,用户分配所有的所有的内核对象。

使用特权

评论回复
12
zb0830| | 2015-7-22 15:41 | 只看该作者
服务
         μC/OS-III提供了所有高端实时内核所希望的服务,比如:任务管理、时间管理、信号量、时间标志、互斥、消息队列、软件定时器、固定大小的存储器池,等等。
互斥的信号量
      提供资源管理的互斥。互斥是特殊的信号量,它有内建的优先级继承,这样消除了无界的优先级反转。对互斥的访问可以是嵌套的,因此,一个任务可以得到最多256次的相同互斥。

使用特权

评论回复
13
雾霾和青山| | 2015-7-22 15:49 | 只看该作者
嵌套的任务停止
       μC/OS-III允许任务停止它自己或者其它任务。停止任务意味着不允许执行它,直到通过其它任务继续进行。停止能嵌套到256级深度。换句话说,一个任务能停止其它任务最多256次。当然,任务必须继续相同的次数,用于变成CPU上选择的,可以运行的任务。
软件定时器
       定义任何数量的“一次性”和/或者“周期性的”定时器。定时器向下计数,这样执行用户定义的行为,直到计数到0。每个定时器可以有它自己的行为,如果定时器是周期的重新加载,每当计数到0,则执行重新加载的行为。

使用特权

评论回复
14
雾霾和青山| | 2015-7-22 15:49 | 只看该作者
挂起多个对象
        μC/OS-III允许,同一个时间多个事件时,应用程序等待(即:挂起)。特别的,一个任务能等待发布多个信号量和/或者消息队列。只要发生了一个事件,则唤醒等待的任务。
任务信号
       μC/OS-III允许一个ISR或者任务直接给任务发送信号。这就避免创建中间的内核对象,比如:信号量或者事件标志仅仅向任务发送信号,这样导致更好的性能。
任务消息
       μC/OS-III允许一个ISR或者任务直接给任务发送信号。这就避免创建和使用消息队列,这样导致更好的性

使用特权

评论回复
15
huihui520| | 2015-7-22 15:51 | 只看该作者
任务寄存器
       每个任务有一个用户定义数量的“任务寄存器”。任务寄存器和CPU寄存器是不同的。任务寄存器能用于保持“errno”类型变量,ID号,中断禁止基于每个任务的时间测量,等/。
错误检查
       μC/OS-III验证没有传递NULL类型的指令,用户没有从ISR调用任务级的服务,参数在允许的范围内,指定的参数时有效的。传递到正确的对象的句柄是服务参数的一部分,用于操作所期望的对象,等。每个μC/OS-III API函数返回一个关于函数调用结果的错误代码。

使用特权

评论回复
16
飞翔的控制器| | 2015-7-22 16:01 | 只看该作者
内建的性能测量
        μC/OS-III有内建的特性,用于测量每个任务的实行事件,每个任务的堆栈使用,一个任务执行的次数,CPU的使用、ISR到任务和任务到ISR的响应时间,某一列入口的峰值个数,中断禁止和基于每个任务的调度器锁定时间,等。
容易优化
        基于CPU的结构,很容易优化μC/OS-III。大多数μC/OS-III使用的数据类型都能改变,以更好的利用CPU的本身的字大小。此外,优先级解决算法也很容易使用汇编语言进行编写,以便从特殊的指令中得到益处,比如位设置和位清除,以及计数到0(CLZ),或者找到第一个1(FF1)指令。

使用特权

评论回复
17
飞翔的控制器| | 2015-7-22 16:01 | 只看该作者
防止死锁
      所有的μC/OS-III‘待处理’服务包含超时,用于帮助避免死锁。
任务级的“滴答”管理
      在μC/OS-III内,通过一个任务实现时钟“滴答”管理器,这个任务接收来自ISR的触发。通过任务管理延迟和超时,大大减少了中断的延迟。μC/OS-III使用哈希差值列表机制,更加降低了处理任务延迟和超时的开销数量

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

332

帖子

3

粉丝