μC/OS-III 概述
Posted tearain
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了μC/OS-III 概述相关的知识,希望对你有一定的参考价值。
实时系统:
指那些对处理结果的正确性 和 处理过程的及时性 都有严格要求的专用系统。
分为:
- 软实时系统:不允许处理过程超时,超时后即使得到了正确的结果,也是不容忍的。
- 硬实时系统:处理超时的过程不那么严重。
区别: 对超时带来带来效果的容忍度。
前后台系统:
- 前台:中断级
- 后台:任务级
任务级相应延迟:中断程序生成了结果,但是后台程序必须运行到对应处理代码才能处理。
实时内核:
用于管理微处理器、微控制器或数字信号处理器 的 时间及硬件资源的软件代码 。多任务管理:实时内核管理任务,决定运行那个任务,何时停止当前任务切换其他任务。
μC/OS-III:是一个可剥夺的内核,他总是运行就绪任务中优先级最高的那个 。
μC/OS-III能够在4KB RAM资源的微控制器上运行。
(TROS)实时操作系统:
除提供一个实时多任务内核 外,还提供其他高级系统服务,如文件系统、协议栈、用户图形界面(GUI) 等。
μC/OS-III:
可裁剪、可固化、可剥夺型的多任务内核,任务数目没有限制。
- 与其他内核共有功能:资源管理、同步、任务通信 等。
- 独有功能:内嵌的实时性能测试、向任务直接发送信号量和消息、同时等待多个内核对象 等。
内核对象:任务、信号量、互斥信号量、事件标记、消息列队、定时器、存储块 等。
特性:
- 可剥夺型内核: 总是执行当前优先级最高的就绪任务。
- 同优先级时间片轮转: 当多个优先级相同的任务同时就绪 ,并且这些任务的优先级是当前最重要的有优先级时 ,μC/OS-III就会轮转调度这些任务 。
时间片: 每个任务运行一段用户指定的时间。(如果任务用不完,提前让出CPU使用权) - 极短的关中断时间: μC/OS-III采用锁定内核调度方式 而不是关中断方式 来保护 这些范围内部数据结构和变量的临界段 。
- 确定性: 中断响应时间 和 大多数系统功能函数的执行时间 的确定性。
- 可裁剪: μC/OS-III的代码量 和变量数 可以根据应用的需求调整。
os_cfg.h头文件中的#define宏定义。 - 可移植: μC/OS-III可一直到各种不同架构的CPU上。
- 可固化: 能够和应用程序一起固化到ROM中 。
- 可动态配置: 允许用户 在 应用程序中 配置 内核对象 。(避免在编译中出现资源不够分配的问题)
- 任务数目不受限制: 任务数目只受 CPU所能使用的存储空间的限制 包括 程序代码空间和数据存储空间 。
- 优先级数目不受限制:
- 内核对象数目不受限制:
- 丰富的系统服务: 如 任务管理、时间管理、信号量、时间标志组、互斥型信号量、消息列队、软件定时器、存储块管理 等。
- 互斥型信号量: 具有优先级继承特性的特殊信号量,可避免优先级反转,可嵌套。
- 可嵌套的任务挂起(suspension): μC/OS-III允许挂起自身或挂起其他任务。
- 软件定时器: 可任意定义“单次”或者“周期”型定时器。
- 同时等待多个内核对象: 一个人任务可挂起在多个信号量和消息列队上。
- 直接向任务发信号: μC/OS-III允许中断或任务直接给另一个任务发信号,避免创建和使用诸如信号量或事件标志组等内核对象向其他任务发信号的中介,提高了系统性能。
- 直接向任务发消息: 同上
- 任务寄存器: 每个任务都可以设置若干个“任务寄存器”。与CPU硬件寄存器不同,它们主要用来保存各个任务的错误信息、ID识别信息、中断关闭时间的测量结果等。
- 出错检验: 可做多种错误检测,例如检测应用程序是否传递了NULL空指针,ISR是否调用了任务级系统功能函数,参数数值是否在允许范围内,指定的选项是否有效,系统功能函数调用时指定的内核对象指针是否指向了系统功能函数可操作的内核对象等。返回其执行过程中产生的错误类型码。
- 内置性能测试: 每个任务的执行时间、每个任务堆栈使用情况、每个任务运行的次数、CPU利用率、ISR和任务间的响应时间、任务和任务间的响应时间、特定链表的最大表项数目、每个任务关闭中断和给调度器上锁的时间等。
- 易于优化: μC/OS-III所使用的数据类型可按照特性CPU最合适的位宽进行修改;优先级相关算法可用汇编语言编写,以发挥一些CPU特殊汇编指令的优势。
- 防止死锁: μC/OS-III的 “等待”功能提供了超时检测机制 。
- 任务级时钟节拍处理: μC/OS-III时钟节拍通过一个专门任务完成,定时中断仅触发该任务。将任务处理和超时判断放在任务级代码完成,能极大地减少中断延迟时间。使用哈希散列表机制,进一步降低了处理延迟和超时判断的开销。
- 用户可定义的介入函数: 特定运行点调用预设介入函数。
- 时间戳: μC/OS-III需要一个16位或32位自由运行计数器(时基计数器)来实现事件测量。可通过该计数器测量某个事件的时间信息。
- 内置的内核觉察式调试: 以友好的方式对μC/OS-III的变量、数据结构进行检查和现实。
- 对象名称: 可以为内核对象设定一个ASCII码名称,以便识别该内核对象。对象名称长度没有限制,但必须以字符串终结符“ ”结尾。
μC/OS、μC/OS-II、μC/OS-III性能比较
特性 | μC/OS | μC/OS-II | μC/OS-III |
---|---|---|---|
年份 | 1992 | 1998 | 2009 |
最大任务数目 | 64 | 255 | 无限制 |
优先级相同的任务数目 | 1 | 1 | 无限制 |
时间片轮转调度 | X | X | √ |
消息邮箱 | √ | √ | 不再需要 |
直接向任务发送信号 | X | X | √ |
无需调度的发送机制 | 无 | 无 | 可选 |
直接向任务发送消息 | X | X | √ |
运行时可配置 | X | X | √ |
“POST”操作可增加时间戳 | X | X | √ |
用汇编语言优化的调度器 | X | X | √ |
捕获退出的任务 | X | X | √ |
任务级时钟节拍处理 | X | X | √ |
以上是关于μC/OS-III 概述的主要内容,如果未能解决你的问题,请参考以下文章