傻孩子(GorgonMeducer) · 2020年06月04日

什么是嵌入式(下)—— “重力”和“沉淀”

【说在前面的话】
    这篇文章是我之前发布在自己的公众号“裸机思维”上的,虽然是一家之言,但也是我多年的经验感悟。转载于此,希望对大家有所帮助。这个系列总共由上、中、下三篇构成。

-----------以下是正文----------

image.png

嵌入式(Embedded),听起来也许是一个很有点科技感的名词,加之最近大热的所谓物联网(IoT)、智能硬件,似乎从事嵌入式开发很有点逼格的感觉——没错,在上世纪70年代,大洋彼岸的很多Freaks们也是这么想的,他们中的很多人已经印刷在各类书籍的封面上了。

  不幸的是,嵌入式只是一门技术,而不是什么科学。嵌入式系统开发只是一个工程问题,而不是什么让人侧目的科学探索问题——除了针对越来越小的半导体工艺问题的研究。认清这个现实吧!趁我揭露另外一个事实之前,还来得及。

  也许你还记得,嵌入式系统是专用计算机系统,是面向特定的应用需求而进行高度裁减的专用计算机系统。成本、体积、性能和可靠性对嵌入式系统来说都是敏感的?一个计算机系统如何才能在成本、体积、性能和可靠性上同时取得进步呢?

  Bingo!你答对了,摩尔定律。华句话说——嵌入式系统使用的都是“成熟”的技术、都是“量产”的、“成本敏感”的——或者说过时的技术。如果你对这个结论有疑惑,请按照相反的顺序去理解这两段文字。

——“思维不是不可说,是不必多说,懂就是懂。”

  现在的计算机技术差不多领先嵌入式技术大约20年,现在嵌入式系统无论在资源上、理论上还是方法论上,都与上世纪80年代的计算机前沿技术相当。举一个简单的例子,现在的Processor完成了从汇编开发到C语言开发的过渡,正在普及面向对象开发的概念——这是资源所决定的。而这一过程,正是上世纪80年代计算机工程师们所面对的环境。只不过这里的对应关系稍微有点不同:32位微控制器(Cortex-M为代表)对应当年的个人电脑,而32/64位的应用处理器(Cortex-A为代表)则对应当年的服务器。其它再无不同。

  综上所述:嵌入式是一门技术,而不是科学,它的本质决定了它必然要使用成熟或者说过时的技术成本是影响一门技术是否可以在嵌入式系统中应用的决定性因素——好东西现在很多都有,只不过太贵,不是做不出来。

  在你那“一腔投入嵌入式系统开发的热血”被浇灭之前,有一个好消息要告诉你:因为嵌入式系统只是一门技术——和木匠活差不多——只要你肯花时间,你一定能成为高手,或者说成为熟练的工匠——别介意大师这个伪概念,相信我,只要你开源了足够的代码,帮助了足够多的人,大家都会尊你为大师——其实只有你自己知道,这帮人只不过是太懒,知识都在他们懒得翻开的书本上,你只不过坚持看完了,然后顺手把自己的笔迹贴在了网上。

  感谢你有耐心读到这里,这说明你除了兴趣,对这门技术还有可贵的坚持,为了奖励这一点,我会介绍一个模型,通过它,你有能力掌握洞悉嵌入式行业发展规律的方法——我通常也总是把好东西留给真正热爱嵌入式技术的朋友。

沉淀模型

  不知道有多少人还记得小学自然课上研究泥土成分的那个实验:取一块泥土,放入烧杯中,放入适量的水,用玻棒充分搅拌至悬浊液。将烧杯静置一小时后观察会发现:1)烧杯中的液体重新变清;2)泥土样本会出现分层,质量相似且较大的颗粒沉淀在底层,从底向上,沉淀层中的颗粒质量和体积都越来越小。——这就是沉淀模型。

  在你吼出“什么gui”之前,让我们来讲一个故事,一个暴露年龄的故事。在MP3格式和算法刚刚公布的时候,市场被索尼的磁带随身听和CD播放机所统治,两者分别占据了高端市场和低端市场。在Flash存储器非常昂贵的背景下,MP3文件的高音质小尺寸的特性简直就是市场的明日之星——消费者迫不及待的想买到一个体积只有普通随身体几分之一,不用重复购买碟片或者磁带的次世代播放器——想想都很美是么?巨大的市场需求,推动厂商开发出第一代MP3播放器,这个时候,还没有所谓的硬件解码,MP3软件解码的运算需求使得工程师不得不选择一块价格昂贵的处理器,这使得MP3播放器的成本达到了历史的最高点,但是,WHO CARE?!消费者对这种小巧轻便的高科技产品的热情,决不亚于现在的iPhone——Oh,别忘记了,One thousand sounds in your poket,就是Apple推广iPod的经典广告。

  高额的利润吸引更多的玩家进入这个蓝海市场,工程师们渐渐发现,既然MP3解码算法既然这么流行,我们就做成模块吧?卖给别的开发者?渐渐的,连开源的MP3解码模块也出现了——感谢开源,越来越多的厂商有能力制作和发布自己的MP3播放器——如同华强北的功能手机,销售一台MP3播放器的利润越来越低。在这一过程中,MP3解码从单纯的播放器应用中被第一次提取出来——从应用层沉淀到软件服务层,成为一个模块——这是发生在这一嵌入式系统应用中的第一次沉淀。

  模块的出现进一步降低了产品开发的难度和成本,但同时也引入了更多的竞争对手压低了利润。工程师们开始面临从市场传导而来的成本压力,大家不得不动脑子。很明显的,用于软件解码的处理器太贵了。实际上,除了解码,其它应用并不需要这么强大的运算能力。于是,工程师们思考设计专门针对MP3解码的硬件DSP芯片来取代原有的通用处理器,显然的,逻辑确定,功能简单的MP3解码芯片相对"通用"的处理器,更容易进行裁减并最终降低成本。

  ——这是”专用”相对“通用”的最大优势,因为由于目的不确定的“通用“,必须保留大量的逻辑用于确保一定的灵活性,以应对各类不同应用的需求,因此很难对其进行有效的裁减——想想当你预算有限时,买手机或者电脑的时候是如何纠结的吧。而“专用”则目的明确,不需要的都可以大刀阔斧的砍掉,最终结果的轻巧简洁可想而知。便宜是自然的。

  用硬件解码芯片配合一个低廉的处理器取代原本昂贵的器件是嵌入式系统设计中降低成本的常见手法。这也是MP3播放器这一嵌入式系统应用中第二次沉淀。值得注意的是,这次沉淀并不是整个软件模块都沉淀到硬件中,而仅仅是MP3解码所要用到的DSP算法被提取出来做成硬件加速器——这是在不增加硬件成本的边界条件下,尽可能提供通用性的典型实例——因为这些固化了DSP算法的芯片还有可能被别的嵌入式应用所使用。


嵌入式系统中只有专用,以及严格规定了边界的通用——即在不增加成本或不增加过多成本的前提下,尽可能的实现通用。

对工程师来说,没有资源限制的通用不算本事,在有限资源范围内实现尽可能多的通用才是一项挑战!


  这就是沉淀模型,在应用需求和成本的双重压力下,可重复利用或者可用更低廉成本实现的逻辑会被单独提取出来,沉淀到合适的系统层次中,以便用更便宜的方式加以实现,而在总体功能上保持不变或者改善

  如果你真的理解了沉淀模型,你会发现,沉淀的过程并不一定是单向的(从上到下:应用层到系统层、软件模块沉淀为硬件逻辑)。很容易理解,在运算能力普遍较强的今天,一个有能力作MP3软件解码的MCU几乎是白菜价——换句话说,由于性能的普遍提升,MP3软件解码几乎是白送的,用软件解码比用硬件MP3芯片解码更为便宜,因此,MP3播放器这一嵌入式应用完成了最后一次沉淀,MP3解码从硬件重新回到了软件的怀抱。——如果你真的懂了,就不会纠结沉淀模型的方向性问题了——因为你明白,物理世界中,沉淀的驱动力是重力,而嵌入式世界中,沉淀的方向由成本决定。

专栏推荐文章
什么是嵌入式系统(上)
什么是嵌入式系统(中)

如果你喜欢我的思维,欢迎订阅裸机思维
版权归裸机思维(傻孩子图书工作室旗下公众号)所有,
所有内容原创,严禁任何形式的转载。
推荐阅读
关注数
1480
内容数
118
探讨嵌入式系统开发的相关思维、方法、技巧。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息