我们身边的很大一部分电子产品,其实都可以称之为嵌入式设备。除去一些简单的收音机,普通的耳机和音响,普通充电插座,功能单一的读卡器U盘之类的,较为简单的不带控制功能的产品外。它们可以可以称为电子产品,但不属于嵌入式。普通电子产品和嵌入式设备可以通过“是否带可编程的控制芯片”来进行区分。(在这里的“可编程控制芯片”有个更专业的名称叫做“嵌入式芯片”,关于“嵌入式芯片”可以看我的另外一篇博客)
《嵌入式芯片与通用芯片(当前世界的芯片格局)-杂谈》
https://blog.csdn.net/L_0x0b/article/details/107361944
但对于电脑和手机是否属于嵌入式设备,网上的讨论比较多,说法比较多,疑惑也比较多。这篇文章我就想聊聊这个话题。(行文中为了保持通俗易懂,部分比喻与说法难免不甚严谨。若是有特别荒谬的原则性错误,望斧正。)
在这里有很大一部分观点认为电脑和手机不属于嵌入式设备的范畴,关于这点我持保留意见,电脑和手机虽然和传统意义上的嵌入式设备确实不太一致,但其本质我觉得还是一样的。我们抛开手机先看看电脑与嵌入式的关系。仅从硬件的角度来看,电脑和一些嵌入式设备并没有区别,电脑的CPU,GPU,内存,硬盘。在一些高端的嵌入式设备如汽车的控制仪,智能电视的电路板,大型无人机的电路板里面也都有,仅是容量大小的区别而已。若从软件层面来区分也不可行,Windows和嵌入式的Linux系统并没有本质区别,均由硬件接口层(驱动),根文件系统,启动引导,标准库,应用程序,进程和内存管理器,控制台(shell),以及可有可无的界面系统等部分组成。基于以上观点,我认为电脑和手机从本质上看也是嵌入式产品。
好吧,我编不下去了,我摊牌了。上面的这些观点是我之前和一个朋友在争论的时候所持的,虽然最后战了个五五开,各自保留了意见。但后来我深入了解之后,才发现我错了。电脑确实不属于嵌入式,我前面的分析总体来言并没有太大问题,但却漏了一些关键的东西。
虽然说电脑和嵌入式设备从本质来看是一样的。但若去看“嵌入式”这个名词的定义,就会发现其实它们根本就是在描述两种不同的东西。
一般认为嵌入式的定义离不开“裁剪”,“功耗”,“可靠”,“专用”等名词(需要说明的是,嵌入式的定义并不仅仅是这四个,这四个只是我个人认为比较关键的定义而已)
,而这些都不能用来描述电脑。
外围硬件方面
仅裁剪掉了部分内存和硬盘容量,裁掉了大部分用不上的接口而已,但像一些低端一点的如门禁系统,就是裁掉了GPU,系统方面
裁掉了操作系统,芯片方面
裁掉了大部分内存和硬盘容量(亦或者使用一些其他存储介质如EPROM、E2PROM或闪存(Flash Memory)来替代)
,以及裁掉了大量接口等。(居于芯片的裁剪常见的芯片又分为“通用芯片”和“嵌入式芯片”)
更有甚者,会通过使用一些非常规的方式降低成本,如超频倍频等,通过调节控制芯片的时钟频率超过芯片厂家建议的额定频率,以达到提升芯片性能以低成本芯片实现高成本芯片同等功能的目的。但由此也会出现设备不稳定以及功耗增加等潜在风险。
(部分嵌入式开发也用C++/Java等高级语言,同样能写出复杂程度很高的软件)
,而是由于嵌入式产品的应用范围及需求决定的,一般情况下我们并不需要电冰箱具备播放电视的功能,也不需要遥控飞机有洗衣服的功能。而且嵌入式设备软件功能的单一性也由芯片成本、性能以及功耗等决定。(当然现在的部分智能电视也可以用来看在线电影,玩游戏等,这其实是相当于一个智能手机甚至连系统都是用的Android,所以完全可以把它当作手机来讲。关于手机我后面再讨论)
通用芯片
,这有区别与嵌入式产品使用的嵌入式芯片
。所以嵌入式的专用性较强。所以区分电脑与嵌入式的,或许仅仅只是嵌入式的定义而已。事实上最初定义嵌入式的目的就是专门为了定义了一个范围把电脑排除出去。既然是专门定义了嵌入式这个名词把电脑排除出去,那又怎么还能说电脑属于嵌入式呢?
上面已经分析完嵌入式的定义了,也区分开电脑和嵌入式了。那么接下来我们来聊一下我前面提到的手机以及最近几年出现的智能电视等多媒体电子产品。
遗憾的说,对于这个问题我也没法给出准确的答复。事实上对于手机是否属于嵌入式设备业界的定义也很模糊,仍旧没有统一的说法(需要说明的是,本文所指的手机均为“智能手机”,只具有打电话和发短信等功能而用户无法自行扩展的“功能机”明确归类为嵌入式设备)
但大部分观点认为手机仍旧属于嵌入式设备的范围,虽然手机在嵌入式定义中的专用性上面并不准确,这也是由于手机端庞大的软件生态决定的(软件生态其实可以简单的理解为应用市场)
。但手机仍然拥有嵌入式定义中的“裁剪”,“功耗”,“可靠”等方面的属性。所以其既可以说是嵌入式设备但又不完全符合嵌入式的特征。
造成手机界定模糊的原因个人观点这其实是历史遗留的问题,从历史的时间线来看,先是有了电脑,然后从电脑中划分出一个领域定义为嵌入式,最后又出现了智能手机。由于智能手机同时具备嵌入式和电脑的部分特征,我们很难用一个旧的定义来界定一个新的东西,这就是导致手机界限模糊的根本原因。非要界定的话只能修改嵌入式的定义把手机包含进来或者剔除出去(这可能也是网上对于嵌入式的定义较为模糊的原因),否则手机只能作为一个特例存在。
后来我在查找资料的时候,偶然看到这么一篇文档。从未看到有人能把嵌入式这个名词阐述的如此清楚。
《论嵌入式的发展历史、现状及未来发展前景》
https://wenwen.sogou.com/z/q709946776.htm
然后我找到了上面文章的出处,节选自下面两篇文章(我能找到时间最早的)。
《嵌入式系统定义和发展历史(转贴)》
https://www.cnblogs.com/itest/articles/801385.html
《嵌入式系统的现状及发展前景》
https://wenku.baidu.com/view/33918a106c175f0e7cd13718.html
零BUG是原则性问题。