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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql 数据备份和恢复

操作系统:22.04.1-Ubuntu mysql 版本:8.033 binlog 介绍 binlog 是mysql 二进制日志 binary log的简称,可以简单理解为数据的修改记录。 需要开启binlog,才会产生文件,mysql 8.0 默认开启,开启后可以在 /var/lib/mysql &#xff…

记一次较为详细的某CMS代码审计

前言 本次审计的话是Seay昆仑镜进行漏洞扫描 Seay的话它可以很方便的查看各个文件,而昆仑镜可以很快且扫出更多的漏洞点,将这两者进行结合起来,就可以发挥更好的效果。 昆仑镜官方地址 https://github.com/LoRexxar/Kunlun-M 环境 KKC…

北京“三阳”凶猛,真会说来就到吗?

综合媒体最新报道,据北京疾控中心发布的第32周《传染病周报》称,8月7日-8月13日,呼吸道传染总报告数为6205例(新冠为主),比上周猛增了71.6%! 从30周到32周,北京呼吸道传染病分别增长了5.3%、20.6%、71.6%。…

使用GUI Guider工具开发嵌入式GUI应用(6)-切换多screen换场景

使用GUI Guider工具开发嵌入式GUI应用(6)-切换多screen换场景 本节将展示使用GUI Guider实现切换显示页面功能。 这里设计的用例是: 创建3张页面,screen_0,screen_1和screen_2。分别在每个页面上中放置一个Label(最…

Vue2中根据权限添加动态路由

Vue2中根据权限添加动态路由 大概记录一下主要代码 1.根据后端返回的路由列表生成左侧菜单(后端返回的数据结构中用id和pid来区别包含关系) 大概结构如下: 2.前端需要处理成包含children的树形结构 //动态生成菜单 export const gener…

超实用的40道JAVA经典算法题(含答案)

作为一名Java程序员,想要拿到一份满意的offer,就必须做好充足的准备。众所周知,算法可以说是大厂面试Java程序员的必问题。好的算法可以让性能得到万倍提升,做到毫秒级处理千万数据的程度。因此,算法的重要性不言而喻&…

eqtl-GWAS和GWAS-GWAS

目前教程中有eqtl-GWAS和GWAS-GWAS两种模式,其他模式比较少见,还未进行开发 数据类型cc为分类变量即case/control,quant为连续变量,eqtl数据默认quant coloc.abf有两个比较需要注意的点,就是数据集中N是代表样本量&am…

Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭,CPU100%

文章目录 问题解决方案1. 对ES的限制2. 对Canal-Adapter的限制 问题 使用canal-adapter全量同步(参考Canal Adapter1.1.5版本API操作服务,手动同步数据(4))的时候 小批量数据可以正常运行(几千条&#xf…

如何利用 EMC 模型解决能源服务提供商的瓶颈

01. 什么是合同能源管理? 合同能源管理(EMC-Energy Management Contract) 是一种新型的市场化节能机制,其实质就是以减少的能源费用来支付节能项目全部成本的节能投资方式。:节能服务公司与用能单位以契约形式约定节能项目的节能目标,节能服…

真香!主数据管理系统,企业大哥必备神器

什么是主数据? 当一家连锁商超企业的市场营销部门想要策划一场线上线下营销活动,从而为消费者提供便捷的购物体验,就需要掌握商超会员的数据。 要想拥有这些数据就需掌握顾客的交易行为,掌握其购物过程行为,甚至情感…

计算机竞赛 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

低代码系列——初步认识低代码

低代码系列目录 一、初步认识低代码 二、低代码是什么 三、低代码平台的概念和分类 01.无代码开发平台 02.低代码应用平台(LCAP) 03.多重体验开发平台(MXDP) 04.智能业务流程管理套件(iBPMS) 四、低代码的能力指标 五、低代码平台jnpf 表单 报表 流程 权限 一、初步认识低代码 …

远程仓库上创建一个新的分支 `b` 并将远程分支 `a` 的内容克隆到 `b` 分支上

一、需求: 要在远程仓库上创建一个新的分支 b 并将远程分支 a 的内容克隆到 b 分支上,你可以按照以下步骤进行操作: 二、解决方案: 1. 首先,使用 git clone 命令克隆远程仓库到本地。例如,要克隆一个名为…

基于百度文心大模型创作的实践与谈论

文心概念 百度文心大模型源于产业、服务于产业,是产业级知识增强大模型。百度通过大模型与国产深度学习框架融合发展,打造了自主创新的AI底座,大幅降低了AI开发和应用的门槛,满足真实场景中的应用需求,真正发挥大模型…

角色入门02----动画蓝图

使用UE4的小白人动画,首先将它动画资产重定向。先ue4转ue5小银人,在把转换后的动画ue5转ue4给这个低模人物就动画就不会很鬼畜。 进入动画创建混合空间1D,这相当于可以组合很多动画 在跑步的混合空间里设置横坐标为Speed,最大值为400&#xf…

文末有福利 | 小海小源表情包第一弹正式上线

手机铃声提醒你有新的消息 抓紧打个招呼“来了” 收到暖心的称赞 真是按捺不住激动的小心脏啊 只要你愿意拿起书 知识的大门将为你敞开 呲溜~ 这是不是像极了努力工作一天后下班的你? 。。。。。。 看了这么多“海源”表情包 是不是觉得小海、小源愈发可爱了呢…

小数据 vs 大数据:为AI另辟蹊径的可操作数据

在人工智能背景下,您可能已听说过“大数据”这一流行语,那“小数据”这一词呢,您有听说过吗?无论您听过与否,小数据都无处不在:线上购物体验、航空公司推荐、天气预报等均依托小数据。小数据即一种采用可访…

Java【Spring】Bean 的作用域和生命周期

文章目录 前言前言一、关于 Bean 的作用域问题引入二、Bean 的作用域1, 什么是 Bean 的作用域2, Bean 的六种作用域3, 设置 Bean 的作用域(解决开篇的问题) 三、Bean 的生命周期总结 前言 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4…

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

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

ROS局部路径规划器插件teb_local_planner流程梳理(上)

在我之前的文章《ROS导航包Navigation中的 Movebase节点路径规划相关流程梳理》中已经介绍过Move_base节点调用局部路径规划器插件的接口函数是computeVelocityCommands,接下来,我们就从这个函数入手梳理一下teb_local_planner功能包的工作流程。 ☆注&a…