1.什么是uC/OS III,以及uC/OS III的结构

来源:互联网 发布:企业网站如何优化 编辑:程序博客网 时间:2024/05/21 02:53

1.什么是uC/OS III

uC/OS-III(Micro C OS Three 微型的C 语言编写的操作系统第3版)是一个可升级的,可固化的,基于优先级的实时内核。它对任务的个数无限制。uC/OS-III 是一个第3 代的系统内核,支持现代的实时内核所期待的大部分功能。例如资源管理,同步,任务间的通信等等。然而,uC/OS-III 提供的特色功能在其它的实时内核中是找不到的,比如说完备的运行时间测量性能,直接地发送信号或者消息到任务,任务可以同时等待多个内核对象等。

在重要的地方,实时系统凭借其系统性的计算和及时的处理能力工作着。一共有2 种类型的实时系统:软实时系统和硬实时系统。软实时系统和硬实时系统的区别在于一旦没有在规定的时间内完成任务所导致后果的严重性。超过时限后所得到的结果即使正确也可能是毫无作用的。硬实时系统是不允许运算超时的情况发生。

2.uC/OS III的概念

2-1前后台系统

简单的小型系统设计一般是基于前后台的或者无限循环的系统。包含一个无限循环的模块实现需要的操作(后台)。中断处理程序实现异步事件(前台)。前台也叫做中断级,后台也叫作任务级。

2-2 实时内核

实时内核是一个能管理MPU、MCU、DSP 时间和资源的软件。实时内核的应用包括迅速地响应,可靠地完成工作的各个部分。任务(也叫做线程)是一段简单的程序,运行时完全地占用CPU。在单CPU 中,任何时候只有1 个任务被执行。内核的责任是管理任务,也做多任务处理。多任务处理的作用是协调和切换多个任务依次享用CPU。uC/OS-III 是一个抢占式内核,这意味着uC/OS-III 总是执行最重要的就绪任务。

2-3 实时系统(RTOS)

一个实时系统通常包括一个实时内核以及其他高级的服务,例如:
文件管理,堆栈协议,图形用户接口等等。大多数服务都是跟I/O 有关的。Micrium 提供了RTOS 一套完整的组件,包括uC/FS、uC/TCP-IP、uC/GUI、uC/USB 等。这些组件大部分都可以单独执除了uC/TCP-IP。实时内核在应用中不是必须的。事实上,用户可以单独选择您的应用所需用的组件。

3.uC/OS III的特点

(1):源代码:uC/OS-III 完全根据ANSI-C 标准写的。

(2):应用程序接口(API):uC/OS-III 是很直观的。

(3):抢占式多任务处理:uC/OS-III 是一个抢占式多任务处理内核,因此,uC/OS-III 正在运行的经常是最重要的就绪任务。

(4):快速响应中断: uC/OS-III 有一些内部的数据结构和变量。uC/OS-III 保护临界段可以通过锁定调度器代替关中断。因此关中断的时间会非常少。这样就使uC/OS-III 可以     响应一些非常快的中断源了。

(5):确定性的:uC/OS-III 的中断响应时间是可确定的,uC/OS-III 提供的大部分服务的执行时间也是可确定的。

(6):可扩展的:根据应用的需求,代码大小可以被调整。

(7):易移植的:uC/OS-III 可以被移植到大部分的CPU 架构中。大部分的支持uC/OS-II 的器件通过改动就能支持uC/OS-III。而uC/OS-II已经移植到45 种CPU 架构中了。

(8):可固化的:uC/OS-III 专为嵌入式系统设计,它可以跟应用程序代码一起被固化。

(9)可实时配置的:uC/OS-III 允许用户在运行时配置内核。特别的,所有的内核对象如任务、堆栈、信号量、事件标志组、消息队列、消息、互斥信号量、内存分区、软件定时器等都是在运行时分配的,以免在编译时的过度分配。

任务数无限制:uC/OS-III 对任务数量无限制。

优先级数无限制:uC/OS-III 对优先级的数量无限制。然而,配置uC/OS-III 的优先级在32 到256 之间已经满足大多数的应用了。内核对象数无限制:uC/OS-III 支持任何数量的任务、信号量、互斥信号量、事件标志组、消息队列、软件定时器、内存分区。用户在运行时分配所有的内核对象。服务:uC/OS-III 提供了高档实时内核所需要的所有功能,例如任务管理、时间管理、信号量、事件标志组、互斥信号量、消息队列、软件定时器、内存分区等。
互斥信号量(Mutexes):互斥信号量用于资源管理。它是一个内置优先级的特殊类型信号量,用于消除优先级反转。互斥信号量可以被嵌套,因此,任务可申请同一个互斥信号量多达250 次。当然,互斥信号量的占有者需要释放同等次数。
嵌套的任务停止:uC/OS-III 允许任务停止自身或者停止另外的任务。停止一个任务意味着这个任务将不再执行直到被其他的任务恢复。停止可以被嵌套到250 级。换句话说,一个任务可以停止另外的任务多达250 次。当然,这个任务必须被恢复同等次数才有资格再次获得CPU。
软件定时器:可以定义任意数量的一次性的、周期性的、或者两者兼有的定时器。定时器是倒计时的,执行用户定义的行为一直到计数减为0。每一个定时器可以有自己的行为,如果一个定时器是周期性的,计数减为0 时会自动重装计数值并执行用户定义的行为。
挂起多个对象:uC/OS-III 允许任务等待多个事件的发生。特别的,任务可以同时等待多个信号量和消息队列被提交。等待中的任务在事
件发生的时候被唤醒。
任务信号量:uC/OS-III 允许ISR 或者任务直接地发送信号量给其它任务。这样就避免了必须产生一个中间级内核对象如一个信号量或者事件标志组只为了标记一个任务。提高了内核性能。
任务消息:uC/OS-III 允许ISR 或者任务直接发送消息到另一个任务。这样就避免产生一个消息队列,提高了内核性能。任务寄存器:每一个任务可以拥有用户可定义的任务寄存器,不同于CPU 寄存器。
错误检测:uC/OS-III 能检测指针是否为NULL、在ISR 中调用的任务级服务是否允许、参数在允许范围内、配置选项的有效性、函数的执行结果等。内置的性能测量:uC/OS-III 有内置性能测量功能。

可优化: uC/OS-III 被设计于能够根据CPU 的架构被优化。uC/OS-III 所用的大部分数据类型能够被改变,以更好地适应CPU 固有的字大小

3.uC/OS结构


①配置文件,通过定义这些文件里宏的值可以轻易地裁剪uC/OS-III 的功能。
②用户应用文件,定义和声明应用任务。
③内核服务文件,其代码与CPU 无关,可以不做任何修改移植到任何CPU。本书主要讲解
这部分内容。
④底层函数库,比如字符串的常规操作,常用的数学计算,等等。
⑤CPU 移植文件,用户如果想要移植uC/OS-III 到不同平台上,需要修改这部分代码。
⑥CPU 配置文件,主要是CPU 的一些工作模式和服务函数。
⑦其他CPU 相关文件。

数据结构:

uC/OSIII 的内核对象都是以结构体的形式存在的,

等等上述类似的结构体形式存在的


原创粉丝点击