当前位置: 首页 > news >正文

μC/OS-III 概述

实时系统:

指那些对处理结果的正确性处理过程的及时性 都有严格要求的专用系统。
分为:

  • 软实时系统:不允许处理过程超时,超时后即使得到了正确的结果,也是不容忍的。
  • 硬实时系统:处理超时的过程不那么严重。

区别: 对超时带来带来效果的容忍度。

前后台系统:

  • 前台:中断级
  • 后台:任务级
  • 任务级相应延迟:中断程序生成了结果,但是后台程序必须运行到对应处理代码才能处理。

    实时内核:

    用于管理微处理器、微控制器或数字信号处理器时间及硬件资源的软件代码
  • 多任务管理:实时内核管理任务,决定运行那个任务,何时停止当前任务切换其他任务。

    μC/OS-III:是一个可剥夺的内核,他总是运行就绪任务中优先级最高的那个

    μC/OS-III能够在4KB RAM资源的微控制器上运行。

    (TROS)实时操作系统:

    除提供一个实时多任务内核 外,还提供其他高级系统服务,如文件系统、协议栈、用户图形界面(GUI) 等。

    μC/OS-III:

    可裁剪、可固化、可剥夺型的多任务内核,任务数目没有限制。
  • 与其他内核共有功能:资源管理、同步、任务通信 等。
  • 独有功能:内嵌的实时性能测试、向任务直接发送信号量和消息、同时等待多个内核对象 等。
  • 内核对象:任务、信号量、互斥信号量、事件标记、消息列队、定时器、存储块 等。

特性:

  • 可剥夺型内核: 总是执行当前优先级最高的就绪任务。
  • 同优先级时间片轮转:多个优先级相同的任务同时就绪 ,并且这些任务的优先级是当前最重要的有优先级时 ,μC/OS-III就会轮转调度这些任务
    时间片: 每个任务运行一段用户指定的时间。(如果任务用不完,提前让出CPU使用权)
  • 极短的关中断时间: μC/OS-III采用锁定内核调度方式 而不是关中断方式保护 这些范围内部数据结构和变量的临界段
  • 确定性: 中断响应时间 和 大多数系统功能函数的执行时间 的确定性。
  • 可裁剪: μC/OS-III的代码量变量数 可以根据应用的需求调整。
    os_cfg.h头文件中的#define宏定义。
  • 可移植: μC/OS-III可一直到各种不同架构的CPU上。
  • 可固化: 能够和应用程序一起固化到ROM中
  • 可动态配置: 允许用户应用程序中 配置 内核对象 。(避免在编译中出现资源不够分配的问题)
  • 任务数目不受限制: 任务数目只受 CPU所能使用的存储空间的限制 包括 程序代码空间和数据存储空间
  • 优先级数目不受限制:
  • 内核对象数目不受限制:
  • 丰富的系统服务:任务管理、时间管理、信号量、时间标志组、互斥型信号量、消息列队、软件定时器、存储块管理 等。
  • 互斥型信号量: 具有优先级继承特性特殊信号量,可避免优先级反转,可嵌套
  • 可嵌套的任务挂起(suspension): μC/OS-III允许挂起自身或挂起其他任务。
  • 软件定时器:任意定义“单次”或者“周期”型定时器。
  • 同时等待多个内核对象: 一个人任务可挂起在多个信号量和消息列队上
  • 直接向任务发信号: μC/OS-III允许中断或任务直接给另一个任务发信号,避免创建和使用诸如信号量或事件标志组等内核对象向其他任务发信号的中介,提高了系统性能。
  • 直接向任务发消息: 同上
  • 任务寄存器: 每个任务都可以设置若干个“任务寄存器”。与CPU硬件寄存器不同,它们主要用来保存各个任务的错误信息、ID识别信息、中断关闭时间的测量结果等
  • 出错检验: 可做多种错误检测,例如检测应用程序是否传递了NULL空指针,ISR是否调用了任务级系统功能函数,参数数值是否在允许范围内,指定的选项是否有效,系统功能函数调用时指定的内核对象指针是否指向了系统功能函数可操作的内核对象等。返回其执行过程中产生的错误类型码。
  • 内置性能测试: 每个任务的执行时间、每个任务堆栈使用情况、每个任务运行的次数、CPU利用率、ISR和任务间的响应时间、任务和任务间的响应时间、特定链表的最大表项数目、每个任务关闭中断和给调度器上锁的时间等。
  • 易于优化: μC/OS-III所使用的数据类型按照特性CPU最合适的位宽进行修改优先级相关算法可用汇编语言编写,以发挥一些CPU特殊汇编指令的优势。
  • 防止死锁: μC/OS-III的 “等待”功能提供了超时检测机制
  • 任务级时钟节拍处理: μC/OS-III时钟节拍通过一个专门任务完成,定时中断仅触发该任务。将任务处理和超时判断放在任务级代码完成,能极大地减少中断延迟时间。使用哈希散列表机制,进一步降低了处理延迟和超时判断的开销。
  • 用户可定义的介入函数: 特定运行点调用预设介入函数。
  • 时间戳: μC/OS-III需要一个16位或32位自由运行计数器(时基计数器)来实现事件测量。可通过该计数器测量某个事件的时间信息。
  • 内置的内核觉察式调试: 以友好的方式对μC/OS-III的变量、数据结构进行检查和现实。
  • 对象名称: 可以为内核对象设定一个ASCII码名称,以便识别该内核对象。对象名称长度没有限制,但必须以字符串终结符“\0”结尾。

μC/OS、μC/OS-II、μC/OS-III性能比较

特性μC/OSμC/OS-IIμC/OS-III
年份199219982009
最大任务数目64255无限制
优先级相同的任务数目11无限制
时间片轮转调度XX
消息邮箱不再需要
直接向任务发送信号XX
无需调度的发送机制可选
直接向任务发送消息XX
运行时可配置XX
“POST”操作可增加时间戳XX
用汇编语言优化的调度器XX
捕获退出的任务XX
任务级时钟节拍处理XX


转载于:https://www.cnblogs.com/tearain/p/9459138.html

相关文章:

  • centos6.5使用yum安装redis 设置开机启动
  • 初识设计模式(建造者模式)
  • 支付系统整体架构
  • Sketch 介绍
  • 简单的自创线程池
  • python网络编程三次握手和四次挥手
  • javascript基础知识(4) 字符串
  • C语言讨论象棋将帅问题,代码短又美!
  • python存储json文件
  • 6.0 实现app登录
  • socket编程-tcp
  • 私钥、公钥和地址
  • mongo学习- 副本集配置(事故自动转移)
  • 关于函数的参数传递注意事项
  • POJ1125-Stockbroker Grapevine【Floyd】(模板题)
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 30天自制操作系统-2
  • chrome扩展demo1-小时钟
  • cookie和session
  • js数组之filter
  • PHP的类修饰符与访问修饰符
  • python docx文档转html页面
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 关于Flux,Vuex,Redux的思考
  • 汉诺塔算法
  • 回流、重绘及其优化
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 入口文件开始,分析Vue源码实现
  • 使用docker-compose进行多节点部署
  • 跳前端坑前,先看看这个!!
  • 协程
  • 06-01 点餐小程序前台界面搭建
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 7行Python代码的人脸识别
  • MyCAT水平分库
  • ​Java并发新构件之Exchanger
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​批处理文件中的errorlevel用法
  • #stm32驱动外设模块总结w5500模块
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $$$$GB2312-80区位编码表$$$$
  • $(selector).each()和$.each()的区别
  • (12)目标检测_SSD基于pytorch搭建代码
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (利用IDEA+Maven)定制属于自己的jar包
  • (十六)串口UART
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法)前K大的和
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ..回顾17,展望18