我们身边的很大一部分电子产品,其实都可以称之为嵌入式设备。除去一些简单的收音机,普通的耳机和音响,普通充电插座,功能单一的读卡器U盘之类的,较为简单的不带控制功能的产品外。它们可以可以称为电子产品,但不属于嵌入式。普通电子产品和嵌入式设备可以通过“是否带可编程的控制芯片”来进行区分。(在这里的“可编程控制芯片”有个更专业的名称叫做“嵌入式芯片”,关于“嵌入式芯片”可以看我的另外一篇博客)

《嵌入式芯片与通用芯片(当前世界的芯片格局)-杂谈》
https://blog.csdn/L_0x0b/article/details/107361944


但对于电脑和手机是否属于嵌入式设备,网上的讨论比较多,说法比较多,疑惑也比较多。这篇文章我就想聊聊这个话题。(行文中为了保持通俗易懂,部分比喻与说法难免不甚严谨。若是有特别荒谬的原则性错误,望斧正。)

在这里有很大一部分观点认为电脑和手机不属于嵌入式设备的范畴,关于这点我持保留意见,电脑和手机虽然和传统意义上的嵌入式设备确实不太一致,但其本质我觉得还是一样的。我们抛开手机先看看电脑与嵌入式的关系。仅从硬件的角度来看,电脑和一些嵌入式设备并没有区别,电脑的CPU,GPU,内存,硬盘。在一些高端的嵌入式设备如汽车的控制仪,智能电视的电路板,大型无人机的电路板里面也都有,仅是容量大小的区别而已。若从软件层面来区分也不可行,Windows和嵌入式的Linux系统并没有本质区别,均由硬件接口层(驱动),根文件系统,启动引导,标准库,应用程序,进程和内存管理器,控制台(shell),以及可有可无的界面系统等部分组成。基于以上观点,我认为电脑和手机从本质上看也是嵌入式产品。

好吧,我编不下去了,我摊牌了。上面的这些观点是我之前和一个朋友在争论的时候所持的,虽然最后战了个五五开,各自保留了意见。但后来我深入了解之后,才发现我错了。电脑确实不属于嵌入式,我前面的分析总体来言并没有太大问题,但却漏了一些关键的东西。


虽然说电脑和嵌入式设备从本质来看是一样的。但若去看“嵌入式”这个名词的定义,就会发现其实它们根本就是在描述两种不同的东西。

一般认为嵌入式的定义离不开“裁剪”,“功耗”,“可靠”,“专用”等名词(需要说明的是,嵌入式的定义并不仅仅是这四个,这四个只是我个人认为比较关键的定义而已),而这些都不能用来描述电脑。

我逐个分析一下:

  • 裁剪:其实不太严谨的说,你可以认为嵌入式设备是通过裁剪电脑得来的。这里的裁剪包括芯片和外围硬件以及系统三方面。不同嵌入式产品仅在于裁剪的程度不同而已。像智能电视就裁的比较少,外围硬件方面仅裁剪掉了部分内存和硬盘容量,裁掉了大部分用不上的接口而已,但像一些低端一点的如门禁系统,就是裁掉了GPU,系统方面裁掉了操作系统,芯片方面裁掉了大部分内存和硬盘容量(亦或者使用一些其他存储介质如EPROM、E2PROM或闪存(Flash Memory)来替代),以及裁掉了大量接口等。(居于芯片的裁剪常见的芯片又分为“通用芯片”和“嵌入式芯片”)
    而对于一个嵌入式设备的裁剪,能够有效的控制该嵌入式产品的成本,而成本的把控对于嵌入式设备来说至关重要,这直接决定了该产品商业化了之后在市场上的竞争性。有些时候为了控制成本工程师会从各个方面进行压缩,如制版材料、制作工艺、元器件材料、参数规格、容量大小等。
    而电脑就没有裁剪的概念了,电脑是一个产品,它不具有裁剪性,一个电脑正常工作就需要那几个硬件,一个也裁不了。

更有甚者,会通过使用一些非常规的方式降低成本,如超频倍频等,通过调节控制芯片的时钟频率超过芯片厂家建议的额定频率,以达到提升芯片性能以低成本芯片实现高成本芯片同等功能的目的。但由此也会出现设备不稳定以及功耗增加等潜在风险。

  • 功耗:嵌入式设备有很多是需要长时间运行的,像监控设备,像一些机房的机器人设备,像门禁系统这些,除非特殊情况,否则几乎不会关机。同时也有很大一部分嵌入式设备是通过使用移动电源来工作的,功耗的高低往往直接决定了该设备的使用时间,例如一些蓝牙音响的使用时间,无人机的使用时间,手机的使用时间,智能手环的使用时间。而这些往往也是一个嵌入式产品商业化的重要因素,所以一个嵌入式设备对于功耗的把控是比较严格的。
    而电脑往往没有这方面的顾虑,也有例外笔记本电脑为了最求长时间续航,有时也会考虑功耗这一块的问题,但台式电脑就不会去考虑了,电脑考虑更多的往往是高功耗下面的散热问题。
  • 可靠(安全):嵌入式设备有一部分是需要运行在一些工业邻域,航空领域以及高温高压、潮湿、高磁等环境。这就要求嵌入式设备在硬件开发设计的时候就考虑到这些环境有可能带来的影响,嵌入式芯片生产厂家在设计芯片时也会考虑到同等情况。而且在软件方面往往会选择版本较低稳定性较高的系统以及软件开发库,并且在程序开发时充分考虑测试各种情况后再下载到硬件上面进行生产。因为在某些邻域,一个嵌入式产品的突然奔溃和停止工作,往往会造成重大经济损失甚至生命安全事故。故部分嵌入式设备存在对于可靠性的严格要求。
    而电脑方面对于可靠性没有那么大的要求。
  • 专用:嵌入式设备的专用性也比较容易理解,这主要体现在软件层面。大部分嵌入式设备的软件程序复杂程度都不会太高,一些简单的嵌入式设备甚至整个产品的软件部分仅需要一个嵌入式软件工程即可独立完成。嵌入式软件程序功能较单一、专用并不是由于开发语言和开发环境等限制的(部分嵌入式开发也用C++/Java等高级语言,同样能写出复杂程度很高的软件),而是由于嵌入式产品的应用范围及需求决定的,一般情况下我们并不需要电冰箱具备播放电视的功能,也不需要遥控飞机有洗衣服的功能。而且嵌入式设备软件功能的单一性也由芯片成本、性能以及功耗等决定。
    其次嵌入式设备的专用性还体现在用户的可选择性上面,由于几乎所有嵌入式设备的软件功能都是设备出厂阶段即已经下载固化到硬件中去的,而且很多产品软件和硬件是紧密结合的,软件的升级换代一般也是和具体硬件产品同步进行。具体的嵌入式产品只能实现特定的功能,用户的可选择空间不大,洗衣机只能用来洗衣服,电视机也只能用来看电视。(当然现在的部分智能电视也可以用来看在线电影,玩游戏等,这其实是相当于一个智能手机甚至连系统都是用的Android,所以完全可以把它当作手机来讲。关于手机我后面再讨论)
    专用性在硬件方面也体现在芯片的专用性上面,电脑使用的芯片是通用芯片,这有区别与嵌入式产品使用的嵌入式芯片。所以嵌入式的专用性较强。
    而在电脑端由于其软件生态的庞大与多元性,使得用户的可选择性大大增加。用户拿到一台新电脑想要玩游戏可以去下载安装游戏软件,想要搞开发可以去下载安装专业领域的软件,想要看电影电视剧可以去下载安装影视软件,且大部分的软件均可实现在线升级而无需处理与硬件环境之间的关系,硬件关系由系统处理并向应用层提供统一接口。所以电脑的生产之初并不指定电脑能用来干什么,电脑能处理的事情由其庞大的软件生态来决定,用电脑来干什么由用户决定,所以其通用程度远远高于嵌入式产品。

所以区分电脑与嵌入式的,或许仅仅只是嵌入式的定义而已。事实上最初定义嵌入式的目的就是专门为了定义了一个范围把电脑排除出去。既然是专门定义了嵌入式这个名词把电脑排除出去,那又怎么还能说电脑属于嵌入式呢?


上面已经分析完嵌入式的定义了,也区分开电脑和嵌入式了。那么接下来我们来聊一下我前面提到的手机以及最近几年出现的智能电视等多媒体电子产品。

遗憾的说,对于这个问题我也没法给出准确的答复。事实上对于手机是否属于嵌入式设备业界的定义也很模糊,仍旧没有统一的说法(需要说明的是,本文所指的手机均为“智能手机”,只具有打电话和发短信等功能而用户无法自行扩展的“功能机”明确归类为嵌入式设备)但大部分观点认为手机仍旧属于嵌入式设备的范围,虽然手机在嵌入式定义中的专用性上面并不准确,这也是由于手机端庞大的软件生态决定的(软件生态其实可以简单的理解为应用市场)。但手机仍然拥有嵌入式定义中的“裁剪”,“功耗”,“可靠”等方面的属性。所以其既可以说是嵌入式设备但又不完全符合嵌入式的特征。

造成手机界定模糊的原因个人观点这其实是历史遗留的问题,从历史的时间线来看,先是有了电脑,然后从电脑中划分出一个领域定义为嵌入式,最后又出现了智能手机。由于智能手机同时具备嵌入式和电脑的部分特征,我们很难用一个旧的定义来界定一个新的东西,这就是导致手机界限模糊的根本原因。非要界定的话只能修改嵌入式的定义把手机包含进来或者剔除出去(这可能也是网上对于嵌入式的定义较为模糊的原因),否则手机只能作为一个特例存在。


后来我在查找资料的时候,偶然看到这么一篇文档。从未看到有人能把嵌入式这个名词阐述的如此清楚。

《论嵌入式的发展历史、现状及未来发展前景》
https://wenwen.sogou/z/q709946776.htm

然后我找到了上面文章的出处,节选自下面两篇文章(我能找到时间最早的)。

《嵌入式系统定义和发展历史(转贴)》
https://wwwblogs/itest/articles/801385.html
《嵌入式系统的现状及发展前景》
https://wenku.baidu/view/33918a106c175f0e7cd13718.html


零BUG是原则性问题。

更多推荐

通用计算机(PC)和手机是否属于嵌入式设备?(嵌入式的定义)-杂谈