嵌入式闲谈
一个好工作,谈一份好薪水详细这也是大部分人的心愿,那么嵌入式行业该如何规划呢?下面我们从几方面来深入探讨。
1 了解嵌入式行业
嵌入式系统的应用已经覆盖到我们的生产、工作和生活的各个方面。小到智能家电,手机,电子书,大到从航天飞机、载人飞船,到水下核潜艇等等这些都有嵌入式系统和嵌入式技术的应用。可以说嵌入式技术无所不在。
从行业市场的大环境来看,物联网和云计算等新兴领域已经成为信息产业的主旋律,而作为这些产业应用技术中最核心部分的嵌入式系统,更是受到普遍的关注。在当今嵌入式环境下,嵌入式应用已经从传统的嵌入式应用(比如:智能手机、教学仪器、家用电器、工业控制等)到前沿的嵌入式应用(比如:智能售货、智能家居、机器人、无人机、人脸识别等)都离不开嵌入式技术,只是嵌入式开发更倾向于智能化。
所以说嵌入式只会越来越火,人工智能、深度学习、神经网络、区块链、大数据等的日益发展必定会带动前沿的嵌入式技术的发展。
因此我们应该坚定自己的择业理念,多去了解未来的行业前景、趋势;选择合适、正确的行业领域。因为不同行业中同样的职位需要掌握的知识技能是不一样的,比如同样是嵌入式驱动开发工程师,消费电子可能主要是做 BOOT,通信设备就更看重协议和接口的实现。这样过个三五年转行的成本就很高了,因为你在这样行业中大量用到的知识另外一个行业可能基本用不到。
2 行业经验总结分享
什么是行业经验呢?每个行业都有一条长长的产业链,比如手机,从芯片销售集团或者说解决方案提供商(ARM/INTEL 等+TI/ 高通 /MTK 等+代理商)到手机设计集团(软件方面:苹果 / 安卓 /WP 等,硬件方面:苹果 / 三星等)再到手机生产集团(很多就不举例了)最后到消费者,这是一条主链条。
你所在的公司一般位于中间某一级别上,这样就出现了你的上游和你的下游,行业经验就是你在你的上游,同级,下游中的形象,更简单地说,你的上游愿意与你长期有诚意的合作,你的同级钦佩你的能力和人品,你的下游认为与你合作有利有信,总之在全行业树立起你的可靠形象是很关键的一环,这将决定你在行业中能走的多远。其次就是技巧性的行业经验,比如说合作流程这些可以马上学到的东西。前者将是你的行业名片,后者将为你锦上添花。
但是行业经验并不容易积累,原因在于研发人员一般是“铁屁股”,没有机会走出去接触行业内部,上游有采购经理,下游有销售经理,你又有项目经理管,你只是执行项目经理和架构师的指令罢了。但如果不深入了解行业,你始终只是 IT 民工,没有发展的机会。
当你投身研发工作 3 年后,你下面应该有 3 名小兵,对他们而言,你就是他们的架构师,你要充分把握这一机会减少技术时间,加强学习管理。对下,你需要为你的组员合理分配工作,管理他们的情绪,激发他们的工作热情,完成既定工作。对上,你要为你们组争取利益,并能在所有组面前清楚地表达你的意见和建议,目的只有一个:露脸,使上司认为你是一个综合性的人才。
在往上走,你成为高级技术人员后,你会有很多机会和同行打交道了,比如各种学习会、交流会、展览会,和他们建立融洽的关系很重要。也多和市场销售人员打交道,他们是你在这一时期唯一能获得上下游信息的人。
再往上走,就基本定型了。你可以考虑急流勇退自己创业、也可以走行业内技术专家、也可以走技术与管理结合的路线。总之,拥有哪方面的核心竞争力,你就适合往哪个方向走。
最后总结下自己的观点:别把自己当做机器使,让自己完全沉浸在技术的世界里,合理分配技术与社交的时间非常重要,不然最后你很有可能被钉死在一个中层岗位上,更重要的是你可能“孑然一身,真爱无觅,孤伴终老”。
3 技术经验总结分享
一个研发人员得以安身立命的根本就是技术经验。不过可惜的是,技术是很容易复制的。也许你很自得于自己做过多个嵌入式项目,但是说实话,这都不是什么核心竞争力,因为你做的项目也可能大量参考了网上前辈的代码,有的甚至是直接拿过来用的,你做的工作有大部分是代码的剪裁而已。而这个,相信一个之前没有经验的电类本科生,一个月的时间也能学会。也就是说,你和他相比,只是多了一个月的优势罢了。这种容易学习,容易复制的经验,不算你的技术竞争力。你在网上找到的一切代码都只能算学习资料。
技术人员除了复制粘贴外,更应该掌握核心的原理性技术。什么是核心技术呢?就是本来没有只能由你创造或只能由你更低成本创造的技术,比如我的公司是一家从事多媒体处理的公司,我们要开发一个自动识别瞳孔的设备,核心就是瞳孔识别算法。这个算法可以从网上拿,从国外买,或者自己研发,网上的算法也许你看得懂,但如果不会优化,只会裁剪那还是白搭的,这就是原理性技术和技巧性技术的区别。从国外买成本高而且得不到源码,这样自主研发就是唯一一条路了,如果整个公司只有你有这样的能力根据客户需求从原理出发设计源码核心,那么恭喜你,你可以理所当让的拿着高薪了。
技巧性技术更多是指一种经验,一种积累。比如我积累了两年的单片机函数库、我在调试放大器时遇到书本中没说的问题等,这些都不是在书上就能学到的内容,而拥有这些经验会让你开发的速度变快。但技巧性技术绝对不是核心竞争力,因为它可以在短期内掌握。但有人会问“IT/ 电子行业中有些老人随便一句指点就足够让新人琢磨个半年,这种现象是客观存在的,这个不是核心竞争力吗?”,要注意的是,老人和新人是没有竞争关系的,因为他们本来就没在一个等级上,所以这种倚老卖老的行为构不成核心竞争力,核心竞争力只能在同级之间比较。
技巧性技术可以转化为核心技术,比方说我调试放大器时遇到一个诡异的问题,我用结果反推原因,再用理论验证,再而用理论上的调整规避问题,从现象升华到本质,从知道升华到掌握,就是这么一个转化的过程。但是不是所有的技巧性技术都能成功转化,技巧性技术本质上讲就是帮助开发的经验罢了,扎实的掌握原理并能举一反三才是核心技术的源泉。
最后总结一下,你的核心竞争力大致分成两个方面:深入的行业经验和扎实的原理技术。前者通过时间慢慢的积累,后者可以通过密集的学习掌握,但两者也都需要长期的实践巩固加强。
4 职位分析
嵌入式开发涵盖硬件软件,开发链条很长,要根据自己的实际情况选择适应的职位。
嵌入式的职位大概有:
① 硬件工程师:
负责底层的硬件设计,主要要用到:
处理器:ARM9;DSP;Niosoll;FPGA(用于高速特殊场合)
PCB:EMC 设计与仿真
通讯:IIC,IIS,SPI,UART,CAN 总线;RS232、PSTN Modem、网络、GPRS 通信
② 驱动开发工程师:
负责底层和上层的通讯,主要要用:
系统:Linux 非实时系统 /VXworks 实时系统+架构 / 文件系统
内核与 BOOT:内核裁剪与移植、boot loader 和驱动编写,驱动程序开发
上层接口:USB,网口
底层接口:SPI、UART、IIC、I2S,CAN、IDE
③ 软件工程师:
负责上层应用软件,主要要用:
CPU:51/MSP430/ARM7/ARM9
外设:AD/DA、UART、USB、LCD
总线和通讯接口:I2C、SPI、RS232、RS484、CAN、USB、以太网、BACnet、 MODBUS(或有实时性要求)
环境:Linux/QNX+ARM 汇编
GUI:VC++/VC#/LABVIEW
④ 系统开发工程师:
负责系统架构设计
⑤ DSP 软件工程师:
负责数字信号处理部分,主要要用:
CPU:固定为一个小系列(如 TI DM642/648/6467、TI C6000、TMS320C5000、Freescale StarCore)
算法:熟悉图像、音频、视频相关处理算法很重要,要会修改和优化
接口与驱动:网络协议(MAC、IP、UDP、TCP)等
操作系统:架构设计和操作系统配置
⑥ FPGA 设计工程师:
负责高速信号处理和部分数字信号处理,主要要用:
语言:VHDL/Verilog
环境:modlesim、Synplify、Quartus、ISE、ispleverEDA
调试:设计、仿真、调试能力
算法:数字信号处理、滤波设计等算法
接口:E1 Framer/Deframer、HDLC 控制器、以太网 MAC 控制器、SDH Framer/Deframer、SDH Mapper/Demapper、SPI4.2、HiGig、DDR、PCI、PCI-E、DDR-II、HD-SDI
在一个完整的项目中,每个工程师分工合作,完成架构师分配的模块。每个职位深入研究下去的水都很深,一旦决定很难再顺利转行了,所以毕业选择职位时一定要慎重。总的来说软件方面的需求在国内更大,当然竞争也更加激烈。硬件很多是直接买国外解决方案的,所以硬件职位需求较少,但高级人才非常吃香。
人人都想要高薪,但有一个事实也许我们应该明白,市场长期是有效的。所以,你现在的能力一定有一个合理的市场价格,做好一份职业规划对你来说可能受益一生。