嵌入式软件架构

这篇具有很好参考价值的文章主要介绍了嵌入式软件架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



总目录链接==>> AutoSAR入门和实战系列总目录

总目录链接==>> AutoSAR BSW高阶配置系列总目录


嵌入式软件架构设计意图通常伴随着基于个人经验的假设。软件开发人员可能会从资源受限的基于微控制器的系统的角度来看待架构设计。系统人员可能会从应用处理器的角度考虑架构。如何设计架构将取决于系统的嵌入式软件分类。

我们可以通过多种不同的方式对嵌入式软件进行分类。我发现有五种简单的嵌入式软件分类可以帮助我调整视角以最好地理解手头的系统。

让我们探索 5 个简单的嵌入式软件分类,您需要了解这些分类才能成功地交流和设计您的系统。

1 嵌入式软件分类 – BAREMETAL

裸机嵌入式系统利用不依赖于操作系统的软件架构。通常,裸机架构将是事件驱动的,严重依赖状态机,和/或使用非常简单的协作任务调度。开发人员需要非常了解底层处理器,因为没有操作系统可以抽象出底层细节。

您通常会在资源受限的设备(例如 8 位、16 位和一些 32 位微控制器)上找到裸机软件设计。但是,资源可用性不是裸机系统的限制条件。您可以设计一个裸机架构并为任何嵌入式处理器实现它。不幸的是,处理器越复杂,实现就越复杂。

对于功能有限、使用资源受限的微控制器、具有严格的实时要求以及对可扩展性的最低要求的产品,建议使用裸机架构和实现。

2 嵌入式软件分类 – 实时操作系统 (RTOS)

使用实时操作系统的嵌入式软件体系结构在过去几年中急剧增加。基于 RTOS 的嵌入式系统通常具有比裸机架构更复杂的时序要求。RTOS 抽象出一些低级细节,例如任务调度,同时还为开发人员提供任务同步(信号量和标志)、数据保护(互斥量)和通信(队列)的工具。

您通常会在 32 位微控制器和小型应用处理器上找到 RTOS 软件设计。虽然您可能会在 16 位处理器上找到它们,但 RTOS 通常需要至少 24 KB 的闪存和 32 KB 的 RAM 才能有效使用。这些要求对 RTOS 的有效使用设置了下限。

RTOS 会给设计增加额外的复杂性,主要是在使用抢占式任务调度时。如果设计者不小心,就有可能导致线程饥饿、创建优先级倒置甚至死锁。但是,RTOS 可以为您提供快速扩展系统、提高可维护性以及收集比裸机系统更复杂的系统性能的能力。

对于具有复杂时序要求、使用现代微控制器、受益于多任务处理以及需要扩展或重用应用程序部分的产品,建议使用基于 RTOS 的架构和实现。

3 嵌入式软件分类 – “通用”操作系统

当使用足够复杂的处理器(如应用程序处理器)时,嵌入式软件架构可以利用整个操作系统。例如,嵌入式 Linux 可以被认为是一个完整的操作系统。我不将 RTOS 归入此类别,因为 RTOS 与嵌入式 Linux 不同,它是一种专用的、资源受限的操作系统,。设计人员可以像开发桌面或移动应用程序那样完全访问库和操作系统资源。

您通常会在 Raspberry Pi 等 32 位应用程序处理器上找到这种操作系统软件设计。然而,这些处理器非常复杂,需要一个操作系统来管理它们的所有资源。现在,这并不意味着您不能使用裸机或使用 RTOS;它只是意味着复杂性和开发时间急剧增加。

完整的操作系统可以消除开发人员的内存限制负担。此外,您通常可以让非嵌入式软件人员参与进来。对于基于操作系统构建的应用程序,软件开发涉及的专业化知识要少得多。

对于没有严格实时要求、使用现代微处理器、受益于高级抽象以及需要扩展或重用应用程序部分的产品,建议使用完整的操作系统架构和实现。

4 嵌入式软件分类 – 容器/微服务

微服务和容器是云、移动和桌面计算中常见的设计类型。然而,他们正在迅速找到进入嵌入式系统的途径。我将这两者混为一谈,因为它们使用的架构设计策略相似,尽管底层技术不同。

微服务

微服务将应用程序构建为一组松散耦合的服务,可独立部署且易于维护(如果做得好)。微服务将应用程序构建为为业务领域开发的小型自治服务的集合。微服务提供具有特定功能的松散耦合服务。

资源相对受限的嵌入式系统(例如微控制器)可以运行微服务。但是,它们通常至少需要与运行 RTOS 所需的内存量相同的内存量。微服务包括服务本身、入站和出站消息队列以及日志和状态信息。

需要编排器和运行时环境会增加微服务设计的复杂性,必须谨慎使用您使用的资源并仔细监控系统的实时响应。然而,微服务可以提供非常可扩展的系统,易于现场维护和更新。

我建议在需要现场更新、可扩展性和现代敏捷流程并受益于分布式模型的应用程序中使用微服务。

容器

容器是一种可以承载微服务的实现范式。每个容器都是一个独立的沙箱,可以运行一个或多个微服务。容器通常可独立部署且易于维护。一系列容器为更广泛的应用奠定了基础。同样,容器和微服务密切相关;容器为微服务运行提供了额外的隔离层。

至少需要一个现代微控制器来利用容器。每个技术供应商都略有不同,但有些供应商声称能够使用与 RTOS 一样少的内存。然而,我调查过的大多数目标物联网应用程序预计大约有 256 KB 的闪存。

容器是一种现代架构实现,可以为嵌入式应用程序增加灵活性、可扩展性和可移植性。多年来,它们已成功用于软件的其他领域。迄今为止最大的限制是尺寸和性能。

我建议在需要现场更新、可扩展性、额外安全性和现代敏捷流程的应用程序中使用容器。

嵌入式软件架构

图 1 – 容器架构堆

5 嵌入式软件分类 – 混合系统

混合系统同时利用多个分类。例如,您可能有一个使用嵌入式 Linux 的应用程序处理器。但是,该处理器可能有一个内置的微控制器,它使用裸机方法来管理实时响应。

混合系统允许开发人员利用多种设计方法从多种系统类型中获益。如果不仔细管理其设计的各个部分之间的交互,这种灵活性通常会增加系统的复杂性。

对于具有复杂处理和实时要求的产品,建议使用混合架构和实现,这些产品使用多核处理器,受益于高级抽象并需要扩展或重用应用程序部分。

6 结论

嵌入式软件系统可以分为多种类型。如何设计和构建嵌入式软件将取决于您选择的分类。每个分类都将规定您用来构建和实施系统的设计模式和工具。当设计或讨论系统时,请先指定系统类型,然后再继续进行设计。文章来源地址https://www.toymoban.com/news/detail-409747.html

到了这里,关于嵌入式软件架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AUTOSAR从入门到精通-【应用篇】基于嵌入式实时Linux及AUTOSAR的跨平台技术研究与实现(续)

    目录  RTAR_PLAT平台及跨平台应用的实现 4.1应用接口层的实现 4.2系统匹配层和系统库层实现

    2024年02月10日
    浏览(41)
  • 【ARM 嵌入式 编译系列 3.5 -- gcc 链接参数介绍】

    请阅读 【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 上篇文章【ARM 嵌入式 编译系列 3.4 – 查看所依赖库文件的路径 详细介绍】一直在提 链接参数 ,那么链接参数有哪些,它们又有什么作用呢? 如前一篇文章中的的链接参数到底是什么意思呢? -L : 指定了 链接库的路径

    2024年01月17日
    浏览(39)
  • CSS的三种链接方式(内联式、嵌入式、外部式)

    其实就是用html中style属性 嵌入式css样式,就是可以把css样式代码写在style type=“text/css”/style标签之间。 (样式一多,内联式就很繁杂,不易于阅读和维护,这没法发挥CSS的优势了) 外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“

    2024年02月06日
    浏览(44)
  • 架构-嵌入式模块

    约三分,主要为选择题 冯诺依曼体系结构 程序和数据共用一个存储空间 ,程序指令和数据存放在同一存储器的不同地址上。 单一的地址及数据总线 ,程序指令和数据的总线宽度相同。 串行执行,在传输上会出现瓶颈 。 哈弗体系结构 程序和数据采用不同的存储空间 ,程序

    2024年02月10日
    浏览(32)
  • 嵌入式软件调试与验证4自动重现和分析嵌入式软件中的Bug

    嵌入式软件的重要性逐年增加。ISO26262标准的最高安全级别要求十个9小时内无故障运行。然而,历史上的一些项目表明,即使进行了全面的测试,多年来仍有许多错误未被发现。航天飞机的控制计算机仅有50万行源代码,却经过了长达8年的测试,每行源代码耗资1000美元,即总

    2024年02月08日
    浏览(41)
  • 冯·诺依曼架构&哈佛架构(嵌入式学习)

    冯·诺依曼架构(von Neumann architecture)和哈佛架构(Harvard architecture)是计算机系统中两种常见的指令和数据存储方式。 冯·诺依曼架构是一种经典的计算机体系结构,由冯·诺依曼于1945年提出。它将指令和数据存储在同一个存储器中,并使用同一套总线进行数据传输。在冯

    2024年02月13日
    浏览(29)
  • 【ARM 嵌入式 编译系列 4.2 -- GCC 链接规范 extern “C“ 介绍】

    请阅读 【ARM GCC 编译专栏导读】 上篇文章:ARM 嵌入式 编译系列 4.1 – GCC 编译属性 likely与unlikely 学习 下篇文章:ARM 嵌入式 编译系列 5 – GCC 内建函数 __builtin 介绍 extern “C” 是一种链接规范,它用于告诉C++编译器按照C语言的方式来链接代码。这个主要用于在C++代码

    2024年02月13日
    浏览(39)
  • 嵌入式IDE(1):IAR中ICF链接文件详解和实例分析

    最近在使用NXP提供的MCUXPresso IDE,除了Eclipse固有的优点外,我觉得它最大的优点就是在链接脚本的生成上,提供了非常直观的GUI配置界面,而且生成的链接脚本也是GCC规范的连接脚本。但这个IDE仅仅支持NXP相关的产品,而且调试的性能在某些情况下并不理想。而我们用得比较

    2024年02月10日
    浏览(36)
  • 嵌入式系统——ARM架构及分类

      “架构”(Architecture)指的是功能规范,ARM架构即是ARM处理器的功能规范,包括以下主要内容: 指令集:每条指令的功能,指令在存储器中的表示方法(编码); 寄存器集:寄存器的数量、大小、功能,以及寄存器的初始状态; 异常模型:不同特权级、异常类型,以及采

    2024年02月02日
    浏览(49)
  • 单片机(嵌入式)程序分层架构

    目录 前言 嵌入式3层软件架构 嵌入式4层软件架构-1 驱动层 操作系统层 中间件层 应用层 嵌入式4层软件架构-2 硬件层 嵌入式微处理芯片 嵌入式存储器系统 嵌入式I/O接口 中间层 系统软件层 RTOS 文件系统 GUI 应用层 嵌入式5层软件架构1 嵌入式5层软件架构2 嵌入式6层软件架构

    2023年04月19日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包