做了单片机开发时间越长,越感觉这个领域的东西,10年都学不完。
之前我分享过特斯拉超跑Roadster的开源资料,很多老铁说没啥用,都是过时的东西。
我发现,说这些话的,都是些初学者,或者从业不久的工程师。
现在我更喜欢和社会阅历丰富,或者行业经验丰富,或者技术经验丰富的人沟通,感觉才同频。
有个资深工程师还为此私聊我。
他说:虽然Roadster这次开源的资料都是很老的方案了,但还是有很多学习的地方,特别是可靠性设计。
我一听,真是一针见血啊,一看就是一路踩坑过来的。
我第一次觉得单片机简单,是工作了2-3年左右。
因为很多功能,基本都知道怎么做了,觉得没什么可以学的,也想往Linux方向发展。
后面跳槽了,忙着转正,转正后,又忙着开发新产品,忙着忙着,就把学Linux的事情给耽搁了。
等做到6,7年的时候,又发现,单片机涉及的东西真特么多,准确来说,是做智能硬件涉及的东西真特么多,感觉一辈子都学不完。
现在我已经跟单片机打了12年交道了,还是有很多功能没有头绪的,经验的优势,其实就体现在开发效率和产品稳定性上,哪怕没做过的项目,稍微研究下,都能知道这个功能的重点和难点在哪,我的切入口应该是哪。
把功能做出来,不难,难的是可靠性设计。
我个人理解是,可靠性设计分为硬件和软件。
硬件是在各种环境下、各种极限参数下的稳定性。
这些都是很考验细节设计和经验的,有些坑没踩过,你都不知道。
之前做过一个红外解码的产品,带学习的,要求要能学习所有遥控器。
好不容易做好兼容了,大量卖出去后,才发现有误操作问题,最终发现是有些日光灯影响到了。
还有,比如我们无际项目特训营的项目6,带WiFi,4G,耗电比较大。
之前试过WiFi平时是正常的,一旦配网,或者进行OTA升级的时候,就挂逼了,原因是wifi在数据交互多的情况下下,耗电比较高,所以电源没抗住,电流不足,把电压给拉下去了。
这个也不是每个产品要求都这么严格的,看具体产品的应用场景,如果是汽车、军工、医疗要求会高一些。
如果是出印度非洲啥的,只要不爆炸就行了,以前做充电器的老板跟我说的,毕竟成本摆在那。
软件的可靠性设计,包含几个:
1.程序长时间运行的稳定性,会不会有死机,数据错乱的情况。
以前碰到过一个经理,之前量产产品踩过一次坑,小批量测试不出来,大批量之后会出现几率性死机,被老板骂的狗血淋头,从那以后,他写单片机的程序从来不用指针。
死机大多数都是指针异常,内存溢出问题。
真正的高手,不是把简单的事情复杂化去炫技,而是把复杂的事情简单化,想尽办法去规避潜在的风险。
2.功能扩展灵不灵活,方不方便。
这个取决于程序架构设计的好不好,能设计程序架构的工程师,一般都需要积累5,6年以上,有些则需要10年。
很多公司会直接上RTOS,就是为了项目复杂了,用成熟的RTOS至少保证程序架构是稳的,也能保证实时性,就像房子"地基"一样。
我一般是自己设计程序架构比较多,说自己设计,其实不严谨,我也是做过很多项目,看过很多工程师代码,取之精华弃之糟粕总结出来的。
另外,在2019年的时候,还专门录了一套程序架构的教程,粉丝可以找我拿。
如果想更系统的学习搭建程序架构,以及模块功能细节怎么处理,才能保证功能扩展起来方便灵活,就只能从0到1做几个复杂的项目了,这块无际项目特训营有提供。
3.如果换个单片机,代码要改动的地方多不多。
用专业术语来说,叫可移植性。
做单片机产品,经常会换芯片,第一个是老的芯片可能会停产,第二是可能随时会有性价比更高的芯片可替代。
这就考验代码移植性好不好了,好的标准就是换一个芯片平台,需要改动的代码越少越好。
最后,总结下,想成为一名单片机产品架构师,真的一点都不简单。
别看代码好像不多,代码只是结果,想得出结果,前提是要懂行业知识、硬件原理、接口协议、程序架构和思路等。
最近很多粉丝问我单片机怎么学,我根据自己从业十年经验,累积耗时一个月,精心整理一份「单
片机最佳学习路径+单片机入门到高级教程+工具包」,全部无偿分享给铁粉!!!
除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!
教程资料包和详细的学习路径可以看我下面这篇文章的开头。