μCOS-Ⅲ_简介

news2025/1/18 7:27:40

μCOS-Ⅲ简介


文章目录

  • μCOS-Ⅲ简介
  • 前言
  • 一、什么是 µC/OS-III?
  • 二、µC/OS-III的特点
  • 三、µC/OS-III的版本和参考资料
    • 1、µC/OS-III版本
    • 2、µC/OS-III源码获取
    • 3、µC/OS-III参考资料
  • 四、µC/OS-III源码简介
  • 总结


前言

μ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的在线资料,适合作为嵌入式操作系统入门学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/896253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第五章.编辑资料

5.1.添加编辑页面 <template><div class="users-show"><div class="col-md-3 main-col"><div class="box"><div class="padding-md"><div class="list-group text-center"><rou…

k8s v1.27.4 部署metrics-serverv:0.6.4,kube-prometheus

只有一个问题&#xff0c;原来的httpGet存活、就绪检测一直不通过&#xff0c;于是改为tcpSocket后pod正常。 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml修改后的yaml文件&#xff0c;镜像修改为阿里云 apiVersion: …

9.处理this和防抖、节流

9.1 this指向-普通函数 普通函数的调用方式决定了this的值&#xff0c;即【谁调用this的值 指向谁】 普通函数没有明确调用者时this值为window&#xff0c;严格模式下没有调用者时this的值为undefined 9.2 this指向-箭头函数 箭头函数中的this与普通函数完全不同&#xff0…

uni——遍历循环替换值

案例展示 const fraction_json ref([]) //星级数组最终我们需要的格式是&#xff1a; [{“num”: “5”, “evaluate_id”: “2”}, {“num”: “5”, “evaluate_id”: “3”}] 参考的方法&#xff1a; 【 .map() 】方法 map() 方法返回一个新数组&#xff0c;数组中的元素…

究竟什么是位图

引言 为什么要写这篇博文呢&#xff0c;是因为之前面试的时候遇到这样一个问题&#xff1a; 有一款数十亿级别的用户产品&#xff0c;如何统计一周内连续活跃的用户数&#xff1f; 这个问题的特征其实很明显&#xff1a;数据量大&#xff0c;需要交并操作&#xff0c;而且还有…

Postgresql+Postgis安装教程

Windows 下载地址 Postgresql&#xff1a;https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Postgis&#xff1a;https://winnie.postgis.net/download/windows/ 我这里安装Postgresql13&#xff0c;所以对应Postgis也选择pg13版本 首先安装Postgresql…

kali 换源

kali 换源 1.使用root权限打开 vim /etc/apt/sources.list # See https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/ #deb http://http.kali.org/kali kali-rolling main contrib non-free non-free-firmware# Additional line for source pack…

标签(1)(详解)

目录 标签 部分标签 标签之标题 标题介绍与应用 VSCode插件 标签之段落 换行 水平线 标签之图片 网站中最多的元素 图片路径详解 绝对路径 相对路径 网络路径 标签之超文本链接 超链接描述 超链接属性 超链接表现 标签之文本 常用文本标签 标签 部分标签 …

Linux权限系列--给普通用户添加某个命令的sudo权限

原文网址&#xff1a;Linux权限系列--给普通用户添加某个命令的sudo权限_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Linux系统如何给普通用户添加某个命令的sudo权限。 使用场景 普通开发者可能需要sudo的命令&#xff1a; apt-get&#xff08;经常要安装软件&#x…

《Zookeeper》源码分析(十四)之 投票是如何发送与接收的

目录 MessengerWorkerSenderWorkerReceiver第5步&#xff1a;检验选票的epoch和version第6步&#xff1a;处理投票 Messenger Messenger管理接收到的消息以及待发送的消息&#xff0c;其源码如下&#xff1a; 它的源码比较简单&#xff0c;接下来着重介绍它维护的两个线程&a…

【仿写tomcat】七、项目结构优化以及代码开源

仿写tomcat 项目结构开源地址 项目结构 到目前为止&#xff0c;博主的仿写tomcat就告一段落了&#xff0c;后续有时间了还会继续补充功能&#xff0c;现在的项目结构如下。 在保证功能的前提下作出的改动有&#xff1a; 将各个类中的参数统一成了Config类&#xff0c;通过对…

Java课题笔记~ Ajax

1.1 概述 AJAX (Asynchronous JavaScript And XML)&#xff1a;异步的 JavaScript 和 XML。 我们先来说概念中的 JavaScript 和 XML&#xff0c;JavaScript 表明该技术和前端相关&#xff1b;XML 是指以此进行数据交换。 1.1.1 作用 AJAX 作用有以下两方面&#xff1a; 与服…

百度又开源一款压测工具,可模拟几十亿的并发场景,太强悍了

dperf 是百度开源的一款基于 DPDK 的 100Gbps 网络性能和负载测试软件&#xff0c;能够每秒建立千万级的 HTTP 连接、亿级别的并发请求和数百 Gbps 的吞吐量。 优点 性能强大&#xff1a; 基于 DPDK&#xff0c;使用一台普通 x86 服务器就可以产生巨大的流量&#xff1a;千万…

[oeasy]python0085_[趣味拓展]字体样式_下划线_中划线_闪动效果_反相_取消效果

字体样式 回忆上次内容 \033 xm 可以改变字体样式 0m - 10m 之间设置的 都是字体效果 0m 复原1m 变亮2m 变暗 从3m到10m 又是什么效果 呢&#xff1f;&#xff1f; 真的可以 让文字 blink闪烁吗&#xff1f;&#x1f441; 3m 3m 实现斜体字的效果 4m 4m 对应着下划线 控…

==和equals方法之间的区别,hashcode的理解,String拼接,Spring拆分

==和equals方法之间的区别 字符串有字符串常量池的概念,本身就推荐使用String s="字符串", 这种形式来创建字符串对象, 而不是通过new关键字的方式, 因为可以把字符串缓存在字符串常量池中,方便下次使用,不用遇到new就在堆上开辟一块新的空间 有一对双胞胎姐妹,晓苑…

LabVIEW开发感应电机自动测试台

LabVIEW开发感应电机自动测试台 设计开发先进的电机测试台&#xff0c;能够测试额定功率为0-15hp的单相和三相感应电动机。系统能够测量感应电动机的不同参数&#xff0c;例如电压&#xff0c;电流&#xff0c;有功功率&#xff0c;无功功率&#xff0c;视在功率&#xff0c;功…

有限状态机--实现cp的功能

有限状态机–实现cp的功能 执行的任务 上图是我们想实现的任务&#xff0c;对于A机来说&#xff0c;从fd1读取内容写到fd2&#xff0c;B机要做的是从fd2读取内容写到fd1中。 画出A机的状态。 代码示例 fsm.c #include <stdio.h> #include <stdlib.h> #include …

ShowMeBug CEO李亚飞受邀参加深圳青年创新创业系列沙龙电子信息专场

7月13日下午&#xff0c;由深圳市科技交流服务中心&#xff08;深圳市科技专家委员会办公室&#xff09;主办&#xff0c;深圳新一代产业园承办的“2023深圳青年创新创业系列沙龙——电子信息专场”活动举行。ShowMeBug CEO李亚飞受邀参加此次活动。 深圳市科学技术协会党组成员…

web JS高德地图标点、点聚合、自定义图标、自定义窗体信息、换肤等功能实现和高复用性组件封装教程

文章目录 前言一、点聚合是什么&#xff1f;二、开发前准备三、API示例1.引入高德地图2.创建地图实例3.添加标点4.删除标点5.删除所有标点&#xff08;覆盖物&#xff09;6.聚合点7.自定义聚合点样式8.清除聚合9.打开窗体信息 四、实战开发需求要求效果图如下&#xff1a;封装思…

nginx php-fpm安装配置

nginx php-fpm安装配置 nginx本身不能处理PHP&#xff0c;它只是个web服务器&#xff0c;当接收到请求后&#xff0c;如果是php请求&#xff0c;则发给php解释器处理&#xff0c;并把结果返回给客户端。 nginx一般是把请求发fastcgi管理进程处理&#xff0c;fascgi管理进程选…