一般而言,嵌入式学习从上到下分为应用开发、系统开发、驱动开发三层,分别映射了从编程语言到操作系统再到硬件平台逐步提升的技术体系。对于大学生而言,嵌入式的学习应有别于有实际工作经验的工程师,在学习技术的同时,更要有意识地强调自身对编程规范、技术经验、项目流程的认识和掌握。当从技术细节而言,嵌入式开发至少需要以下五个核心点:
1、C语言。C是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。推荐书籍:《The C Programming Language》中译版本。
2、操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。
3、Linux或Wince方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。
4、系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。
5、驱动开发。linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。
基于以上流程,根据大学生学员现状,将嵌入式培训课程分为应用开发(在计算机上编程)、系统开发(交叉编译到目标硬件)、驱动开发(对目前硬件进行进行升级)三位一体、层层递进的培养模式,在前期重点培养编程思维、后期重点培养项目思维和开发流程,培养技术全面的工程师。
嵌入式系统一般指非pc系统,有计算机功能但又不称之为计算机的设备或器材。它是以应用为中心,软硬件可裁减的,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。简单地说,嵌入式系统集系统的应用软件与硬件于一体,类似于pc中bios的工作方式,具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时和多任务的体系。嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件系统等组成,它是可独立工作的“器件”。
嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等browser.嵌入式操作系统具有通用操作系统的基本特点,如能够有效管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。与通用操作系统相比较,嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固态化以及应用的专用性等方面具有较为突出的特点。
调查发现,看看自学嵌入式的同学一般尝试以下几个努力:
1.自学C/C++/C#
2.学习单片机,参加电子大赛
3.研究Linux内核
4.买开发板自学ARM相关平台的嵌入式开发
上述方式的最大缺点在于没有直奔主题,而且片面学习,具体而言:
1.没有项目实践,无从下手
2.不知道外面企业需要什么样的人才
3.不知道外面企业,都在做哪些产品
4.单片机的学习过于简单,学习手段古老
5.项目基础为0,自学时间和自学面需要非常广
6.没有同学一起坚持学习,自己半途而废
7.操作系统的知识太多,没人指导,学不完,不知道学习哪些
嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。
一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support、Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)。
另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有“花头“可做的),所以搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。
方向 |
工作内容 |
3G、手机应用 |
3G、手机相关数据通讯应用 |
数字通信 |
交换机、路由器等 |
金融产品 |
终端、POS |
外包 |
外包软件项目 |
名目繁多的嵌入式分支 |
涉及嵌入式产品的各行业方向 |
要一一列举嵌入式名企是一件庞大的工程,这两年随着越来越多软件企业也开始涉及硬件开发,符合嵌入式名企的企业非常多。所以,以下只是罗列几个较知名的企业供同学们参考(11年):
巨龙 大唐电信 中兴 华为(“巨大中华“) ut思达康 长电 卫士通 长城开发
新大陆三元达 星网锐捷 邮通 联迪 富士通 冠林 唐诺 敏讯 网龙 邮科 华光 AOC 联合动力…
(1)目前国内外这方面的人都很稀缺。
(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。
(3)哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。有人将自己设计的软件变成自己的产品,他们通过贴牌(OEM)的方式将硬件设计委托给请珠海佛山一带的公司订做,在自己创业的路上走出坚定的一步。
嵌入式软件未来的前景看好,可是目前人才的缺乏已经成为制约嵌入式软件发展的瓶颈。一方面,因为嵌入式软件领域门槛较高,从事嵌入式软件开发的工作人员不仅要懂较底层软件(例如操作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计 的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业 IT人员很难切入这一领域。另一方面,因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式操作系统、 MPEG技术、无线通信协议等),掌握这些新技术的人才很缺乏。
入式软件开发人才的缺乏也带来了这个行业可观的薪酬待遇,嵌入式的从业者薪酬比其他IT业同行大约高出30%,初入门的开发人员平均月薪一般都能达到5000元,有三年以上经验的人员年薪都在 10万元以上,有10年工作经验的高级嵌入式软件工程师年薪在30万元左右。尽管待遇可观,可是相关企业还是很难招到合适的员工。
专家普遍认为:应对之策对于嵌入式软件人才缺乏的现状,可以通过“两条腿走路”的方式来解决,从而建立起稳定、专业化的嵌入式软件人才队伍。一是在高校内设置专门的嵌入式软件的专业,二是对软件专业的毕业生进行嵌入式软件方面的专门培训。
目前我国高校的软件教育普遍以应用软件为主,开设嵌入式软件专业的学校很少,而且学校不能向学生提供足够的实践机会。现在从事嵌入式应用软件开发的人员,以自动控制、通信专业和计算机硬件的偏多,基本是通过工作实践逐渐转型而来。因此,如果在高校中专门设置嵌入式软件相关专业能在很大程度上解决相关人才匮乏的问题。
专业培训机构、职业教育等途径一定程度上缓解了上述问题,目前绝大多数能直接到所在嵌入式核心企业直接担任骨干工程师的毕业生基本都是在校期间经过职业化的专业培养,这部分经过嵌入式培训的学员,也就相当于具备了1-2年的软件开发工作经验。
嵌入式系统产品正不断渗透各个行业,作为包含在这些硬件产品中的特殊软件形态,其产业增幅不断加大,而且在整个软件产业的比重日趋提高。当前,IT业的核心技术已经集中在集成电路芯片和软件这两个部分,而嵌入式软件则是驱动硬件系统的灵魂。因此,通过嵌入式软件增加产品的附加值无疑是最好的选择,世界各国和各知名厂商都在为嵌入式软件的发展而努力。
2003到2011年全球嵌入式软件市场规模均复合增长率创造了年均30%的奇迹。据预测,在未来的几年内,嵌入式系统的发展为几乎所有的电子设备注入了新的活力,加上迅速发展的Internet和廉价的微处理器出现,嵌入式系统将在我们的日常生活里形成一个更大的应用领域。自2006年中国嵌入式计算机创造1461.6亿元的效益,首次超过整个软件产业比重的20%,自后,08、09年,国内外的市场使嵌入式应用系统在中国具有巨巨大的发展潜力和市场需求,为中国嵌入式系统产业提供了大有作为的广阔天地。
物联网是物与物、人与物之间的信息传递与控制。专业上讲就应该是智能终端的网络化。大家都知道,嵌入式系统无所不在,有嵌入式系统的地方才会有物联网的应用。所以,什么是物联网呢?物联网就是基于互联网的嵌入式系统。从另一个意义也可以说,物联网的产生是嵌入式系统高速发展的必然产物,更多的嵌入式智能终端产品有了联网的需求,催生了物联网这个概念的产生。
从专业角度讲,物联网就应该是嵌入式智能终端的网络化形式。嵌入式系统无所不在,有嵌入式系统的地方才会有物联网的应用,换一句话讲,要想实现物物相连,必须赋予物体嵌入式智能部件为前提。
嵌入式应用可谓无处不在。我们每天乘坐公共汽车使用的公交卡、上下楼乘坐的电梯、银行取款时使用的ATM机、KTV里的点唱机、家里使用的微波炉、全自动洗衣机、电视机顶盒、无线路由器、掌上pda、数字电视、多媒体、汽车、微波炉、数字相机、家庭自动化系统、电梯、空调、安全系统、自动售货机、蜂窝式电话、消费电子设备、工业自动化仪表与医疗仪器……全部都是嵌入式应用。
嵌入式Linux的应用领域非常广泛,主要的应用领域有:
信息家电:PDA,STB-Set-stopbox,Digital Telephone,Answering Machine,Screen Phone
数据网络:Ethernet switches,Router,Bridge,Hub,Remote access servers,ATM,Frame relay
远程通信、医疗电子、交通运输、计算机外设、工业控制、航空领域等。