我是一名嵌入式系统研发工程师,不过,因为常人并不了解嵌入式系统研发工程师的工作内容及日常,提到嵌入式系统研发工程师,想到的大多是一些线路板,电阻电容,集成电路等直观可见的电子元件,因此我一般都被人称作电子工程师。
这篇文章,我试图给大家讲一讲嵌入式系统到底是怎么回事,它的研发工程师到底是不是人~~
什么是嵌入式系统?
根据百度百科的介绍:
嵌入式系统(Embedded system),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。
嵌入式系统的核心是由一个或几个预先编程好以用来执行少数几项任务的微处理器或者单片机组成。与通用计算机能够运行用户选择的软件不同,嵌入式系统上的软件通常是暂时不变的;所以经常称为“固件”。
可以看出,一个完整的嵌入式系统,包括硬件和软件。
像我们日常生活中常见的电子闹钟,温湿度计,手机等,都是典型的嵌入式系统。
在一些大公司,或者是一些复杂度很高的嵌入式系统中,硬件和软件是由不同的人完成,负责硬件的一般叫做嵌入式系统硬件工程师,负责软件的叫做嵌入式系统软件/韧体工程师。
硬件和硬件工程师:
硬件就是看得见摸得着的东西,比如电路板,电容,电阻,三极管,IC(集成电路)等等。
硬件工程师的工作,就是要把所有的元器件组装起来,通过线路相连,让所有的元器件一起正常工作。工作流程一般是先测试线路,画原理图,再画pcb版,最后制作出bom(元器件列表),最后交给采购去买元器件,线路板工厂做出电路板,再由软件工程师写程序完成系统功能,进行综合调试。
这中间可能随时会修改,再从测试线路开始。
绘制原理图:
绘制PCB
输出BOM:
制作样品:
硬件工程师用的最多的工具是:万用表,示波器,电烙铁,还有一些很专业的仪表,比如波形发生器等等。下面就是常用工具,看看你能认出几种:
软件和软件工程师:
软件工程师要写的程序有2种,一种是底层的和硬件密切相关的程序,叫做驱动程序,比如LCD/LCM显示驱动,eeprom(带电可擦可编程只读存储器)的读写操作,USB功能的实现等等;还有一种是上层算法,比如一些测量值的计算,傅里叶变换,rms滤波,crc校验等算法。
软件工程师主要就是写程序了,最常用的是仿真器,PC编译器软件了,当然万用表示波器之类的也会经常使用。
在几十年以前,因为MCU内存有限,那时大多使用汇编语言编程,艰涩难懂,不易扩展;而现在,因为片上资源的丰富,一般使用C语言编程,代码移植比较方便。甚至于有些嵌入式系统可以直接运行windows,安卓等操作系统。
下面是软件工程师主要的工作场景(以freescale的MCU为例):
代码编辑器:
程序编译器:
仿真器:
软硬件关系:
有一个笑话,是这样调侃软硬件关系的:
问:修一个灯泡要多少个软件工程师?
答:一个都不用,因为这是硬件问题。
这从某种程度上讲述了某些公司的实际状况:硬件软件工程师们各自为营,有问题的时候喜欢相互推脱,内耗严重。
像我之前接触到的一个公司,公司不大,产品也并不复杂,但是就这一个产品,由硬件工程师和软件工程师两个人配合完成。
结果,硬件工程师在做出产品样品后,就不再过问;而软件工程师在硬件平台上编程,结果碰到很多问题,但他不知道是硬件有问题,也从没用示波器万用表检查过硬件,最后产品迟迟出不来。
这样的方式是绝对错误的。
因为硬件工程师做出样品后,至少有50%的功能是无法检查的,需要等到软件工程师烧录程序后才能验证,这里面稳态响应,瞬态响应,EMC,ESD问题非常多,而且软硬件原因相互纠缠,工程师们没有良好密切的配合,是不可能顺利地把设计进行完全的。
所以,大多数时候,硬件工程师需要懂一些软件原理;软件工程师也需要懂一些硬件知识。有时候同一个问题,可以用硬件解决,也可以用软件解决。
像我这样,一直在一个小公司工作的,那简直就是恨不得一个人掰成2个用,所以,硬件软件全部由一个人承包了。
这样做对公司是有好处的:碰到任何问题能够综合考虑,用性价比最高的方法去解决,人力成本支出少,但是对个人就没啥好处了——薪水没有翻倍啊!!
共同目标:
不管软硬件工程师是几个人,他们最终的目标,就是设计出合格的基于嵌入式系统的产品,比如这款温湿度风速多参数无线传输测量仪表。
这是软硬件相互支撑共同构建出来的产品,在上市前,还需要经过精度测试,耐久性寿命测试,防水防尘等级测试,CE,FCC等测试,所有测试合格后,才能和广大用户见面。
各位如果有兴趣的话,今后会再详细进行深入介绍,让大家对嵌入式设计不再陌生。
科技,让生活更加美好。
希望喜欢我文字的人,去看看这个吧,说说对我的看法,请我吃星星,谢谢啦~
我的 @ReviewMe 凭证留言板!
Posted using Partiko iOS
This page is synchronized from the post: 谈谈嵌入式系统研发工程师的软硬件分工