什么是嵌入式软件。
嵌入式软件与嵌入式系统是密不可分的,嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统(非必选)以及用户的应用程序4个部分组成,用于实现对其他设备的控制、监视或管理等功能。嵌入式软件就是基于嵌入式系统设计的软件,它也是计算机软件的一种,同样由程序及其文档组成,是嵌入式系统的重要组成部分。
例如大学学的51单片机(十年前是51,现在应该都上ARM系列的MCU了吧),最小系统可以认为是一个最基础的嵌入式系统,单片机里面跑的程序就属于嵌入式软件,再配合一些其他外围器件就能开发出各类电子产品。
所以,别再以为嵌入式软件工程师能无差别地干下面的活,不然容易被打。(虽然其实下面这些我也略懂!)
那问题就来了,一般嵌入式软件工程师平时都在做什么?

2 灵魂拷问-嵌入式软件工程师都在做什么
受影视剧作品和程序员群体在网络的自嘲的双重影响,很多人对程序员的印象存在两极化:
要么是这样的,

要么是这样的。

而实际上,软件工程师相比其他工作岗位,因为不需要经常抛头露面,对外代表公司形象,因此多数穿着相对随意(仅仅是相对),另外发量少或者白发的概率也只是略微高一些而已。
无论哪个分支的软件工程师,工作内容都大同小异,区别在于基于什么语言,什么开发平台,什么行业而已。

上图是软件工程师主要的工作内容。一般来说,管理规范些的企业中,软件工程师花在编码的时间并不是占比最高的,以我的经验来看,大概占整个软件开发周期的30%以下。在开始编码前会有需求分析与设计环节,复杂点的软件,这两个阶段可能会反复磨个几轮。代码写好以后还会有一系列的测试验收环节,发布以后还会有新需求或者缺陷,作为新的功能导入,从而反复经过上图中的流程。
再详细一点展开,嵌入式软件工程师工作内容会涉及的语言,开发环境、工具如下:
以C语言为主,C++也有一些;
控制芯片一般为51单片机,ARM,DSP,FPGA,SOC等;
IDE根据不同的芯片会有keil,IAR,CodeWarrior,CCS等,此外由于嵌入式产品通常会配备上位机软件,还会涉及到用VS或者QT做一些通讯类上位机;
其他的诸如VISIO画流程图,AD查看或者设计硬件原理图等;
3. 知识技能VS能力天赋
前面说了什么是软件和嵌入式软件工程师主要工作内容,接下来讲讲作为一名嵌入式软件工程师需要具备哪些技能与能力。
关于知识技能与能力天赋的区别,可以看看往期的文章,链接如下。我的体会是:
知识与技能,决定你的下限
能力与天赋,决定你的上限
基于这两个维度,我简要做了下雷达模型:
通用的知识技能为红色细框的内容,无论你是哪个行业的嵌入式软件开发都需要具备的。另外提一点,并非嵌入式软件开发都上Linux系统,所以上面的知识技能我并没有列出来。
而左侧的技能则与你实际的产品与行业相关。例如上图就是基于我的产品(BMS+数字开关电源)、行业(新能源、锂电池)框定的。如果你是其他行业的,则这块可以替换为其他内容。但是给自己的评分标准都是一样,看看能给自己打到几分,3分是最基本的要求。
1: 无此知识技能或者简单了解
2: 有一定基础,但需指导下才能进行
3: 可以独立完成相关工作
4: 擅长并可以指导他人
5: 专家级别、可以制定标准、规范
而从能力天赋维度可以参考下面划分,有些可能不是很准确。打分方面也可以基于上面的标准。
这里强调一下,对于许多人而言,都存在一个认知误区:技能与知识掌握得越多收入就越高(报告写得越来越熟练,Excel用得越来越出神入化,编程语言掌握得越来越多)。而实际上知识和技能是最容易提升。如听了一堂课,学会了一个知识点或者一个技能,这是几乎所有人都能做到的事情。能力,才是长久需要提升的,因为世界变化太快,只有能力是各种行业岗位间通用的。
4 BMS软件工程师入行建议
之前发过几次关于BMS的专题文章,留言区有一些小伙伴问到此行业怎么快速入门,所以借这个机会详细说下。
1. 启动之初要先立足于第3部分内容提到的知识与技能,只要你是工科背景的,把这些内容从0或1提升到3分的难度并不大。肉眼可见的技能提升能让你建立信心。
2. 技能层面的提升过程中,不仅要想how(怎么实现),还要多考虑why(为什么这样做),以C语言编码为例,变量要给初值,防止出错。这背后的原因是什么?这个问题还可以扩展到不同类型的变量的存储与使用?芯片从上电到跳转到你的main函数前都做了哪些事情等等?
3. 锂电、BMS相关的内容,可以多找找此行业的行标,国标,书籍,科研论文,公众号等,让自己听行业所闻,想行业所想:
- 锂电池手册,书籍,好像有几个版本,任选
- 《电动汽车动力电池管理系统设计》,谭晓军
- 欧阳明高团队科研论文,知网上能搜到很多
- GB/T 31484-2015 电动汽车用动力蓄电池循环寿命要求及试验方法;
- GB/T 31485-2015 电动汽车用动力蓄电池安全要求及试验方法;
- GB/T 31486-2015 电动汽车用动力蓄电池性能要求及试验方法
- 储能、备电行业的标准也有很多,不一一列举,根据自己所在行业的行标,打开看看里面列出的参考文献选择性地看。
4. 如果想深入学习电池算法与建模,可以知网上搜索硕博论文,并将里面引用的文献也看看。仿真工具层面,主流还是Matlab,可以去官网的simulink专区找找的视频案例和参考模型。
最后,给大家分享一下嵌入式开发的学习资料,有需要的评论区扣666哦
