嵌入式工程师的生活状态是怎样的?和做单片机的和程序员的生活一样吗?

更具相关权威部门统计,我国嵌入式人才缺口每年50万人左右。根据某程无忧网发布的调查报告,嵌入式软件开发是未来几年最热门和最受欢迎的职业之一,具有10年工作经验的高级嵌入式工程师年薪在30万元左右。

先交代点背景,工作好几年了。

我和我的同事,也自称为嵌入式工程师,不过只搞软件,画板子焊元件这些活我不会做,能用个示波器万用表啥的,哈哈。

芯片方面,至于单片机,一开始工作接触的就是MPU或者SoC,mips系arm系都用过不少。

做过的系统,有带屏幕需要GUI的也有不带的;有以while(1) 开始的裸奔系统,也有uC/OS II
这样轻量级的,也有芯片商不知道在eCOS还是什么上面定制修改的。uCLinux当初咱也花功夫学了,结果还没用上,新出的一批芯片都是带MMU的了,直接跑linux了。再后来,android
烂大街了。

补充一下说明,也许我可以更有针对性地回答。

你所说的生活,应该是指工作状态吧?你所提到的程序员应该是专指PC软件或者web程序员吧?其实我们嵌入式软件工程师也是程序员。

好,现在回答你的问题:嵌入式 软件 工程师
的工作状况是怎样的,取决于你在一个什么样的公司,以及同事的水平如何,公司的技术架构和积累是怎么样的,项目所采用的方案是怎么样的。

1. 同事的水平会决定你的工作状态

如果硬件工程师靠谱,照着demo板改改画出来的板子,打板回来,焊好元件,烧上demo程序,上电就能正常跑起来。否则,软件就放假慢慢等着吧。

还有一次,我们两个同事,打飞的到芯片公司总部出差请求支援,结果被人家发现只是一根排线虚焊了呀,丢死人呀。

后来我长心了,开始软件调试工作前一定要检查硬件。

2. 公司早期的系统架构设计技术人员水平会决定你的工作状态

曾经一家公司,一个while(1)开头的裸奔系统,带自己设计的消息机制,带没有DC的GUI,还自己扩展了一套中文编码。在此系统基础之上,每个新产品为了缩短开发时间,都沿用已有产品的代码,又不敢做大的改动,应届生在上面添加了新的糟糕的代码,又遗传到下一个产品中。每个新产品的bug数都在2000左右,软件开发人员都痛苦不堪。这种状况一直到公司请来一个高水平的CTO,果断引入uC/OS
II 系统,移植MiniGUI,全面采用GBK和Unicode才有所改善。

你想知道后来怎么样了吗?后来当然是这套全新的系统又被一帮低水平的程序员给改乱了呀,又有一批新手接过了这套让人痛苦的历史包袱啊。

3.公司财力、领导的眼光决定了你的工作状态

公司实力雄厚,或者领导有决断,买参考板,买几万块的调试器,买个好用的示波器、逻辑分析仪,不知道能提高多少工作的效率。一帮软件加串口打印,调试几个星期或一两个月,问题还不一定能解决,发的工资、浪费的时间、错过的市场机会,不也是钱吗?

4.公司的方案以及支持力度决定了你的工作状态

如果采用的芯片比较简单,尤其早期的芯片,有的还不带MMU,不能采用linux或者android这样的高级系统,甚至不能移植uC/OS
这样的多线程系统,一些低电检测这样的任务实现起来是很别扭的。现在的芯片强大多了,很多以前在旧平台上引以为豪的奇技淫巧都不需要了。

国内的方案接触过的不多,用过一些小公司的小芯片,参差不齐,大部分给的datasheet显得非常业余。

现在我的工作基本上都采用linux系统,总体印象就是:

你需要懂非常多的东西:计算机架构,指令集特征,启动模式,io,i2c,spi总线,bootloader,kernel,rootfs,工具链,交叉编译,。。。。

但是你能做的事情其实又很少:你几乎没有机会自己写bootloader,从头制作整个系统。大部分工作人家都已经替你做好了,你只需要简单地修改就可以了。

你会发现所能做的工作和PC上软件开发的差别越来越小,内存越来越大,flash或者sd卡空间越来越大,对内存和存储空间斤斤计较越来越没有必要。在嵌入式设备上用python或者其他高级语言开发也越来越不稀奇了。更何况,平台会提供非常方便的模拟器,你几乎可以将大部分应用逻辑都在模拟器上开发调试好,你有时都会忘了你是为嵌入式设备在开发程序。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信