μ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.mzph.cn/news/42482.shtml

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

相关文章

latex 笔记:cs论文需要的排版格式

主要针对英文文献 1 基本环境 连字符 不同长度的"-"表示不同含义。 一个"-"长度的连字符用于词中两个"-"长度的连字符常用于制定范围三个"-"长度的连字符是破折号数学中的负数要用数学环境下的-得到 强调 在正式文章中, 通常不…

ARM64 程序调用标准

ARM64 程序调用标准 1 Machine Registers1.1 General-purpose Registers1.2 SIMD and Floating-Point Registers 2 Processes, Memory and the Stack2.1 Memory Addresses2.2 The Stack2.2.1 Universal stack constraints2.2.2 Stack constraints at a public interface 2.3 Th…

【C语言】字符串和内存函数的介绍 -- 详解

重点介绍处理字符和字符串的库函数的使用和注意事项。 C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。 一、求字符串长度⚪strlen …

【Rust】Rust学习 第十四章进一步认识 Cargo 和 Crates.io

本章会讨论 Cargo 其他一些更为高级的功能,我们将展示如何: 使用发布配置来自定义构建将库发布到 crates.io使用工作空间来组织更大的项目从 crates.io 安装二进制文件使用自定义的命令来扩展 Cargo Cargo 的功能不止本章所介绍的,关于其全…

【JavaScript】使用js实现滑块验证码功能与浏览器打印

滑块验证码 效果图&#xff1a; 实现思路&#xff1a; 根据滑块的最左侧点跟最右侧点&#xff0c; 是否在规定的距离内【页面最左侧为原点】&#xff0c;来判断是否通过 html代码&#xff1a; <!DOCTYPE html> <html><head><title>滑动图片验证码&…

Python爬虫常用:谷歌浏览器驱动——Chromedriver 插件安装教程

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 我们在做爬虫的时候经常要使用谷歌浏览器驱动&#xff0c;今天分享下这个Chromedriver 插件的安装方法。 话不多说&#xff0c;直接开搞&#xff0c;如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 第一步、打开谷…

使用Dockker创建vwas容器时报错的解决方法

执行命令 docker run -it -d -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs没有详细看报错之前找了各种各样的解决办法&#xff0c;都无法解决。因此以后在看报错提示的时候耐心一点看关键词Error 后来才发现启动vwas时docker报了这个错&#xff1a; OSError: …

CANoe自动化工程的搭建

基于XMLCAPL建立自动化工程 1、导入ini文件2、新建 Test Environment3、报告类型4、代码编写 1、导入ini文件 工程的配置的文件&#xff0c;配置DUT相关信息&#xff0c;具体视工程而编写内容。 2、新建 Test Environment 1、新建XML测试用例环境 2、导入XML测试用例文件 …

Jmeter常用功能-参数化介绍

JMeter也有像LR中的参数化&#xff0c;本篇就来介绍下JMeter的参数化如何去实现。 参数化&#xff1a;录制脚本中有登录操作&#xff0c;需要输入用户名和密码&#xff0c;假如系统不允许相同的用户名和密码同时登录&#xff0c;或者想更好的模拟多个用户来登录系统。 这个时…

虚拟机/双系统Ubuntu扩容

虚拟机Ubuntu扩容 1.需要删除所有的快照 2.扩展虚拟机磁盘大小 虚拟机(M)→设置(s)→硬盘(SCSI)→扩展磁盘容量 3.Ubuntu内调整分区大小 安装gparted分区工具&#xff1a;sudo apt-get install gparted 启动gparted并resize分区 4.最后最好建一个快照&#xff0c;不然gg了…

WinPlan经营大脑垂直大模型行业报告

一、引言 在当前高度信息化的时代,企业经营管理决策的重要性已经得到了广泛的认可。然而,在实际操作中,许多企业仍然在凭经验、拍脑袋进行经营决策,缺乏数据工具与专职分析团队,导致决策难、效率低等问题。针对这一问题,近年来,一种名为“WinPlan”的经营决策产品逐渐崭…

[测试报告] 爱搜Blog 自动化测试报告

目录 项目背景 项目功能 测试详情 一、设计测试用例 二、功能测试步骤结果 1. 登录页面 2. 个人博客页面 3. 博客详情页 4. 博客编辑页 三、自动化测试及测试结果 1. 测试环境 2. 登录测试用例&#xff1a; 3. 个人详情页测试用例&#xff1a; 4. 写博客并发布测试…

Android免打包多渠道统计如何实现

摘要&#xff1a; 实际上只要完成1-2步即可实现多渠道打包&#xff0c;这也意味着&#xff0c;只要每次更新App时给出一个原始包&#xff0c;运营人员就能在后台自己进行操作管理&#xff0c;简单快捷到全程无需开发人员参与。 我们都知道&#xff0c;Android 市场被分割成几十…

使用Alien对.deb包与.rpm包相互转换

目录 1、切换到root 2、更新yum&#xff08;更新比较耗时&#xff0c;不更新没试行不&#xff0c;自行斟酌是否跳过这一步&#xff09; 3、卸载ibus 4、安装Alien及其依赖包 5、安装Alien 6、将.deb转换成.rpm包 7、安装RPM包 8、如果报错 9、将.rpm转换成.deb包 10、安…

MongoDB(三十九)

目录 一、概述 &#xff08;一&#xff09;相关概念 &#xff08;二&#xff09;特性 二、应用场景 三、安装 &#xff08;一&#xff09;编译安装 &#xff08;二&#xff09;yum安装 1、首先制作repo源 2、软件包名&#xff1a;mongodb-org 3、启动服务&#xff1a…

通过 Amazon SageMaker JumpStart 部署 Llama 2 快速构建专属 LLM 应用

来自 Meta 的 Llama 2 基础模型现已在 Amazon SageMaker JumpStart 中提供。我们可以通过使用 Amazon SageMaker JumpStart 快速部署 Llama 2 模型&#xff0c;并且结合开源 UI 工具 Gradio 打造专属 LLM 应用。 Llama 2 简介 Llama 2 是使用优化的 Transformer 架构的自回归语…

【JavaEE基础学习打卡04】JDBC之MySQL数据库安装

目录 前言一、JDBC与数据库二、MySQL数据库1.MySQL数据库2.MySQL服务下载安装3.MySQL服务启动停止4.MySQL命令 三、MySQL客户端安装总结 前言 &#x1f4dc; 本系列教程适用于JavaWeb初学者、爱好者&#xff0c;小白白。我们的天赋并不高&#xff0c;可贵在努力&#xff0c;坚持…

【 Cocos Creator 项目实战】益智游戏《2048》(附带完整源码工程)

本文乃Siliphen原创&#xff0c;转载请注明出处 目录 游戏介绍 概述 游戏整体流程 游戏框架设计 主要流程控制类 本文项目的代码组织结构 构建游戏世界 数字方块 地图 触摸手势识别 防触摸抖动 判断用户输入的方向 地图 任意大小的地图 初始化地图大小 地图绘制…

无涯教程-Perl - sysread函数

描述 该函数等效于C /操作系统函数read(),因为它绕过了诸如print,read和seek之类的函数所采用的缓冲系统,它仅应与相应的syswrite和sysseek函数一起使用。 它从FILEHANDLE中读取LENGTH个字节,并将输出放入SCALAR中。如果指定了OFFSET,则将数据从OFFSET字节写入SCALAR,从而有效…

IC流程中 DFT 学习笔记(2)

引言 DFT是ASIC芯片设计流程中不可或缺的环节。其主要目的是在芯片前端设计验证完成后插入一些诸如寄存器链等可供测试的逻辑&#xff0c;算是IC后端设计的范畴&#xff0c;属于结构测试而非功能测试。主要是在ASIC芯片流片完成后&#xff0c;通过这些已插入的逻辑&#xff0c…