嵌入式系统

嵌入式系统是指只为解决几个非常特殊的问题而建立的计算机,并且不容易改变。嵌入式这个词的意思是说它是内置于系统中的。它是一个更大的系统中的永久部分。它通常看起来不像一台计算机,通常没有键盘或显示器或鼠标。但像任何计算机一样,它有一个处理器软件,输入和输出。

例如,嵌入电梯中的控制器根据按下的按钮,告诉电机将电梯移动到不同的楼层。一个解码器嵌入在卫星电视机顶盒(称为STB)读取信号从菜和发送的东西,电视理解。通常这种类型的系统必须在特定的时间内完成其工作。这就是所谓的实时计算。例如,如果机顶盒被打断去做另一项任务,你就会在电视上看到一个糟糕的画面。一台通用计算机在做其他事情的时候经常会有短暂的停顿,它不是实时的。

嵌入式系统控制着今天使用的许多常见设备,如酒店门锁中的读卡器或汽车中的一些东西。它们可以控制像MP3播放器或数码相机这样的小东西,也可以控制像交通灯系统、飞机或工厂的流水线这样的大东西。

ADSL调制解调器/路由器的内部结构图片。一个现代嵌入式系统的例子。标注的部件包括微处理器(4)、RAM(6)和闪存(7)。Zoom
ADSL调制解调器/路由器的内部结构图片。一个现代嵌入式系统的例子。标注的部件包括微处理器(4)、RAM(6)和闪存(7)。

嵌入式系统的例子

嵌入式系统应用于多种电气设备中,包括。

  • 电信系统将其用于电话手机网络和Wi-Fi路由器
  • 消费类电子产品包括广播接收器、MP3播放器移动电话视频游戏机数码相机DVD播放器GPS接收器、家庭安全系统和打印机
  • 家用电器,如微波炉洗衣机、防盗报警系统和洗碗机等都有嵌入式系统。
  • 交通运输业将嵌入式系统应用于火车、飞机汽车的机车等一切领域。
  • 工业上使用电动机与电子控制器、读卡器和数控机床,自动制造金属零件。
  • 医疗设备,如除颤器、自动血压读取器和自动胰岛素泵
  • 军事设备,如对讲机卫星导弹的制导系统。

共同特点

  • 通用计算机不同,嵌入式系统是为了完成特定任务而设计的。
  • 它看起来不像一台电脑--可能没有一个完整的显示器或键盘。
  • 许多嵌入式系统必须能够实时地做事情--在短时间内(从人的角度看几乎是瞬间)。
  • 许多嵌入式系统必须非常安全可靠,特别是对于医疗设备或控制飞机的航空电子设备
  • 启动速度非常快。人们不愿意等一两分钟汽车启动或应急设备启动。
  • 它可能会使用一个特殊的操作系统(或者有时是一个非常小的自制操作系统),帮助满足这些要求,称为实时操作系统,或RTOS。
  • 为嵌入式系统编写的程序指令被称为固件,存储在只读存储器或闪存芯片中。它们在有限的计算机硬件资源下运行:内存小,键盘和/或屏幕小或不存在。

嵌入式系统并不总是独立的设备。有时,它们是作为一套设备构建的,就像汽车的各个部件--收音机、油门控制、污染控制等。有时它们可以与互联网或手机网络通信,它们可能有一个USB读卡器或其他连接。

用户界面

嵌入式系统的范围很广,从完全没有用户界面--只有发送和接收电信号--到像现代计算机一样的全图形用户界面。通常它们会有几个按钮、一个小显示器和一些LED。更复杂的系统可能有一个触摸屏,允许按钮的含义随着每个屏幕的变化而变化,就像智能手机一样。

一个带有按钮和简单液晶显示器的用户界面的例子。Zoom
一个带有按钮和简单液晶显示器的用户界面的例子。

硬件设施

硬件包括芯片、电线、电路板、按钮和显示器。

CPU

最重要的芯片是中央处理单元或CPU。它运行软件指令。它可以是一个标准的微处理器或微控制器。微控制器包括微处理器以及简单的外围设备,因此系统可以更小,更便宜。它们的灵活性较低,因为这些部件不能改变。通常这些部件包括闪存和支持串口、USB等。

与通用计算机的微处理器不同,更大、更快并不总是更好。许多嵌入式处理器都非常小。有时是为了使用更小的空间或更小的功率,有时是为了更便宜。通用计算机会使用读取32位或64位字的微处理器,运行速度以千兆赫为单位,但嵌入式处理器通常是4到32位,运行速度通常以几十兆赫为单位(慢一百倍)。但程序也比较小,不会检查不用的东西)。

现成的电脑板

有一些"现成"的计算机板可以用于一些嵌入式系统。这些通常使用Windows CE、LinuxNetBSD或嵌入式实时操作系统。

有时,使用已经制作好的电路板可能更容易。这些通常与通用计算机共用许多元件,但比通用计算机中的一个小。像威盛EPIA这样的电路板可以运行微软的Windows。其优点是可以节省一些电子工程时间,并且可以使用与PC型软件开发相同的软件开发工具。这类嵌入式设备的例子是赌场中的ATM或显示器。如果对实时性的要求不是很严格的话,这种方法就很好用(比如一项工作需要8秒而不是5秒,这并没有多大关系)。

ASIC和FPGA解决方案

如果设备需要非常小或将以非常大的数量销售("大批量"),那么制造一个能完全满足需要的定制或专用芯片是有意义的。这就是片上系统(SoC),它将一个完整的系统--处理器浮点单元、内存缓存和接口放在一个集成电路上。SoC可以制作成特殊顺序的专用集成电路(ASIC),或者使用现场可编程门阵列(FPGA),由构建嵌入式系统的人进行编程。

外围设备

嵌入式系统利用外围设备与外界或其他组件进行对话,如:。

  • 串行端口。RS-232, RS-422, RS-485.这在过去是很常见的,采用9针(或更大)连接器。
  • 同步串行通信接口。I²C集成电路、I²S集成声音、SPI、MIcrowire、......
  • 通用串行总线(USB)。
  • 网络。以太网,控制器区域网,LonWorks,...
  • 离散输入/输出。通用输入/输出(GPIO)。这可以是一个带有开/关信号的单线。它可用于小型键盘,或用于点亮LED。
  • 模数/数模转换器(ADC/DAC)。这可以测量强度变化的东西,如光传感器或电机控制。
  • 调试。JTAG,ICSP端口,供软件工程师使用。
Soekris net4801,一个针对网络应用的嵌入式系统。Zoom
Soekris net4801,一个针对网络应用的嵌入式系统。

軟件

操作系统

嵌入式系统往往不需要一个完整的操作系统。有的使用特制的小型和简单的操作系统,启动速度非常快,有的则根本不需要。嵌入式系统的适应性没有那么容易,但它们的构建可以更可靠地执行任务。因为硬件比较简单,所以它的制造成本往往也比较低,运行速度也比较快。

与此相反,一台通用计算机需要为新的设备驱动程序和软件做好准备,以运行它还不知道的硬件,如新的打印机或硬盘驱动器。它需要运行不同的应用程序。

随着嵌入式系统的规模越来越大,过去只有在通用计算机甚至大型机上才有的东西,现在在嵌入式系统上也变得很普遍。这包括受保护的内存空间,以及开放的编程环境,包括LinuxNetBSD等

一些操作系统的例子,从简单到复杂。

  • 简单控制循环--用一个定时器和一个循环反复调用不同的子程序。对于小型系统来说,这通常是由一个人制作的。
  • 中断控制 - 任务由不同类型的事件启动。事件可以是定时的(例如,每十秒一次),也可以是通过按下按钮或接收数据来启动。
  • 非先发制人的多任务处理--每个任务都会轮流运行,当它完成时,它会调用操作系统中的调度器来运行下一个任务。
  • 先发制人的多任务或多线程 - 一个任务可以在一段时间后停止,让另一个任务运行一段时间。任何任务都不能霸占系统。在这个层次上,系统被认为有一个"操作系统"内核,可以并行运行任务。这种类型的操作系统通常是从只从事嵌入式操作系统的公司购买的。

实时操作系统包括MicroC/OS-II、Green Hills INTEGRITY、QNX或VxWorks等产品。与MacOS或Windows 7不同,这些操作系统并不为大多数人所熟知。但是在很多时间和安全非常重要的地方,都会用到它们。人们每天都在使用它们,却没有意识到这一点。

大型内核的常见例子是嵌入式Linux和Windows CE。虽然这些内核没有严格的实时系统所需的严格时间限制,但它们正变得越来越普遍,特别是对于更强大的设备,如无线路由器和GPS。它们允许重用设备驱动程序、Web服务器、防火墙和其他代码的公共领域的代码。更习惯于为PC编写应用程序的软件开发人员也会发现这一点更熟悉。如果需要,对于确实需要严格时间限制的事情,可以使用FPGA或其他特殊硬件。

工具类

其他软件一样,嵌入式系统设计人员也使用编译器、汇编器和调试器来开发嵌入式系统软件。但是,他们也可能会使用一些比较特殊的工具。

  • 对于使用数字信号处理的系统,开发人员可以使用MATLAB、MathCad或Mathematica等数学工具。
  • 自定义编译器和链接器可用于改善特定硬件的优化
  • 一个嵌入式系统可能有自己的特殊语言或设计工具,或者在现有的语言中添加增强功能,比如Basic Stamp使用的语言。

调试工具。

  • 线路内调试器(ICD),是一种通过JTAG接口与微处理器连接的硬件设备。当微处理器运行软件时,它可以从外部启动和停止微处理器。它还允许读取内存和寄存器,并在内存中存储软件程序。
  • 使用日志或串行端口输出进行外部调试,以使用闪烁的监视器(printfs)跟踪操作。
  • 交互式驻留调试--如果操作系统支持,这是嵌入式处理器上的一个shell,运行开发者输入的命令(例如Linux)。
  • 在线仿真器取代了电路板上的微处理器,提供了对微处理器可以做的一切的完全控制。
  • 一个完整的仿真器可以模拟硬件的所有功能,让所有的硬件都可以被控制和修改。硬件并不真正存在,但在普通的PC上有一个假装的版本("虚拟"机器)。
  • 用逻辑分析仪或万用表检查外部线路。

除非受限于外部调试,程序员通常可以通过工具加载和运行软件,查看处理器中运行的代码,并启动或停止其运行。代码的视图可能是汇编代码或源代码。一些集成系统(如VxWorks或Green Hills)有特殊的功能,如跟踪软件运行时占用的空间、正在运行的任务以及事情发生的时间。

根据做的是什么样的嵌入式系统,会影响到它的调试方式。例如,调试一个单一的微处理器系统与调试一个同时在外设(DSP、FPGA、协处理器)上进行处理的系统是不同的。

安全性和可靠性

嵌入式系统通常是在机器中,预计会在没有错误的情况下运行多年,在某些情况下,如果发生错误,系统会自行恢复。这意味着软件的开发和测试通常比个人计算机的软件更仔细,而且避免使用不可靠的机械运动部件,如磁盘驱动器和风扇。

安全性和可靠性很重要的地方。

  • 有些系统不能安全地关闭维修,或者维修太困难。这方面的例子包括空间系统(卫星探测器)、海底电缆和核电站控制装置。
  • 如飞机控制装置、化工厂控制装置、火车信号装置、心脏除颤器等,一旦失灵,系统就会出人命。
  • 如果系统关机或出错,将损失大量资金。电话开关、工厂控制、收银机自动出纳机

从错误中恢复的方法--既包括软件错误(如内存泄漏),也包括硬件中的软错误。

  • 看门狗定时器,在系统停止工作时重新启动嵌入式系统。
  • 重复的部分,如果另一个系统停止工作,一个系统可以接管。
  • 软件"跛脚模式",提供部分功能。
  • 免疫意识编程

相关网页

问题和答案

问:什么是嵌入式系统?
答:嵌入式系统是为解决特定问题而建造的计算机,不容易改变。

问:嵌入式系统与通用计算机有何不同?
答:嵌入式系统通常没有键盘、显示器或鼠标,具有专门的功能。通用计算机可以执行广泛的任务。

问:嵌入式系统的一些例子是什么?
答:嵌入式系统的例子包括电梯控制器、机顶盒、酒店门锁的读卡器、交通灯系统、飞机和工厂的装配线。

问:什么是实时计算?
答:实时计算是指嵌入式系统必须在特定时间内完成其工作。如果它被打断了,就会导致电视的画质不好等问题。

问:嵌入式系统的组成部分是什么?
答:像任何计算机一样,嵌入式系统有一个处理器、软件、输入和输出。

问:嵌入式系统可能控制哪些任务?
答:一个嵌入式系统可能控制像MP3播放器或数码相机这样的小型设备,或像交通灯或飞机这样的大型系统。

问:"嵌入式 "一词在嵌入式系统中的含义是什么?
答:"嵌入式 "一词意味着计算机被内置到一个更大的系统中,并且不容易改变。

AlegsaOnline.com - 2020 / 2023 - License CC3