UCOSⅢ简介

news/2024/11/7 18:49:11/

UCOSⅢ简介

  • 简述
  • 一、裸机系统与多任务系统
  • 二、UCOSⅢ的重要特性
  • 三、UCOSⅢ的组成

简述

UCOSⅢ(UCOS的第三代内核)是一个可裁剪、可固化、可剥夺的多任务系统,具有高度可移植性,没有任务数目的限制,特别适合微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。
随着产品要实现的功能越来越多,单纯的裸机系统以及不能完美的解决问题(响应速度、程序架构条理性等等),反而会使编程变得更加复杂,所以使用一个高效的系统是必然的。
除了UCOSⅢ,FreeRTOS操作系统也得到广泛的应用,因为其是开源免费的,非常适合用来做产品。不过,UCOSⅢ是商业化最成功、安全验证最多、资料最多的RTOS,所以学习首选UCOSⅢ。

一、裸机系统与多任务系统

先简要了解区分下裸机系统与多任务系统。

系统特点
轮询系统(裸机)先初始化好相关的硬件,然后让主程序在一个死循环里面不断循环,顺序地做各种事情。
前后台系统(裸机)前后台系统是在轮询系统地基础上加入了中断。外部事件地响应在中断里面完成,事件的处理还是回到轮询系统中完成,中断在这里称为前台,main函数里面的无限循环称为后台。
多任务系统(UCOS等)相比前后台系统,多任务系统的事件响应也是在中断中完成的,但是事件的处理是在任务中完成的。在多任务系统中,任务跟中断一样,也具有优先级,优先级高的任务会被优先执行。当一个紧急的事件在中断被标记之后,如果事件对应的任务的优先级足够高,就会立马得到响应。相比前后台系统,多任务系统的实时性又被提高了。

二、UCOSⅢ的重要特性

先简单阅读下,之后在UCOS后面的学习中再深化熟悉。

可剥夺多任务管理:总是执行当前就绪的最高优先级任务。
同优先级任务的时间片轮转调度:这个是UCOSⅢ和UCOSⅡ一个比较大的区别,UCOSⅢ允许一个任务优先级被多个任务使用,当这个任务级处于最高就绪态的时候,UCOSⅢ就会轮流调度处于这个优先级的所有任务,让每个任务运行一段由用户指定的时间长度,叫做时间片。
极短的关中断时间:UCOSⅢ可以采用锁定内核调度的方式而不是关中断的方式来保护临界代码,这样就可以将关中断的时间降到最低,使得UCOSⅢ能够非常快速的响应中断请求。
任务数目不受限制:UCOSⅢ本身是没有任务数目限制的,但是从实际应用角度考虑,任务数目会受到cpu所使用的存储空间的限制,包括代码空间和数据空间。
优先级数量不受限制:UCOSⅢ支持无限多的任务优先级。
内核对象数目不受限制:UCOSⅢ允许定义任意数目的内核对象。内核对象指任务、信号量、互斥信号量、事件标志组、消息队列、定时器和存储块等。
软件定时器:用户可以任意定义“单次”和“周期”型定时器,定时器是一个递减计数器,递减到零就会执行预先定义好的操作。每个定时器都可以指定所需操作,周期型定时器在递减到零时会执行指定操作,并自动重置计数器值。
同时等待多个内核对象:UCOSⅢ允许一个任务同时等待多个事件,也就是说,一个任务能够挂起在多个信号量或者消息队列上,当其中任何一个对待的事件发生时,等待任务就会被唤醒。
直接向任务发送信号:UCOSⅢ允许中断或任务直接给另一个任务发送信号,避免创建和使用诸如信号量和事件标志等内核对象作为向其他任务发送信号的中介,该特性有效的提高了系统性能。
直接向任务发送消息:UCOSⅢ允许中断或者任务直接给另一个任务发送消息,避免创建和使用消息队列作为中介。
任务寄存器:每个任务都可以设定若干个“任务寄存器”,任务寄存器和CPU硬件寄存器时不同的,主要用来保存各个任务的错误信息,ID识别信息,中断关闭时间的测量结果等。
任务级时钟节拍处理:UCOSⅢ的时钟节拍是通过一个专门任务完成的,定时中断仅触发该任务。将延迟处理和超时判断放在任务级代码完成,能极大的减少中断延迟时间。
防止死锁:所有UCOSⅢ的“等待”功能都提供了超时检测机制,有效的避免了死锁。
时间戳:UCOSⅢ需要一个16位或者32位的自由运行计数器(时基计数器)来实现时间测量,在系统运行时,可以通过读取该计数器来测量某一个事件的时间信息。例如,当ISR给任务发送消息时,会自动读取该计数器的数值并附在消息中,当任务读取消息时,可得到该消息携带的时标,这样,再通过读取当前的时标,并计算两个时标的差值,就可以确定传递这条消息所花费的确切时间。
UCOS两个版本的特性列表
在这里插入图片描述

三、UCOSⅢ的组成

UCOSⅢ的组成可以大致分成核心、任务处理、时间处理、任务同步与通信、CPU的移植等5个部分。
1)核心部分(OSCore.c)
是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能维持系统基本工作的部分都再这里。
2)任务处理部分(OSTask.c)
任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为UCOSⅢ是以任务为基本单位调度的,所以这部分内容也相当重要。
3)时钟部分(OSTime.c)
UCOSⅢ中最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。
4)任务同步和通信部分
为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的相互联系和对临界资源的访问。
5)与CPU的接口部分
是指UCOSⅢ针对所使用的CPU的移植部分。由于UCOSⅢ是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据CPU具体内容和要求作相应的移植。这部分由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。
本文参考:正点原子、野火、百度百科


http://www.ppmy.cn/news/147262.html

相关文章

UCA2.0

UCA(Utility Communication Architecture)是由美国电力研究院(EPRI)联合ABB、SIEMENS等国际大制造商和一些大电力公司制定的公共设施通信协议体系。UCA通信协议体系提供了一个具有广泛适用性的通信协议体系,它不但能用于电力系统也能适用于自来水、煤气等公共设施行业。从1988年…

ZCMU—1709

1709: 搬行李 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 15 Solved: 2 [Submit][Status][Web Board] Description 开学了&#xff0c;又要搬行李&#xff0c;这次你粑粑有2辆车帮你搬&#xff0c;但是不能超载哦。现在给出n(n<10)件行李的体积&#xff0c;以及2…

uC/OS-III-3.0-uC/OS-III简介

1.OS-III是一个第 3代的系统内核&#xff0c;支持现代的实时内核所期待的大部分功能。 例如资源管理&#xff0c; 同步&#xff0c; 任务间的通信等等。然而&#xff0c; uC/OS-III提供的特色功能在其它的实时内核中是找不到的&#xff0c; 比如说完备的运行时间测量性能&#…

zcmu1007

Description 一场考试结束后&#xff0c;经常要统计一个班级的平均分。 请写一个程序&#xff0c;计算每个班级的平均分。 Input 输入每一行第一个整数n&#xff0c;表示待求平均分的班级人数有n个人&#xff0c;接着是n个人的分数。 当n0时&#xff0c;输入结束&#xff0c;不…

U821升级到U810.1注意事项

1、找到客户在2011年1月份的导出记录.BA_和.lst文件&#xff0c;导出索引文件为UFErpYer.lst 2、修改UFErpYer.lst为UFErpAct.lst&#xff0c;修改文件内容&#xff1a; TypeYear 改为 TypeAccount 增加年度信息&#xff0c;如&#xff1a; YCount10 YYear02,03,04,05,06,07,0…

UC/OS和uClinux的比较 + μC/OS-II与eCos的比较

UC/OS和uClinux的比较 引言 随着现代计算机技术的飞速发展和互联网技术的广泛应用&#xff0c;从PC时代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3C&#xff08;计算机、通信、消费电子&#xff09;一体的后PC时代。后PC时代里&#xff0c;嵌入式系统扮演了越…

[uC/OS-III] 21. 信号量

1. 信号量基本概念 信号量&#xff08;Semaphore&#xff09;是一种实现任务间通信的机制&#xff0c;可以实现任务之间同步或临界资源的互斥访问&#xff0c; 常用于协助一组相互竞争的任务来访问临界资源。二值信号量&#xff1a;在 uCOS 中我们用信号量用于同步&#xff0c…

uC/OS-II 中文手册

uC/OS-II 中文手册 - 1 - 315 - 1 - 第一章 范例 在这一章里将提供三个范例来说明如何使用 μC/OS-II。笔者之所以在本书一开始就写 这一章是为了让读者尽快开始使用 μC/OS-II。在开始讲述这些例子之前&#xff0c;笔者想先说明一 些在这本书里的约定。 这些例子曾经用B…