嵌入式开发者的选择——用RTOS,还是不用RTOS?

news2024/11/22 5:41:04

  多年来,随着新技术的引入以及用户和应用程序的不同需求,嵌入式开发人员发生了变化。

  正如所有嵌入式东西一样,没有两次流程是相同的。然而,我们应对设计挑战的方式有一些共同之处。你总是从系统级别开始,需要从最终应用程序的角度考虑你正在设计的系统类型。然后,将系统分解成小块或子系统。这是设计的一个重要方面,因为它决定了使用哪些技术、API、接口等。

  下一步是找出设计的哪些部分需要原型化来验证你的假设,以及这些特性是可能的。这个过程应该是快速和不昂贵的。

  接下来,你需要考虑特定的硬件资源,如CPU(或FPGA)、GPU、加速器、处理器接口等。基于这些硬件决策,你现在回到你的软件,确定哪种类型的操作系统最有意义,是开源和Linux就足够了,还是需要一个实时操作系统(RTOS)。

  在整个嵌入式开发过程中,你需要考虑系统的生命周期——将来你会有什么需求,以及你将如何处理你收集的所有数据?

  这一流程的关键是有一个供应商可以带你从设计到开发到部署,并提供选择,无论你是想从RTOS开始,还是正在考虑开源,或者你是否需要认证。

  实时的定义是什么?相对于开源,什么时候需要RTOS?

  从根本上说,实时是指你的应用程序可以在要求的时间范围内执行给定的任务。这就是我们所说的“足够好”或者,RTOS为你提供了确定性,你可以从执行流的角度预测系统的行为。你可以根据执行时间准确预测。无论是10毫秒还是100毫秒,总会有延迟。但是你必须确定多少延迟不会中断你的系统。

  RTOS负责至关重要的进程和机器。想想飞机、火车、汽车,甚至火星探测器。在许多情况下,RTOS的正常运作确保了对人类生命和环境的保护。

  

  或者,在原型嵌入式开发期间,开源是最方便的选择。这是因为你可以访问大量代码,并且你可以看到社区是如何采用类似技术的。当你有计算密集型(例如机器学习)的用例时,开源框架或操作系统也可能是正确的选择,与RTOS一起用于应用程序的最大约束和控制方面。从纯知识产权的角度来看,开源可能会成为问题。换句话说,作为供应商或OEM,你是否愿意将你的源代码提供给社区?

  困惑在于一些开发者错误地将开源与非开源、实时与非实时联系在一起。这是两种截然不同的讨论。真正的争论回到系统基础设施,以及它是否需要确定性。

  在过去的几十年里,RTOS的角色发生了怎样的变化?

  嵌入式系统的世界正在经历一场重大变革,影响着RTOS的作用以及依赖于确定性、超可靠性和性能的应用设计。一旦被隔离和专门构建,嵌入式系统正在迅速增加新的功能,如更好的连接性、可重用性和灵活性。它们越来越多地由软件定义。

  今天的RTOS必须跟上创新的步伐,拥抱现代发展实践。他们必须能够使用新的、更复杂的处理器。它们的设计应该能够在行业中实现新的、更快的开发周期。这意味着要兼容新一代嵌入式开发人员所采用的框架、语言和方法。

  然而,没有改变的是RTOS的基本要求,它必须满足所有这些新标准,而不损害安全性、安全性、性能和可靠性。

  有没有我们应该知道的颠覆性和/或可行性技术?

  首先想到的是5G通信。5G不仅仅是一种让你做事更快的新通信标准。5G从根本上重新定义了延迟等问题。5G的最小可接受延迟远远低于4G LTE。有些人将其称为“超低延迟”,这让嵌入式开发人员可以实时做以前做不到的事情。显然,存在天线和无线电接入问题,但这应该不会有太大影响。5G具有通过边缘计算部署实现大规模“自主”的潜力。

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

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

相关文章

深入 ServiceWorker,消息推送,后台同步,一网打尽

上一章讲到了ServiceWorker的基础使用,但是它的功能不仅仅只有这些,还有很多很多,比如消息推送,后台同步,甚至还有WebRTC,这一章我们来进阶ServiceWorker。 前期准备 在开始之前,我们先做一下…

【分布式微服务】SpringBoot启动原理

一、SpringBoot启动类 SpringBootApplication(exclude DataSourceAutoConfiguration.class) public class PracticeApplication {public static void main(String[] args) {SpringApplication.run(PracticeApplication.class, args);} }二、源码解析 /*** Static helper that …

云原生安全方案介绍

方案介绍 安全狗云原生应用安全解决方案(CNAPP, Cloud-Native Application Protection Platform)采用主机安全Agent和安全容器相结合的技术,既落地了“安全左移”的概念,又能对云原生容器做全面保护,同时能灵活地跟容器编排体系相结合&#x…

map find/count源码分析

参考博客&#xff1a;c map find方法源码解析 众所周知&#xff0c;如果一个数据结构想作为map的key&#xff0c;则必须重载 operator < 否则编译将会报错。但是operator 则是不需要的。那么当查找某个key是否存在的时候&#xff0c;map内部是怎么实现的呢&#xff1f; 结…

1301738-40-8,Bis-maleimides-amine,双马来酰亚胺-氨基

一、基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;1301738-40-8中文名&#xff1a;三臂双马来酰亚胺-氨基&#xff0c;双马来酰亚胺-氨基&#xff0c;活性交联剂&#xff0c;异官能团三臂交联剂英文名&#xff1a;Bis-Maleimides amin…

【C语言进阶】柔性数组

目录一&#xff1a;柔性数组的特点二&#xff1a;柔性数组的使用三&#xff1a;模拟实现柔性数组在C99中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做柔性数组成员 以下是柔性数组的两种写法&#xff1a; //写法一&#xff1a; struct S {int n…

Python笔记 · 鸭子类型 / Duck Typing

1. 问题的由来 我初次意识到鸭子类型在存在是在学习Sklearn时&#xff0c;在《Hands-On Machine Learing》一书的第二章&#xff0c;作者提供了一个自定义的Tansformer&#xff0c;使用自定义Transformer的好处在于&#xff1a;你既可以实现自己需要的数据处理逻辑&#xff0c…

【应用】SpringCloud -- Gateway

SpringCloud -- GatewayGateway 网关概述Gateway 的功能Gateway 核心概念Gateway 网关搭建Gateway 的配置及使用predicate 断言filter 过滤器GlobalFilter 全局过滤器Gateway 的几点问题过滤器执行顺序跨域问题Gateway 网关概述 Gateway 的功能 在微服务当中&#xff0c;有很…

PG15 pg_basebackup 代码解析

背景 先前 PG 版本 pg_basebackup 的代码较为复杂&#xff0c;pg_basebackup 在备份过程中做了很多事情&#xff0c;但这部分代码逻辑没有完全解耦&#xff0c;导致一个文件里包含了很多功能的逻辑&#xff0c;影响了代码的可读性和可修改性。 因此&#xff0c;PG 15 针对这部…

模电学习3. 差模、共模干扰与安规电容

模电学习3. 差模、共模干扰与安规电容一、简介1. 安规2. 电源安规标准二、差模干扰与共模干扰1. 共模干扰2. 差模干扰&#xff08;1&#xff09;定义&#xff08;2&#xff09;来源与特性3. 测量4. 消除电源线路中的差模干扰&#xff08;1&#xff09;差模电容5. 消除电源线路中…

TOOM加强网络舆情监控制定处置预案,抓好舆情监控管理?

舆情预案是指根据对未来舆情发展趋势的预测&#xff0c;制定预先准备的舆情处置方案&#xff0c;以应对可能出现的舆情危机。舆情预案包括舆情预警体系、舆情应对策略、应对措施等内容&#xff0c;旨在在舆情危机发生前进行有效的预防和准备&#xff0c;避免舆情危机扩大&#…

95. BERT预训练数据代码

为了预训练之前实现的BERT模型&#xff0c;我们需要以理想的格式生成数据集&#xff0c;以便于两个预训练任务&#xff1a;遮蔽语言模型和下一句预测。一方面&#xff0c;最初的BERT模型是在两个庞大的图书语料库和英语维基百科的合集上预训练的&#xff0c;但它很难吸引这本书…

Zookeeper 教程

Zookeeper 教程Zookeeper 概述分布式应用Zookeeper 架构图ZooKeeper当中的主从与主备&#xff1a;Zookeeper的特性分布式应用的优点分布式应用的挑战什么是Apache ZooKeeper&#xff1f;ZooKeeper的好处Zookeeper 基础ZooKeeper的架构层次命名空间Znode的类型Sessions&#xff…

九龙证券|外资放大招,400亿巨头狂飙!这只翻倍股却突然崩了

昨日超级“开门红”之后&#xff0c;今天上午港股又有多只重磅个股大幅涨超10%。 今日上午&#xff0c;港股整体窄幅震荡&#xff0c;上午收盘&#xff0c;恒生指数微跌0.05%&#xff0c;恒生科技指数涨0.22%。 职业板块方面&#xff0c;媒体、软件服务、电信等涨幅居前&#…

【BLE】ANCS(Apple Notification Center Service)

目录1. 前言1.1 名词解释1.2 ANCS概述2. ANCS的特征2.1 通知源2.2 控制点和数据源2.3 获取通知属性2.4 获取应用属性2.5 执行通知操作2.6 通知操作3. 更多详情参考1. 前言 1.1 名词解释 NP(Notification Provider)&#xff1a;消息提供者&#xff0c;指的是ANCS服务的生产者&…

【JavaSE】入门概述(1~41)

1.Java视频及配套资料下载指南 2.Java基础学习导读 Java语言的三个层面 基本语法&#xff1a;变量、运算符、流程控制、数组面向对象&#xff1a;把数据及对数据的操作方法放在一起&#xff0c;作为一个相互依存的整体——对象高级应用&#xff1a;多线程、集合、IO流、网络…

性能怪兽-Nginx常用配置指北

目录 安装 Nginx操作命令 https反向代理 负载均衡 轮询 加权轮询 最少连接 加权最少连接 IP Hash 普通 Hash 动静分离 资源压缩 缓冲区 缓存机制 解决跨域 防盗链设计 配置SLL证书 性能优化 打开长连接配置 开启零拷贝技术 开启无延迟或多包共发机制 调整W…

Python连接Liunx中mysql数据库-增删改查

上一篇文章已经讲解了如何连接liunx中的mysql数据库&#xff0c;如果没有连接好数据库的话&#xff0c;可以看这一篇文章 增删改查Mysql中查询操作1.创建游标2.定义一个sql的查询语句3.调用游标内的sql语句执行操作4.打印出查询结果5.完整代码6.指定查询Mysql中新增操作1.单条数…

jupyter 常用记录

安装windows环境下 运行cmd 然后&#xff1a;在命令提示窗口输入pip install jupyter,然后回车&#xff1b;完成后运行 jupyter notebook 前言 提起jupyter notebook&#xff0c;应该很多学习过Python的同学都不陌生。虽然用jupyter notebook的同学相对较少&#xff0c;但是提…

Java多级缓存是为了解决什么的?

前言 提到缓存&#xff0c;想必每一位软件工程师都不陌生&#xff0c;它是目前架构设计中提高性能最直接的方式。 缓存技术存在于应用场景的方方面面。从网站提高性能的角度分析&#xff0c;缓存可以放在浏览器&#xff0c;可以放在反向代理服务器&#xff0c;还可以放在应用…