这篇文章的目的并不是介绍Windows Embedded CE开发的方方面面只是用一个初涉嵌入式领域的软件开发者的视角来介绍Windows CE开发中最常用的概念和知识解决大家会在实际开发中碰到的一些小问题让大家了解嵌入式开发与应用程序开发到底有哪些不同 Windows CE概述 从版本开始Windows CE的名字改为Windows Embedded CE当然这也是为了结合Windows Embedded品牌作出的改变CE经过了十年的风风雨雨之后终于在CE 这个版本上再次浴火重生了CE 经历了CE历史上第二次内核重写使CE操作系统更加符合当今嵌入式开发的方向 CE 在内核方面的改变主要是为了适应嵌入式设备硬件发展的要求在进程数量方面从过去最多运行个进程改变为最多运行万千个进程内存方面从每个进程最多拥有M虚拟内存空间改为最多拥有G虚拟内存空间在OS布局方面将关键的驱动程序文件系统和图形界面管理器(GWES)移到了内核中这样可以更好解决因为CPU在内核态和用户态间切换而造成的性能损失 当然从以上的改变我们可以看到CE 较之前版本更加重量级了操作系统领域关于微内核的争论已经持续了很多年CE的改变也许会为某个学派的观点提供支持但我们必须指出的是正因为目前的嵌入式设备硬件已经可以支持比较重量级的操作系统了所以CE 才会做出如此改变 CE针对开发者的另一个转变开始自CE 将开发环境Platform Builder整合到Visual Studio中这种做法无疑减轻了微软维护两套IDE的负担从另外一个方面来看CE的开发者也可以享受到更好的开发体验了 嵌入式开发流程 也许很多初涉嵌入式开发领域的程序员会被一系列的新名词搞得头昏脑胀在这里我希望能够将嵌入式开发的流程展现给大家 嵌入式开发主要分为三个比较大的部分 驱动程序开发 这部分开发是从硬件设计开始的硬件工程师会设计PCB板为我们提供标准开发板(SDBstandard development board)当我们拿到开发板之后的第一件事情就是编写bootloader让开发板启动起来一般是通过JTGA将bootloader烧录到开发板中的我们可以将bootloader看作PC中的BIOS负责硬件设备的初始化工作并且将操作系统运行起来在此之后我们需要根据开发板上的硬件开发各种驱动程序比如串口USB鼠标视频输入等最后将这些驱动程序和bootloader打包称为一个板级支持包(BSP)BSP是和开发板的具体硬件紧密相关的 所以从事这方面开发的工程师往往具有比较强的硬件知识水平 平台定制 我们可以将Windows CE想象为一盒积木根据不同的应用场景和设备要求我们要对这盒积木进行定制堆积出不同形状的城堡动物和生活用品这个过程称为平台定制定制产生的平台往往和具体的硬件设备相关直接将平台下载到硬件设备上就可以运行了整个开发过程需要选择不同的组件来搭配出最适合当前硬件的软件平台所以要对Windows CE的组件也就是Catalog Item有相当程度的了解 应用程序开发 嵌入式设备上的应用程序开发与传统应用程序开发类似只是要借助于硬件模拟器或者实际设备对程序进行调试最常见的嵌入式设备应用程序开发就是Windows Mobile的移动应用开发平台定制工程师会在硬件出厂之前先提供平台相关的SDKSDK中会包括模拟器应用开发者可以首先使用模拟器对程序进行开发和调试等实际硬件出来之后再将程序转移到实际硬件中因为Windows CE采用了很多措施这种转移几乎是无缝的所以我们并没有使用移植这个词 嵌入式领域的应用开发其实是普通软件工程师就可以进行的 下图是对嵌入式开发整个流程的图示Windows CE开发流程图 |