1. 首页
  2. 技术文章

嵌入式系统编程知识

与智能设备并驾齐驱已经成为我们所有人的方便和舒适的习惯。但是,除了按下哪些按钮,我们对现代洗衣机或咖啡机了解多少?不多。它们的复杂性能对于普通用户而言仍然是看不见的,因为几乎没有人看过这些机器。

在今天的文章中,我们将深入研究并找出导致嵌入式系统运行的原因。我们的热门话题是嵌入式软件开发及其对各个领域的不可否认的影响

 

什么是嵌入式系统?

传统上,通用计算机执行各种功能,具有屏幕和键盘并连接到Internet,但是嵌入式系统可以工作并且外观可能完全不同。

嵌入式系统是具有基于微控制器和微处理器的集成软件的小型或大型非计算机设备,用于执行专用功能或有限功能集。

它可能有也可能没有屏幕和键盘,可以是可编程的也可以是非可编程的,可以单独执行单个功能,也可以作为大型系统的一部分工作。

嵌入式系统照片

电视遥控器,微波炉,汽车中的传感器和控制系统网络以及复杂的制造机器人设备-所有这些设备和电子系统都由于嵌入式软件而运行。

嵌入式系统的共同特点

  • 设计用于在某些单一用途的设备上执行特定的重复功能
  • 应该迅速执行其功能,有时会在规定的时间内
  • 基于微处理器和微控制器
  • 可以在没有操作系统的情况下工作,也可以使用特殊的OS(通常是实时操作系统(RTOS))
  • 使用有限的内存,功能和计算资源
  • 可能或可能没有键盘,屏幕,用户界面,连接性

嵌入式系统结构

任何大小的,原始的或复杂的嵌入式系统始终是硬件层和软件层的集成。嵌入式系统的方案描述了常见的硬件和软件元素。

什么是嵌入式系统

嵌入式硬件

硬件层围绕用作主系统控制器的中央处理器(CPU)构建。CPU可以表示为:

  • 一个微处理器,它仅包含一个CPU,并具有最小的功率来执行一个简单的操作
  • 一个微控制器,它在一个芯片上集成了CPU,I / O端口,RAM / ROM存储器,可以执行多个任务。

其他重要的嵌入式硬件元素包括:

  • 用于数据存储的存储设备
  • 用于输入和输出操作的I / O设备
  • 计算机总线,用于在硬件组件之间传输数据
  • 用于将物理数据转换为模拟电信号的传感器
  • 模数转换器(ADC),用于将模拟电信号(例如声音或光)转换为处理器可以读取的数字信号
  • 数模转换器(DAC),用于将来自处理器的数字信号转换为电子信号
  • 致动器,用于使机构根据来自处理器的信号起作用,例如,使电动机运动
  • 外设(相机,打印机,扫描仪,键盘等)。

嵌入式硬件元件可以集成在一块板上,包括一个片上系统(SoC)。您还可以为您的项目使用更复杂的电路板-模块上系统(SoM),它是许多芯片的集成。

嵌入式软件

根据设备的复杂性和用途,软件层可能包含各种组件。完整的嵌入式软件包包括四个组成部分:

  • 固件-为某些硬件编写的内置程序。
  • 一个 工作 系统-软件设置规则和控制系统资源。它包括设备驱动程序,这些驱动程序为上层软件组件提供API,并使它们与硬件部件进行通信。有通用和实时操作系统(GPOS和RTOS)。
  • 中间件-一种介体,使上下层软件之间可以进行通信。中间件是为特定的操作系统创建的,位于操作系统和应用程序软件之间。
  • 应用程序 软件—直接执行系统功能并与最终用户进行交互的软件。

大型复杂的嵌入式系统包含所有这些组件,而简单的嵌入式解决方案可能缺少某些软件部分,例如操作系统。

嵌入式系统的类型

根据各种属性,嵌入式系统有几种分类。

分类  嵌入式 系统 基础  的功能 需求

  • 独立—在其他系统上独立执行一个或几个简单任务。例如电子温度计和数字闹钟。
  • 联网-需要有线或无线网络才能与服务器和其他设备共享数据。例如智能家居系统或自助服务亭。
  • 移动-轻巧紧凑的设备,可以轻松随身携带。它们可以独立运行,也可以通过网络运行。例如数码相机或智能手机。
  • 房地产时间-必须执行确定的时间限度内的任务。例如救生医疗设备或军事防御系统。

分类  嵌入式 系统 基础   类型  微控制器 ,他们 使用

  • 规模-使用8位或16位微控制器。这些通常是大型系统的一部分。
  • 介质规模-使用16位或32位微控制器。它们具有更复杂的硬件和软件元素集成,并且可以独立工作。
  • 复杂-使用32位或64位微控制器的集成来执行复杂的功能。

嵌入式系统的应用

无需四处走动即可发现嵌入式系统的实际用例。他们到处都是。

智能家居

现代房屋中充满了消费电子设备和家用电器,例如电视和音乐系统,数码相机,智能手机,游戏机,空调,冰箱,咖啡机和吸尘机器人,所有这些都是嵌入式软件使用的生动例子。 。

一旦此类设备启用了互联网功能,用户就有机会通过无线连接远程管理它们,智能家居的概念  应运而生。

智慧城市

全球各地的城市都在使用多种电子设备和物联网系统。合并到广泛的智能网络中,他们创建了一个名为“智能城市”的新生态系统,其目的仅仅是为了在数百万人居住的大区域中支持安全性并简化流程。

嵌入式技术构成了智能停车,监视系统,交通控制系统,污染监测解决方案, 交互式信息亭 和各种社区服务的基础。

药物

如今,嵌入式系统在医疗保健中的使用已无处不在。各种可穿戴设备和诊断系统可用于监视患者的健康状况以及收集,存储和分析数据。

从简单的电子温度计到更复杂的ECG和MRI机器,在医疗设备中的任何地方,您都可以找到特定的内置程序,这些程序可以为医生和患者带来利益。

汽车行业

现代汽车的字面上装有嵌入式系统。这里有些例子:

防抱死制动系统,自动变速箱,盲点检测,巡航控制和许多传感器的设计旨在使汽车行驶更安全并防止事故发生

燃油控制系统监控燃油消耗

排放控制技术旨在减少空气污染

加热座椅,气候控制,车载信息娱乐系统使驾驶舒适

因此,车载嵌入式软件的核心目的是提供安全,舒适,经济高效且生态友好的驾驶。

制造业

当今世界,制造业是全球最大的行业之一,受到包括嵌入式软件在内的技术创新的影响很大。今天,由于在生产流程中积极实施了机器人技术,物联网,人工智能和大数据,因此我们可以将其称为智能制造。

在任何工厂都可以找到数十种设备,从小型传感器到大型精密设备。其功能从在线监视和远程控制制造设备到数据收集和替换装配线上的人员不等。

航空航天与军事

高性能传感器,导航和通信解决方案的作用在航空,航天工业和军事活动中至关重要。实际上,嵌入式和物联网解决方案是该行业必不可少的,因为它们是负责飞机起降,卫星在发送和接收信号时绕地球旋转的解决方案。

嵌入式系统编程的最佳语言和操作系统

内置系统与一般的基于计算机的程序有很大不同,它们需要各种各样的工具和操作系统来进行编程和操作。

Elements_of_embedded_system_programming_image

 传统上,C和C ++语言很流行用于开发嵌入到硬件芯片中的软件。它们的核心优势是速度,访问低级系统组件的能力以及已编译程序消耗的内存很少。

C# 源自C系列,是面向对象和结构化编程的组合。对于嵌入式和IoT解决方案来说,它也是一个不错的选择,因为用C#编写的程序可以与不同的体系结构兼容。

汇编语言 被广泛用于 低资源系统,因为它可以 将代码直接转换为机器代码,硬件可以轻松地对其进行解释。该语言快速且内存高效。

Java是桌面软件最流行的语言之一,  Java 也用于 为嵌入式系统创建出色的程序。利用其强大的库和Java虚拟机(JWM),开发人员可以编写与不同类型的硬件兼容的便携式应用程序。

近年来,一种解释性语言 Python 作为计算机科学和嵌入式计算的工具,正在迅速发展。它简洁明了,可简化应用程序开发流程。利用人工智能算法,Python可以收集,存储和分析来自实时嵌入式系统的大量数据。

可以使用JavaScript,Golang,Rust,Ada,Lua,Verilog,Embedded C ++等继续使用合适的语言。

就操作系统而言,有很多适当的选项。 Windows CE  专门为处理工业控制器和汽车计算机而设计的各种内置系统中发挥着重要作用。但是,它已经过时了,您可以考虑将其替换为 Windows 10 IoT

开源 Linux 是用于智能设备的传统OS,就像用于移动设备的Android 一样 。我们还可以将实时操作系统(RTOS) ThreadX命名 为用于管理智能对象的非常流行的解决方案。

嵌入式系统的好处

性能强。由于该软件是为在特定设备上处理单个任务而编写的,因此其性能通常接近完美,这对于最终用户而言至关重要

小尺寸。与常规计算机相比,嵌入式系统的尺寸要小得多,这使其紧凑,轻便且便于批量生产

低功耗。大多数设备只需要很少的电源就可以运行,这意味着它们可以在各种位置使用,并可以在复杂的环境下工作。这也意味着资源使用优化。

嵌入式软件开发的挑战

在许多情况下,嵌入式系统负责关键过程甚至人类生活。因此,开发人员应在创建内置解决方案时应对某些挑战,以提供无可挑剔的性能。

稳定

在所有情况下,设备的实时响应和稳定行为在许多情况下均可挽救生命,开发人员负责此功能。他们必须以某种方式设计程序,使设备在规定的资源范围内且无论环境如何变化均能以稳定的方式工作。

设计约束

根据市场需求,设备应该变得更小但功能更强大。对于软件工程师而言,这是一项日益复杂的任务-将更多的计算功能集成到较小的硬件中。

安全

在数字世界中,连接到Internet的任何对象都可能遭受网络攻击,个人数据的安全性已成为热门问题。嵌入式安全是开发人员面临的最大挑战之一,因为对质量保证和测试专业知识以及用于保护内置解决方案的安全机制提出了更严格的要求。

固件,嵌入式软件和物联网之间的差异

固件嵌入式软件物联网(IoT)这三个术语虽然彼此紧密联系,因此经常彼此混淆,但却是不同的概念。让我们澄清一下它们的定义以及它们之间的区别。

固件是一种程序指令,被写入特定的单一用途电子设备的内存中,并执行诸如转换传感器信号之类的低级功能。它用低级语言(C或汇编语言)编写,然后翻译成机器代码,以便给定设备的硬件可以读取并执行该代码。

以前,这种类型的软件曾经存储在EPROM(可擦除可编程只读存储器)芯片中,很难甚至根本无法对固件进行重新编程或更新。如今,它通常存储在闪存中,因此可以轻松进行更新。

通常,无需更新固件,因为它是消费类设备(例如,冰箱,烤箱),计算机组件(例如,视频适配器,硬盘驱动器)和外围设备(例如,打印机,扫描仪)的永久程序。

嵌入式软件,就像固件一样,是为特定设备创建的。区别在于,嵌入式软件使用Java,C ++或Python等高级语言编写,因此功能更复杂,并且可执行高级功能,例如数据处理和与其他设备的交互。

尽管固件可以在没有操作系统的情况下处理任务,但是嵌入式软件需要特殊的OS。

用于嵌入式软件的程序文件存储在给定设备的文件系统中,并提取到随机存取存储器(RAM)中以执行。

如果将嵌入式系统连接到Internet,则它将变成IoT设备。因此,物联网由一系列具有集成软件和网络连接的物理对象组成,可以远程控制和更新。

随着物联网发展的迅速,几乎任何物体都可以成为连接的设备。

在设备控制下生活

生活在这样一个世界里,无论设备是谁,您对设备的了解都比您自己多得多,而机器几乎可以控制一切,这是一个好与坏的改变吗?我们不知道答案,但是我们知道进步是无法停止的。我们应该适应新的现实,在这个新现实中,嵌入式系统的开发已成为企业和日常生活必不可少的部分。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code