首页 > 编程笔记 阅读:937

嵌入式系统是什么?

目前,嵌入式系统已经普遍出现在很多场合,这些系统在大多数消费电子、智能硬件、通讯器材、汽车、医疗设备、个人计算机和手机中都可以找到。我们在日常生活中也已经使用了很多这样的设备,但几乎很少有人意识到这些设备中含有嵌入式计算机系统。

尽管嵌入式系统是一个相对年轻的领域,但其重要性日渐突出,应用范围不断地扩大,并在不断地成长和成熟。

第一个嵌入式系统大约在 1971 年被 Intel 公司开发出来,该公司为各种商用计算器提供型号为 4004 的微处理器。尽管所有计算器都使用这款相同的微处理器,但 ROM 中的不同程序使它们可以提供不同的功能。

嵌入式系统的定义

嵌入式系统是一个微型计算机系统,是一个机器或者设备的一部分,通常被设计为执行特定任务,而且是一个实时系统。之所以命名为“嵌入式”,是因为这个微型计算机系统通常内嵌于一个更大的设备中。

嵌入式系统一般体积小,成本低,能耗也低。

近年来,嵌入式系统与非嵌入式系统的界限逐渐变得模糊,很大程度上是因为嵌入式系统已经具备了非常多的新功能。但是,按照我们的看法,对嵌入式系统给出如下的定义:

嵌入式系统(Embedded system)是一个为特定目的而设计的专用设备,它拥有一个紧凑、快速并且极为可靠的操作系统,该操作系统用于控制嵌入式设备中的硬件,包括 CPU、RAM、ROM、定时器和 I/O 设备等。

你看,这里所说的嵌入式系统既包含软件,也包含硬件;软件用来控制硬件,硬件用来支撑软件的运行。我们通常将嵌入式系统包含的所有硬件(CPU、RAM、ROM、定时器和 I/O 设备等)从整体上称为微处理器或者微控制器。

一个典型的嵌入式系统示意图
图1:一个典型的嵌入式系统示意图

嵌入式系统通常还会包含一个或者多个应用程序,它们运行于微处理器之上,被操作系统管理。

嵌入式系统通常是整个设备的一部分,它的外观看起来就是一个单板计算机,而系统中运行的程序存在在 ROM 中,因此有时候也把嵌入式系统称为 ROMable 或者 Scalable。

对于简单的设备,也许使用一个单一的应用程序就可以完全控制,但是由于此时没有操作系统,应用程序只能在硬件上“裸奔”,必须自己管理和调用各种硬件,非常麻烦,所以人们还是习惯性地加入一个实时操作系统(RTOS),或者一个操作系统的内核(Kernel)作为整个嵌入式系统的底层引擎,这样应用程序就不用操心硬件了,只需要完成业务逻辑就行。

实时操作系统的英文是 Real-Time Operating System,通常缩写为 RTOS。

嵌入式系统的外观

嵌入式系统的硬件(微处理器)通常被封装在它所控制的设备中,没有通常意义上的计算机的外观,看起来就是一个布满各种电子器件的电路板,如下图所示。


图2:嵌入式系统电路板

嵌入式系统在软件层面一般也不提供漂亮的 UI 界面。有些嵌入式系统需要与外设交互,这时候会提供一个最简单的用户界面,比如 2020 款奥迪 A6 的空调和座椅控制系统,就带有一个扁平化的界面。

奥迪A6空调和座椅调节系统
图3:奥迪 A6 空调和座椅调节系统

嵌入式系统具有确定性

确定性是嵌入式系统的一个显著特征。

关于确定性有多个方面的理解,但都基于这样一个假设,即对于每个可能的状态和输入集,系统的输出集和下一状态原则上都应该是可以预知的。

事实上,这种确定性并不是嵌入式系统独有的,而是所有计算机系统的基本特征。

当我们说某个嵌入式系统是确定性的,实际上指的是暂时或者局部的确定性(Temporal Determinism)。如果一个系统要处理的每个任务都是有限并且可预知的,那么该系统就表现出确定性。

对于嵌入式设备的响应时间,我们通常比较关心最慢响应时间,而不是平均响应时间。必须要保证最慢响应时间不会超过上限,这是一个关于确定性的例子。

实时系统

大多数嵌入式系统必须在很短的时间间隔内对输入做出响应,这些系统经常被归类为实时系统(Real-time System)。

实时系统不但要在规定的时间内得出正确的结果,而且结果还要符合时间顺序,结果出现的顺序和它们的正确性同等重要。

实时约束有两种类型:硬实时(Hard Real-time)和软实时(Soft Real-time):

实时操作系统和实时内核

很少有嵌入式设备是基于单个应用程序开发出来的,它们几乎都依赖于某个 RTOS 或者实时内核。实时内核通常要比完整的 RTOS 小很多。

在操作系统的术语中,内核是指操作系统最先装载到内存中的部分,并且当应用程序运行时,它始终驻留在内存中。同样,实时内核驻留在内存中,并向嵌入式应用程序提供各种必需的服务。由于要驻留内存,实时内核应该尽可能地小。

总结

嵌入式系统的操作需要进程、任务或线程的执行,对外部或内部的输入做出响应或者完成正常的事务处理。这些处理必须在特定的时间约束下得出正确的结果。

嵌入式系统领域实际上是许多学科融合的结果,比如软件工程、操作系统和电子工程。嵌入式系统从其它学科引入了大量的概念和技术,并不断地通过适应、改进和增强这些概念及技术,将它们用于这个相对年轻的领域。

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注

所有教程

优秀文章