嵌入式系统是什么?
目前,嵌入式系统已经普遍出现在很多场合,这些系统在大多数消费电子、智能硬件、通讯器材、汽车、医疗设备、个人计算机和手机中都可以找到。我们在日常生活中也已经使用了很多这样的设备,但几乎很少有人意识到这些设备中含有嵌入式计算机系统。
尽管嵌入式系统是一个相对年轻的领域,但其重要性日渐突出,应用范围不断地扩大,并在不断地成长和成熟。
嵌入式系统一般体积小,成本低,能耗也低。
近年来,嵌入式系统与非嵌入式系统的界限逐渐变得模糊,很大程度上是因为嵌入式系统已经具备了非常多的新功能。但是,按照我们的看法,对嵌入式系统给出如下的定义:
图1:一个典型的嵌入式系统示意图
嵌入式系统通常还会包含一个或者多个应用程序,它们运行于微处理器之上,被操作系统管理。
嵌入式系统通常是整个设备的一部分,它的外观看起来就是一个单板计算机,而系统中运行的程序存在在 ROM 中,因此有时候也把嵌入式系统称为 ROMable 或者 Scalable。
对于简单的设备,也许使用一个单一的应用程序就可以完全控制,但是由于此时没有操作系统,应用程序只能在硬件上“裸奔”,必须自己管理和调用各种硬件,非常麻烦,所以人们还是习惯性地加入一个实时操作系统(RTOS),或者一个操作系统的内核(Kernel)作为整个嵌入式系统的底层引擎,这样应用程序就不用操心硬件了,只需要完成业务逻辑就行。
图2:嵌入式系统电路板
嵌入式系统在软件层面一般也不提供漂亮的 UI 界面。有些嵌入式系统需要与外设交互,这时候会提供一个最简单的用户界面,比如 2020 款奥迪 A6 的空调和座椅控制系统,就带有一个扁平化的界面。
图3:奥迪 A6 空调和座椅调节系统
关于确定性有多个方面的理解,但都基于这样一个假设,即对于每个可能的状态和输入集,系统的输出集和下一状态原则上都应该是可以预知的。
对于嵌入式设备的响应时间,我们通常比较关心最慢响应时间,而不是平均响应时间。必须要保证最慢响应时间不会超过上限,这是一个关于确定性的例子。
实时系统不但要在规定的时间内得出正确的结果,而且结果还要符合时间顺序,结果出现的顺序和它们的正确性同等重要。
实时约束有两种类型:硬实时(Hard Real-time)和软实时(Soft Real-time):
在操作系统的术语中,内核是指操作系统最先装载到内存中的部分,并且当应用程序运行时,它始终驻留在内存中。同样,实时内核驻留在内存中,并向嵌入式应用程序提供各种必需的服务。由于要驻留内存,实时内核应该尽可能地小。
嵌入式系统领域实际上是许多学科融合的结果,比如软件工程、操作系统和电子工程。嵌入式系统从其它学科引入了大量的概念和技术,并不断地通过适应、改进和增强这些概念及技术,将它们用于这个相对年轻的领域。
尽管嵌入式系统是一个相对年轻的领域,但其重要性日渐突出,应用范围不断地扩大,并在不断地成长和成熟。
第一个嵌入式系统大约在 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 的空调和座椅控制系统,就带有一个扁平化的界面。
图3:奥迪 A6 空调和座椅调节系统
嵌入式系统具有确定性
确定性是嵌入式系统的一个显著特征。关于确定性有多个方面的理解,但都基于这样一个假设,即对于每个可能的状态和输入集,系统的输出集和下一状态原则上都应该是可以预知的。
事实上,这种确定性并不是嵌入式系统独有的,而是所有计算机系统的基本特征。
当我们说某个嵌入式系统是确定性的,实际上指的是暂时或者局部的确定性(Temporal Determinism)。如果一个系统要处理的每个任务都是有限并且可预知的,那么该系统就表现出确定性。对于嵌入式设备的响应时间,我们通常比较关心最慢响应时间,而不是平均响应时间。必须要保证最慢响应时间不会超过上限,这是一个关于确定性的例子。
实时系统
大多数嵌入式系统必须在很短的时间间隔内对输入做出响应,这些系统经常被归类为实时系统(Real-time System)。实时系统不但要在规定的时间内得出正确的结果,而且结果还要符合时间顺序,结果出现的顺序和它们的正确性同等重要。
实时约束有两种类型:硬实时(Hard Real-time)和软实时(Soft Real-time):
- 硬实时是指实时约束高度严格,出现超时是不可接受的,因为这可能会导致灾难性的系统失效。硬实时的例子包括交通控制系统、医疗监控系统和导弹控制系统。
- 软实时的时间约束并不是非常苛刻,对于时间约束的满足尽量做到就可以了。
实时操作系统和实时内核
很少有嵌入式设备是基于单个应用程序开发出来的,它们几乎都依赖于某个 RTOS 或者实时内核。实时内核通常要比完整的 RTOS 小很多。在操作系统的术语中,内核是指操作系统最先装载到内存中的部分,并且当应用程序运行时,它始终驻留在内存中。同样,实时内核驻留在内存中,并向嵌入式应用程序提供各种必需的服务。由于要驻留内存,实时内核应该尽可能地小。
总结
嵌入式系统的操作需要进程、任务或线程的执行,对外部或内部的输入做出响应或者完成正常的事务处理。这些处理必须在特定的时间约束下得出正确的结果。嵌入式系统领域实际上是许多学科融合的结果,比如软件工程、操作系统和电子工程。嵌入式系统从其它学科引入了大量的概念和技术,并不断地通过适应、改进和增强这些概念及技术,将它们用于这个相对年轻的领域。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算