嵌入式的应用领域、现状及未来趋势 随着科技进步,嵌入式的出现,以及人们对生活质量,产品的智能化,成本的要求等,以及国家对与物联网、电子、科技的扶持,大量的电子产品都促使嵌入式的快速发展。使用嵌入式的产品如我们常用的手机、平板电脑、电子字典、可视电话、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、物联网、智能家居、医疗仪器、航天航空设备等都是典型的嵌入式的应用。 嵌入式系统市场是巨大的,市场需求是嵌入式系统产业化发展的巨大推动力,据报告:10%~20%的计算机芯片是位台式或便携式电脑设计,80%~90%的计算机芯片是位嵌入式产品设计的,这意味着每年有10亿至20亿个CPU是为嵌入式产品制造的,市场决定了嵌入式行业是很有发展前途的行业。
嵌入式工作分类: 嵌入式产品开发是基于产品的功能,从功能需求、提出并选择方案、电路设计、PCB电路板设计、软件设计、样机生产、软硬件综合调试,软硬件结合的产品开发。所以嵌入式开发需要软硬件都懂的基础要求。但根据侧重点的不同嵌入式产品开发工作可以有以下分类:
硬件方面:1、电路设计:产品原理图的设计,需要对数电模电都比较精通,且熟悉单片机、arm架构及熟练外围电路的使用;基本上会电路设计的都会PCB设计。2、PCB电路板的设计:需要熟悉数电、看懂常用模电,对单片机、arm外设了解,且具备安规电磁兼容的应用经验。
软件方面:1、驱动开发:基于电路图实现产品的驱动开发,需要看懂电路,精通C语言,熟悉arm架构及外设的使用,熟悉操作系统内核、驱动。2、系统开发:基于硬件的uboot移植、内核移植裁剪、根文件系统制作等系统环境搭建及驱动移植开发、应用测试等,需要精通C语言,看懂电路,linux系统开发。3、应用开发:基于操作系统之上的应用程序开发,无需电路方面知识,只需要软件编程,需掌握Java或C++,操作系统、数据库、数据库建模、SQLserver、oracle等,应用开发更新比较快,像电脑上的软件QQ、360、游戏等软件,所以工作也比较忙,入门门槛低,但上升空间不大。 嵌入式系统开发及应用开发要求可能不会太高,相对入门比较简单,但系统开发所需掌握知识面还是比较广的,也比较有发展空间,应用开发更新快,发展有限。驱动开发需要有驱动开发经验,如果有开发经验的话,不会很忙,就是实现功能,如果一个产品功能实现了,就没有太多事了,剩余的就是应用开发了,驱动开发更新不会很快。 嵌入式产品开发中不同的工作有不同的一些特点,硬件开发靠经验,经验越丰富越吃香,可以说能做一辈子;软件开发靠思维、靠算法,如果编程思维清晰,算法优越,不需要太长时间就能做的相当不错。如果软硬件都能做,独立开发产品的话,身价更胜一筹。 但是对于入门级甚至初学者来说不可能面面俱到,都要去做,你也没这个能力,即使能做,一般公司也不会让你一个人从硬件到软件独立去开发嵌入式产品,因为公司做项目有时间要求,必须分工协作。
嵌入式的学习规划 嵌入式产品开发是需要软硬件结合,做软件需要能看懂电路,根据电路、功能即实现原理来编写程序,如果电路不懂,是不能编程实现其功能的,硬件开发也需要对芯片架构,外设编程使用比较熟悉,否则你设计出来的硬件不便于软件开发人员编程实现功能,或者你设计出来的硬件繁琐,成本很高。 那么如何学习嵌入式呢,对于想学习嵌入式的朋友们来说有很多都有单片机的学习经历,感觉自学就行,但是从现实情况来看,嵌入式学习还是比较有难度的,很多朋友遇到问题解决不了,学了一部分就学不下去了,嵌入式学习需要有它的学习方法以及发展规划,下面就来谈谈嵌入式的学习规划:1、软件开发不需要太多经验积累,只要你做过一些开发,编程思维、算法好,不需要太长时间就能做好,所以首先可以做软件开发,比如系统开发或应用开发。2、对系统比较熟悉,做过一些项目之后,可以朝底层驱动方面发展,这个工作也不会太忙,待遇也相当不错,做过一些项目之后对于电路见的也多了,电路也比较熟悉了。3、有比较多项目经验之后,电路也熟悉了之后,补充一些硬件电路知识可以朝硬件设计方面发展,整个产品的开发过程都比较熟悉了之后就可以成为项目研发部的主管或经理,也可以自己接外快接项目来做,有管理经验的甚至可以自己开公司做老板,毕竟这方面的产品开发不需要投资太多成本。
对于初学者嵌入式的学习步骤:先打好两个基础:电路基础:熟悉数字电路,能看懂电路,能分析功能,能根据电路编程C语言基础:要学的精通,学得不好,上了系统程序看都看不懂。掌握arm架构及其外设的使用,编程控制,做相应项目。学习系统编程及网络编程,在应用程序中使用。linux系统学习:uboot移植,内核移植、裁剪,根文件系统制作,驱动编写与移植(花比较大精力学习,它是系统的核心,也结合硬件),应用编程,用户界面等先做系统编程或应用编程,有一定经验之后可向底层驱动发展;
软件项目经验比较丰富之后可向硬件电路设计发展。综合来说,纯应用开发(如Java)来说,门槛较低,但更新太快,发展空间有限,生命周期太短;而嵌入式开发是靠经验积累的,不用吃“青春饭”。