驱动程序设计.ppt
《驱动程序设计.ppt》由会员分享,可在线阅读,更多相关《驱动程序设计.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、驱动程序设计驱动程序设计嵌入式操作系统嵌入式操作系统Windows CE课程安排课程安排提纲Windows CE 5.0驱动程序简介驱动程序简介流接口驱动程序分析流接口驱动程序分析动动手动动手简单的流接口驱动程序简单的流接口驱动程序LED点阵发光原理点阵发光原理设备的硬件接口电路分析设备的硬件接口电路分析Windows CE访问设备地址的实现访问设备地址的实现LED点阵驱动程序分析点阵驱动程序分析驱动程序简介驱动程序简介设备驱动程序是使操作系统和用户应用程序能够与外设硬件(与目标设备集成或连接的)交互的组件,例如 Peripheral Component Interconnect(外围组件互联
2、,PCI)总线、键盘、鼠标、串口、显示、网络适配器和存储设备。操作系统(OS)载入相应设备驱动程序,然后使用这些驱动程序提供的函数和输入/输出(I/O)服务,在设备上执行操作,而非直接访问硬件。驱动程序的功能驱动程序的功能l l驱动程序将操驱动程序将操作系统和设备链作系统和设备链接起来,使得操接起来,使得操作系统能够识别作系统能够识别设备,并为应用设备,并为应用程序提供设备服程序提供设备服务。务。l l驱动程序的任驱动程序的任务,就是把操作务,就是把操作系统的驱动接口系统的驱动接口“映射映射”到具体到具体的功能实现中。的功能实现中。应用程序应用程序应用程序应用程序操作系统操作系统操作系统操作系
3、统网卡驱动程序网卡驱动程序网卡驱动程序网卡驱动程序1 1网卡驱动程序网卡驱动程序网卡驱动程序网卡驱动程序2 2网卡网卡网卡网卡1 1网卡网卡网卡网卡1 1 Send()Send()SendPackageSendPackage()()MySendPackage1()MySendPackage1()MySendPackage2()MySendPackage2()驱动程序基本知识驱动程序基本知识 在 Windows CE 上,设备驱动程序是一个动态链接库(DLL),它提供底层硬件与操作系统及运行在目标设备上的应用程序之间的一个抽象层。驱动程序公开一套知名的函数并提供初始化硬件和与之通信的规则。软件开
4、发人员可以在他们的应用程序中调用驱动程序的函数来与硬件交互。如果设备驱动程序遵循众所周知的应用程序编程接口(API),比如 Device Driver Interface(设备驱动程序接口)(DDI),您就可以把驱动程序作为操作系统的一部分而载入,比如显示驱动程序或用于存储设备的驱动程序。不用知道物理硬件的细节,应用程序就可以调用标准Windows API 函数,比如 ReadFile 或 WriteFile,来使用外设。驱动程序的宿主驱动程序的宿主l如果要运行如果要运行DLLDLL中的代码,那么必须先有一个中的代码,那么必须先有一个EXEEXE进程,把该进程,把该DLLDLL加载到自己的地址
5、空间内,然后才可加载到自己的地址空间内,然后才可执行执行DLLDLL中的代码。中的代码。lWindowsCEWindowsCE的驱动程序也必须被的驱动程序也必须被其他其他EXEEXE宿主宿主加载加载Device.exeDevice.exe 又称做设备管理器,负责加载和管理又称做设备管理器,负责加载和管理又称做设备管理器,负责加载和管理又称做设备管理器,负责加载和管理Windows CEWindows CE下绝大多数的设备驱动程序。下绝大多数的设备驱动程序。下绝大多数的设备驱动程序。下绝大多数的设备驱动程序。GWES.exeGWES.exe负责加载一些与图形界面相关的负责加载一些与图形界面相关的
6、负责加载一些与图形界面相关的负责加载一些与图形界面相关的I/OI/O设备驱动。设备驱动。设备驱动。设备驱动。FileSys.exeFileSys.exe在系统中负责管理在系统中负责管理在系统中负责管理在系统中负责管理Windows CEWindows CE中的对象存中的对象存中的对象存中的对象存储和文件系统,负责加载所有的文件系统驱动程序。储和文件系统,负责加载所有的文件系统驱动程序。储和文件系统,负责加载所有的文件系统驱动程序。储和文件系统,负责加载所有的文件系统驱动程序。驱动程序分类驱动程序分类WindowsCE驱动的分类,主要有以下:按驱动接口分,可分为本地驱动和流驱动;按驱动结构分,可
7、分为单层驱动和分层驱动;按驱动加载的空间分,可分为内核态驱动和用户态驱动;按驱动加载的时间分,可分为启动时加载和需要时加载两种。本地本地 VS 流接口驱动流接口驱动 Windows CE下的驱动都可以归类到这两个里面,二者必居其一,是从驱动程序提供给操作系统的接口来区分的。本地驱动程序通常支持输入和输出外设,比如显示驱动程序、键盘驱动程序、和触摸屏驱动程序。图形、窗口、和事件子系统(GWES)直接加载和管理这些驱动程序。本地驱动程序根据它们的目的而实现特定的函数,由操作系统调用,应用程序不能访问。流驱动程序公开众所周知的一套函数,以启用 Device Manager(设备管理器)来加载和管理这
8、些驱动程序。为了 Device Manager(设备管理器)能够与流驱动程序交互,驱动程序必须实现 Init、Deinit、Open、Close、Read、Write、Seek、和 IOControl 函数。流驱动可以动态管理,驱动调试助手就是用来帮助调试这一类驱动的。单层驱动单层驱动 VS 分层驱动分层驱动 MDD(Model Device Driver)和PDD(Platform Dependent Driver)的概念,这是从驱动代码实现的结构来区分的。Windows CE的驱动可以是单层的,也可以是PDD+MDD,没有硬性规定。一般来说,单层结构的驱动执行效率更高,而分层结构的驱动方便
9、代码维护和移植。拿串口驱动来说,完全可以采用单层结构,而把它分为PDD和MDD,作为一般的开发者,只需实现PDD层就可以了,MDD层由微软实现。这样,驱动开发的工作量少很多,而代码的可靠性则有了更好的保证。至于采用哪一种结构的驱动,主要根据开发人员的需求。内核态驱动内核态驱动 VS 用户态驱动用户态驱动 Windows Embedded CE 6.0引入了内核态驱动和用户态驱动的概念。在Windows CE5.0及先前的版本中,驱动工作在用户态。从代码方面看,内核态驱动和用户态驱动没太大差别。内核态驱动被加载到内核空间,用户态驱动被加载到特定的用户进程空间中。从执行效率来看,内核态的驱动效率比
10、用户态的驱动高。从稳定性方面考虑,用户态的驱动不会对系统产生致命影响,而内核态的驱动相对危险。至于采用哪一种结构的驱动,主要根据开发人员的需求。启动时加载驱动启动时加载驱动 VS 需要时加载驱动需要时加载驱动 从驱动加载的时间来看,可分为两种:系统启动时加载和需要时加载。一般来说本地驱动都是在启动时加载的,在这里主要针对是流驱动来说的。驱动在系统启动时加载,只需将它的注册表配置信息放到HKEY_LOCAL_MACHINEDriversBuiltIn下,如HKEY_LOCAL_MACHINEDriversBuiltInBattery,系统启动时,Device Manager会自动加载它。需要时加
11、载,动态加载,很灵活。注意:USB设备的驱动加载,如USB摄像头驱动,它也属于需要时加载的驱动。从驱动的接口来看,它属于流驱动,但相对普通的流驱动,它增加了几个函数:USBDeviceAttach()、USBInstallDriver()、USBUnInstallDriver()等。USB摄像头驱动的加载在USBDeviceAttach()中完成。所以,它无须,也不能用驱动调试助手加载。需要时加载的驱动还有一个作用,在无法修改系统的情况下,应用程序中动态加载该驱动,以完成对硬件的操作。课程安排课程安排提纲Windows CE 5.0驱动程序简介驱动程序简介流接口驱动程序分析流接口驱动程序分析动
12、动手动动手简单的流接口驱动程序简单的流接口驱动程序LED点阵发光原理点阵发光原理设备的硬件接口电路分析设备的硬件接口电路分析Windows CE访问设备地址的实现访问设备地址的实现LED点阵驱动程序分析点阵驱动程序分析流接口驱动程序流接口驱动程序 流接口驱动程序是实现流接口函数的设备驱动程序。不管硬件细节,所有Windows CE流驱动程序都公开流接口函数给操作系统,从而Windows CE的Device Manager(设备管理器)可以载入并管理这些驱动程序。在流式接口驱动程序中,驱动程序负责把外设抽象成一抽象成一个文件个文件,而应用程序则使用操作系统提供的文件API对外设进行访问。典型的流
13、接口驱动程序有:文件系统驱动 串口驱动流接口驱动程序的体系结构流接口驱动程序的体系结构硬件硬件流接口驱动程序流接口驱动程序设备管理器设备管理器(device.exe)应用程序应用程序FileSys.exe流接口驱动程序的体系结构流接口驱动程序的体系结构其中电源管理的部分是可选的,在实际开发中接口名称中的其中电源管理的部分是可选的,在实际开发中接口名称中的XXX三个字母由设备驱动的设备文件名前缀代替。三个字母由设备驱动的设备文件名前缀代替。动动态态连连接接库库函函数数标准的流接口函数标准的流接口函数开发工具开发工具PlatformBuilderVisualStudio2005eMbeddedVi
14、sualC+(EVC)通用的流接口驱动通用的流接口驱动编写流接口驱动的步骤:选择定义一个设备文件名;实现所需流接口函数;创建驱动的模块定义文件(.def),导出必要的标准流接口函数;编辑必要的注册表键值,以加载流接口驱动。设备文件名设备文件名流接口驱动作为一个特殊的设备文件系统;两种不同的设备文件的命名方式:传统方法:前缀+索引+冒号例:“COM1:”,“LED1:”前缀三个大写字母存储在驱动程序对应注册表键的“Prefix”子键中索引区分同一个驱动程序管理的不同设备缺省:09,可通过“index”的值指明起始索引数适合大多数流式驱动,最大只能指定10个设备;设备文件名设备文件名Device:
15、$device+前缀+索引例:“$deviceCOM1”命名方法与传统命名方法相似;支持多于10个流设备名;例:“$deviceCOM27”课程安排课程安排理论Windows CE 5.0驱动程序简介驱动程序简介流接口驱动程序分析流接口驱动程序分析动动手动动手简单的流接口驱动程序简单的流接口驱动程序LED点阵发光原理点阵发光原理设备的硬件接口电路分析设备的硬件接口电路分析Windows CE访问设备地址的实现访问设备地址的实现LED点阵驱动程序分析点阵驱动程序分析实验标准的流接口驱动程序开发与测试标准的流接口驱动程序开发与测试动动手动动手简单的流接口驱动程序借助WindowsCE5.0Embe
16、ddedDevelopmentLabs.msi1.用用 Platform Builder 打开现有的打开现有的 MyPlatform 工作区。工作区。2.在在 File 菜单上,单击菜单上,单击 New Project or File。3.选择选择 WCE Dynamic-Link Library,给它一个合适的,给它一个合适的名称(例如,名称(例如,StreamDrv),然后单击),然后单击 OK,如图。,如图。添加一个作为设备驱动程序的项目4.在下图所显示的页面中填写一些您需要的信息,然后在下图所显示的页面中填写一些您需要的信息,然后单击单击 Next。5.选择选择A simple Win
17、dows CE DLL project,单击Finish完成此向导。6.为驱动程序选择一个唯一的三字母标识符。在为驱动程序选择一个唯一的三字母标识符。在 Location 框中输入之前创建的流驱动程序的完整路径,框中输入之前创建的流驱动程序的完整路径,或者使用或者使用“browse”按钮定位。按钮定位。7.在在 Driver Filename 框中输入驱动程序的名称。如图,框中输入驱动程序的名称。如图,使用与前面使用名称使用与前面使用名称(StreamDrv)相同的名称,以确相同的名称,以确保改写在保改写在 Platform Builder 中创建的原始文件。中创建的原始文件。8.按按 Go,
18、将生成流驱动程序源代码。,将生成流驱动程序源代码。小结小结驱动程序只不过是一些驱动程序只不过是一些 DLLDLL。驱动程序被映射到驱动程序被映射到 Device.exeDevice.exe 进程地址空间中。进程地址空间中。驱动程序公开了一个众所周知的接口集。驱动程序公开了一个众所周知的接口集。将设备驱动程序添加到将设备驱动程序添加到 Windows CE Windows CE 操作系统映操作系统映像中相对容易的多。像中相对容易的多。课程安排课程安排提纲Windows CE 5.0驱动程序简介驱动程序简介流接口驱动程序分析流接口驱动程序分析动动手动动手简单的流接口驱动程序简单的流接口驱动程序LE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 驱动程序 设计
限制150内