自从智能硬件这个行业从2012年左右爆火以后,硬件公司的数量也呈现出爆发式的增长,我记得从2012年到2016年之间,各种各样的智能硬件产品被推向市场,包括各式各样的无人机,各式各样的手环,充电宝,环境宝,智能体温计,防丢器,平衡车,桌面玩具机器人,手持云台。
后来随着锂电池的广泛应用,各种电动化的产品也相继被推向市场浪潮,比如电动牙刷,电动洗手机,电动消毒器,等等五花八门的产品也吹起了大大小小的硬件公司,不过现在还活着的,并且活的很好的硬件公司其实并不多,反而那些传统行业的硬件公司在备受互联网冲击的几年挣扎中大部分活了下来,像家电行业,园林工具行业等等。
综合这些年行业的观察,我认为伴随手机互联而生的所谓智能硬件更多的是一种产品创新,也是随着大家对产品的工业设计逐渐重视,从这一点上,新型的硬件产品公司确实非常容易脱颖而出,但是硬件其实是一个需要长期投入夯实基础的行业,仅仅靠一种模式创新或者形式创新是很难持久的,这也就是为什么很多智能硬件公司如昙花一现般的消失了,而那些传统行业的硬件公司,他们经历了多年的摸索和积累,已经有了硬件研发可持续发展的基础,因此当互联网的模式以及形式创新带来冲击的时候,他们只需要稍慢的反应一下就能够跟得上潮流。
需要相关书籍资料可以点击下面链接查看
智慧研发管理 - 陌路之引 - 专注分享智能硬件,半导体,物联网相关的技术,方案以及人生感悟
这里我从我自己的从业经历来给大家分享一下我对硬件公司发展的看法,聊一聊哪些是硬件公司研发可持续的基本功,在硬件产品研发过程中都有哪些坑等着我们踩出更有力的双腿。
我将从三个方面码一下字,今天先聊工具篇
工具篇
二三十年前,我们大多数工程师估计还在使用纸质图纸进行设计,而如今的各种系统IT工具和EDA工具已经非常齐全,不过比较可惜的是国内自主研发这块还是比较欠缺的。
我这里并不准备给大家讲我们开发单片机怎么使用gcc或者keil的C编译器,画电路图怎么使用AD,PADS或者Cadence,而是想给大家分享一下从研发管理的角度,我们应该怎么选择这些工具,怎么有效的使用这些工具,以及如何将这些工具联动起来提高开发效率,避免开发中出现漏球和低级错误。
为什么首先从ERP系统开始呢?
因为我们研发的产品最终是要推向市场进行销售的,那么我们就一定会面临产品原材料的采购和生产管理。ERP最基本的功能是生产资源计划、制造、财务、销售、采购等,但是现在的很多ERP系统做的功能很丰富,集成进来了各种质量管理,甚至于企业的人事管理等,我们这里只关注他的基本功能,就是把原材料定义好,采购回来,通过工单系统控制工厂生产节奏,然后将成品销售出去。
硬件研发为什么要关心生产制造的问题呢?因为硬件研发的第一步是原材料的选型,这也是我们ERP系统的第一步。如何打通研发团队原材料的选型库和ERP系统的原材料数据至关重要,即便你是OEM代工代料模式,也需要一种链接来传递研发和工厂的原材料信息。
这里的链接不仅仅是一个BOM文件,研发输出的BOM是否可以直接导入工厂的ERP系统,这是技术实现问题,但这不是重点,重点是我们如何让工程师能够更有效的进行物料优选,如何让采购工程师更好的议价和把控交付,如何利用这个链接后的系统提高硬件产品的品质。
看以下几点逻辑:
因此,我们非常有必要去制定原材料的管控规则,让研发人员和供应链开发共同维护一份精简的供应商AVL和原材料的管理系统。如何分类合并,如何制定评价体系,如何备份及分配多供份额,如何策略议价可以私下探讨。
在电子硬件产品开发过程中,这个原材料绝大部分是电子元器件件,少部分是机构件。如果想要提高开发工程师的效率,势必要将这个器件管理系统和我们的开发工具进行连接,做到从开发工具中就可以浏览和选择我们可选的物料进行图纸设计,这样一来我们在EDA中设计完成之后可以直接导出我们需要的BOM的所有信息,并且可以确保和我们的ERP系统无缝对接,减少了各种工程导入环节的工作量。
讲真,现在很多电子工程师连MPN都写不全,很多时候传递给供应链开发的料号都无法对应唯一的物料。
上面的ERP系统中提到了我们的元器件管理系统应连接ERP系统和我们的EDA开发工具,这里相关的EDA工具无非就是常说的AD,PADS,Cadence和Kicard,以及目前国产的立创EDA。不过目前大公司使用立创的还是很少的,大部分公司都集中在Cadence和PADS上面。
Layout的工具一开始一定选择好,对于一般的硬件公司来说,他们的功能都是大同小异的,除了价格。
Cadence是真的贵,我相信一般初创型的智能硬件公司大部分是选择的AD,有些因为涉及到了一些CPU平台核心板的研发被逼着使用了Cadence。至于PADS应该实在一些传统手机研发上用的比较多,早些时候我用过几年,后面也就不是很了解了。
初创公司真金白银的花几十万给每个硬件工程师配一套这样的EDA其实挺不彻实际的,因此大部分公司都在使用破解版,这时候就要了解提防这些厂家的策略了,他们会打电话套路你的工程师,也会检测你的IP地址判断你使用了多少个副本,所以大家至少要小心,虽然他们的检测并不能当成有效的的证据。我曾经接到的最大的一次律师函赔偿金额是4000万美金,你想想这个事有多吓人。
当然这里也有很多手段来规避版权问题,本质上厂家也是为了赚钱而不是想搞的鱼死网破。
这里重点讲对于Layout的工具,我们首先要根据自己的研发范围确定一个工具,全公司统一起来,当然也要考虑上下游的供应商和客户的使用情况,避免中间传递图纸信息的时候格式转来转去。
其次,我们要利用EDA工具的数据库功能,和我们的器件管理系统对接起来,能够让工程师在EDA工具中就可以看到我们自己的器件选型库,以及每个器件的状态信息,比如试产还是量产,价格信息,以及是否曾经出现过质量问题等等,配合EDA中的Library管理,也能够保证后续加工工艺的一致性,避免出现新工程师不规范的封装设计导入到批量生产过程中。
我在研发管理过程中遇到的硬件设计相关EDA的版权问题比较多,像达索,奥腾。而软件开发上使用的Keil和IAR却较少的遇到版权问题,MDK(keil)的注册机已经有无限期的了,可以在下面链接下载
MDK or Keil 破解工具下载 - 陌路之引 - 专注分享智能硬件,半导体,物联网相关的技术,方案以及人生感悟
虽然有很多C编译器可以在我们的软件设计中被使用,但从一个团队协作的角度来考虑,还是需要确定一款开发工具,不同的开发工具对于相同的器件的引导代码不一定一样,编译出来的代码也是有差别的。比如对于一些小资源的单片机来说,往往IAR的编译效率和空间利用率会比Keil要好一些。
但是,我个人认为团队协作和C代码本身更重要,因此对于嵌入式软件开发的管理上更重要的是对开发规范的管理和代码的审核优化方面(这部分将在意识篇的规范意识中重点探讨一下)。如果只是想靠着gcc的优化来让自己的代码运行的更快,占用空间更小,我只能说你的C语言功底还不够,你写的系统还太小太简单。
另外补充一点,对于编译器的优化选项也需要规定下来,确保团队成员在协作的过程中保持一致,避免因为编译器优化等级不同导致一些稀奇古怪的问题出现,编译器的优化虽然帮我们节省了空间,提高了运行效率,但是它的优化不可全信,我曾经在做MP3解码的时候,对于DCT变换部分的C语言进行汇编的时候,某一个MDK的版本就会汇编出一些错误指令导致解码失败。
无论是软件的开发还是硬件的开发都面临着需求的变更以及技术的更迭,这些都逃不开设计的版本管理,软件团队的版本管理工具已经做的是相当出色了,最有名的github,对各种编程语言,甚至非编程语言的文档都可以进行版本的管理,当然仅仅对于文本类文件可以进行增删改分析,对比和合并。
对于公司而言我们倾向于自己搭建本地的版本管理系统,这就不得不提到SVN和git这两种版本管理系统,他们区别在于一个是集中式的,一个是分布式的,具体的大家可以度娘搜一下。这两个系统给我的感觉就是SVN类似一个云盘系统,把我们大家的工作文件同步到一个固定的地方(服务器),而git则是按项目来区分,每个项目都是一个单独的仓库,这个仓库除了在本地存一份(包括更新日志和历史),还可以将本地的这一份(包括更新日志和历史)同步到云端。
SVN的权限配置着实有点烧脑,相对而言使用GitLab搭建本地的版本管理系统就使得权限管理和角色管理简单了很多,同时GitLab还提供了很多API接口,提供集成化测试和发布等,另外想知道哪位同学提交了代码,可以在企业微信上弹出个消息什么的,可玩性很多。
链接:怎么玩转GitLab 利用企业微信机器人发送GitLab消息 - 陌路之引 - 专注分享智能硬件,半导体,物联网相关的技术,方案以及人生感悟
回到硬件开发这边就比较痛苦了,对于电子硬件相关的原理图和Layout图纸来讲,因为其本身体积不是很大,我们还可以使用git进行文件管理,虽然无法管理到文件内部的变更信息,但至少可以保存每个版本的备份,但是对于结构工程师的版本管理就比较麻烦了,那些3D图纸动不动就几百MB甚至上GB,而且git的操作对于结构工程师来说也是个魔幻。
因此这里又不得不引入一套新的系统来管理图纸,国内做图纸管理的小公司有很多,但和各个大厂的EDA工具兼容的不好,达索的PLM系统和自家的很多机械设计软件兼容的肯定是很好的,Cadence也和达索公司建立了合作伙伴关系,这样看来可以选择PLM + Solidworks(当然PTC的Cero或者西门子的UG也可以) + Cadence 来构建硬件开发的流程工具基础,整体还得看价钱。
在没有这套系统来支撑研发的时候,我们需要通过自建的服务器来尽可能的做到版本的管控,这是必不可少的。
最后说一下研发设备的投入,这一部分可能对于不同的硬件公司会有比较大的差异,因为不同的硬件产品,技术的指标不同,研发对于测试和测量设备的需求则不同,当然开关电源,万用表,示波器还是得标配的,但配置设备档次的不同就把公司也分成了不同的档次。这里的档次不对应技术的实力,只是对应应用技术的范围不同。
设备的投入还是需要匹配到所研究技术范围边界之外的,不能刚刚好覆盖到就可以了,一定是要超过,我举个栗子吧:
我曾经在解决一个平衡车批量问题的时候遇到了困扰,总是有千分之几的比例出现平衡时抖动的问题,从现象上基本可以判断是陀螺仪输出的角速度信息存在噪声,这个噪声还和整车系统中的灯带颜色有关系。那么进一步分析可能是负载的变化影响到电源系统,进而将干扰串入到了陀螺仪的电源里面。
于是我使用示波器观测陀螺仪的供电路径,从稳压芯片的3.3V输出到陀螺仪电源输入都测了一遍,并没有为发现什么异常,其实这里我使用了一套普源精电的非常老旧的示波器,可能是带宽和精度都不够以至于一些微小的噪声无法在屏幕上看到,这让我很快调转了排查的方向,因为更换陀螺仪可以解决问题,于是一股脑的去研究陀螺仪了。
后来这种不良持续出现,工程质量的同学催的紧,我就顺手拿了另一台型号较新的示波器(当时研发部就两台)进行测量,我排查问题有一个习惯,就是过了一段时间再去排查老问题时会把分析路径再重新测试一遍,于是在电源信号测量的时候发现了随着灯带颜色变化同步的微小噪声,这让我迅速敏感起来。
我将3.3V的电源路径分割成几段,然后依次测量来排查是哪部分受到了干扰,最终排查到是因为3.3V的电源线靠近电感(半封闭电感)的那一部分受到了电感的干扰,于是制定了一个短期方案,把半屏蔽电感换成全封闭电感。同时确定一个长期解决方案,优化电路设计让3.3V线路远离干扰源。
经过这件事,我一拍大腿决定,买设备还是得挑高一点买,搞研发这点钱不能省。
对于一些较贵的设备其实可以采用租赁的方式,租设备和租实验室都是可以的。我搞无线通信模组开发的时候利用代理商的实验室帮忙测试各种射频参数,天线的测试可以找一些EMC实验室的资源,毕竟建暗室这样的操作不是一般硬件公司可以承受的,关键这玩意不常用,因此租赁是最优解,我也见过很多简易的暗室,曾经去一个电源芯片原厂拜访,看到他们使用金属油桶做了个简易的暗室来做定性分析,也算是个快速找问题方向的办法。
工欲善其事,必先利其器。
END