Windows Embedded CE 6.0开发初体验

来源:互联网 发布:淘宝爱游旅行怎么样 编辑:程序博客网 时间:2024/05/06 13:38
 

这篇文章的目的并不是介绍Windows Embedded CE开发的方方面面,只是用一个初涉嵌入式领域的软件开发者的视角来介绍Windows CE开发中最常用的概念和知识,解决大家会在实际开发中碰到的一些小问题,让大家了解嵌入式开发与应用程序开发,到底有哪些不同。

Windows CE概述

6.0版本开始,Windows CE的名字改为Windows Embedded CE,当然这也是为了结合Windows Embedded品牌作出的改变。CE经过了十年的风风雨雨之后,终于在CE 6.0这个版本上再次浴火重生了。CE 6.0经历了CE历史上第二次内核重写,使CE操作系统更加符合当今嵌入式开发的方向。

CE 6.0在内核方面的改变主要是为了适应嵌入式设备硬件发展的要求,在进程数量方面,从过去最多运行32个进程,改变为最多运行32千个进程,内存方面从每个进程最多拥有32M虚拟内存空间改为最多拥有2G虚拟内存空间。在OS布局方面,将关键的驱动程序、文件系统和图形界面管理器(GWES)移到了内核中,这样可以更好解决因为CPU在内核态和用户态间切换而造成的性能损失。

当然,从以上的改变,我们可以看到CE 6.0较之前版本更加“重量级”了。操作系统领域关于“微内核”的争论已经持续了很多年,CE的改变也许会为某个学派的观点提供支持。但我们必须指出的是,正因为目前的嵌入式设备硬件已经可以支持比较“重量级”的操作系统了,所以CE 6.0才会做出如此改变。

CE针对开发者的另一个转变开始自CE 5.0,将开发环境Platform Builder整合到Visual Studio中,这种做法无疑减轻了微软维护两套IDE的负担,从另外一个方面来看,CE的开发者也可以享受到更好的开发体验了。

嵌入式开发流程

也许很多初涉嵌入式开发领域的程序员会被一系列的新名词搞得头昏脑胀,在这里,我希望能够将嵌入式开发的流程展现给大家。

嵌入式开发主要分为三个比较大的部分:

l 驱动程序开发

这部分开发是从硬件设计开始的,硬件工程师会设计PCB板,为我们提供标准开发板(SDBstandard development board)。当我们拿到开发板之后的第一件事情就是编写boot-loader,让开发板启动起来,一般是通过JTGAboot-loader烧录到开发板中的。我们可以将boot-loader看作PC中的BIOS,负责硬件设备的初始化工作,并且将操作系统运行起来。在此之后,我们需要根据开发板上的硬件开发各种驱动程序,比如串口、USB、鼠标、视频输入等。最后将这些驱动程序和boot-loader打包,称为一个板级支持包(BSP)。BSP是和开发板的具体硬件紧密相关的。

所以从事这方面开发的工程师往往具有比较强的硬件知识水平。

l 平台定制

我们可以将Windows CE想象为一盒积木,根据不同的应用场景和设备要求,我们要对这盒积木进行定制,堆积出不同形状的城堡、动物和生活用品。这个过程称为“平台定制”,定制产生的平台往往和具体的硬件设备相关,直接将平台下载到硬件设备上就可以运行了。整个开发过程,需要选择不同的组件来搭配出最适合当前硬件的软件平台。所以要对Windows CE的组件,也就是Catalog Item,有相当程度的了解。

l 应用程序开发

嵌入式设备上的应用程序开发与传统应用程序开发类似,只是要借助于硬件模拟器或者实际设备对程序进行调试。最常见的嵌入式设备应用程序开发,就是Windows Mobile的移动应用开发。平台定制工程师会在硬件出厂之前先提供平台相关的SDKSDK中会包括模拟器。应用开发者可以首先使用模拟器对程序进行开发和调试。等实际硬件出来之后,再将程序转移到实际硬件中。因为Windows CE采用了很多措施,这种“转移”几乎是无缝的,所以我们并没有使用“移植”这个词。

嵌入式领域的应用开发其实是普通软件工程师就可以进行的。

下图是对嵌入式开发整个流程的图示:

Windows CE开发流程图


在下一节中,我们会借助实际的硬件开发板,来逐步介绍嵌入式开发环境的搭建、平台的部署和调试、应用程序的部署和调试等话题。




CE开发环境

下面就要让今天的主角闪亮登场了——Digi CC 9P开发板。为了感谢Digi提供的开发板,还是给他们做个广告吧:这是一家以WiFi相关产品为主营业务的公司,也生产ARM架构的CPU,所以做开发板也是他们公司份内的事情了。总的感觉还不错,大家如果有兴趣可以访问www.digiembedded.com,了解更多关于Digi开发板的情况。

下图就是Digi开发板的实拍照片,感谢我的ET900,效果还不错:

Digi CC 9P 开发板

从图上我们可以看到,这块开发板上并没有附带LCD屏,所以我们需要通过VGA输出连接一台显示器,图中上方蓝色的接口为VGA输出;左侧的接口从上到下,分别是:DC电源,RJ45以太网接口,RS232串口;右侧还连着我那久经考验的鼠标:)

因为设备环境变量、启动eboot等命令都需要通过串口发给开发板,所以我们需要通过串口线将连接开发板与PC串口相连。因为我的笔记本没有串口,所以我使用了一个USB到串口的转换器,工作一切正常。

当我们将平台编译完成后,Image文件(NK.bin)是需要通过网线下载到开发板的RAM中的,采用网线的优势是速度比较快。关于网线的连接,有两种选择:使用直连线,将PC与开发板的以太网口直接相连,这也是成本最低的一种方式;另外一种方式,是使用带DHCP功能的路由器,将PC和开发板的网线连接到路由器上。在实际开发中,我选择的是后一种方法,原因是路由器比直连网线好找……

在硬件连接完成后,我们要讨论的就是开发环境的安装了,整个过程可以需要几个小时的时间,不过这个依赖于具体的机器。

Digi CC 9P开发包中包括了Visual Studio 2005Platform Builder 6.0180天验证版。在安装PB的过程中,需要输入KEY。这个KEY可以通过在微软网站上注册获得,注册地址如下:http://www.microsoft.com/windows/embedded/eval/getregistration.mspx

我们在安装完Visual Studio 2005之后,应该首先安装VS 2005 SP1,然后再安装PB 6.0。毕竟PB是作为一个插件出现在VS 2005中的。接下来还需要安装PB 6.0 SP1,可以在微软网站上下载,下载地址为:

http://www.microsoft.com/downloads/details.aspx?FamilyId=BF0DC0E3-8575-4860-A8E3-290ADF242678&displaylang=en

在安装完VS 2005PB 6.0之后,我们还应该安装Digi的资源光盘。

我们首先应该安装的是Digi 9PBSPBSP中包含的是与开发板相关的boot-loader 和驱动程序。也就是说,前边我们说过的“驱动程序开发”部分,Digi已经帮我们做好了。我们所需要关注的就是“平台定制”与“应用开发”。当然,如果需要自定义boot-loader,还可以选装boot-loader的源代码,以及GNU X编译环境。在boot-loader开发方面,并没有一个统一的开发环境,硬件厂商往往根据自己的需求而选择不同的开发工具来进行开发,比如ARMSDT等开发环境。Digi使用的则是GNU X,可能是为了兼容 Embedded Linux的方便吧?

完成软件和硬件的安装之后,我们就可以进行CE的平台定制开发了。怎么样?看起来也不是很难哈。

原创粉丝点击