嵌入式软件开发|想入行嵌入式开发并不难?

嵌入式软件开发(想入行嵌入式开发并不难?)
从事嵌入式开发一年了,有些感想跟大家谈谈 。可能很多朋友会像我当初一样,为前途而烦恼,为不知道储备什么知识而苦恼,所以写点东西给这些朋友们提供参考 。另外,也可鞭策自己,让自己看到自己的不足,认清以后的发展方向 。
首先IT是一个需要不断学习的行业,没有任何一个行业像我们这样需要不断地接触新东西,学习新知识,如同《学计算机的你伤不起呀》中吼的那样,搞上层开发的,各种编程语言搞死你;搞系统开发的,各种系统搞死你;做底层的,各种汇编,芯片,指令集搞死你;当然了,无论做哪层,各种编译器,工具,软硬件知识等等都能搞死你 。随便一类学问中的一小部分都是一摞砖一般的书啊 。不懂的也可以来21ic问哦 。其次嵌入式行业更像是IT中的IT 。标准缺乏,规格多变,技术变化又特快,刚流行的技术可能没两年就会失去生机 。比如塞班,Nokia放弃了,Intel的MeGoo吧,也没动静了,现在安卓火的很,说不定过几年就像今天的塞班,感觉像是永远跟不上时代的节奏 。
嵌入式软件开发|想入行嵌入式开发并不难?



所以,很多人都说IT是吃青春饭的,一点不为过,等到年纪大了,或许真的做技术会力不从心吧 。尤其是国内,技术人员的地位……(你懂得) 。
话说嵌入式这个行业到底需要什么样的技术人才?仔细观察各种招聘的岗位要求吧,无非是
1、通用要求:比如什么学历,多少年工作经百思特网验,有创新百思特网精神,抗压能力强,吃苦耐劳,善于沟通,态度认真等等等等……
2、专业要求:这个可真的多了去了,但无非就是各种精通 。什么精通控制理论,精通电路设计,精通各种硬件驱动开发,精通linux内核以及裁剪,精通C/C++/Java语言,精通DSP,精通ARM,精通什么
linux/ecos/ucos/wince/VxWorks,精通嵌入式数据库,精通多线程编程,精通各种网络协议,精通各种总线协议,精通塞班/安卓/IOS平台应用开发,精通汇编,编译器,二进制工具;精通各种媒体封装格式,编解码;精通通信技术;精通硬件原理图;精通PCB设计;精通计算机结构;精通bootloader,精通……感觉只要是行业内的就要精通(我了个去!我感觉精通一门就得好久 。。。)
看完这些,尤其是专业要求,头大了吧?
那么我们就分析一下上面的要求吧 。各个公司就的通用要求像是互相复制粘贴的一样,比如学历(个人认为学力明显更重要),比如经验(是有n年的经验,还有n年前的经验用了n年?),还有个人秉性,我都不知道各个公司怎么在员工入职前考察 。专业要求呢(其实精通其中几样就挺了不起了),一看就让人头晕,了解了嵌入式开发的结构可能就好理解些了 。
从技术实现上讲,嵌入式的产品分为两大类:一类简单的,没有操作系统支持的;一类复杂的,有操作系统的 。就目前发展方向看,后一种是趋势 。前一种从程序实现上可分为3层:硬件层,驱动层,应用层;后一种分为4层:硬件层,驱动层,系统层,应用层 。
所以嵌入式的开发大致需要这么从下到上4类工程师:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发 。
嵌入式软件开发|想入行嵌入式开发并不难?



他们应该会哪些技能呢?1、嵌入式硬件开发:这是硬件工程师来做,一般出身为自动化,电子,通信等专业,他们要求熟悉电路等知识,非常熟悉各种常用元器件,掌握模拟电路和数字电路设计的开发能力,熟悉硬件开发模式和设计模式,熟悉各种芯片及外围设备,熟悉8位16位32位处理器嵌入式硬件平台开发 。有的要求有FPGA的开发经验,精通常用的硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad 。一般要有4~8层高速PCB设计经验 。由于本人不是做硬件的,对这一块的不熟悉,所以不敢妄言 。
2、嵌入式驱动开发:这个可以硬件工程师来做,也可以软件工程师来做,主要还是取决于设备 。目前驱动开发,除非是简单的设备驱动,实际上很多时候都是移植,所以更多的是需要掌握目标平台的硬件和系统特性 。所以至少得掌握一些操作系统、系统结构、计算机组成原理、数据结构相关知识 。熟悉嵌入式ARM/MIPS/PowerPC架构 。具有单片机、某种或多种32位嵌入式处理器的移植开发能力,熟悉bootloader过程,具有扎实的硬件知识,理解硬件原理图,能独立完成相关硬件驱动调试,能够根据芯片手册编写软件驱动程序 。如果涉及到网络设备,或许还要掌握很多高层的网络协议的原理 。个人感觉这一块虽然大部分不是很难,但却是极为重要的 。当然如果要在这一层次提供对上层的多线程支持,某些驱动也是很难写的 。