随着互联网技术和消费类电子产品的高速发展,嵌入式系统近年来也得到了飞速发展。随着PDA,智能手机等新兴的设备加入到嵌入式的阵营。而PDA、智能手机的应用程序开发和桌面设备应用程序开发的需求差别越来越小,也就是说嵌入式开发与桌面开发之间的界限越来越模糊了。这对于桌面系统开发人员来说,无疑带来的是广阔的就业机会,但同时是也带来了挑战,即他们如何成功转入嵌入式领域?我们知道,在桌面系统开发领域Windows桌面系统基本占据了60-70%,所以Windows桌面开发人员的比例还是很大的。面对这么大的一个开发群体,微软公司一直没有放弃进军嵌入式领域,早在多年前就推出了Windows CE嵌入式操作系统,由于windows CE和Windows桌面应用开发的兼容性、可继承性,目前愈来愈为众多领域应用。可以说,Windows CE已经成为Windows开发人员走入嵌入式领域的成功之路。
什么是Windows CE?
Windows CE是微软公司开发的一个32位、多任务、多线程的嵌入式操作系统。它可以用在手机、机顶盒、智能手持设备、网关、数字媒体设备、工业控制等多种场合。Windows CE支持X86、ARM、MIPS和SH四种处理器架构。并支持WiFi,USB 2.0等新型设备,并具有强大的多媒体功能。
Windows CE操作系统是模块化设计的,整个系统被划分为数百个模块,嵌入式系统开发人员可以根据系统的需要,来选择自己需要的模块,从而达到减小系统体积目的。一个最小的Windows CE可运行内核只需要几百KB。而一个功能完备的Windows CE映像也不会超过64MB。此外,微软开放了部分Windows CE的源代码,并且允许开发人员对这部分源代码进行修改。
Windows CE自1996年发布了第一个版本,应用最广泛的是4.2 和5.0,目前最新的版本是6.0。
学习Windows CE的方向有哪些?
与桌面操作系统和服务器操作系统下的软件开发不同,为嵌入式操作系统开发软件可不只是写写应用程序那么简单。我们常常要深入到内核,甚至要深入到硬件。根据不同的开发层面,我们把Windows CE 下的嵌入式软件开发者分为下面三类:
第一类我们称之为应用程序开发人员。此类开发人员与传统的通用操作系统下的应用开发人员比较相似。他们通常是利用操作系统提供的API(Application Programming Interface,应用程序编写接口),应用程序库(例如C 运行时库,Visual Basic 运行时库)或应用开发框架(例如J2EE 与.NET Framework)来编写代码。他们开发的代码通常运行在用户态,无需直接对硬件进行操作。他们所关注的是通常是应用功能和业务逻辑的实现。此外,他们的程序通常是直接与最终用户打交道的。
第二类是操作系统平台开发人员。此类开发人员的主要职责是针对具体的应用环境,对嵌入式操作系统进行裁减,向第一类开发人员提供应用程序运行的平台。他们通常要对所裁减的操作系统的各个模块的功能了如指掌,这样才可以针对具体的应用环境,搭建出合适的平台,使资源达到最节省。
第三类是内核/驱动开发人员。嵌入式操作系统与通用操作系统最显著的区别之一是它的可移植性。一款嵌入式操作系统通常可以运行在不同体系结构的处理器和开发板上。为了使嵌入式操作系统可以在某块具体的开发板上运行,嵌入式操作系统的编写者通常无法一次性完成整个操作系统的代码,而把一部份与具体硬件设备相关的代码作为抽象的接口保留出来,给提供硬件的OEM 厂商来完成。这样才可以保证整个操作系统的可移植性。这些代码通常是BSP(Board Support Package,板级支持包)的一部分。
通常第一类软件开发者的数目最多,第三类软件开发者的数目最为稀少。从软件角度来看,一般把应用开发称作上层开发,而把驱动等系统开发称作底层开发。所以,这三类软件开发者的结构通常呈现出“倒三角型”。就目前就业市场上来看,无论是应用开发还是内核/驱动开发都有良好的前途。目前基于Windows CE的应用程序开发主要集中在Windows Mobile这一块,也就是给Pocket PC和Smartphone开发应用程序。此外,还会有一些公司需要开发Windows CE的BSP和驱动程序。从报酬来看自然是后者要高于前者,这个与开发难度是成正比的。
但是应用开发与内核/驱动开发都有自己的知识体系,而且它们的交集并不多。如果两者兼顾可能需要花费大量的时间与精力。建议学习Windows CE的人根据自己的喜好对这两者进行选择。
学习Windows CE需要哪些基础知识?
根据学习方向的不同,基础知识的要求也不同。
如果立志做一个优秀的Windows CE下的应用开发人员,则不需要了解太多的硬件,关键是要对应用程序开发接口,包含Win32 API,.NET Compact Framework等有详尽的了解。因此,如果有桌面Windows开发的经验自然是最好的。例如C / C++语言,Windows程序设计经验。.NET开发经验等等。
如果要做一个内核/驱动开发人员,则一方面需要了解操作系统的基本原理,另一方面需要了解一些硬件的工作原理等知识。因为无论是编写BSP还是编写驱动程序,都需要直接对硬件打交道。具体而言,可能有如下一些知识:汇编语言(ARM,X86)。微机原理,组成原理,操作系统。
通过以上的分析,可以看出Windows CE系统不仅可是实现平面系统到桌面系统的平滑过度,也为广大开发人员打开了嵌入式应用的大门。掌握Windows CE开发技术必然会为大家的职业生涯增加一个新的亮点!
更多相关信息请电:416-665-1888;网站:www.viccollege.ca