什么是嵌入式系统(上)—— “为用而专”
【说在前面的话】
作为一个以“思维”为内容的讨论,我并不惧怕话题的庞大。毕竟思维并不是什么可以速成的快餐,俗语说冰冻三尺非一日之寒,着急不来;另一方面,“思维”是个颇为唯心的内容,不仅没有定论,针对每个人的具体情况也是不同的。所以,我并不害怕谈论思维的时候“歪了楼”,或者“缺乏客观性”——本来,装在一个皮囊里,我能谈论的也只是我自己的思维,供有兴趣的看官们消遣一二,如果还能有所启示或者是帮助,那就再好不过了。
模仿人的认知过程,我也将话题分为“自上而下”(对应Top Down Perception)和“自下而上”(对应Bottom Up Perception)两个方向。前者从较为宏观(但更贴近生活和概念的本来面目)出发,讨论一些裸机系统相关的嵌入式概念和看似高尚大其实很实在的说法;后者则选择从具体的技术或者是设备出发,从小的问题开始,逐步引出更为复杂的问题。
最终,在某个时刻,你会在某个层面上发现两个认知方向的重合点,我可以保证的是,几乎对所有人来说,这个重合点都是不同的。排除智商的因素,起决定性的还是读者已经掌握的背景知识。
【正文】
作为开篇,我们首先对"什么是嵌入式系统"的认识开始。那么什么是嵌入式系统呢?我首先保证,下面的定义已经非常精简,一个多余的单词都没有(请允许我在一个完整的句子中加入空格来强调每一个要素):
嵌入式系统是 面向应用 高度裁减的 专用 计算机系统
1、“专用”
首先我们需要牢记于胸的是这个“专”字(Dedicated),这是相对通用计算机系统的“通用”来说的。PC就是通用计算机系统;出乎很多人意料的是,智能手机也是“通用”计算机系统。这是因为,通用计算机系统拥有标准的硬件定义和操作系统,上层软件可以在一个统一的平台(对硬件和系统软件统一性)的一个假设上进行开发。这么说也许很抽象,实际的判断标准其实很简单,如果一个计算机系统的软件可以自由的直接在同类计算机的硬件上执行,那么这个计算机系统很可能就是一个通用计算机系统,例如,APP可以在不同的智能手机上执行(当然需要运行相同的操作系统,无论是Andriod还是iOS,具体你懂得,抬杠的同志请自动取消关注)
这个专用太重要了,如果说嵌入式系统是一个宇宙的话,那么这里的“专用”就是那个著名的宇宙大爆炸——嵌入式系统一切的特点都源自于此。
2、“面向应用”
光说专用,似乎缺少了什么——“专用”总需要面向点什么才能体现“专用”阿。因此,很自然的,“面向应用”的“专用”就成了嵌入式系统的根本立足点。那么你要问了,难道还有不“面向应用”的“专用”么?当然有了,有面向“科研”的,面向“宣传效应的”,有“面向自我实现”的……
--------------------------------------------
面向科研认真说来也算是面向应用了——科研应用嘛,但其实还是不同的,因为后面我们会说,嵌入式系统的开发是一个工程问题,而科研类的开发是一个学术问题,前者是用成熟的技术去实现一个明确的已知目标,后者是用已知的技术去探索未知的领域或者验证可能的结果
面向宣传,你懂得。没什么卵用,但是可以给人希望和信心。
面向自我实现,有多少人自己写一个操作系统是面向应用的?
--------------------------------------------
嵌入式系统是面向应用的专用计算机系统。那么应用又大体分两类:军用和民用。这么分有什么目的呢?
3、“高度裁剪”
前面我们说,专用是面向应用的专用,目标非常明确——实现某个具体的应用;相对目标不是那么明确的通用计算机系统来说,怎么做才能体现出“针对某个具体应用”而凸现出来的“专用”呢?当然是裁减——从能实现对应应用的通用计算机原形系统(Prototype)上进行裁减——去掉不必要的部分,从而成为某个应用的“专属”计算机系统。
那么问题来了,哪些东西可以裁减呢?如何裁减呢?这里实际上是有明确的标准的——面向应用的具体需求进行裁减。具体来说,虽然功能性(Functionality)、成本(Cost)、可靠性(Dependability / Reliability)、功耗(Power Consumption)、体积(Size)、性能(Performance)、安全性(Security)都是各类嵌入式系统所追求的,但当我们成本有限的时候(时间、金钱、人力资源),我们只能根据应用的偏好来分配资源,俗话说“好钢用在刀刃上”就是这个道理。
容易想象,军用在上述要素的优先级可能是(仅供参考):
功能性 〉可靠性 〉体积 〉性能 〉安全性 〉功耗 〉成本
——想象一下不差钱的军方会怎样考虑一套单兵作战系统
明用在裁减的过程中则可能是另外一个样子:
功能性 〉性能 〉体积 〉成本 〉功耗 〉可靠性 〉安全性
——想象一下国产智能手机(粗粮、某族、某情怀)
【小结】
综上所属,我们可以简单的小结一下,嵌入式系统是一个面向应用高度裁减的专用计算机系统——是不是觉得都是废话了?哈哈哈哈,说明你理解了。下一篇,我们将更深层次的揭示隐藏在嵌入式系统名称下的产业秘密和规律。
(未完待续……)
如果你喜欢我的思维,欢迎订阅 裸机思维