WinCE小结

时间:2022-09-02 14:37:33

第一章:开发环境搭建

  软件列表:详细说明

1、系统定制和编译:Platform Builder 5.0 (依赖于Net Framework1.1)
2、应用程序编写:早期的用Embedded Visual C++ 4.0 (依赖于ActiveSync) ,现在一般都用:Visual Studio 2005 (依赖于ActiveSync和Net framework2.0)
3、开发环境和库文件:SDK (依赖于应用程序安装,VS2005或EVC4)

  软件安装顺序:NetFramework1.1―> PB5―>ActiveSync―> EVC4或(NetFramework2.0+VS2005+MSDN)―> SDK

  开发过程中会经常用到PB(Platform builder的简称)的帮助文档,里面有开发过程中遇到的各种问题的指导。顺便介绍个网站:http://msdn.itellyou.cn/

第二章:CE构架

  1、开发流程

    启动部分:设计硬件(带有MMU的CPU才能跑Wince),建立Bootloader,建立OAL,建立BSP

    平台部分:开发驱动并测试,启动最小内核并测试,自定义组件并测试

    应用部分:设计,测试,调整相应系统功能

  WinCE小结

  

  2、系统组成

    硬件层:由硬件工程师设计与软件控制配合调试来作相应修改,比如设置上拉下拉稳压之类。遇到相应模块要看相应原理比如RAM,Nand,DM9000……

    OEM层:这一层改动最多,Bootloader负责加载引导系统,会初始化最小硬件系统包括CPU、RAM、FLASH、USB、UART、LCD等。

        配置文件(configuration file)分别有:BIB(系统文件打包生成)、REG(系统配置参数)、DIRS(编译目录)、SOURCE(编译生成)、

        DAT(文件系统构建)、DB(数据库相关)、CEC(组件管理)、Makefile(指导编译)。

        Drivers就是整个系统中的各类驱动程序开发了,比如IIC、KEY、BAT、UART、WIFI、USB、SD、TOUCH、WAV、DISPLAY等等。

        OAL层就是要完成向上的微软接口,比如Bootloader里面OEMPlatformInit、OEMPreDownload等接口,CE里面的驱动大部分都是分层设计,

        有MDD和PDD层之分,可能还会细分到更多的层,PDD层是平台相关的,跟实际应用的硬件有很大的关系,也是我们改动最多的,MDD层一般是通用的。

        OEM层的代码一般都会在BSP里面。

    Kernel层:组件的添加和裁减或者修改替换内核组件,跟内核相关的代码一般都会放在PUBLIC或者PRIVATE目录下,这两个目录一般都不怎么改。

    APP层:通过VS2005等工具,装上SDK后进行的程序开发,接口都是微软标准的,与桌面PC开发有别的是PC上面的接口有很多在CE里面是没有的,或者参数会作改动。 

  WinCE小结

  3、源代码组成

    WIN500目录结构

目录

内容说明

CRC

存放Platfrom Builder5.0安装时候用到的校验文件CRC.INI

PBWorkspaces

_PLATFORMROOT环境变量标识,存放工程文件和编译生成文件

OTHERS

包含WINCE中一些模块和二进制库文件和代码。如果在OS Design中选择某些组件,那么这些二进制代码就会被包含到最终的操作系统映像中。

PLATFORM

存放了和硬件平台相关的BSP和驱动代码和文件

PRIVATE

_PRIVATEROOT环境变量标识,存放WINCE操作系统私有源代码。WINCE核心模块代码都放在此目录下。

PUBLIC

包含硬件无关的Windows CE相关文件目录

SDK

存放构建系统用到的编译器与其他一些辅助工具,在构建系统用_SDKROOT环境变量标识。在/SDK/BIN/I386下存放构建系统可能用到的工具。

而4个子目录ARM,MIPS,SH和X86分别针对WINCE所支持的4个平台的C/C++语言与汇编语言的编译器。

    更详细的说明请下载文档

第三章:建立PB工程

  1、参考第一章建立开发环境

  2、获取芯片厂商BSP

    下载得到BSP后,把它放在C:\WINCE500\PLATFORM目录下

  3、克隆并建立工程文件

    详细请看克隆文档

    详细请看工程建立文档

  4、添加组件配置编译

    详细请看配置编译文档

第四章:系统烧写

  2416支持SD卡启动烧写,通过PC把启动引导文件烧写到SD卡,用于引导2416启动,2416支持SD、Nand启动方式,通过设置cpu的M0~M4位进行选择。

  烧写的文件一共有三个

  STEPLDR.nb0:用于初始化完CPU、RAM和Nand后把Eboot.bin拷贝到内存中运行。

          因为2416支持自动拷贝Nand的前8k的内容到内部RAM中运行,所以STEPLDR.nb0不能太大。

  Eboot.bin:用于初始化CPU、RAM、Nand、USB、UART、LCD……然后对系统进行上传下载交互操作和启动引导系统。

  NK.bin:传说中的系统。

  烧写的工具:USB和串口、DNW.exe下载软件和USB下载驱动

第五章:系统启动流程

Boot Loader and Kernel Startup Sequence

WinCE小结

ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WINCE.v50.en/dnce50/html/ce50prev.htm

WinCE小结WinCE小结

WinCE小结

WinCE小结

第六章:驱动开发流程

  开发驱动的几个要素  

1、了解硬件:硬件规范,硬件操作原理、流程,时序。

2、驱动工作机制:如何加载和卸载,如何初始化,如何访问外设IO,如何处理中断,如何处理DMA,如何使用内存及如何进行异步操作……

3、驱动模型:驱动的分层设计,接口,及数据结构。

CE下驱动是一个DLL文件,DLL无法单独被加载运行,要有一个EXE进程来加载DLL才可以运行。有3个系统进程会加载执行驱动程序DLL,是:Device.exe(流驱动)、GWES.exe(本地驱动)、FileSys.exe(文件系统驱动)。

分层驱动与单体驱动:分层规范化,易于移植维护;单体效率高。分层只是源代码逻辑上,在二进制代码中不存在分层结构。

分层驱动:上层叫模型设备驱动(Model Device Driver 简称:MDD),类型通用代码。下层叫平台相关驱动(Platform Dependence Driver简称:PDD),特定平台硬件支持代码。

分层驱动一般只改PDD层就可以了。分层后,系统和MDD间也有一个接口协议(DDI),MDD和PDD间需要一个接口协议(DDSI)。

MDD层特性:

包含通用代码;

调用PDD层访问硬件设备;

定义PDD层必须实现的DDSI函数;

实现系统DDI函数供系统交互;

中断处理;

生成的Lib库可与不同PDD库链接;

中断处理 IST通常位与这一层;

PDD层特性:

包含硬件相关代码;

对于不同硬件标准,有不同实现;

与某一层MDD协同合作;

实现DDSI函数;

  简单的流驱动开发流程请看链接:MyGPIO驱动开发