CE下的驱动程序和服务开发笔记,体验及总结

原创 2005年01月01日 18:22:00

      为了完成CE作业又来看CE下的驱动程序设计了,后悔上那堂课时没认真听......
       还是先把知识复习一下:



1    在UNIX & Windows 9x系列中驱动程序和操作系统是绑定在一起的,在核心态里运行。但在CE里,大部分的驱动程序只是一个DLL文件,在用户态下运行。

2      大部分的驱动程序都是用来控制硬件的,但某些硬件是不需要驱动的,如:CPU,Memory......也有一些虚拟设备的驱动 ,如:文件系统驱动,RAM disk

3     CE提供逻辑中断SYSINTRs,中断仅被当作用户态下的一个线程(IST)
l
 
4    硬件的OEMs并不提供该硬件在CE上的驱动,而只是一个硬件规约(Hardware Specification)

驱动的分类:
1    Native
2    Bus
3    Stream interface

一,Native驱动
    也叫做Built-in驱动,是硬件所必须的,由OEM设计硬件时所完成的。如:键盘,触摸屏......
也许不支持一般设备驱动接口 。当OS的新版本出来时,一般Native驱动只需做很少的改动。

二,Bus驱动
    管理系统总线,如PCI总线;PCMICA和CompactFlash也被当作总线。负责询问总线上的硬件来决定什么硬件被安装和正在分配资源。也会要求设备管理器(Device Manager)来为线上硬件装载合适的驱动。
 
三,Stream interface驱动
    一会在下面会详细介绍这个

驱动的种类:
 

  • l<?xml:namespace prefix = p ns = "urn:schemas-microsoft-com:office:powerpoint" />Audio Drivers 
  • lBattery Drivers 
  • lBlock Drivers 
  • lBluetooth HCI Transport Driver 
  • lDirect3D Device Driver Interface 
  • lDirectDraw Display Drivers 
  • lDisplay Drivers 
  • lDVD-Video Renderer 
  • lIEEE 1394 Drivers 
  • lKeyboard Drivers 
  • lNotification LED Drivers 
  • lParallel Port Drivers 
  • lPC Card Drivers 
  • lPrinter Drivers 
  • lSerial Port Drivers 
  • lSmart Card Drivers 
  • lStream Interface Drivers 
  • lTouch Screen Drivers 
  • lUSB Drivers 
驱动的装载过程:
1    大部分的驱动都是由系统启动时的设备管理进程(Device.exe)来完成装载的。

2    而一些Buit-in驱动由GWES.exe来装载。这些驱动包括显示驱动(DDI.dll),键盘驱动和触摸屏(鼠标)驱动

3    Device.exe会查看注册表里的[HKEY_LOCAL_MACHINE]/Drivers中一个被称为RootKey的字符串,通常是Builtin。这个RootKey里的驱动列表就是设备管理器必须初始化的。
[帖图1]
4    装载驱动的DLL, 为它创建一个ActiveKey(在[HKEY_LOCAL_MACHINE/Drivers/Active 下),并将这个DLL作为设备驱动注册到系统中。
3.
[帖图2]

5    也可以由应用程序来手工装载驱动,如ActiveDeviceEx函数;另一个老的装载驱动的方法是用:RegisterDevice和 DeregisterDevice。

Stream Interface

    一个流式接口驱动是指一个驱动把流式接口函数暴露出来,而不考虑驱动所控制的设备类型。典型的流式接口驱动:文件系统驱动(iostream,fstream),COM,LPT。。。。。

 直接使用win32文件系统API:
hSer = CreateFile(TEXT(“COM1:”), GENERIC_READ, 0, NULL, OPEN_EXSITING, 0, NULL);
rc = ReadFile(hSer, &ch, 1, &cBytes, NULL);
TransmitCommChar(hSer, ‘a’);
CloseHandle(hSer);

创建一个流式驱动的过程:
1    写一个DLL,把流式接口的函数都expose出来
2    创建设备驱动
3    配置注册表


XXX_Close
Closes the device context identified by hOpenContext.
XXX_Deinit
Called by the Device Manager to de-initialize a device.
XXX_Init
Called by the Device Manager to initialize a device.
XXX_IOControl
Sends a command to a device.
XXX_Open
Opens a device for reading, writing, or both. An application indirectly invokes this function when it calls CreateFile to open special device file names.
XXX_PowerDown
Ends power to the device. It is useful only with devices that can be shut off under software control.
XXX_PowerUp
Restores power to a device.
XXX_Read
Reads data from the device identified by the open context.
XXX_Seek
Moves the data pointer in the device.
XXX_Write
Writes data to the device.

注册表配置:
 
[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/Sample]
    "Dll" = "mydriver.Dll"
    "Prefix" = "DEM"
    "Index" = dword:1
    "Order" = dword:0
    "FriendlyName" = "Demo Driver"
    "Ioctl" = dword:0

CE下的服务
    在CE4.0之前是没有服务可用的,4.0之后服务管理被加入进来了。


    一个CE服务也是一个DLL,结构和一个流式驱动程序的差不多:有3字符前缀,有10个进入口函数


        

 


未完待续........

最后一次更新:2005年1月1日19:29:47

linux驱动开发总结(一)

基础性总结1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装3, 驱动开发中设计到的硬件: ...
  • viewsky11
  • viewsky11
  • 2016年11月20日 18:19
  • 242

Windows CE下驱动程序开发基础

作者:SUKHOI27SMK 转自:http://blog.csdn.net/sukhoi27smk/article/details/8299079 Windows CE下的串口驱动程序能够处...
  • whw8007
  • whw8007
  • 2014年01月20日 21:22
  • 378

Windows CE下驱动程序开发基础

我想即使读者看过微软的关于驱动开发的培训教材和CE帮助文档中的驱动部分,头脑中仍然一片茫然。要想真正了解驱动程序必须结合一些驱动程序源码,在此我以串口驱动程序(COM16550)中初始化过程为线索简单...
  • SUKHOI27SMK
  • SUKHOI27SMK
  • 2013年02月06日 14:01
  • 409

Windows CE下驱动程序开发基础

作者:SUKHOI27SMK 转自:http://blog.csdn.net/sukhoi27smk/article/details/8573885 我想即使读者看过微软的关于驱动开发的培训教材和...
  • whw8007
  • whw8007
  • 2014年01月13日 08:41
  • 365

Windows CE下驱动程序开发基础

研究的越多就越感觉自己懂的太少,其实在驱动开发方面我还是个菜鸟,我是想再次抛砖引玉,让做驱动有N年经验的人奉献一点出来,让大家减少一些研究驱动源码而又缺少注释所带来的痛苦。   我想即使读者看过微软...
  • u011087618
  • u011087618
  • 2013年07月04日 01:42
  • 298

用户体验设计学习总结(上)

用户体验设计简称UED,是通过一系列的动作文字声音图像表现出该操作功能的特性,主要针对用户的心灵、眼睛、耳朵、触感的设计。并通过这些体验让用户更好的与产品进行交互并达成目的。 首先,UED的一个完整...
  • x970617208
  • x970617208
  • 2017年05月08日 23:13
  • 272

Windows CE驱动程序分类

Windows CE嵌入式开发入门--基于Xscale架构 傅曦,陈黎等 人民邮电出版社   第九章  Windows CE BSP及驱动程序结构分析 9.1 Windows CE驱动程序结构...
  • chendesheng1988
  • chendesheng1988
  • 2013年07月02日 20:47
  • 651

springmvc学习笔记(22)-springmvc开发小结

本文对springmvc系列博文进行小结 springmvc框架 注解开发 使用注解方式的处理器映射器和适配器 注解开发中参数绑定 springmvc和struts2区别 校验 数据回显 异常处理 ...
  • h3243212
  • h3243212
  • 2016年03月15日 11:31
  • 3174

webApp重构之路——性能和用户体验细节总结

写在前面webApp开发有一段时间了,随着自己的知识面和技能水平不断提升,一个“重构“的想法变得越来越强烈,当然,重构之前,一个确切的方案是相当关键的,也可以说是重中之重, 吸取之前草率上阵的教训,这...
  • u011413061
  • u011413061
  • 2016年01月28日 16:09
  • 1644

C# windows CE 使用小技巧实例

C# Windows CE使用小技巧实例(2013-08-31 10:03:28) 转载▼ 标签: c wince 使用小技巧实例 it 分类: WINCE ...
  • SnowLotusLi
  • SnowLotusLi
  • 2014年01月23日 20:18
  • 482
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CE下的驱动程序和服务开发笔记,体验及总结
举报原因:
原因补充:

(最多只允许输入30个字)