嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。
嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统有WinCE,Palm,现在又多了Symbian等,其实只要会C++,在哪里都差不多,都有相应的SDK开发包。用单片机汇编开发也算是嵌入式,用高级一点的处理器,arm7,arm9,powerpc什么的开发起来,不过要加操作系统而已,也属于嵌入式的开发.
成熟的底层开发者首先要有非常扎实、深厚的C语言功底,代码量最少在5万-10万行以上。通过C语言可以实现底层开发所要求的算法与数据结构。能运用C++思想通过C语言对操作系统内核进行修改、裁切、移植和相关驱动开发;熟悉一种以上协议规范,如网络协议,PCI协议。熟悉至少一种体系结构(如ARM、X86结构)。熟练操作修改Bootloder(如Uboot、Gbios)。熟悉文件系统、进程线程、字符设备、网络设备、块设备等。当你用C语言进入了底层开发领域,后面的知识主要涉及操作系统原理,算法与数据结构,数字电路,计算机体系结构(ARM、X86汇编)等高端知识结构。有的同学会说(不是大学都学过么?)。呵呵,关键是你大学所学的真正的学以致用了么?你能够用大学学过的工具来开发现实中的项目么?答案基本上都是“没有”或“不能”。因为现实中的项目需要多种知识的融会贯通,而项目的实践是打通各种知识体系的最好方法。所以在这里希望初学者一定要多编程,多实践,根据不同的情况解决不同的问题。举一反三后,就会有掌握更多的方法和技巧。
嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。
另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头“可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。
下面例举一些半导体芯片公司,我们熟知的一流的芯片公司,如Ti(德州仪器)、Freescale(飞思卡尔)、Alcatel(阿尔卡特)、意法半导体、Intel、AMD、ATI、Mavoll、京瓷、三星、英飞凌、中芯国际等等。嵌入式行业的公司数不胜数,覆盖手机通信,电子消费品,医疗器械,机械电子等等很多行业。相信只要你具有踏实上进,勤奋努力的精神,你的嵌入式之路一定会一帆风顺的!
初次进入嵌入式开发领域的同学在找工作时,第一关是HR关,他们一般需要你用漂亮的简历、英俊的外表和流利的口语去征服她。第二关是笔试关,进入此领域的学生一般都经历过高考之类的无数次考试,具有很强的笔试能力,所以这一关相对轻松。第三关是技术主管、经理面试,面试官首先会考察C语言功底是否足够扎实。然后考察你的底层开发相关知识的掌握程度,例如会让你说一下开发驱动框架、系统进程线程的机制等等。如果有过开发工作经验,他们会针对你曾经做过的项目进行提问,如果过你没做过或者不熟悉,很快就会露出马脚,被cancle掉。有的大公司中间会穿插一些情景、团队合作方面测试。主要测试情商和团队意识。只要你通过上述这几关,完全可以进入国内一流的大公司,开始嵌入式开发生涯。
嵌入式行业是一个入门很高的行业,设计范围非常广。主要职位大体分布在硬件开发,底层开发和应用层开发三个领域。
其中硬件开发和底层开发领域对就职人员的要求最高。薪资普遍都在6位数以上(十万,不含项目提成和其他福利)。
硬件开发一般面向电子和通信专业的人员。他们大学时专业课更多学的是偏硬件方向。当然如果他们转到底层的软件开发上,将会有计算机或者软件专业不具备的特长。他们对硬件非常了解。在公司往往不需要硬件工程师的配合,自己就能搞定!
嵌入式应用层开发也是嵌入式开发领域中非常重要的一个环节,而且他更多的面对上层软件开发人员的需要。相对底层开发,社会上应用层开发的人员要多的多,当然相对薪资稍低一些,基本维持在5k-15k/月之间。这里需要掌握的知识基本都是API,库函数的操作。对QT和GTK的熟悉和开发是必需的。需要扎实掌握的工具当然是C++,另外最好会用JAVA编程和Python、PHP等流行脚本语言。会给你工作和薪水上带来更多的附加值。
给初学者的一些建议。如果你是电子、通信、自动化、软件、计算机、数学、物理专业的本科毕业爱好者,都可以选择嵌入式开发作为你未来入职和工作的行业。
