Windows CE项目开发实践丛书 Windows CE工程实践完全解析
分類: 图书,计算机/网络,操作系统/系统开发,WINDOWS,
作者: 李大为编著
出 版 社: 中国电力出版社
出版时间: 2008-10-1字数: 646000版次: 1页数: 399印刷时间: 2008/10/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787508374734包装: 平装内容简介
本书是《Windows CE项目开发实践丛书》之一。
本书讲述了Windows CE操作系统底层驱动软件开发技术。全书共分5篇25章,内容包括开发Windows CE的BootLoader、OAL、显示设备驱动程序、串口驱动程序和PC卡总线接口驱动程序,通过解析和研读微软的DeviceEmulator开发板的BSP的源代码,旨在帮助读者系统、全面、具体地了解Windows Embedded CE的BSP的原理与开发技术,从而达到理解和实践Windows CE嵌入式系统软件开发目的。
本书注重系统性、先进性和实用性,具有特色鲜明、逻辑性强、针对性强的特点。本书适合于从事Windows CE操作系统软件开发的工程技术人员使用,也可作为高等院校自动化、电子、计算机、通信工程等专业师生的科研参考书。
目录
前言
绪论
第一篇 开发Windows CE的BootLoader
第1章 BootLoader的理论知识介绍
1.1 BootLoader是大多数嵌入式操作系统运行最初的开始
1.2 微软建议Windows CE的BootLoader所应实现的功能
1.3 BootLoader并不是基于Windows CE的嵌入式软件系统的必不可少的组成部分
第2章 Windows CE BootLoader的软件框架和支持库
2.1 以Eboot为实例学习WindOWS CE BootLoader的软件框架
2.2 BLCOMMON支持库
2.3 Eboot支持库
2.4 EthDbg驱动程序
第3章 案例解说开发实现OEM函数
3.1 DeviceEmulator虚拟平台的硬件设计
3.2 开天辟地的Startup函数
3.3 控制流OEM函数
3.4 调试功能OEM函数
3.5 下载功能OEM函数
3.6 以太网收发帧OEM函数
3.7 Flash操作OEM函数
3.8 时钟功能OEM函数
3.9 可选实现的OEM函数
3.10 在BootLoacler和操作系统之间共享信息的数据结构
3.11 保存用户选项配置参数的数据结构
第4章 认识Windows CE操作系统镜像文件的格式
第二篇 开发Windows CE的OAL
第5章 Windows CE操作系统的系统启动执行流程
5.1 图览Windows CE的初始化启动流程
5.2 开天辟地的StartUp函数
5.3 KemelStart函数
5.4 ARMlnit函数
5.5 kernel.d11模块的入口点函数NKStartup
5.6 ARMSetup函数
5.7 KemelStart函数
第6章 案例解说WindOWS CE OAL的开发任务汇总
6.1 OAL是什么
6.2 OEMGLOBAL结构体及其全局变量
6.3 OEM地址映射表
6.4 OEMIoControl函数
6.5 OAL的Cache操作OEM函数
第7章 Windows CE操作系统的中断处理机制
7.1 ISR和IST协同处理外设的中断请求
7.2 设置系统中断向量表
7.3 初始化函数OEMInit并启用硬件中断处理机制
7.4 实现OEMInterruptHandler函数供操作系统处理IRQ中断
7.5 实现OEMInterruptHandlerFIQ函数处理FIQ中断
7.6 案例解说中断处理的另一组成部分IST
7.7 为IST做哪些事情
第8章 系统时钟管理
8.1 初始化函数OEMInit并启用系统时钟
8.2 ISR必须处理系统时钟的定时中断请求
第9章 TOC的秘密
9.1 初识pTOC指针
9.2 解析实例以加深认识TOC数据
9.3 TOC的条目
9.4 TOC数据的实质
第10章 KITL调试技术
10.1 什么是KITL
10.2 图览KITL的初始化流程
10.3 初始化KITL库
10.4 初始化Windows CETL连接
10.5 0AL KITL ARGS结构体
10.6 0AL KITL DEVICE结构体
10.7 主动的KITL模式与被动的KITL模式
10.8 KITLTRANSPORT结构体
10.9 汇总OAL的开发者需要为启用KITL功能做哪些事情
第11章 案例解说以太网端口设备EthDbg驱动程序的开发
11.1 CS8900A的硬件原理知识
11.2 读写ReadlPacketPage和WritePacketPage
11.3 硬件初始化函数CS8900AInit
11.4 发送以太网数据帧函数CS8900ASendFrame
11.5 接收以太网数据帧函数CS8900AGetFrame
11.6 启用与禁用CS8900A的中断功能的函数CS8900AEnableInts和CS8900ADisableInts
11.7 CS8900A的配置地址过滤机制的函数CS8900ACurrentPacketFilter和 CS8900AMultleastList
第三篇 开发Windows CE的显示设备驱动程序
第12章 从DDI系列函数开始
12.1 DDI函数是什么
12.2 WindLOWS CE的GWES子系统如何获得DDI函数
12.3 DrvGradientFill和DrvAlphaBlend函数
12.4 DrvEnablePDEV和DrvDisablePDEV函数
12.5 DrvEnableSurface和DrvDisableSurfaee函数
12.6 DrvCreateDeviceBitmap和DrvDeleteDeviceBitmap函数
12.7 DrvRealizeBrush函数
12.8 DrvStrokePath函数
12.9 DrvFillPath函数
12.10 DrvPaim函数
12.11 块传输功能函数DrvAnyBlt、DrvBitBlt、DrvCopyBits和DrvTransparentBlt
12.12 DrvSetPalette函数
12.13 DrvSetPointerShape函数
12.14 DrvMovePointer函数
12.15 DrvGetModes函数
12.16 DrvRealizeColor和DrvlJnrealizeColol‘函数
12.17 DrvGetMasks函数
12.18 DrvContrastControl函数
12.19 DrvPowerHandler函数
12.20 DrvEscape函数
12.21 DrvDisableDriver函数
第13章 Windows CE的显示表面及与之相关的数据结构
13.1 显示表面
13.2 调色板、颜色转换对象和颜色转换类
13.3 SLIRFOBJ结构体和TmpGPESmf类
13.4 路径
13.5 剪切板对象CLIPOBJ
13.6 画笔
第14章 GPE类是用户开发WindOWS CE的显示设备驱动程序工作的起点
14.1 从DDI到CPE
14.2 GPE类
14.3 GPE类和块传输操作
14.4 GPE类和画线操作
14.5 DeviceEmulator的显示设备驱动程序实现——S3C2410DISP类
第15章 显示设备及其驱动程序对DirOCtDraw功能的支持
15.1 由导出函数HALInit引出DDHALINFO结构体
15.2 DDHALINFO结构体
15.3 DDCAPS结构体
15.4 DDHAL DDCALLBACKS结构体
15.5 DDHAL_DDSURFACECALLBACKS结构体
15.6 DirectDraw显示表面
15.7 DDGPE类
第四篇 开发Windows CE的串口驱动程序
第16章 设备管理器和流式接口设备驱动程序
16.1 串口驱动程序是典型的流式接口设备驱动程序
16.2 设备管理器以总线枚举的方式加载流式接口的设备驱动程序
16.3 总线枚举器加载一个设备驱动程序的具体步骤
第17章 串口设备句柄和串口文件句柄
17.1 从COM—Init导出函数到HW INDEP INFO结构体
17.2 pHWObji成员
17.3 pHWHead成员
17.4 DCB成员
17.5 CommTimeouts成员
17.6 RxBufferInfo和TxBufferInfo成员
17.7 pAccessOwner、0penList、OpenCS和OpenCnt成员
17.8 fEventMask成员
17.9 pDispatchThread、PIiority256、hKillDispatchThread、KillRxThread和 hSerialEvent成员
17.10 hReadEvent和hTransmitEvem成员
17.11 fAbortRead和fAboffTransmit成员
17.12 DroppedBytesMDD、DroppedIBytesPDD、RxBytes、TxBytes、TxBytesPendillg和 TxBytesSent成员
17.13 XFlow、StopXmit、SentXoff、DtrFlow和RtsFlow成员
17.14 ReceiveCritSecl和TransmitCritSecl成员
17.15 dwMddErrors成员
第18章 CSeriaIPDD类是OEM用户开发WindOWS CE串口驱动程序PDD层工作的起点
18.1 CSerialPDD类定义
18.2 CSerialPDD类的初始化部分
18.3 CserialPDD类的串口设备操作部分
18.4 CSerialPDD类的中断接口部分
18.5 CSerialPDD类的数据发送与接收部分
18.6 CSerialPDD类的MODEM功能部分
18.7 CSerialPDD类的线路功能部分
18.8 CSerialPDD类的串口配置部分
18.9 CSerialPDD类的IR特殊处理部分和错误处理部分
第19章 Windows CE操作系统对外设的电源状态管理
19.1 电源管理架构和电源管理器
19.2 设备电源状态和系统电源状态
19.3 电源管理器与设备驱动程序之间的编程接口
19.4 电源管理器与应用程序之间的编程接口
19.5 例说设备驱动程序开发中的电源管理实务
第20章 案例解说串口驱动程序的具体开发
20.1 DeviceEmulator的串口驱动程序PDD层的类定义
20.2 CReg2410uan类
20.3 S3C2410串口驱动程序PDD层的初始化
20.4 CPdd2410Uart类的PostInit成员函数
20.5 串口数据接收中断请求处理函数Recei、veInterruptHandler
20.6 串口MODEM事件中断请求处理函数:ModemInterruptHandler
20.7 串口线路中断请求处理函数LineInterruptHandler
20.8 串口驱动程序PDD层的流控功能函数xmitcomchaT、SetDTlR和SetRTs
20.9 串口数据发送中断请求处理函数XmitInterruptHandler
20.10 串口发送间断信号的功能函数SetBreak
20.11 CancelReceive函数和CantelXlmit函数
20.12 SetOutputMode函数和SetBaudRate函数
第五篇 开发Windows CE的PC卡总线接口驱动程序
第21章 PC卡总线桥驱动程序
21.1 PC卡驱动程序的分层结构
21.2 PC卡接口驱动程序实体分离的MDD层和PDD层
21.3 PC卡总线桥驱动程序
第22章 CPCCardBusBridgeBase类是OEM开发者开发PC卡总线桥驱动程序工作的起点
22.1 CPCCardBusBridgeBase类定义
22.2 CPcmciaWindowlnfo类
22.3 CPCCardBusBridgeBase类的数据成员和成员函数
第23章 CPcmciaBusBridge类——DeviceEmulator的PC卡总线桥驱动程序具体实现
23.1 CPcmciaBusBridge类的抽象意义及继承关系
23.2 CPcmciaBusBradge类的数据成员
23.3 CPcmciaBusBridge类的构造函数要负责生成PC卡总线桥驱动程序的IST线程
23.4 CPcmciaBusBridge类的Init成员函数负责初始化PC卡总线桥硬件和向上提交Socket Service
第24章 PC卡的Socket
24.1 Socket Service的内容
24.2 DeviceEmulator的Pc卡Socket的类数据结构及其继承关系
24.3 Socket的属性(信息)和状态
24.4 PC卡Socket在系统中的组织管理
24.5 Socket的句柄
24.6 Socket的电源管理
24.7 PC卡总线桥设备与Pc卡Socket在软件数据结构上的关联
第25章 PCMCIA桥驱动程序的lST线程和ISR
25.1 CPcmciaBusBridge类成员函数Installlsr初始化PCMCIA控制器的卡状态改变中断
25.2 PC卡总线桥驱动程序的IST线程负责处理PC卡插拔和Socket电源状态改变事件
参考文献
书摘插图
第一篇 开发Windows CE的BootLoader
第1章 BootLoader的理论知识介绍
1.1 BootLoader是大多数嵌入式操作系统运行最初的开始
对于拥有BootLoader的嵌入式操作系统来说,系统上电后执行的第一条指令就是BootLoader的执行代码。故而BootLoader通常存放在目标设备的ROM存储器中,并且是系统硬件上电或复位时自动执行的存储地址上,比如DeviceEmulator的BootLoader就是存放在起始物理地址为0X000000的NorFlash存储器中。
BootLoader是Booter Loader的合写,前者意味着要初始化嵌入式系统硬件使之运行起来,至少是部分地运行起来;后者的意思是加载嵌入式操作系统镜像到内存,当然还要跳转过去运行。Booter只是手段,Loader才是目的。理论上BootLoader可以以任何方式加载嵌入式操作系统的镜像,包括使用外设端口如以太网、USB、串口、并口从开发计算机上下载,也可以从本地存储设备如FLASH、CF卡、DOC或硬盘读取镜像并且跳转执行。在开发调试Windows CE系统的过程中,最常见的方法是通过以太网口从开发计算机下载操作系统镜像到目标设备,这种类型的BootLoader有一个专门的名字叫做Eboot,E就是Ethernet的首字母。
1.2微软建议Windows CE的BootLoader所应实现的功能
微软建议Windows CE的BootLoader所应实现的功能主要有以下6项。
(1)Windows CE的BootLoader应该存放在嵌入式设备的非可易失的存储设备中,比如F1ash存储器。此外如果硬件支持的话,最好还应该对BootLoader所在的Hash存储块实行加锁(10cking)以保护它在运行过程中不被破坏。
(2)B00tLoader应该在加载Windows CE操作系统镜像的过程中对加载进度、状态及错误消息等信息进行提示输出,这一般通过一个目标嵌入式设备与开发PC的串口端口连接来实现。
(3)用户在开发Windows CE的BootLoader时,应该尽可能地利用微软所提供的支持库里的功能函数。这样做不仅可以减小开发的工作量,也是为了保证所开发的BootLoader的软BootLoader自身的镜像文件。不仅是下载到嵌入式系统的RAM内存,还应该能够将操作系统的或者BootLoader自身的镜像写入系统的非可易失存储器中。
……