【RTOS的最通俗理解】行业大佬用一篇文章带你快速理解RTOS

2023-05-16

文章目录

  • 单片机\_RTOS\_架构
    • 1. RTOS的概念
      • 1.1 用人来类比单片机程序和RTOS
        • 1.1.1 我无法一心多用
        • 1.2.2 我可以一心多用
      • 1.2 程序简单示例
    • 2. 架构的概念
      • 2.1 用人来类比电子产品
      • 2.2 要深入理解RTOS就必须深入理解CPU架构
    • 3. 课程重点

5分钟拿下你的三连,RTOS的最通俗理解!

单片机_RTOS_架构

1. RTOS的概念

1.1 用人来类比单片机程序和RTOS

在这里插入图片描述

妈妈要一边给小孩喂饭,一边加班跟同事微信交流,怎么办?

1.1.1 我无法一心多用

对于单线条的人,不能分心、不能同时做事,她只能这样做:

  • 给小孩喂一口饭
  • 瞄一眼电脑,有信息就去回复
  • 再回来给小孩喂一口饭
  • 如果小孩吃这口饭太慢,她回复同事的信息也就慢了,被同事催:你半天都不回我?
  • 如果回复同事的信息要写一大堆,小孩就着急得大哭起来。

这种做法,在软件开发上就是一般的单片机开发,没有用操作系统。

1.2.2 我可以一心多用

对于眼明手快的人,她可以一心多用,她这样做:

  • 左手拿勺子,给小孩喂饭
  • 右手敲键盘,回复同事
  • 两不耽误,小孩“以为”妈妈在专心喂饭,同事“以为”她在专心聊天
  • 但是脑子只有一个啊,虽然说“一心多用”,但是谁能同时思考两件事?
  • 只是她反应快,上一秒钟在考虑夹哪个菜给小孩,下一秒钟考虑给同事回复什么信息

这种做法,在软件开发上就是使用操作系统,在单片机里叫做使用RTOS。

RTOS的意思是:Real-time operating system,实时操作系统。

我们使用的Windows也是操作系统,被称为通用操作系统。使用Windows时,我们经常碰到程序卡死、停顿的现象,日常生活中这可以忍受。

但是在电梯系统中,你按住开门键时如果没有即刻反应,即使只是慢个1秒,也会夹住人。

在专用的电子设备中,“实时性”很重要。

1.2 程序简单示例

// 经典单片机程序
void main()
{
	while (1)
    {
        喂一口饭();
        回一个信息();
    }
}
------------------------------------------------------
// RTOS程序    
喂饭()
{
    while (1)
    {
        喂一口饭();
    }
}

回信息()
{
while (1)
{
回一个信息();
}
}

void main()
{
create_task(喂饭);
create_task(回信息);
start_scheduler();
while (1)
{
sleep();
}
}

在这里插入图片描述

2. 架构的概念

2.1 用人来类比电子产品

在这里插入图片描述

在电子系统中,CPU就是大脑,CPU有很多种类别,被称为架构。

常见的有:

  • ARM:
    目前主流的架构,用得最广,芯片公司需要付费购买,再搭配各种模块才能设计出芯片。
    目前华为被美国制裁,无法获得最新的ARM架构;
    对于其他公司,购买ARM新架构的价格也不低。
  • RISC-V:
    后起之秀,开源、免费。
    目前华为海思的HI3861、乐鑫的ESP32-C3等芯片,都是使用RISC-V的单片机芯片;
    平头哥和全志的D1芯片,是使用RISC-V的、能运行Linux的芯片;
    RISC-V作为全新的架构,没有历史包袱,设计优美,在技术上大有可为,另外它开源无需授权,能摆脱技术的卡脖子问题。

2.2 要深入理解RTOS就必须深入理解CPU架构

如果只是使用别人移植好的RTOS来写程序,当然不需要了解CPU架构。

甚至编写驱动程序时,也不需要了解CPU架构:因为我们操作的是CPU之外的设备,不是操作CPU。

但是,如果你想达到如下目标,就需要先了解CPU架构:

  • 深入理解RTOS的内部实现
  • 移植RTOS
  • 解决疑难问题

3. 课程重点

对于同一个电子产品,编写程序时:

  • 不使用RTOS时,处理多个事情就像单线条的妈妈一样,一件一件地顺序做事,前后有影响。
  • 使用RTOS时,就像可以一心多用的妈妈一样,事情之间的影响可以降到最低,多件事可以“同时”进行。

我们要讲的内容就是:

  • RTOS部分:怎么在单片机上,移植、使用ROTS,RTOS的内部实现
  • CPU架构:深入理解CPU架构,才能移植RTOS、深入理解RTOS

资料下载&百问网技术交流群,百万嵌入式工程师聚集地:
https://www.100ask.net/page/2248041

百问网技术论坛:
http://bbs.100ask.net/

百问网嵌入式视频官网:
https://www.100ask.net/index

百问网开发板:
淘宝:https://100ask.taobao.com/
天猫:https://weidongshan.tmall.com/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【RTOS的最通俗理解】行业大佬用一篇文章带你快速理解RTOS 的相关文章

  • FreeRTOS记录(三、RTOS任务调度原理解析_Systick、PendSV、SVC)

    RTOS的任务调度原理和所使用的内核中断 寄存器息息相关 文中截图大多是 Cortex M3与Cortex M4权威指南 翻译版本里面的内容 需要对内核有一定的了解 xff0c 本文尽量用简单的描述表达清楚 虽然是FreeRTOS的记录 x
  • RTOS任务切换原理与实现

    曾今只是使用过移植好的RTOS进行任务开发 xff0c 对其实现的底层原理一直一知半解 xff0c 正好接触到了李述桐老师的课程以及一些网上的资料 xff0c 让我对实时操作系统的原理有了更深的理解 xff0c 特此把一些原理和思考记录下来
  • RTOS滴答Tick设置多少才合适

    本文转载 xff0c 留作笔记 xff0c 如有侵权 xff0c 请联系删除 xff0c 原文链接地址 xff1a 嵌入式开发 RTOS滴答Tick设置多少才合适 xff1f qq com https mp weixin qq com s
  • HW-RTOS 概述

    文章目录 1 背景介绍1 1 OS 实时难题1 2 Linux 实时补丁1 3 Xenomai 43 Linux 双内核1 4 HW RTOS1 5 More 2 优化点1 xff1a API2 1 原理介绍2 1 1 Software A
  • RTOS流和消息缓冲器

    RTOS流和消息缓冲器 任务间通信和同步 可从FreeRTOS V10 0 0获得 介绍 流缓冲区是 RTOS任务 的RTOS任务 xff0c 并且是任务通信原语的中断 与大多数其他FreeRTOS通信原语不同的是 xff0c 它们针对单读
  • RTOS概念介绍

    事件标志组 事件标志组是实现多任务同步的有效机制之一 也许有不理解的初学者会问采用事件标志组多麻烦 xff0c 搞个全局变量不是更简单 xff0c 其实不然 在裸机编程时 xff0c 使用全局变量的确比较方便 xff0c 但是在加上 RTO
  • RTOS任务调度思想汇总_2(任务时间管理)

    1 任务是独立的 xff0c 并且初始化后进入死循环 格式像主函数 xff1b 2 任务的任务控制块 xff1a 首先要定义每个任务的任务控制块变量 xff0c 任务控制块只是一个数据类型 数据结构 xff0c 其数据结构定义的元素有任务堆
  • 基于Cortex-M的RTOS上下文切换详解及FreeRTOS实例

    文章目录 1 Cortex M MCU特性 1 1 操作模式 1 2 寄存器 1 2 1 核心寄存器 1 2 2 浮点寄存器 Floating Point registers 1 2 3 特殊寄存器 Special Registers 1
  • 【STM32CubeMX】STM32H7-RTOS-SPI-W5500

    工程源码下载 xff1a 基于裸机和Freertos的W5500网络通信工程 目录 1 移植W5500步骤 2 Cobemx配置步骤 2 1 时钟配置Clock Configuration 2 2 Trace and Debug配置 2 3
  • FreeRTOS 事件组

    实现功能 当任务A B完成后执行串口任务 不同任务用不同的位表示 configUSE 16 BIT TICKS 1 bitx 0 7 configUSE 16 BIT TICKS设置为0 bitx 0 23 串口任务的头文件 ifndef
  • Zephyr-环境搭建

    目录 1 前言 2 安装主机依赖 3 获取源码 4 安装工具链 5 编译一个Demo 1 前言 Zephyr支持Ubuntu macOS Windows环境下开发 本文介绍基于Ubuntu的环境搭建 包括 Ubuntu开发环境搭建 主要是工
  • RTT-线程管理

    RTT 线程管理 官方API文档 https www rt thread org document api group thread html 概念 线程是竞争系统资源的最小运行单元 每个线程在自己的环境中运行 在任何时刻 只有一个线程得到
  • Azure RTOS定价(ThreadX 等)

    Azure RTOS定价 Azure RTOS定价 https azure microsoft com zh cn pricing details rtos 使嵌入式 IoT 开发和连接变得轻松 Azure RTOS 是一种易于使用 经过市
  • RT-Thread记录(八、理解 RT-Thread 内存管理)

    RT Thread内核的我们已经基本都学习过了 除了基本的线程操作和通信 内核部分还有内存管理和中断处理 本文主要就来说说内存管理相关问题 目录 前言 一 为什么要内存管理 二 RT Thread 内存堆管理 2 1 RT Thread 内
  • 【原创】linux实时操作系统xenomai x86平台基准测试(benchmark)

    一 前言 benchmark 即基准测试 通常操作系统主要服务于应用程序 其运行也是需要一定cpu资源的 一般来说操作系统提供服务一定要快 否则会影响应用程序的运行效率 尤其是实时操作系统 所以本文针对操作系统来做一些基准测试 看看在低端x
  • FreeRTOS(1):任务

    目录 一 FreeRTOS 介绍 什么是 FreeRTOS 为什么选择 FreeRTOS FreeRTOS 资料与源码下载 FreeRTOS 实现多任务的原理 二 移植 FreeRTOS 到STM32 手动移植 使用CubeMX快速移植 快
  • 【导航】RT-Thread 学习专栏目录 【快速跳转】

    本文是 矜辰所致 的 RT Thread 记录专栏的内容导航 结合自己的学习应用过程的总结记录 有基础理论 有与FreeRTOS的比较 有实际项目 有应用总结 目录 前言 一 环境篇 二 内核篇 三 设备和驱动篇 四 组件软件包篇 五 应用
  • Nuttx操作系统(三):构建模式

    1 1 Nuttx构建配置以及模式 Nuttx有三种不同的构建配置 FLAT构建 这种构建是所代码驻留在公共地址空间中 1 应用 内核以及board logic在一个flat地址环境中 2 所有的地址空间具有相同的属性 PROTECTED构
  • 在 Windows 上对嵌入式软件进行原型设计和仿真

    我正在寻找用于原型设计 虚拟原型设计 模拟和测试桌面 Windows 上深度嵌入式 C 代码的工具和技术 包括构建由按钮 LED 和 LCD 显示器 分段和图形 组成的真实嵌入式前面板 我对可能的低级方法特别感兴趣 使用纯 C 代码和原始
  • RT-Thread 内核基础(六)

    RT Thread内核配置示例 RT Thread的一个重要特性是高度可裁剪性 支持对内核进行精细调整 对组件进行灵活拆卸 配置主要是通过修改工程目录下的rtconfig h文件来进行 用户可以通过打开 关闭该文件中的宏定义来对代码进行条件

随机推荐

  • Security+Thymeleaf整合

    文章目录 1 版本介绍2 演示demo3 常见使用表达式Using the expression utility objectsUsing the attributes 官方地址 1 版本介绍 2 演示demo html界面 span cl
  • java正则的使用

    java util regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包 它包括两个类 xff1a Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式 Matcher 一个
  • cas服务端动态servers

    一 什么是servers cas的分为服务端和客户端 xff0c 如果客户端要使用cas需要把自己的域名或ip注册到cas服务端才可以使用 默认的servers为静态的 src main resources services HTTPSan
  • cas 配置相关

    默认配置 span class token comment span span class token comment CAS Cloud Bus Configuration span span class token comment sp
  • Elasticsearch分词器

    内置分词器 中文分词器 这篇博客主要讲 xff1a 分词器概念 ES内置分词器 ES中文分词器 一 分词器概念 1 Analysis 和 Analyzer Analysis xff1a 文本分析是把全文本转换一系列单词 term token
  • java中的引用

    背景 最近在研究ThreadLocal中发现最终存储的ThreadLocalMap中的key为弱引用 xff0c 因此来分析下使用弱引用的原因 实验 引用链为 list 61 gt gt person1 因此在GC的时候 list还强引用三
  • charles

    Charles 的简介如何安装 Charles将 Charles 设置成系统代理Charles 主界面介绍过滤网络请求截取 iPhone 上的网络封包截取 Https 通讯信息模拟慢速网络修改网络请求内容给服务器做压力测试修改服务器返回内容
  • CAN通信

    CAN通信控制器通过两根线上的电位差来判断总线电平 xff0c 是ISO国际标准化的串行通信协议 总线电平分为显性电平和隐形电平 xff0c 二者必居其一 发送方通过总线上电平的变化将信息发送给接收方 CAN通讯是半双工的 xff0c 收发
  • maddpg 复现过程中遇到的问题

    最近在复现论文Multi Agent Actor Critic for Mixed Cooperative Competitive Environments https github com openai multiagent partic
  • 【解决】VSCode在windows下不能打开标准头文件

    鼠标放到标准头文件上 xff0c VSCode提示一下错误 xff1a include errors detected Please update your includePath IntelliSense features for thi
  • SPI通信方式总结

    SPI xff08 Serial Peripheral interface xff09 是一种同步串行传输规范 xff0c 也是单片机外设芯片串行外设扩展接口 xff0c 该接口是一种高速 xff0c 全双工 xff0c 同步的通信总线 x
  • 轮询机制的介绍

    轮询是一种CPU决策如何提供周边设备服务的方式 xff0c 又称 程控输入输出 xff08 Programmed I O xff09 是由CPU定时发出询问 xff0c 依序询问每一个周边设备是否需要其服务 xff0c 有即给予服务 xff
  • stm32面试题总结

    1 嵌入式系统中ROM RAM Register的概念和作用是什么 xff1f ROM是只读存储器 断电后能保证数据不会丢失 xff08 硬盘 xff09 RAM是随机存储器 断电后数据会丢失 xff08 内存 xff09 Register
  • 有刷电机,无刷电机和电调的总结

    有刷直流电机工作原理 xff1a 有刷直流电机的主要结构就是定子 43 转子 43 电刷 xff0c 通过旋转磁场获得转动力矩 xff0c 从而输出动能 电刷与换向器不断接触摩擦 xff0c 在转动中起到导电和换相作用 有刷直流电机采用机械
  • leetcode刷题(五)——找出数组中唯一出现的数

    给定一个只包含整数的有序数组 nums xff0c 每个元素都会出现两次 xff0c 唯有一个数只会出现一次 xff0c 请找出这个唯一的数字 你设计的解决方案必须满足 O log n 时间复杂度和 O 1 空间复杂度 示例 1 输入 nu
  • leetcode刷题(六)——快乐数

    编写一个算法来判断一个数 n 是不是快乐数 快乐数 定义为 xff1a 对于一个正整数 xff0c 每一次将该数替换为它每个位置上的数字的平方和 然后重复这个过程直到这个数变为 1 xff0c 也可能是 无限循环 但始终变不到 1 如果这个
  • leetcode刷题(七)——移动零

    给定一个数组 nums xff0c 编写一个函数将所有 0 移动到数组的末尾 xff0c 同时保持非零元素的相对顺序 请注意 xff0c 必须在不复制数组的情况下原地对数组进行操作 示例 1 输入 nums 61 0 1 0 3 12 输出
  • STM32 HAL库 串口接收不定长数据(帧头)

    写的比较垃圾 xff0c 将就着用 欢迎各位大佬指导 xff0c 我这里要用串口中断接收两种帧头的数据 xff0c 1 以0x0D 0x0A为帧头的数据 2 xff0c 以0x55 0xA5为帧头的数据 两数据包帧头不同 大小不同 其中定义
  • freeRTOS系列教程之【第一章】FreeRTOS概述与体验

    文章目录 教程目录1 1 FreeRTOS目录结构1 1 FreeRTOS目录结构1 2 核心文件1 3 移植时涉及的文件1 4 头文件相关 1 4 1 头文件目录1 4 2 头文件 1 5 内存管理1 6 Demo1 7 数据类型和编程规
  • 【RTOS的最通俗理解】行业大佬用一篇文章带你快速理解RTOS

    文章目录 单片机 RTOS 架构 1 RTOS的概念 1 1 用人来类比单片机程序和RTOS 1 1 1 我无法一心多用1 2 2 我可以一心多用 1 2 程序简单示例 2 架构的概念 2 1 用人来类比电子产品2 2 要深入理解RTOS就