一个基础的Windows CE培训教程

导读:
   这是我写的一个CE的培训资料,不要问我是给谁写的,不过是一点心得,我以后会写一些专门的文章来把我几年的工作经验写出来。
   我写的东西基本都是工程经验,不是理论性的东西,所以可能有一些概念性东西写的不是很清楚,还请有知道的教我 。
   如果你了解CE,就不用看了,如果你对CE还不了解,还没入门,这个还是有点帮助的。
   试了多次,不知道图片怎么加进去。
  
   Windows CE 培训教程
  
   课程介绍
   l 主要讲解 WinCE 系统层面的开发知识,非应用层面介绍
   l 讲解有关 WinCE 的基本知识、概念和开发的内容
   l 要求熟悉 C++ 及操作系统的基本知识
   l 了解 Windows 操作系统的注册表知识
   l 了解 Windows 的基本工作原理
   l 了解基本嵌入式定义及基础
  
   词汇
   l WinCE CE Windows CE CE.NET 等均指微软的嵌入式操作系统 Windows CE.NET ,版本以 5.0 为主
   l MIPS ARM X86 SH4 等均指一类 CPU 的架构,而非特指某一种 CPU 型号
   l FLASH 非易失闪存 NOR NAND
  
   目录
   前言 嵌入式简介
   课程一 Windows CE 介绍
   课程二 Windows CE 的整体结构
   课程三 CE 的目录结构
   课程四 CE 的开发流程
   课程五 CE 的开发工具介绍
   课程六 内核定制过程
   课程七 CE 的加载过程
   课程八 基于 CE 的应用程序开发
   附录 CE 的相关资源
  
   嵌入式系统的技术特点
   l 智能内核
   l 软硬件一体化:无冗余、软件固化
   l 专用性:主要完成单一功能或用途
   l 时间性
   l 高可靠性
   l 移动性:低功耗,高性价比
   l 技术融合性
  
   当前嵌入式产品的应用规模
   l 嵌入式计算机在数量上远远超过了通用计算机,一台通用计算机的外部设备中就包含了 5 10 嵌入式设备,键盘、鼠标、光驱、打印机、扫描仪等均可以说是嵌入式系统,在制造业、过程控制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费电子等方面均是嵌入式计算机的应用领域
  
   l 嵌入式系统是将先进的计算机技术、半导体技术、电子技术以及各个行业的具体应用相结合的产物,这一点就必然决定了嵌入式是一个技术密集、资金密集、高度分散、不断创新的知识集成系统
  
   l 今天嵌入式系统带来的年产值己超过一万亿美元
  
   嵌入式产品的应用示例
  
   什么是 Windows CE
   Windows CE 一个非常小巧精致的操作系统。这个操作系统的核心全部是由 C 语言开发的,操作系统本身还包含许多由各个厂家用 C 和汇编开发的驱动程序。 Windows CE 的内核提供内存管理、抢先多任务和中断处理功能。内核的上面是图形用户界面 GUI 和桌面应用程序。在 GUI 内部运行着所有的应用程序,而且多个应用程序可以同时运行。 Windows CE 没有 DOS 模式。
  
   CE XP 的异同点(一
   l 设计原则不同
   l 通用操作系统的设计初衷是强调系统整体高性能,因此采用了中断、多任务、虚拟存储、 DMA 等机制,但也因此丧失了系统行为的确定性和可预测性。通用操作系统多数由分时操作系统发展而来,大部分支持多用户和多进程。而分时操作系统的基本设计原则是:尽量缩短系统平均响应时间,提高系统的吞吐率,在单位时间内为尽可能多的用户提供服务。通用操作系统中采用的很多算法和策略技巧都体现了这种设计原则。
   l 与通用操作系统不同,嵌入式操作系统除了要满足应用的功能需求外,更注重满足应用的各种实时性要求。鉴于组成一个应用的众多任务对实时性的要求各异,因此嵌入式操作系统最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性。可预测性是指在系统运行的任何时刻、任何(最坏)情况下,嵌入式操作系统都能为争夺资源(包括 CPU 、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。
   l 由此可见:通用操作系统注重的是系统的平均表现,而嵌入式操作系统注重的是每个实时任务的个体表现,包括个体最坏情况的表现。
   l 由于它们的基本设计原则不同,导致二者在资源调度策略的选择上、操作系统实现的方法上都有较大差异。
   l 工作环境不同
   l 从硬件环境上看,通用操作系统针对的是 PC 机或是功能更为强大的工作站,具有标准化的 CPU 、存储和 I/O 架构。为了最大幅度的兼容各种软硬件产品,通用操作系统一般都作的面面俱到、体积庞大。而嵌入式操作系统的硬件环境则相对比较苛刻,通常没有标准化的存储、 I/O 和显示器架构。嵌入式微处理器的内存一般都比较小,能源供给常常也很有限,要在如此紧张的资源下完成复杂功能,就要求操作系统必须尽量小巧、高效。
   l 从应用环境上看,通用操作系统面向复杂多变的多种应用,而嵌入式操作系统则是面向单一设备的单一应用。
   l 从存储环境上看,通用操作系统通常存储在硬盘等大容量辅助存储器上,而嵌入式操作系统大多是和系统应用软件一起固化在 ROM 中。
   l 从开发界面上看,通用操作系统试图屏蔽底层资源,让开发人员通过一系列标准系统调用来使用操作系统功能,而在嵌入式系统中,开发人员能够掌握系统的全部资源,自主进行控制使用。通用操作系统的研发指导思想是尽可能在不改变自身的前提下具有广泛的适应性,而嵌入式操作系统由于受硬件环境、应用环境、系统成本等限制必须在研发阶段就对操作系统进行灵活的裁剪和定制。
   因此,嵌入式操作系统具有可裁剪性。
   可裁剪性是指在软件工程阶段利用软件配置方法实现软件构件的 即插即用 。对于一个具体的嵌入式设备,由于功能相对单一确定,可以从一些原有操作系统中裁剪出特定应用所需要的功能子集。这样构成的系统既能适应环境满足应用要求,又能减低系统成本。嵌入式操作系统的这种可裁剪性对于成本敏感的嵌入式应用如消费电子类设备,极具现实意义。
   l 实时性不同
   通用操作系统多数情况是根据用户利用键盘和鼠标发出的命令来进行工作,在时序上并不十分严格,而嵌入式操作系统主要是对仪器设备的动作进行监测控制,有很大一部分都具有严格的时序要求,特别是对象航空航天器那样的关键任务系统中,实时性的要求可能达到微秒数量级,在这样的应用环境中,非实时的通用操作系统无法胜任。
   l 稳定性及交互性不同
   l 通用操作系统庞大复杂,嵌入式操作系统则小巧专一。越简单越可靠,而越复杂,故障概率就会越大。
   l 嵌入式系统应用程序通常在很少人工干预的情况下自动完成高度专业化的实时工作,这本身就要求负责系统管理的嵌入式操作系统具有较强的稳定性。即使提供用户界面,嵌入式操作系统的用户接口一般也不提供操作命令。它通过系统的调用命令向用户程序提供服务,控制逻辑相对固定。
  
   CE 与其它嵌入式系统的比较
  
   CE 的功能
   从操作系统内核角度看, Windows CE 具有灵活的电源管理功能,包括睡眠 / 唤醒模式。
   Windows CE 中,还使用对象存储( Object Store )技术,包括文件系统、注册表及数据库。它还具有很多高性能、高效率的操作系统特性,包括按需要换页、共享存储、交叉处理同步、支持大容量堆( Heap )等。
   Windows CE 具有良好的通信能力,它广泛支持各种通信硬件,亦支持直接的局域网连接以及拨号连接,并提供与 PC 、内部网、 Internet 的连接,包括用于应用级传输的设备至设备间的连接。在提供基本的通信基础结构同时, Windows CE 还提供了与 Windows 9X / Windows NT 的最佳集成和通信。
   Windows CE 的图形用户界面相当出色,它拥有基于 Microsoft Internet Explorer Internet 的浏览器,此外,还支持 TrueType 字体,开发人员可以利用丰富灵活的控件库在 Windows CE 环境下为嵌入式应用建立各种专门的图形用户界面, Windows CE 甚至还能识别写手体和声音识别、动态影像、 3D 图形等多种应用。
   Windows CE 是一个多任务操作系统,可以同时执行多个任务,并在它们之间来回切换,这其时就是 Windows 的简化版本,可以通过我们熟悉的 Windows 操作方式来控制,它带有很多的文档,同其它的 Windows 操作系统一样,也带有很多的应用程序如 WordPad CMD 、纸牌等。
   Windows CE 内置了多媒体功能,通过 MediaPlay 可以播放音乐,甚至视频;
  
   CE 的实时性
   l 实时操作系统( real-time operation system 简称 RTOS )是完全实时系统(包括硬件、操作系统和应用软件)的一部份,它必须满足特定系统的要求。
   l 虽然 Windows CE 的早期版本提供了一些 RTOS 特性,但是自 Windows CE3.0 以来,内核的许多重大改变极大增加了 Windows CE 的实时性能。
  
   实时性比较
  
   Windows CE 的结构
  
   内存管理
   Windows CE.NET 只能管理 512MB 的物理内存和 4GB 大小的虚拟地址空间。不同的 CPU 内存管理方法也不同。对于 MIPS SHx 系列 CPU 来说,物理地址映射是由 CPU 完成的, CE 内核可以直接访问 512MB 的物理内存。对于 x86 系列和 ARM 系列的 CPU 来说,在内核启动过程中它会将现有物理内存地址全部映射到 0x8000 0000 以上的虚拟地址空间中供内核以后使用。 OEM 可以通过 OEMAddressTable 来详细定义虚拟地址和物理地址的映射关系。 OEMAddressTable 本身并不是一个文件,它只是存在于其它文件中描述虚拟地址和实际物理地址的映射关系的数据。比如文件 oem init.asm 中包含一段代码: dd 80000000h, 0, 04000000h 。它表示将整个物理地址( 0x0400 0000 64MB )共 64MB 映射到虚拟地址从 0x8000 0000 0x8400 0000 中。
   整个 4GB 虚拟地址空间主要划分为两部分,从 0x8000 0000 以上为内核使用部分, 0x8000 0000 以下为应用程序使用部分。详细见下表
  
   存储管理与文件系统
   随着 CE 的发展,对象存储( Object Store )的作用越来越小,而大容量的永久存储设备被越来越多地采用,这一章将针对 CE 的文件系统阐述相关的知识,让 PB 开发者除了能够加入对永久存储设备的支持,还能做一些优化。记得在以前讲过的文章中提到了如何在 PB 中向定制的内核加入对硬盘、光驱的支持(包括 ATA 设备驱动和各种文件系统),在这里就不再重复了。
   CE 提供了三种文件系统,基于 ROM 的文件系统、基于 RAM 的文件系统、 FAT 文件系统。 FAT 文件系统使用的范围最广,能够应用在 ATA 设备、 Flash 存储设备、 SRAM 存储设备上,另外 CE 还允许开发者自己编写并注册一套文件系统,只要接口符合 Win32 文件系统 API 即可。
  
   整体目录介绍
   l C:/Program Files/Windows CE Platform Builder/5.00
   l WINCE500
   SDK
   l 开发所需要的工具集和编译工具等
   Platform
   l 各种平台的 BSP 开发包
   Public
   l 这里面什么东西都有,一个字 ,难说得上什么分类。
   Private
   l 这个目录下面收录的都是对 windowsCE 镜像进行操作的工作,但这些工具不是在 windowsCE 上运行的,而是桌面 PC 的程序。
   Others
   l 这个目录下的内容比较杂,有诸如 ATL MFC 的头文件,运行库等开发应用程序所需的库文件和其一部分代码。其中有个文件目录对开发系统来说是比较重要的,就是 CETK 的客户端 OTHERS/WCETK ,通过该目录下的文件可以订制自己的 Windows CE .NET Test Kit 客户端。
   Pulbic
   |--WCESHELLFE *
   |--SHELLSDK *
   |--SHELL *
   这三个目录下的东西都是 shell 相关的 .SHELL 下面提供了 standshell AYGSHELL standShell 就是标准的 windowsCEshell 看起来和 tablePC 的样子差不多,其中 AYGshell 原来是给 Pocket PC 设计的 , 这两个 shell 都可以在 CEPB IDE 里面选。
   |--WCEAPPSFE
   CE 自带的一些应用程序,如 PWord Inbox 等,无源码,只是一些 LIB ,只可以编译成应用程序。
   |--VIEWERS
   就是 CE 带的几个 OFFICE 查看程序, word view execl view pdf view 等,同样无源码。
   |--SQLCE
   这个就是 SQLCE 的老家,不过和上面一样,还是没得改,更没得写。
   |--SPEECH
   这个目录下面是 MS SAPI5.0, 里面包括了 TTS 和语音识别,免费!不过只支持汉语、英语还有日语的 TTS ,其他的语言一概不支持。同样也是不开放代码
   |--SERVERS
   这个目录下主要是 windowsCE 的网络服务。
   |--SCRIPT
   这个目录是 vb script java script 所在的目录,一样无源码
   |--IE
   这个不用介绍了,不过 IE 是可以更改或定制的
   |--RDP
   该目录下面提供远程桌面的支持
   |--IABASE
   |--HLBASE
   这两个目录存在的目的不是给 PB IDE 用的,而是在命令行模式下创建工程的模版,里面有很多 .bat 文件,对应了一些默认的配置,这个和 PB IDE 里面的向导是一致的。两个目录的区别在于,一个带显示一个不带,这就决定了配置有很多相关的东西不一样:如 gwes 等,所以分开两个目录,使用不同的 sysgen.bat 文件。在 CE5.0 中已经将这两个目录合二为一了。
   |--DirectX
   |--DCOM
   该目录提供 DCOM/COM 的支持,可惜的是没有源码,仅仅是 2 二进制的链接库。
   |--DATASYNC
   |--COMMON
   我们在 windowsCE IDE 中选取的很多特性的源代码都在这里,而且这儿提供了很多开发模版供我们写代码使用
  
   嵌入式产品开发步骤
  
   基于 CE 的开发步骤(红色为软件人员需要做的)
   l 规格制定( Specification
   l 电路设计(驱动开发人员可参与其中)
   l 印刷电路板制作
   l 焊接
   l 调试电路(驱动开发人员可参与其中)
   l Bootloader
   l 驱动程序开发
   l 操作系统的裁减与生成
   l 应用程序开发
   l 整机联调
  
   嵌入式产品开发流程(简单的研发流程,未涉及到一个产品的测试、终试、小批量及其它管理流程)
  
   CE 各开发阶段的分类
   l 协助硬件工程师
   l Bootloader
   l 驱动开发
   l 内核定制
   l 应用程序开发
  
   CE 各开发阶段的要求
   l 需要目标设备
   l 需要 SDK
   l 需要 BSP
   l 协助硬件工程师、 Bootloader 、驱动开发这三个工作需要大家了解或掌握( C C++ 知识、硬件知识、芯片的资料、相关平台的汇编知识、 Windows CE 的运行原理)
   l 应用程序需要大家了解或掌握桌面的应用开发经验( VC .NET
  
  
  
  
   完整的 CE 系统内容
   序号 项目 说明
   1 Bootloader 加载 Windows CE 操作系统镜像的程序
   2 CPU 初始代码 基于特定 CPU 系列的初始代码,由 Windows CE 提供
   3 驱动程序 基于特定硬件的驱动程序,不同的硬件设备可能有不同的设置,驱动程序分别由 Windows CE 、硬件厂商提供,其它具体的驱动程序需要设计人员自行编写
   4 用户界面接口
   5 完成特定功能的应用程序
  
   Platform Builder
   Platform Builder 是微软提供给 Windows CE 开发人员进行基于 Windows CE 平台下嵌入式操作系统定制的集成开发环境。它提供了所有进行设计、创建、编译、测试和调试 Windows CE 操作系统平台的工具。
   它运行在桌面 Windows 下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试。同时,开发人员还可以利用 Platform Builder 来进行驱动程序开发和应用程序项目的开发等等。 Platform Builder 的强大功能,已使其成为 Windows CE 平台下嵌入式操作系统开发和定制的必备工具。
  
   Platform Builder 的主要特性
   l 平台开发向导( Platform Wizard )和 BSP (主板支持软件包)开发向导( BSP Wizard )。
   开发向导用来引导开发人员去创建一个简单的系统平台或 BSP ,然后再根据要求作进一步的修改。提高了平台和 BSP 创建的效率。
   l 基础配置。
   为各种流行的设备类别预置的可操作系统基础平台,为自定义操作系统的创建提供了一个起点。开发人员可以很容易地定制并编译出一个具备最基本功能的操作系统。然后再在其上做后续的修改。
   l 特性目录( Catalog )。
   操作系统可选特性均在特性目录( Catalog )中列出,开发人员可以选择相应的特性来定制操作系统。
   l 自动化的依靠性检查。特性( Feature )之间的依赖关系是系统自动维护的。开发人员在选择一个特性时,系统会自动将这一特性所依赖的特性加上;反之,当删除一个特性时,系统会自动检测是否已经选择了依赖于它之上的其它特性,如果有,系统会给出提示,通知开发人员这一特性现在不能删除。
   l 系统为驱动程序开发提供了基本的测试工具集: Windows CE Test Kit (测试工具包) .
   l 内核调试器:可以对自定义的操作系统映像进行调试,并且向用户提供有关映像性能的信息。
   l 导出向导( Export Wizard ):可以向其他 PlatformBuilder 用户导出自定义的目录( Catalog )特性。
   l 导出 SDK 向导( Export SDK Wizard ):使用户可以导出一个自定义的软件开发工具包( SDK )。即可以将客户定制的 SDK 导出到特定的开发环境中(如 EVC )去。这样开发人员就可以使用特定的 SDK 写出符合特定的操作系统平台要求的应用程序。
   l 远程工具:可以执行同基于 Windows CE 的目标设备有关的各种调试任务和信息收集任务。
   l 仿真器( Emulator ):通过硬件仿真加速和简化了系统的开发,使用户可以在开发工作站上对平台和应用程序进行测试,大大简化了系统开发流程,缩短了开发时间。
   l 应用程序调试器:可以在自定义的操作系统映像上对应用程序进行调试。
   l 提供了对 NET FrameWork Compact Edition (即 .NET 平台精简框架)的支持。
  
   Platform Builder 概况
   l Windows CE 一般应用于特定的嵌入式系统中,在许多情况下,不但需要向目标平台添加基本的操作系统特性,以使它能够完成基本的控制任务,另外,还要向目标平台中加入外部设备的驱动程序和一些附加的设置。但是,对于一些通用性较强的嵌入式系统,如 PDA 、机顶盒、智能电话等,微软都为其特别定制了专用的操作系统,如 SmartPhone PocketPC 等。开发者可以利用这些特定的操作系统,并在此基础上进行调整,从而更快地定制出适合需要的目标操作系统平台。
   l 深刻理解 Windows CE 的重要组件及系统提供的可选特性,并灵活运用 Platform Builder 的配置文件 .REG .BIB .DAT .DB 是定制适合目标平台的 WindowsCE 操作系统的关键。
   l 其中比较重要的两个部分是工作区窗口和特性目录窗口。其中特性目录窗口是操作系统可选特性的一个集合,包括 BSP Core OS 、设备驱动程序,还包括开发人员自已通过 CEC 文件( Catalog Feature File 是可编辑的一个文件,通过编辑该文件,开发人员可以加入自已定制的特性到特性目录中,详细内容见第四章)导入的自定义特性,以及通过设备提供商提供的 CEC 文件加入到系统中的特性。
   l 工作区窗口是开发人员已经选定的特性的列表,这些特性都将用到一个新定制的操作系统中。另外,如果存在与正在定制的操作系统系统相关的应用软件,在工作区窗口还会出现类似于 Visual C++ 工程的 Class view Resource View FileView 等可选标签。
   l 最后,在窗口底部状态栏中, Size 代表正在定制的操作系统已经选定的特性占用空间的大小,也就是定制的操作系统的大小, Size 右侧的图标代表 PlatformBuilder 当前处于的状态,当编译操作系统时,图标会变成。
   l 对于菜单栏和工具栏中具体功能的使用,这里就不一一介绍了,它们都和 Windows 中其它软件一样,遵循相似的风格设计的。通过几个操作系统的定制过程,就会熟悉 Platform Builder 的操作。
  
  
   eMbedded Visual C++
   l 编写在 Windows CE 下运行的应用程序,需要使用专门用于 Windows CE 的开发工具。工具的选择由你使用的编程语言而定,可以选择的编程工具有 Embedded Visual C++ Embedded Visual Basic 。但是最佳选择莫过于 Embedded Visual C++ ,因为嵌入式系统资源有限, C++ 编译器效率高、性能好,编译出的应用程序结构紧凑;而 Embedded VisualBasic 应用程序代码过于冗长且效率低下。现在应用最广泛的开发工具就是 Embedded Visual C++ EVC ),最新版本是 4.0
   l EVC 开发和 Windows 下的 VC 开发在界面、语法和开发流程上基本上都是一样的,对熟悉 VC 的人很快就会使用 EVC 进行开发。
   创建基本的操作系统镜像
   File -> New Platform……
   选择开发板支持包
   选择基本配置结构
   选择基础类库
   选择应用程序
   核心操作系统服务
   选择通信服务
   选择文件系统
   选择字体
   选择所支持的国家
   选择 Internet 程序
   选择多媒体
   选择安全设置
   选择操作系统外壳
  
   生成操作系统镜像
   l Build 菜单,点 Set Active Configuration 一项。
   l 从显示的列表中选择
   l Platform 菜单,点 Setting 一项。
   l Build Options 选项卡,勾选 Enable Full Kernel Mode
   l Environment 选项卡,点按钮 New ,在弹出的对话框 Variable Name 一栏后输入 IMGRAM64 Variable Value 一栏后输入 1 ,然后点按钮 “ok”
   这个地方主要设置一些对我们的操作系统镜像有关的环境变量,最常用的就是 IMGRAM64 这个环境变量,这个变量主要是在你的操作系统镜像过大时(比如大于 20MB ),充许系统使用 64MB 或以上的内存运行系统。实际上就是对 config.bib 文件中的内存部进行设置。
   l “ok” 关闭 Platform Settin 对话框。
   l Build 菜单,点 Build Platform 一项,系统开始生成镜像文件。
   l 在系统 build 过程中,有时会出现一些对话框,警告你现在准备将 Digital Rights Management .NET Compact Framework Beta Release 等加到你的平台,你直接点 “ok” 按钮就可以,不必理会它的存在。
  
   调试操作系统镜像
   调试访真( EMULATOR )操作系统镜像
   为什么要使用仿真程序进行调试?
   l 首先并行开发,开发桌面或嵌入式产品的一个关键问题是进入市场的时间。没有仿真,就必须使用硬件参考平台(它可能与最终的硬件配置有很大的差别),或者需要等到硬件开发部门完成参考电路板的开发。而使用仿真开发的话,应用程序开发团队就能与硬件开发并行地开发和测试应用程序。
   l 其次产品测试,使用仿真的另一个好处是能够将操作系统映像交付给客户(或内部测试人员),让他们进行测试。
   l 再次就是我们对系统进行不关系到硬件的修改、调整时,不需要下载到目标机就可以观察到修改后的结果。
  
   调试访真环境( EMULATOR )镜像
   l 仿真是用与开发工具( Platform Builder )所在的相同 PC 上,用软件的方式来模拟 Windows CE 运行,来进行调试。
   l 在使用仿真调试前需要进行一下设置,你可以点 Target 菜单,点 Configure Remote Connection ,系统将启动如下图 1 所示,由于我们是进行访真调试,所以我们在 Download: 处选择 Emulator ,在 Kernel :处也选择 Emulator
   l 单击 Download: 处的组合框后有一个按钮 “Configure...”
   l 点击这个按钮可以改变仿真环境的配置,如图 2 所示。
   l 配置完成远程服务后,点 Target 菜单,点 Download/Initialize ,系统开始运行仿真程序,稍等一下后出现如图 4.4.3 所示画面。
  
   驱动程序开发
   l Windows CE 驱动可以使用 Platform Builder 或者 Visual Studio 开发
   l 平台开发人员一般使用 Platform Builder 开发设备驱动程序,驱动程序作为 BSP Board SupportPackage )的一部分进行整体编译开发
   l 独立硬件供应商( IHVs )更多的使用 Platform Builder 开发驱动程序,对于部分驱动也会使用 Visual Studio 开发
   l 应用程序开发人员更多的使用 Visual Studio 开发驱动,某些情况下会使用 Platform Builder
   驱动程序分类(一)
   本机驱动程序( Built-In Drivers
   l 通常由 GWES 加载,驱动接口一般都是定制的( Custom Purpose
   流驱动程序( Stream Drivers
   l 通常由 Device Manager 加载,驱动接口是标准的流式接口
   混和型驱动程序
   l 同时有定制式和流驱动两套驱动接口,但是和系统交互只使用流式驱动接口,比如 PC 卡槽驱动
   按驱动层次分类
   层次型驱动程序( Layered Driver
   l MDD Model Device Driver ),与硬件无关,面向上层应用程序,一般由微软建立统一框架
   l PDD(Platform Dependent Driver) ,针对具体硬件平台的操作代码,一般由驱动开发商实现
   l MDD PDD 之间通过标准的设备驱动服务供应商接口 DDSI 连接
   独立型驱动程序( Monolithic Driver
   l 独立驱动程序包含了 MDD 面向上层应用和 PDD 面向硬件平台两方面的代码
   l 适用于操作不复杂的驱动
   l 减少了 MDD PDD 传递之间传递信息的开销,实时性更强
  
   生成 SDK
   l 定制好自己的内核以后如果需要的话可以通过 PB 生成自己的 SDK 。这样做的目的是为了方便编写应用程序。生成的 SDK 很容易安装到其他的编辑器上面,例如你可以把自己生成的 SDK 安装到 EVC 下面,这样当你需要新建一个工程的时候,你自己定制的 SDK 就会出现在选择画面中。
  
   CE 的启动过程
   l 上电复位
   l Bootloader
   l Eboot
   l Download kernel
   l CE 启动
  
   Bootloader 介绍
   l 完成基本的硬件初始化
   l 进入 supervisor 模式,清空指令和数据 cache
   l 设置系统时钟, PLL
   l 配置 SDRAM 控制器
   l 设置中断控制器
   l 重新定位 Boot loader 代码
   l 打开 MMU Cache
   l 下载 / 加载 Wince 内核 ( 串口 ,Ethernet,USB,CFcard,Hard disk)
   l 烧写 Flash(NOR,NAND,DOC)
   l 参数设置 (IP,DHCP, 启动参数 ,etc..)
   l 调试功能(内存,寄存器打印)
  
   Windows CE 编程特性
   l 从内存管理上。运行 Windows CE 的设备一般被设计用来运行在很少的内存上,通常也没有大容量存储设备。 Windows CE 支持了一些特有的管理有限内存的函数、结构、消息等,编程上要利用这些资源,但在利用这 Windows CE 提供的这些编程资源时,有时不得不自已定义一些消息、进行程序结构上的调整等等。
   l 从电源管理上。 Windows CE 机器的电源通常是基于电池的,而且电量很有限。开发时应遵循下面的原则来使用大多数有限的能量资源:避免占用不必要的 CPU 资源;限制使用一些常用的桌面机器的硬件,因为他们能够迅速消耗电池,比如 Modem ;不要 超负荷 使用电池资源等等。
   l 从用户界面上。 Windows CE 机器和桌面系统的最大差别就在于用户界面。显示器是关键之一。 Windows CE 机器中显示器通常很小,而且分辨率也不高。尽管一些机器有彩色显示器,但是还有很多系统只支持灰度图像。因此,对于那些显示器无法表示的信息(如高分辨率图像信息)来说,你需要自行开发一种方法来传达给客户。
  
   模拟器
   EVC 编程环境提供了模拟器( Emulator )来模仿目标硬件进行调试。因为目标硬件的运行环境与台式机的运行环境绝大多数都是不同的,所以 EVC 编程无法象 VC 编程一样随时进行运行、调试。但 EVC 提供了与大多数硬件平台相似的模拟器,这样就方便了编程人员,可以直接在 EVC 下调试程序。一般 EVC 开发人员都是先在模拟器中将应用程序界面设计好,然后再加入对特定硬件操作的功能,到硬件平台上去调试。这样就加快了开发速度。
  
   Win32API Windows CE API
   由于 Windows CE 32 位操作系统,它不支持任何 16 位函数,所 EVC 编程是 WIN32 编程。另外, Windows CE API Win32 API 的也不完全相同。 Windows CE 支持 Win32 API 中的绝部分函数,但有些是不支持的,同时它又扩充了一些特定的 Windows CE 函数,只在 Windows CE 下可以使用。如命令条( Command Bar API 等。
  
   Unicode 环境
   l Windows CE Windows NT 一样,是 Unicode 环境。尽管 Windows CE 支持 ASCII 功能来进行文件交换,但是 Windows CE 的本地文本格式是 Unicode
  
   EVC 编程依旧是 Windows 编程
   虽然 EVC VC 编程有许多不同,但是,它依旧是 Windows 编程, Windows VC 开发人员所积累的对类、 COM/ATL 的使用,程序的调试方法、开发流程等编程经验都可以用于 EVC 的编程。这也是 Windows CE 嵌入式操作系统占据优势并迅速成功的重要条件。所以如果你熟悉 Windows 环境下的编程,再掌握 Windows CE 编程的特点,很快你就会进入 Windows CE 编程的世界。

本文转自
http://blog.csdn.net/FLY_About/archive/2007/02/28/1516951.aspx
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值