什么是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-II
I的内核对象有一个关联的名字,用于识别对象指定的作用。常用ASCII
码作为名字的组成,对象名字没有长度限制,但必须是以空字符结束。
本文参考《uCOS-III-ST-STM32-003》这本书写的 该书可在Micrium
官网下载
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/98918.html