uCOS-III的初步了解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44880138/article/details/101536826

什么是uC/OS-III

uC/OS-III全称是 (Micro C OS Three)微型的C语言编写的操作系统第三版。
是一个可升级,可固化的基于优先级的实时内核。是在总结用户使用uC/OS-II反馈和经验的基础上诞生的,相比于uC/OS-II删除和更新一些少用的功能,添加更加高效的功能和服务,其中最有用的功能就是时间片轮转法(round robin)该功能是uC/OS-III特有的。可同时用于32位处理器,16位处理器,8位处理器

软实时和硬实时

区别:
1、硬实时一旦没有在规定的时间内完成任务就会导致严重后果,即使超过时限后得到 正确的结果也是毫无作用的
2、软实时超时不会导致严重后果。

uC/OS-III的应用范围

在这里插入图片描述

前后台系统

ISR interrupt Service Routine 中断服务例程

一般的操作系统都是基于前后台或者无限循环设计的系统,主要包含前台,后台

前台程序:中断触发的中断处理程序实现异步事件,前台也叫中断级
后台:任务级。
在这里插入图片描述

实时内核

实时内核是个能管理MPU MCU DSP时间和资源的软件。快速响应,可靠完成工作。任务(线程)是一段简单的程序,运行的
时候完全的占用CPU,在单CPU中任何时候只有1个任务被执行。任务是无返回值,无输入变量的特殊函数

内核的责任是管理任务,例如多任务处理。多任务处理的作用是协调和切换多个任务依次享用CPU,能最大化CPU的使用效率。

多任务处理的最重要的方面在于它运行程序员管理负责的实时应用

uC/OS-III是个抢占式内核,永远在执行最重要的就绪任务。优先级别最高的就绪任务。
负责管理任务间的交流,系统的资源(内存和I/O)。
如果想一直uC/OSIII至少需要4K大小RAM处理器才能成功移植。

RTOS 实时系统

一个实时系统通常包括一个实时内核以及其他高级的服务(文件管理,堆栈协议,图形用户接口等)。大多数的服务都是和I/O相关的

例如Micrum公司提供的 uC/FS,uC/TCP-IP,uc/GUI,uC/USB

uC/OS-III是一个可拓展的,可固话的,抢占式的实时内核,它管理的任务个数是无限的,除了拥有资源管理,同步,内部任务交流,还具备自己特有的
运行时测量运行性能,直接发送信号或消息给任务,任务可以同时等待多个信号量和消息队列。

uC/OS-III的特点

1 源代码符合ANSI-C标准

2 应用程序接口 API直观易懂

3 抢占式多任务处理。uC/OS-III正在运行的任务常常是最重要的就绪任务

4 时间片轮转调度 uC/OS-III允许多个任务拥有相同的优先级。当多个相同优先级的任务就绪时,并且这个优先级是目前最高的 uC/OS-III会分配用户定义的时间片给每个任务去运行。每个任务可以定义不同的时间片,当某个任务的时间片用不完的时候可以让出CPU给另外一个任务。

5 快速响应 uC/OS-III保护临界段可以通过锁定调度器替代相关中断,因此关中断的时间会非常少,这样就可以快速响应一些中断

6 确定性 uC/OS-III的中断响应时间是可以确定的

7 可拓展的 根据需求代码的大小可以调整。编译时调整uC/OS-III的源代码中大约40#dfine (OS_CFG.H)可以添加或者移除一些功能

8 易移植 uC/OS-III可以被移植到大部分的CPU架构中

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

10 可实时配置的 uC/OS-III允许用户在运行时配置内核。例如所有的内核对象如任务,堆栈,信号量,事件标志组,消息队列,消息,互斥信号量,内存分区,软件定时器等都是在运行时分配的。

11 任务数无限制 uC/OS-III

12 优先级数无限制 uC/OS-III 在32到256之间已经满足大多数应用

13 内核对象数无限制

14 服务 uC/OS-III提供高档实时内核需要的所有功能,如任务,堆栈,信号量,事件标志组,消息队列,消息,互斥信号量,内存分区,软件定时器等

15 互斥信号量 Mutexes 互斥信号量用于资源管理。是内置优先级的特殊类型信号量,用于消除优先级反转,可以被嵌套,每个任务可申请同一个互斥信号量250次

16 嵌套的任务停止 uC/OS-III允许任务停止自身或停止另外的任务

17 软定时器 可以定义任意数量的一次性的,周期性的,或者兼有的定时器。定时器是倒计时的

18 挂起多个对象 uC/OS-III允许任务等待多个事件的发生。特别的任务可以同时等待多个信号量和消息队列被提交。等待中的任务在事件发生的时候被唤醒。

19 任务信号量 uC/OS-III允许ISR或者任务直接地发送信号量给其他任务

20 任务消息 uC/OS-III允许ISR或者任务直接地发送消息给其他任

21 任务寄存器 每个任务可以拥有用户可定义的任务寄存器,不同于CPU寄存器

22 错误检测 uC/OS-III能检测指针是否为NULL,在中ISR调用的任务级是被被允许,参数在允许范围内,配置选项的有效性,函数的执行结果等。

23 内置的性能测量 uC/OS-III有内置的性能测量功能,能测量每个任务的执行时间,堆栈使用情况,执行次数,CPU的使用情况,ISR到任务的切换时间,任务到任务的切换时间,列表中的峰值数,关中断,锁调度器平均时间等

24 可优化 uC/OS-III被设计于能根据CPU架构被优化

25 死锁预防 uC/OS-III中所有的挂起服务都可以有时间限制的,预防死锁

26 任务级的时基处理 uC/OS-III有时基任务,时基ISR触发时基任务。使用哈希列表结构减少处理延时和任务超时的开支。

27 用户可定义的钩子函数 uC/OS-III允许用户定义hook函数,hook函数被uC/OS-III调用。

28 时间戳 用于测量时间 uC/OS-III需要一个16位或32位的时间戳计数器。

29 嵌入的内核调试器 允许内核调试器查看uC/OS-III的变量和数据结构

30 对象名称 每个uC/OS-III的内核对象有一个关联的名字,用于识别对象指定的作用。常用ASCII码作为名字的组成,对象名字没有长度限制,但必须是以空字符结束。


本文参考《uCOS-III-ST-STM32-003》这本书写的 该书可在Micrium官网下载

猜你喜欢

转载自blog.csdn.net/weixin_44880138/article/details/101536826
今日推荐