嵌入式行业需要什么样的技术人才?仔细观察各种招聘的岗位要求吧,无非是两方面。
开发平台的熟悉。目前的嵌入式开发大多数是在linux或者类linux下的环境下进行的,那么linux的使用应该熟悉吧,shell脚本得会写吧,配置文件得会改吧,GCC GDB得会用吧,Make工具得会吧?
比如项目管理工具的使用,都什么年代了,不会用CVS,也不会用SVN?请问,你还活在软件时代的原始社会么?
数据结构和算法。搞软件开发,不懂数据结构,不会算法优化,不会衡量复杂度,太不靠谱了吧?
当然,这个也不是要求啥算法都要会,啥数据结构都记得住,最起码得知道有那么种东西,有什么作用,这样用到的时候好歹也能查啊。
编程语言。关于JAVA,我知道现在JAVA的异军突起,很是震动了编程语言界,但是在嵌入式开发下,不会C或者C++语言,实在说不过去。
当然现在很多手机应用完全用java写的,如果你只想搞嵌入式的上层软件开发又不想深入下去,只用JAVA也未尝不可。
关于汇编,嗯,这个可能挺难,毕竟跟具体的硬件架构(主要是CPU)有关,但是真的很有意思,而且在某些时候,它是不可替代的。
数字电路。这个主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、寄存器,为了更好的理解嵌入式芯片、存储器、外围设备等硬件的设计,但往往在软件开发中未必能用的到。因为大部分硬件都提供了很完整的软件接口。
操作系统。这个说的是平台上选用的操作系统。嵌入式产品操作系统实在是太多了。
但操作系统的内部设计原理都是殊途同归。
首先,要去学习的是操作系统原理,要去了解进程通信、内存管理、文件系统等等几个重要的部分,因为这些在软件开发尤其是内核驱动开发时会用到。
接下来,可以去熟悉至少一种主流的操作系统,Linux是一个很好的选择,去了解它的内核架构,设备驱动架构,如何去编译、裁剪、编写应用程序,以及如何使用在具体的嵌入式产品上。
计算机的组成/微机原理。主要是为了了解微型计算机的硬件工作原理,明白CPU、总线、I/O、存储器等一些关键结构是怎么工作的,虽然是很枯燥的知识,但是对熟悉外围设备硬件工作方式,及操作系统,软件架构的设计及优化相当关键。
通信协议。对于非应用层的通信协议,我实在不知道是不是该把它放入操作系统的范畴,因为很多操作系统是没有网络部分的,但是在很多方面它又是由操作系统提供。
当然这些下层通信协议,貌似不太用关心,因为太多的开源协议栈了。应用层的网络协议可能就要关心了,比如http、ftp、rtsp、rtmp、mms等等。
音视频处理。比如文件封装、音视频的编解码、各种音视频的标准,还有流媒体什么的。Ffmpeg是一个很好的东西,建议学习一下。
信息安全。嗯,这一块貌似现在越来越受到重视了。
数据库。唉,嵌入式设备能力越来越强啊!再搞搞,我看也不用交叉编译了。
勤奋,为了解决一个技术问题经常会主动留下来加班。
钻研,为了解决一个技术问题会主动学习各方面的资料,勤做实验,用事实去验证;。
和领导和同事及时主动沟通,集思广益,争取各方面的资源,充分利用已有的经验,避免走弯路,加快研发进程。
有强烈的事业心和牺牲精神,不达目标绝不停息。
工作没有目标,精力分散,很多的时间花在网络上,偷偷的看视频。
工作推卸责任,把工作没有进展的原因推卸到工作难度太大,或者资源不够,而自己却又不主动的去争取资源。
没有长期为研发乃至个人的职业生涯有充分的打算,或者说来研发的目标比较低下只是为了混口饭吃;人无远虑,必有近忧,没有远大的理想,外界任何一个小的干扰都会让你三心二意,因而知识的学习没有系统性。
和同事和领导的沟通不主动,甚至避让,怕领导检查工作。
更关注生活而不是工作。
比较在意自己的付出。
接着就是职务,收入上的提升,说到底就是个人在社会上竞争力的提升。不去提升你的核心竞争力,成天沉迷于网络还有其他事物,是否有点舍本逐末呢?
来源:汽车电子嵌入式
--END--