首页
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
更多
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
什么是实时操作系统 (RTOS)?
文摘
2024-11-02 09:39
四川
近期群福利:
《电机驱动器电路板布局的最佳实践》
《高速接口电路布局指南》
与GPT4o技术对话,与业内同行交流,欢迎关注AI机器人,入群👆👆👆
******************
******************
实时操作系统 (RTOS) 是一种运行多线程应用程序并可以满足实时期限的操作系统 (OS) (通常是轻量级OS)。大多数rtos包括调度程序、资源管理和设备驱动程序。请注意,当我们谈论 “截止日期” 时,我们并不一定意味着 “快速”。相反,满足最后期限表明了确定性的水平,这意味着我们可以弄清楚某些任务何时会在运行时之前执行。
在本文中,我们将介绍各种RTOS概念,并使用ESP32和Arduino IDE进行演示。这些信息将在一系列视频中介绍。大多数视频将以挑战结束,我们鼓励您尝试。针对这些挑战的解决方案将在这些Maker.IO页面上提供。
通用操作系统vs.实时操作系统
通常,当我们想到 “操作系统” 时,我们会想到Windows,macOS和Linux之类的东西。这些是通用操作系统 (gpo) 的示例。大多数情况下,这些操作系统是为用户交互而设计的,并提供某种界面,无论是命令行界面 (CLI) 还是图形用户界面 (GUI)。它们还设计用于运行多个应用程序,通常具有多线程,并提供其他好处,如资源/文件管理和设备驱动程序。
因为用户交互通常是GPOS设计的主要焦点,所以一些延迟是可以接受的 (只要用户没有注意到很长的滞后时间)。因此,在GPOS中很难 (如果不是不可能的话) 预测确切的任务期限。
这与RTOS形成对比。大多数rtos被设计为在微控制器上运行。因此,他们通常可以放弃复杂的用户界面 (例如,没有命令行或GUI),以便一次完成一些任务而无需处理用户输入。此外,为微控制器编写的应用程序可能需要满足严格的时间期限,例如每隔几毫秒点燃火花塞,控制医疗设备以保持某人的生命,并在精确的时间在卫星上发射推进器以保持在轨道上。
许多rtos还带有资源管理库,例如读取和写入文件的能力,以及低级设备驱动程序,例如WiFi和蓝牙堆栈和LCD驱动程序。请注意,RTOS中的设备驱动程序通常比GPOS中的设备驱动程序简单得多,因为通常不要求微控制器执行控制图形卡之类的操作!
超级循环vs.多线程应用
如果你以前写过一个嵌入式应用程序 (包括Arduino的东西),你可能熟悉超级循环架构 (也称为 “裸机编程”)。在这里,没有操作系统,结构相当简单: 在您的main() 函数中,您设置了任何变量,驱动程序,库,等,然后在while(true) 循环中执行一个或多个周期性任务。在Arduino中,这体现在setup() 和loop() 函数 (它们只是从Arduino库中的main() 调用的函数)。
超级循环应用程序没有任何问题。事实上,它仍然是最流行的微控制器编程方法之一,因为它易于实现和调试。您甚至可以通过使用中断服务例程 (isr) 添加中断导致程序在发生外部事件 (例如计时器到期或按下按钮) 时停止并执行一些任意代码。
如果在主循环期间要完成多个任务,则通常以循环方式执行它们。当你开始添加这么多的任务,一些开始错过最后期限或阻止其他功能工作时,问题就出现了。这就是RTOS可以提供帮助的地方。您基本上可以同时执行所有内容,而不是以循环方式执行所有内容。
你仍然可以有中断-他们会停止任何任务正在运行的时刻执行ISR,然后返回执行任务。
请注意,这里有一些术语可能会混淆:
A任务是一组装入内存的指令。它也可能意味着需要完成的工作或目标的某个单位。
A螺纹是中央处理器 (CPU) 利用率的单位,具有自己的程序计数器和堆栈内存。
A流程是计算机程序的一个实例。一个进程可以有多个线程。大多数嵌入式程序都是作为单个进程编写的,但是GPOS通常同时运行多个进程。
在FreeRTOS中,这些术语可能会变得更加模糊。FreeRTOS使用术语 “任务” 来表示 “线程”。因此,您经常会看到这些术语可互换使用,尤其是在FreeRTOS文档中。在这一系列视频和帖子中,我将坚持FreeRTOS的做法,将CPU利用率单位称为 “任务”,但要知道它们类似于其他框架中的 “线程” (e.g. POSIX)。
所以,我们得到了最终的问题: 你应该使用RTOS?答案是 “是”,如果你需要在你的微控制器上运行多个任务/线程来完成你的目标。根据您的需求,满足实时截止日期的能力可能很重要,也可能不重要。如果你不需要多线程,最好坚持超级循环架构,因为它更容易调试。
如果您需要多线程支持,RTOS还有其他一些好处。也就是说,它允许您更容易地模块化代码,因为任务可以单独编写。如果您在团队中工作,则可以将各个任务分配给不同的团队成员,以允许并发开发。请注意,最后仍然会有调试,以确保一切都正确集成。
RTOS要求
RTOS确实需要一些开销,因为后台任务 (调度程序) 需要定期运行以切换任务。这会占用内存和一些CPU周期。结果,许多rtos具有最小时钟速度和存储器要求。
虽然您可以在Arduino UNO (ATmega 328p) 上运行许多不同的rtos,调度程序的开销是如此之大,以至于您没有为自己的应用程序留下很多资源。因此,许多8位和16位微控制器最好与更简单的超级回路 (裸机) 架构一起使用。
当你开始使用功能更强大的32位微控制器,时钟更快 (例如。g.超过20 MHz) 和更多内存 (例如g.超过32 kB RAM),您将有更多的资源可用于运行rtos。请注意,这些不是硬性要求-不同的rtos需要不同数量的资源。
在本系列中,我们将使用ESP32,它具有240 MHz时钟,512 kB RAM和2内核。因为它被设计为物联网 (IoT) 系统,所以ESP32受益于RTOS。事实上,Arduino版本的ESP32支持FreeRTOS开箱即用 (确切地说是修改版本)。仅WiFi和蓝牙堆栈就需要RTOS,因为它们必须与用户应用程序同时运行,以便它们可以在必要的时间内响应网络请求。
根据Eclipse基金会2018年的一项调查,Linux仍然是物联网设备最受欢迎的操作系统。但是,请注意,Linux是一个完整的GPOS,即使它以轻量级的方式使用。此外,它通常需要一个完整的微处理器 (不是微控制器) 来运行。
在Windows (另一个gpo) 之后,我们看到FreeRTOS是最受欢迎的RTOS。紧随其后的是裸机编程 (超级循环)。其余的似乎无法与这4个的受欢迎程度相比。话虽如此,我建议密切关注
Zephyr项目
,因为它是RTOS领域的新手,并且得到了Linux基金会的支持。
如果您正在创建复杂的嵌入式程序,RTOS可以是一个强大的工具。它们可以帮助您分离任务,并使您能够同时运行它们 (或看起来同时运行)。您可以在大多数rtos中设置任务的优先级别,这允许某些任务在其他任务之前中断和运行。这被称为 “抢先”。
如果您需要并发性或正在深入了解物联网或机器学习等嵌入式概念,我建议您将rtos和多线程编程添加到您的工具包中!
《电机驱动器电路板布局的最佳实践》完整PDF文档已分享,欢迎入群获取
http://mp.weixin.qq.com/s?__biz=MzkwODY1Mzk5Nw==&mid=2247487547&idx=1&sn=72973c6b8e7f9a9b54c4cd8258c13b23
电子设计实战派
以国际及国内一线硬科技原厂资源,聚焦最硬核的硬科技进阶资讯,解决硬科技落地技术难题,赢在“电子设计实战派”。
最新文章
从捷变频收发器说起,由珠海航展看射频微波芯片背后的防务应用
PCB布局与布线,提升EMC性能的10条黄金建议
模拟和电源设计看过来,大厂这款仿真工具新增SPICE 模型数据库强助力
如何优化HV CoolGaN™功率晶体管的PCB布局
新鲜出炉,“最先进”的模拟和混合信号平台会带来哪些改变?
小心烧坏你的仪表放大器!这些实用建议拿走吧
一文说透接地和去耦
数字信号控制器的原理图和PCB布局指南
PCB CAD,选型指南
LDO稳压器选型:那些常被忽略的关键参数
RF滤波器怎么选?
开关电源设计保姆级教程
封神10年的这款RF收发器,凭啥依然孤独求败?
一文读懂电路接地与去耦
有刷电机 or 无刷电机?一文读懂关键要点
技术干货|RS-485 收发器常见问题解答
一文get线性稳压器的五个设计细节
干货丨射频滤波器工作原理
跨阻型放大器应用的常见问题这样解决
混合信号PCB布局技巧
封神的凌特,看看极致的电源是什么样子
RF滤波器怎么选?
什么是实时操作系统 (RTOS)?
PCB空间告急?这里有个超实用的节省妙招等你解锁!
收藏|实用的PCB 设计检查清单,get布局要点
无线连接技术选择指南
内行看门道,激光武器里的那些关键技术
当输入和输出电压接近时,为什么难以获得稳定的输出电压?
蓝牙设备电路的PCB设计指南
业绩连续超预期,功率器件巨头是如何做到的?
来自大厂的实用建议,高速电路设计请注意这些要点|入门进阶篇
如何才能获得ADC的最佳SNR性能?
如何解决电流环路的功耗问题?
汽车48V方案大厂完整设计指南
不仅适用于HiFi电路设计,噪声和总谐波失真(THD)优化指南
高性能低侧电流感应电路,PCB板应该这样设计
仿真神器LabVIEW的10个隐藏技巧
如何高保真?音频电路设计需要遵循的几个设计要点
大厂首推嵌入式软件开发环境,瞄准热门应用
实用|成功PCB设计之,基于约束的设计要点和方法
运算放大器魔法, 信号处理电路的秘密
低/中/高功率电源方案设计框图与产品选型指南
印刷电路板设计综合指南,一文getPCB的制造、组装、测试和调试那些事
完整电路及设计过程分析,看85V-260VAC至5VDC-2.5A反激式开关电源如何设计
高速电路板设计指南:一文弄明白元件布局 、走线控制以及串行信号布线要点
实用,MOSFET这样测
滤波器的快速设计流程
高速电路板设计指南之信号端接、串扰与滤波和去耦
设计滤波器,必须提前知道的几件事儿
一文弄懂HiFi级音频放大电路信号的几大规格
分类
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
原创标签
时事
社会
财经
军事
教育
体育
科技
汽车
科学
房产
搞笑
综艺
明星
音乐
动漫
游戏
时尚
健康
旅游
美食
生活
摄影
宠物
职场
育儿
情感
小说
曲艺
文化
历史
三农
文学
娱乐
电影
视频
图片
新闻
宗教
电视剧
纪录片
广告创意
壁纸头像
心灵鸡汤
星座命理
教育培训
艺术文化
金融财经
健康医疗
美妆时尚
餐饮美食
母婴育儿
社会新闻
工业农业
时事政治
星座占卜
幽默笑话
独立短篇
连载作品
文化历史
科技互联网
发布位置
广东
北京
山东
江苏
河南
浙江
山西
福建
河北
上海
四川
陕西
湖南
安徽
湖北
内蒙古
江西
云南
广西
甘肃
辽宁
黑龙江
贵州
新疆
重庆
吉林
天津
海南
青海
宁夏
西藏
香港
澳门
台湾
美国
加拿大
澳大利亚
日本
新加坡
英国
西班牙
新西兰
韩国
泰国
法国
德国
意大利
缅甸
菲律宾
马来西亚
越南
荷兰
柬埔寨
俄罗斯
巴西
智利
卢森堡
芬兰
瑞典
比利时
瑞士
土耳其
斐济
挪威
朝鲜
尼日利亚
阿根廷
匈牙利
爱尔兰
印度
老挝
葡萄牙
乌克兰
印度尼西亚
哈萨克斯坦
塔吉克斯坦
希腊
南非
蒙古
奥地利
肯尼亚
加纳
丹麦
津巴布韦
埃及
坦桑尼亚
捷克
阿联酋
安哥拉