我一朋友做嵌入式也有2年了,但是他嵌入式的朋友很少,都不懂其他公司在做什。他在维护公司的一款成熟产品,整天就是各种看代码解bug,自己写代码不多,总感觉会被时代抛弃。
一般嵌入式公司都在做什么呢?比如那些职位说明要求熟悉STM32单片机,熟悉Linux,熟悉某个接口的,在工作一般是做什么呢?
其实嵌入式工程师的工作内容是相对复杂的。
一款嵌入式产品的生命周期包含开发 ---测试/量产 --- 维护阶段,相关文章:梳理单片机学习方法、产品开发流程。在这其中,嵌入式开发工程师的工作内容看似变化不大,但其实差别很大的,我以我参加和负责的完整项目的经历来整合这三部分工作时的情况和工作状态。
开发阶段:
开发阶段对于我来说工作基本可以总结为三步循环, 学习知识 -- 实践应用知识 -- 需求实现/整合 -- 整体调试
因为在设计之初,对于整个项目其实是以框架和简单流程图构成的,例如项目需要RTOS,我就去移植FreeRTOS,相关文章:使用STM32CubeMx工具,写FreeRTOS的demo程序。了解API接口,实现线程+消息的测试代码,在根据这部分代码完成框架的搭建。
需要实现嵌入式服务器,我就去学习<http权威指南>, 在参考网上别人写的服务器流程,实现了框架图(就是下面这张图)。
后来又绘制流程图,先在PC端用C+Socket实现服务器,测试通过后在移植到嵌入式平台,整合应用测试,当然我后来为了网页测试方便,还用C#实现了一套。此时工作基本上就是不停的接触新知识+运用的过程,因为那时也刚入门,负责这么复杂的项目,压力是很大的,但是真的很有激情,每隔一段时间都能明显感觉到自己的进步。
测试/量产阶段:
测试/量产阶段工作可以总结为以下几点,发现问题 --- 解决问题 --- 总结问题
在这阶段时,其实产品从功能上基本满足需求了,实际上还有很多问题,如长时间运行的稳定性,某些分支触发的内存越界,协议的分配资源合理性,功能模块某些状态的异常,这部分看起来都是小问题,但解决起来是需要对整个系统的各个部分都有详细的认知,有时卡个1-2天都正常,所以这部分也是系统性的问题,同时也要完善整个开发文档的整理,是深入总结提高的过程。
维护阶段
这部分从工作上来说,基本就是需求变动的维护和异常问题解决
对于经历上述流程成熟量产的产品,异常问题一般不会太多,维护阶段这部分工作量不大,工作主要集中在需求变动,如某些硬件器件更换,增加功能,对于整体框架则基本不会有变动,当时在维护阶段,我基本就是把A类产品代码,修改些功能和参数推广到B类,在修改些功能参数推广到C类,基本都是这些工作,我在这个阶段干了半年就辞职了,原因一方面是薪资不满意,当然更多的是工作感觉不到提升,就很耽误人生时光了。
你目前所在的环境正是嵌入式维护阶段,这部分说实话,除非本身对自己有清晰的规划,很容易消磨意志,其实在这种情况空闲时间蛮多的,压力也小,是很适合自我进行规划学习的,靠自己努力吧!