μCOS-Ⅲ简介
文章目录
前言
μcos-III是一个可以基于ROM运行的、可裁剪的、抢占式、实时多任务内核,具有高度可移植性,在一段学习后留个笔记简单记录下相关知识欢迎大佬指正!!!!
一、什么是 µC/OS-III?
µC/OS-III 基于 C 语言编写的第三代小型实时操作系统,也就是 RTOS(Real Time Operating System),与之类似的 RTOS 还有 FreeRTOS、RT-Thread 等。
作为操作系统最直观的特点就是一个 CPU 核心“同时运行”多个任务,这个特性就被称为“多任务”(实际上一个 CPU 核心在某一时刻只能运行一个任务),系统中任务调度器的责任就是决定在某一时刻 CPU 究竟要运行哪一个任务,任务调度器使得 CPU 在各个任务之间来回切换并处理任务,由于切换处理任务的速度非常快,因此给人造成了一种同一时刻有多个任务同时运行的错觉。
操作系统的分类方式可以由任务调度器的工作方式决定, 比如有的操作系统给每个任务分配同样的运行时间,时间到了就切换到下一个任务, Unix 操作系统就是这样的。 RTOS 的任务调度器被设计为可预测的, 而这正是嵌入式实时操作系统所需要的。在实时环境中, 要求操作系统必须实时地对某一个事件做出响应,因此任务调度器的行为必须是可预测的。 像 µC/OS-III这种传统的 RTOS 类操作系统是由用户给每个任务分配一个任务优先级, 任务调度器就可以根据此优先级来决定下一刻应该运行哪个任务。
二、µC/OS-III的特点
µC/OS-III 是一个可裁剪、可固化到 ROM 的抢占式实时内核,并且可管理任务的数量不受
限制。 µC/OS-III 是第三代的 µC/OS 内核,具有以下几个重要的特性:
■支持多种不同架构的不同型号的处理器: ARM架构系列,例如STM32和GD32的 F1、 F4、 F7 和 H7 等型号的 MCU 都可支持,只需简单的移植,这些 MCU 上运行 µC/OS-III ,非常方便
■抢占式多任务管理: µC/OS-III 是一个支持多任务抢占的内核,因此总是优先执行任务优先
级高的任务。
■时间片调度: µC/OS-III 允许系统中有多个相同任务优先级的任务,如果系统中处于就绪状
态的任务中,优先级最高的任务有多个,那么 µC/OS-III 将以时间片的方式调度任务,即根据用
户指定的时间(时间片)轮流调度这些任务。
■极短的中断禁用时间: µC/OS-III 通过锁定任务调度器代替禁用中断来保护一些关键区域
(临界区),这确保了 µC/OS-III 能够快速地响应中断。
■任务数量不限: µC/OS-III 理论上支持不受限制的任务数量,但实际上,系统中任务的最大
数量受处理器内存空间的限制。
■任务优先级数量不限: µC/OS-III 支持的任务优先级数量不受限制,但对于大多数应用场景
而言,使用 32~256 个任务优先级就绰绰有余了。
■内核对象数量不限: µC/OS-III 提供了多种内核对象,如任务、信号量、事件标志、消息队
列、软件定时器和内存区等,并且在不考虑处理器内存限制的情况下,用户可以无限制的创建
这些内核对象。
■时间戳: µC/OS-III 提供了时间戳功能,用户可以非常方便地测量系统在运行过程中,处理
器处理某些事件所消耗的时间,以方便用户对系统进行针对性的优化。
■自定义钩子函数: µC/OS-III 提供了一些在内核执行操作之前、之后或过程中的钩子函数,
这样可以方便用户扩展 µC/OS-III 的功能。
■防死锁: µC/OS-III 允许任务在等待某些内核对象前,设置一个等待的最大超时时间,这样
可以有效地防止死锁的发生。
■软件定时器: 在 µC/OS-III 中,用户可以创建任意数量的“单次”和“周期”软件定时器,
并且每个软件定时器都可以有独立的超时回调函数。
■任务内嵌信号量: µC/OS-III 提供了任务的内嵌信号量功能,这使得任务可以直接获取来自
其他任务或中断的信号,而不需要任何的中间内核对象,大大地提高了系统的运行效率。
■任务内嵌消息队列: µC/OS-III 提供了任务的内嵌消息队列,这使得任务可以直接接收来自
其他任务或中断的消息,而不需要任何的中间内核对象,大大地提高了系统的运行效率。
三、µC/OS-III的版本和参考资料
1、µC/OS-III版本
µC/OS 至今为止一共发展了三个版本,分别为 µC/OS、 µC/OS-II 和 µC/OS-III,这三个版本
的特征比较如下表所示:
2、µC/OS-III源码获取
在移植 µC/OS-III 的时候还需要用到 µC/OS-III 官方提供的两个额外的库,分别为 µC/CPU 和 µC/LIB,在下文会分别介。µC/OS-III 官方:https://weston-embedded.com/,提供了大量的 µC/OS-III 相关的资料和不同版本的源代码,现在的目标就是要获取 µC/OS-III、 µC/CPU 和 µC/LIB 这三个组件的源代码,打开后如下图所示:
鼠标指针放到顶部MICRIUM,可看到“CODEBASE”,点击“CODEBASE”就能跳到µC/OS-III 官方 GitHub 仓库,如下图所示:
在Repositories”在全部仓库中进行检索,输入LIB、CPU或OS3即可检索对应的仓库源码,然后切换到该仓库已经发布的版本的 Tag,能够点击图绿的图标“Code”,然后点击“DownloadZIP”就能后下载到指定版本 的源代码压缩包了,接着再对其进行解压,就能够得到 µC/OS-III 的源代码。
3、µC/OS-III参考资料
参考资料在顶部导航栏“MICRIUM” 中的“Kernels”,就能看到 µC/OS 的详情页了,打开后如下图所示:
在 µC/OS 的详情页中可以看到,顶部导航栏中有一个“DOCUMENTATION” 的标签按钮,这就是 µC/OS 官方资料的入口。接着点击“DOCUMENTATION”,就能够打开 µC/OS 官方的文档中心,如下图所示:
在 µC/OS 官方的文档中心中可以看到 µC/OS 官方为自家的多种组件都提供了详细的文档资料,例如 µC/CAN、 µC/CANopen、 µC/Clk 等等。 在文档中心中索引找到并打开 µC/OS-III 的在线文档资料, 打开 µC/OS-III 的在线文档资料后,就能够在页面的侧看到 µC/OS-III 在线文档的导航栏,如下图所示:
从上图左侧栏看,µC/OS-III官方提供了大量关于µC/OS-III的在线资料,其中包括了µC/OSIII 的用户手册、 µC/OS-III 的参考手册以及 µC/OS-III 的 API 参考手册等等。在 µC/OS-III 的 API参考手册中详细地介绍了 µC/OS-III 中各个 API 的使用说明,包括 API 函数的参数说明、返回值说明以及 API 用法举例。可以在页面的右侧看到, µC/OS-III 官方不仅提供了完整的在线文档,还提供了 PDF 格式的特定于硬件的 µC/OS-III 书籍。
四、µC/OS-III源码简介
µC/OS-III、 µC/CPU 和 µC/LIB 这三个组件的源代码已经下载完成,那么这三个文件分别是做什么用的呢?所示:
总结
µC/OS-III官方提供了大量关于µC/OS-III的在线资料,适合作为嵌入式操作系统入门学习。