μCOS-Ⅲ_简介

μ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.hqwc.cn/news/72463.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 415.字符串相加

⭐️ 题目描述 🌟 leetcode链接:https://leetcode.cn/problems/add-strings/description/ ps: 从两个字符串的末尾开始遍历,依次相加,若大于等于 10 则使用一个变量记录进位,遍历的时候若两个字符串其中一…

k8s简介、虚拟机快速搭建k8s集群、集群管理方式及K8S工作原理和组件介绍

文章目录 1、k8s简介1.1、部署方式的变迁1.2、定义1.3、Kubernetes提供的功能 2、虚拟机快速搭建k8s集群2.1、虚拟机配置(centos7 2G内存2个处理器)2.2、基础环境准备2.3、docker安装(易踩坑)2.4、安装k8s组件2.5、master节点部署…

一百六十、Kettle——Linux上安装的Kettle9.2.0连接Hive3.1.2

一、目标 Kettle9.2.0在Linux上安装好后,需要与Hive3.1.2数据库建立连接 之前已经在本地上用kettle9.2.0连上Hive3.1.2 二、各工具版本 (一)kettle9.2.0 kettle9.2.0安装包网盘链接 链接:https://pan.baidu.com/s/15Zq9w…

【自用】云服务器 docker 环境下 HomeAssistant 安装 HACS 教程

一、进入 docker 中的 HomeAssistant 1.查找 HomeAssistant 的 CONTAINER ID 连接上云服务器(宿主机)后,终端内进入 root ,输入: docker ps找到了 docker 的 container ID 2.config HomeAssistant 输入下面的命令&…

.netcore grpc双向流方法详解

一、双向流处理概述 简单来讲客户端可以向服务端发送消息流,服务端也可以向客户端传输响应流,即客户端和服务端可以互相通讯客户端无需发送消息即可开始双向流式处理调用 。 客户端可选择使用 RequestStream.WriteAsync 发送消息。 使用 ResponseStream…

SQL Developer中的Data Redaction

SQL Developer中的Data Redaction用起来比命令行方便多了。可以选定表或视图,右键点击“遮盖保护”菜单。 但赋权方面有需要注意的地方。 假设Redact Admin是SYS,Redact User是HR。虽然SYS具备所有权限,但还是报以下错误。其实这个错误是针…

docker复现Nginx配置漏洞

目录 1.docker环境搭建 2.复现过程 2.1CRLF(carriage return/line feed)注入漏洞 2.2.目录穿越 2.3.add_header覆盖 1.docker环境搭建 1.安装docker apt-get update apt-get install docker.ioyum install docker.io 2.下载并解压docker环境Nginx配置漏洞安装包 链接&am…

idea安装插件JRebel

一、安装插件 二、下载代理服务并启动 首先下载服务,网址 Releases ilanyu/ReverseProxy (kgithub.com) 下载后直接双击运行,杀毒软件可以会报警告,直接忽略就行 启动好,等着就行,接下来会用到。 三、在线获取GUID …

3 Python的数据类型

概述 在上一节,我们介绍了Python的基础语法,包括:编码格式、标识符、关键字、注释、多行、空行、缩进、引号、输入输出、import、运算符、条件控制、循环等内容。Python是一种动态类型的编程语言,这意味着当你创建一个变量时&…

R语言生存分析(机器学习)(2)——Enet(弹性网络)

弹性网络(Elastic Net):是一种用于回归分析的统计方法,它是岭回归(Ridge Regression)和lasso回归(Lasso Regression)的结合,旨在克服它们各自的一些限制。弹性网络能够同时考虑L1正则…

构建可远程访问的企业内部论坛

文章目录 前言1.cpolar、PHPStudy2.Discuz3.打开PHPStudy,安装网页论坛所需软件4.进行网页运行环境的构建5.运行Discuz网页程序6.使用cpolar建立穿透内网的数据隧道,发布到公网7.对云端保留的空白数据隧道进行配置8.Discuz论坛搭建完毕 前言 企业在发展…

【Android】解决Lint found fatal errors while assembling a release target

报错信息: Android在debug模式下打包没有问题,但是在打包release版本时出现一下问题: 结果图 原因 我项目的原因是因为把正式、测试地址放到代码里了,忘记选中正式环境的地址,导致打正式包有问题;大家如果…