3d打印吧 关注:110,369贴子:564,668
  • 9回复贴,共1

硬件开源为何如此难?

只看楼主收藏回复

开源硬件会像开源软件给软件业带来的影响那样,也给硬件相关技术(以及硬件团队自身)带来巨大发展吗?这也许是每一个硬件工程师(当然也包括软件工程师)都会思考的问题。硬件与软件毕竟不一样,本文主要从硬件开源与软件开源的区别的角度,来简单说说硬件开源为什么那么难。
首先我们要明确的是:硬件的开源工作远远要比软件复杂。
为什么呢?因为硬件工程相对于软件工程而言,有着以下几个本质的区别:
1、模块化,标准化,以及修改的便捷性
软件产品都有着定义完整,并且可以随时调整输入输出。一旦一个软件模块编写运行测试通过,那么这个模块就可以被视作黑盒子,被另外一个完整定义的模块调用运行。只要软件之间的接口不变,那么各个模块之间的逻辑就不会发生变化,这就使得软件的开发人员之间可以仅仅通过定义好的接口来互相合作,而无论这些开发人员身处何处。
而在硬件领域,工程师们就没有那么幸运了。这个世界上不存在只要知道接口就可以加入设计使用的硬件。硬件的选型是一件很麻烦的事情,即使工作很多年的硬件设计师,在选用从未使用过的硬件设备时,也很有可能在接口电压或是时钟频率的匹配这种“小事情”上栽跟头 —— 随便哪里冒出来的一个接触电阻和寄生电容就可能把整个电路给弄砸了。


IP属地:上海来自Android客户端1楼2015-12-18 10:12回复
    3、入行门槛
    在软件业极度发达的今天,任何具有良好逻辑思维能力的人只要感兴趣,就可以通过互联网获得足够的教育从而称为一名软件开发人员。而所有的投资仅仅只是一台可以上网的电脑。这就使得现在的程序员数量不断上升,你总是可以碰到几个闲着找事的程序员一起来合作一些有趣的事情。
    而硬件这行当,至今仍然还需要科班出身的专业人员来进行设计开发,我没有见过自学成才的优秀电子硬件设计工程师。为什么呢?仪器耗材只是原因之一;另一方面,硬件设计需要扎实的物理和数学基础。无论是麦克斯韦的电磁理论,还是香农的信息论,亦或是傅立叶/拉普拉斯变换,都不是一朝一夕能够搞明白的,没有大量的时间深入学习和实践,真的很难达到实用的水平。相比之下,hello world和实战之间的距离实在是很近。硬件工程师的培养周期很长,光凭兴趣,靠自学真的很难坚持下去。
    就算你只是把硬件买回来组装,自己只是搭板子,其难度也取决于硬件工程师自身的基础和设计目标之间的距离。比如Arduino对新手来说已经算是足够简单了,但要玩转Arduino也至少要懂C、懂单片机、懂各种板级接口。如果要上传感器或电机伺服器的话,至少还得懂点ADC和马达/PID。
    培养一名合格的硬件设计工程师,需要大量物理和电子方面的基础理论学习,并且伴随大量使用各种仪器的实习工作,这其中的时间和材料成本是非常高的。硬件工程师数量不多,加上之前提到的协作的困难,使得找一批搞硬件的聚到一起做风险很高的开源工作很不容易。


    IP属地:上海来自Android客户端4楼2015-12-18 10:15
    回复
      总而言之,硬件的开源要做起来,就需要克服设计非标准化、成本高、入行门槛高这几个问题。而在我看来,这些问题很难在短时间内被解决。或许像Arduino和IP core这样的解决方案能够在某些领域获得突破,但就总体的电子电路设计而言,我尚未看到很好的开源模式。不过物联网应该是个缓慢持续地将整个社会数字化的过程,我个人认为这个过程将会持续相当长的一段时间(10年以上),这期间会发生什么,还是拭目以待吧。


      IP属地:上海来自Android客户端5楼2015-12-18 10:18
      回复
        本文转自知乎,欢迎关注ATOMBITS工作室


        IP属地:上海来自Android客户端6楼2015-12-18 10:19
        回复
          顶一下,我居然看完了


          IP属地:黑龙江来自Android客户端7楼2015-12-18 11:43
          收起回复
            说的太6


            来自Android客户端9楼2015-12-19 01:55
            回复