《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

《嵌入式C编程实战》——第1章 嵌入式系统简介 1.1 嵌入式计算机系统

简介:

本节书摘来自异步社区《嵌入式C编程实战》一书中的第1章,第1.1节,作者【瑞典】Lars Bengtsson(本特松) , Lennart Lindh(林德), 李华峰 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 嵌入式系统简介

1.1 嵌入式计算机系统

图1.1为两台不同的计算机。


screenshot

大部分人看到图1.1后,立刻就可以认出左边的机器是一台计算机。不过,几乎没有人会把右侧的机器看作是计算机,事实上,它确实是一台货真价实的计算机。这两台看起来截然不同的计算机最根本的区别在于,右侧的计算机是嵌入在洗衣机内部的。

如果你认识到这两者的差异,就可以将计算机分成通用计算机和嵌入式计算机两类。

1.通用计算机

通用计算机指的是台式机、笔记本电脑以及工作站等。通用计算机(几乎)总是配有键盘、显示设备、硬盘驱动器,以及用来连接互联网的以太网卡这些设备。这些通用计算机都进行了优化,以便运行Windows或者Mac OS之类的(非实时的)操作系统。

2.嵌入式计算机

嵌入式计算机也可以拥有上述的这些设备,但通常他们与此不同。嵌入式计算机要被安装在被控系统的内部。设计嵌入式计算机的目的是用来专门完成一个(或者几个)任务。图1.1中右边的计算机就是被设计用来实现多个不同的洗衣程序。因此,这台计算机上不是用来运行Windows操作系统的,更不可能被用来玩魔兽世界了。但这并不能改变它是一台计算机的事实,它有着一颗计算机的“心”,这颗“心”由CPU、存储器和一些输入/输出单元构成。

由于嵌入式计算机是具有特定功能的专用计算机,所以当和通用计算机进行参数方面的比较时,嵌入式计算机显得弱的可怜。无论是兆赫(Mega Hertz,MHz)、内存空间(以GB计)、每秒百万个浮点操作(Million Floating-point Operations per Second,MFLOPs),或者数据传输速率(以Gbit/s计)这些指标的哪一项,两者都无法相提并论。嵌入式计算机在成本和功耗方面都进行了优化。谁都不会需要使用一个主频高达5GHz的英特尔酷睿处理器和一个存储容量达到5TB的硬盘组成的通用计算机来控制洗衣机,因为这样做意味着巨大的浪费(费用和能源上的)。通用系统和嵌入式系统的关系如图1.2所示。


screenshot

不过,无论是通用计算机,还是嵌入式计算机,都具有相同的工作原理,它们都是计算机,两者之间的差异仅在于“规模”。

我们很难给出一个让所有人都能满意的关于嵌入式系统的定义。但是,我们对于这个系统定义现在已经取得了一些共识。下面列出的这些应用就是常见的嵌入式系统。

  • 工业系统:工业机器人、控制系统等。
  • 汽车系统:ABS刹车、传输控制等。
  • 医疗仪器控制:扫描仪,植入心脏监视器等。
  • 数码设备控制:CD播放器、电视遥控器、可编程的自动喷水灭火装置、家用电器等。

下面列出的系统都不能归类到嵌入式系统。

  • 用来进行数据处理的计算机系统。
  • 运行在PC或者UNIX计算机上的软件系统。
  • 用于传统的商业或者科学应用的系统。

本书对嵌入式系统的定义如下:

嵌入式系统指的是专门的软件、硬件和接口的集合,目的是用来执行特定的任务(如运行一台洗衣机等)。

当对嵌入式系统和通用系统计算机的产品数量进行比较时,通用系统计算机在市场上占有的比例还不到计算机总量的0.5%。一个普通的家庭(这里指的是西方国家)通常会拥有30个以上的嵌入式计算机和两个通用型计算机。单是一个现代化的汽车,就包含了40~50个嵌入式计算机(发动机控制、温度控制、燃油喷射系统、安全气囊控制、座椅加热、测量燃油液位、速度、转速、雨水传感器等)。

图1.3给出了一个嵌入式计算机系统组件的实例。


screenshot

大多数情况下,一个嵌入式计算机系统并不会包含大型的组件,取而代之的是大量的小型组件。

下面列出了一些这种类型的组件。

  • 传感器(如按钮)。
  • 执行器(如灯)。
  • A/D和D/A转换器。
  • 人机交互界面。

与此相比,典型的通用计算机硬件组成部分为硬盘驱动器、以太网接口、显示设备、键盘以及鼠标。

作者点评:时至今日,已经无法在通用计算机和嵌入式计算机之间划出一条明确的界限了。打个比方,你能准确地告诉我iPad或者智能手机是通用计算机,还是嵌入式计算机吗?

下面是一些常用的术语:

美国国家标准协会C标准(American National Standards Institute C,ANSI C)

ANSIC是美国国家标准协会对C语言标准制定的规范。

应用程序编程接口(Application Programming Interface,API)

API是由操作系统或者库文件提供的源代码接口,可以被调用,以此支持一些计算机程序发起的服务请求。

中央处理单元(Central Processing Unit,CPU)

中央处理单元可以是任何一个符合如下定义的硬件。首先,它必须能够处理数据;其次,它必须能控制必要的资源对这些数据进行处理。例如,对两个数求和,CPU就需要读取这两个数,然后将它们添加到一个处理电路(如ALU)中,最后将得到的结果写回。

GNU编译器套件(GNU Compiler Collection,GCC)

由GNU开发的编程语言编译器集合,可以用来处理多种编程语言。

GNU并不等同于UNIX(GNU is Not UNIX,GNU)

GNU是一个完全由自由软件构成的计算机操作系统。开发GNU的项目被称作GNU计划。

图形用户界面(Graphical User Interface,GUI)

一种用户界面,通过它可以实现人类与计算机之间以图形化的图标方式进行交互。

人机界面(Human Machine Interface,HMI)

人机界面用来实现人与机器之间的互动。

微处理器(MicroProcessor,μP)

微处理器是一种通用设备,它包含着ALU,也就是算术逻辑单元和控制单元。微处理器通常都是集成在单个芯片上的独立设备,相比微控制器,它包含了更多的资源,并用来完成复杂运算。

微控制器(Microcontroller,μC)

微控制器拥有一套完整计算机系统“集成”的所有必须单元。微控制器可以被称为“单芯片解决方案”。它通常包括了中央处理单元(CPU)、RAM、EPROM/PROM/ROM、I/O外设、定时器、中断控制器。微控制器可以被认为是一种特殊形式的更通用的微处理器。它专门用来控制运算复杂度较小的应用程序。

通用串行总线(Universal Serial Bus,USB)

通用串行总线用来实现和外部设备通信的通用串行总线标准的接口技术。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章