汽车行业的嵌入式软件开发岗位避坑
给毕业生的一些建议
从我毕业参加工作已经一年多了,毕业时阴差阳错选择进入汽车行业,成为一名嵌入式软件开发工程师。
刚入职的时候对自己的岗位完全不了解,导致岗位的工作内容与自己的预期相差甚远,度过了三个月非常难熬的时光。找工作的时候只关心薪资,只知道岗位的名字,那你不进坑谁进坑。
给即将毕业,正在选择职业方向的同学一些建议:充分了解你将从事的行业和岗位。在网络上充分的调研,或者去问问你的学长学姐,当然最好的方法就是去你将来想要去的行业和岗位实习,这就是实习的意义:低成本的试错。当你失去应届生的身份时再去换方向,那是要脱层皮的。
汽车行业的发展现状
现在很多人之所以选择汽车行业的一个最大的原因是:互联网不行了。但是抱着这种想法被迫选择汽车行业的人,是最有可能失望的。
互联网是第三产业,开发一款APP,然后通过给用户提供服务来盈利,几乎所有的成本都是人工成本。但是汽车行业是第二产业,要生产出一辆汽车,需要上下游多少产业的支持。人在其中的决定性作用是稍弱的,原材料成本、产线成本、销售成本,哪一项不比软件开发的人工成本重要。这也是为什么互联网的工资普遍比嵌入式高。
你以互联网的预期进入汽车行业,你就会有这样的疑问:为什么没有产品经理?为什么没有明确的需求?为什么软件开发竟然不需要写代码?
因为汽车行业没有高并发,没有服务器集群,没有上亿的用户等着用你的软件。汽车行业的软件是买车子送的!至少现在是这样。
当然,现在汽车行业也在发生一些变化:软件定义汽车。以特斯拉为首的造车新势力,经常会喊这句口号,什么新的电子电气架构、新的SOA架构、新的Autosar标准。什么自动驾驶、智能网联、新能源。这些新的概念更多的是商业的东西,是用来吸引投资的东西。如果你是软件架构师、算法工程师、人工智能科学家,你可以明显的感觉出变化,但对于嵌入式软件的变化就是多了一些MPU的应用场景,但目前需求量还不高。
汽车行业的嵌入式软件更多的是重流程、重标准、轻代码。汽车毕竟是车规级产品,不是消费类电子。手写代码难免会出错,所以基于传统的Autosar(CP)的软件大部分都是配置生成的。一些基于Adaptive Autosar(AP)的软件是手写的,我觉得这也是因为还没有成熟,等Adaptive Autosar成熟了之后,怕是也要变成配置生成代码。
部分嵌入式软件岗位分析
我分享一下我了解的岗位:
MCU方向:
MCAL工程师:推荐指数 ⭐⭐⭐⭐
MCAL是CP autosar中的微处理器抽象层,你可以理解为符合CP autosar标准的MCU驱动开发。对MCU的底层寄存器操作进行抽象封装,提供给上层使用。
优点:
- 对MCU的底层原理要求较高,从事这个岗位可以加深对MCU的理解,成长性不错。
- 可以加深对CP autosar的理解
缺点:
- 工作内容偏底层,都是操作寄存器什么的,也会接触到一些配置工作,比较枯燥。
- 岗位需求量不高
BSW工程师:推荐指数 ⭐⭐
BSW工程师是CP autosar中的基础软件开发,通过配置工具生成代码,然后在生成代码的基础上少量修改。
优点:
- 基于CP autosar的配置工具进行配置,上手简单
- 成熟度高,大部分公司这方面技术积累多
- 需求量大
缺点:
- 可能会觉得自己是配置工程师,成就感较低
- 成长性不高,技术壁垒低
ASW工程师:推荐指数 ⭐⭐
ASW工程师是CP autosar中的应用软件开发,基于Matlab和Simulink等仿真工作,做各种控制逻辑的仿真模型,然后生成代码。
优点:
- 与BSW优点类似,手写代码不多
- 对建模、仿真要求高,各种状态机、控制逻辑。更适合车辆、或者控制相关专业和不想写代码的人
缺点:
- 与软件开发相差甚远,如果岗位名称上带着软件开发,那迷惑性极强
MPU方向(整体需求量较少):
BSP工程师:推荐指数 ⭐⭐⭐⭐
工作内容包括:对SOC进行bring up,移植裁剪kernel、rootfs,集成开发驱动等
优点:
- 对Linux、底层驱动要求较高,存在一定技术壁垒
- 不只是汽车行业需要,其他使用SOC的行业都需要
- 可以接触到汽车上比较新的高性能硬件(中央计算平台等)
缺点:
- 需求量少,汽车中SOC的应用还在推广阶段
- 对汽车行业特定的流程、标准接触机会较少
中间件开发(SOA Middleware):推荐指数 ⭐⭐⭐⭐⭐
这是与互联网的那一套最接近的岗位了,工作内容包括:开发符合Adaptive autosar标准和SOA架构的中间件,比如服务注册、服务发现等机制。
优点:
- 中间件对软件架构要求较高,可以学习到一些软件架构思想
- 对C++编程水平要求较高,可以得到编程方面的提升
- 可以对Adaptive autosar标准和SOA架构有更深的理解
缺点:
- 需求量较少
- 对专业技能要求较高
应用软件开发(Adaptive Autosar):推荐指数⭐⭐⭐⭐
工作内容:基于Adaptive autosar中间件,进行应用层开发。
优点:
- 能够对Adaptive autosar有更深的理解
- 能够了解汽车应用软件的业务逻辑,更贴近用户
- 对C++编程有一定要求
缺点:
- 业务逻辑复杂枯燥
- 可能需要跟其他人扯皮
- 赞