芯片短缺,如何快速上手并替换一款MCU
The following article is from 最后一个bug Author bug菌
作者丨bug菌
来源丨经授权转自公众号 最后一个bug(ID:known_bug)
大家好,我是bug菌!
近段时间国外芯片短缺、涨价使得一些依赖性比较强的企业苦不堪言,在一个项目中重新对一款芯片的评估和选型需要花较多时间和精力,更别说软件工程师对相应芯片的熟练度的评估和芯片自身的问题了。
其实近些年来国内也加大了芯片和半导体的研发和生产,一些国产芯片也获得了较大的突破和提升,面对芯片等等长时间的交期问题,对于一些中低端产品,企业也开始了转向国产芯片的替代方案。
当然做到100%兼容一般是不太可能的,多多少少存在差异,只要芯片性能和功能上能够覆盖,对于一个合格的软件工程师替代并不是太大的难事,bug菌了解到这也是前段时间某知名企业大力招聘嵌入式软件研发工程师的原因之一。
这也就回答了一些初学MCU爱好者的疑问:我是不是只需要玩一款MCU就可以了。答案是:可以的,但是你不可以只会一款MCU,要做到一通百通,否则学习成本实在是太大了。
那如何快速上手并替换一款MCU呢?
1
对比选型
收集好芯片的参考手册、原项目的实际需求和参数表进行资源和性能上的对比分析,包括芯片的功耗(特别是对于一些低功耗产品)、主频、RAM、ROM大小,外设的分配、性能情况,比如硬件SPI的个数、ePWM的最小分辨率等。
如果资源和性能上能够实现完全覆盖,那替换是没问题,这样往往成本可能会高一些,但是对软件和方案上改动会小很多;如果老板瞅着这点成本也没办法,可以首先在该芯片的同系列的型号下查找。
如果存在较多关键性能参数和资源差异较大且不太满足项目需求,则替换失败,这种情况基本上不会遇到,毕竟大家都是工程师,一般会选择覆盖率在50%以上的芯片来进行评估,当时也不乏有部分公司有合作关系,需要进行这块的替换方案评审,也是没办法的事。
这种是大部分人遇到的情形,因为产品的功能是可以采用多种方案来实现的,就比如说和低速IIC接口设备通信,原来的芯片有较多的IIC接口,所以我们采用硬件IIC通信,其实软件IO口模拟IIC也同样满足通信需求,这样就没有必要在IIC外设的个数上过分纠结;
再比如同价位的替代芯片IO口比较少,而原来使用的IO口并没有速度等方面的特殊要求,那我们可以在外围进行IO口扩展即可等等,这些都是在芯片评估过程中需要考虑的。
可以看出对一款芯片的评估不仅仅只是芯片本身参数性能上的对比分析,同时也非常考验工程师们对软件产品方案的设计与评估,而bug菌去过的一些公司根本没把这块当回事,这样的研发产品流程流程还是不完善的。
当然上面的考量只是冰上一角,还包括芯片的价格、成熟度、稳定性、技术支持服务力度等等都是值得考虑的。
2
快速上手
如何快速上手对于大部分工程师并不是什么难事,一款新事物的了解无非就是对以往认知的直接投射和未知的空缺填补。
打个比方当我想用新款芯片的串口,在你的脑海里应该为串口附带波特率、8-N-1格式、发送和接受函数等等之类的,这些就是你以往的认知和积累,这些基本上是所有MCU都普遍具备的标签。
在新款芯片上也是这样的,似乎好像与生俱来,所以你往往也就忽略了这个过程;而到底这些参数该怎么配置、怎么使用等等这些都是未知,就需要你花时间去填补,比如查阅手册、阅读Demo等等,至于填补时间的长短就考验开发人员的素养和能力了。
所以这里也就回答了许多初学者提出的疑问:我该从51单片机入手还是从stm32单片机入手呢?
答案是都可以,该补充的知识都得补充,不管你是由简到繁,还是从繁到简。
为了达到快速替换的效果,两点需要注意:
1)暂时不必过分纠缠于底层,什么汇编指令集呀之类的,当然如果你需要移植部分汇编,那没办法老老实实研究一下,包括CPU的堆栈机制等等,但是也暂时不需要太过于刨根问底;
2)对于与本项目无关的外设功能等等暂时不需要探究,首先要明确当前的主要目的。
3
代码移植
识别关注我们
了解更多精彩内容
点分享
点点赞
点在看