UCOS-III 基础知识积累

发布时间:2024年01月19日

初识 μC/OS-III

μC/OS-III 是基于 C 语言编写的第三代 小型操作系统。

μC/OS/III 是一个操作系统,准确地说应该是一个实时操 作系统,也就是 RTOS(Real Time Operating System),与之类似的 RTOS 还有 FreeRTOS、RTX、 RT-Thread 等。

操作系统最直观的特点就体现在,操作系统能够使得一个 CPU 核心“同时运行”多个任 务,这个特性就被称为“多任务”。然而,实际上,一个 CPU 核心在某一时刻只能运行一个任 务,而操作系统中任务调度器的责任就是决定在某一时刻 CPU 究竟要运行哪一个任务,任务调 度器使得 CPU 在各个任务之间来回切换并处理任务,由于切换处理任务的速度非常快,因此给 人造成了一种同一时刻有多个任务同时运行的错觉。

操作系统的分类方式可以由任务调度器的工作方式决定,比如有的操作系统给每个任务分 配同样的运行时间,时间到了就切换到下一个任务,Unix 操作系统就是这样的。RTOS 的任务 调度器被设计为可预测的,而这正是嵌入式实时操作系统所需要的。在实时环境中,要求操作 系统必须实时地对某一个事件做出响应,因此任务调度器的行为必须是可预测的。像 μC/OS-III 这种传统的 RTOS 类操作系统是由用户给每个任务分配一个任务优先级,任务调度器就可以根 据此优先级来决定下一刻应该运行哪个任务。

μC/OS-III 支持多种不同架构的不同型 号的处理器,例如 STM32 系列的 F1、F4、F7 和 H7 等型号的 MCU 都受 μC/OS-III 的支持,读 者只需要进行简单的移植操作,就能够在这些 MCU 上运行 μC/OS-III 操作系统。

μC/OS-III 的特点

μC/OS-III 是一个可裁剪、可固化到 ROM 的抢占式实时内核,并且可管理任务的数量不受 限制。μC/OS-III 是第三代的 μC/OS 内核,具有以下几个重要的特性:

1、抢占式多任务管理:μC/OS-III 是一个支持多任务抢占的内核,因此总是优先执行任务优先 级高的任务。

2、时间片调度:μC/OS-III 允许系统中有多个相同任务优先级的任务,如果系统中处于就绪状 态的任务中,优先级最高的任务有多个,那么 μC/OS-III 将以时间片的方式调度任务,即根据用 户指定的时间(时间片)轮流调度这些任务。

3、极短的中断禁用时间:μC/OS-III 通过锁定任务调度器代替禁用中断来保护一些关键区域 (临界区),这确保了 μC/OS-III 能够快速地响应中断。

4、任务数量不限:μC/OS-III 理论上支持不受限制的任务数量,但实际上,系统中任务的最大 数量受处理器内存空间的限制。

5、任务优先级数量不限:μC/OS-III 支持的任务优先级数量不受限制,但对于大多数应用场景 而言,使用 32~256 个任务优先级就绰绰有余了。

6、内核对象数量不限:μC/OS-III 提供了多种内核对象,如任务、信号量、事件标志、消息队 列、软件定时器和内存区等,并且在不考虑处理器内存限制的情况下,用户可以无限制的创建 这些内核对象。

7、时间戳:μC/OS-III 提供了时间戳功能,用户可以非常方便地测量系统在运行过程中,处理 器处理某些事件所消耗的时间,以方便用户对系统进行针对性的优化。

8、自定义钩子函数:μC/OS-III 提供了一些在内核执行操作之前、之后或过程中的钩子函数, 这样可以方便用户扩展 μC/OS-III 的功能。

9、防死锁:μC/OS-III 允许任务在等待某些内核对象前,设置一个等待的最大超时时间,这样 可以有效地防止死锁的发生。 软件定时器:在 μC/OS-III 中,用户可以创建任意数量的“单次”和“周期”软件定时器, 并且每个软件定时器都可以有独立的超时回调函数。

任务内嵌信号量:μC/OS-III 提供了任务的内嵌信号量功能,这使得任务可以直接获取来自 其他任务或中断的信号,而不需要任何的中间内核对象,大大地提高了系统的运行效率。

任务内嵌消息队列:μC/OS-III 提供了任务的内嵌消息队列,这使得任务可以直接接收来自 其他任务或中断的消息,而不需要任何的中间内核对象,大大地提高了系统的运行效率。

源码初探

μC/OS-III 文件预览

Cfg 文件夹中包含的是 μC/OS-III 配置文件的模板文件。

Ports 文件夹包含的是与硬件相关的移植文件,μC/OS-III 提供了 针对不同的芯片架构的移植文件。

Source 文件夹中包含了 与 μC/OS-III 内核、任务、软件定时器和事件标志相关的源码文件。也是 μC/OS-III 的核心文件。

Tamplate 文件夹中仅包含了一个文件,这个文件是与动态 Tick 管理相关的文件。

TLS 是 Thread Local Storage(线程本地存储)

Trace 文件夹中是用来存放一些调试工具的,调试工具主要有 SEGGER SystemView for uC/OS-III 和 Percepio Tracealyzer for uC/OS-III,

μC/CPU 文件预览

ARM-Cortex-M 文件夹:包含了与 ARM Cortex-M 内核的 CPU 相关的移植文件。

BSP(Board Support Package,板级支持包)相关的文件,主要包含了 用于配置和使用为 μC/OS-III 中时间戳功能提供支持的硬件定时器。

Cfg 文件夹:包含了 μC/CPU 这一组件的配置文件。

μC/LIB 文件预览

Cfg 文件夹 :包含了 μC/LIB 这一组件的配置文件

Ports 文件夹:包含了 μC/LIB 与硬件相关的移植文件。,μC/LIB 组件仅支持了 ARM 和 AVR 部分架构的处理器,因此 μC/LIB 组件是移植 μC/OS-III 时非必须的,μC/LIB 主要是提供了 ASCII 字符操作、数学、内存管理、字符串操作的库,方便开发。

文章来源:https://blog.csdn.net/weixin_64520123/article/details/135697796
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。