嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt

上传人:b****1 文档编号:14648633 上传时间:2022-10-23 格式:PPT 页数:81 大小:1.69MB
下载 相关 举报
嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt_第1页
第1页 / 共81页
嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt_第2页
第2页 / 共81页
嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt_第3页
第3页 / 共81页
嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt_第4页
第4页 / 共81页
嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt_第5页
第5页 / 共81页
点击查看更多>>
下载资源
资源描述

嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt

《嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt(81页珍藏版)》请在冰豆网上搜索。

嵌入式软件开发导论7设备驱动程序开发PPT课件下载推荐.ppt

设备驱动程序控制硬件中断比较难于处理,必须使用汇编语言读写端口,CEDDK.dll提供APIs与硬件进行通信HalGetBusDataREAD_PORT_UCHARWRITE_REGISTER_ULONG对于逻辑设备驱动程序,采用Win32APIs从硬件获取数据,设备驱动程序是操作系统的一部分,难于开发与调试,对于UNIX或者是Windows9x,设备驱动程序是与操作系统映像连接的,并运行于系统内核态。

对于windowsCE,大多数的设备驱动程序运行于用户态,简单的来说就是一个DLL文件。

设备驱动程序控制硬件,大多数的设备驱动程序用来控制硬件。

对于某些硬件,是没有驱动的。

CPU内存对于虚拟设备驱动程序,没有物理设备。

文件系统驱动程序RAMdisk,中断有时难于处理,WindowsCE提供逻辑中断(SYSINTRs)中断由一个用户态的线程进行处理(IST),为什么应当写驱动程序?

当我们设计硬件时,就需要提供这一硬件的驱动软件。

硬件OEM厂商不提供基于WindowsCE的硬件驱动,但是提供硬件的规格说明。

对于一个现有硬件驱动的功能进行扩展。

驱动分类整体,WindowsCE整体上将设备驱动分为三种:

内置驱动总线流接口,内置驱动,硬件所必须的驱动程序,这些驱动程序通常由设计OEM厂商进行设计。

如:

键盘,触摸屏,音频设备。

可能不支持一般的驱动接口,也有可能带有扩展的接口或者完全提供一个用户自定义的接口。

内置驱动通常需要针对具体的操作系统进行小幅改动。

总线驱动,管理系统总线如PCI总线等。

PCMCIA与CompactFlash也在其列。

负责处理总线上硬件的询问,以及资源的分配。

同时也请求设备管理器为总线上的硬件安装适当驱动程序。

驱动分类详细,AudioDriversBatteryDriversBlockDriversBluetoothHCITransportDriverDirect3DDeviceDriverInterfaceDirectDrawDisplayDriversDisplayDriversDVD-VideoRendererIEEE1394DriversKeyboardDriversNotificationLEDDriversParallelPortDriversPCCardDriversPrinterDriversSerialPortDriversSmartCardDriversStreamInterfaceDriversTouchScreenDriversUSBDrivers,参见文档:

DriverDevelopment-DriverCategories,驱动的加载过程,大多数的设备驱动由设备管理器(Device.exe)进程在系统启动时进行加载。

另一方面,其中一部分内置驱动程序由GWES.exe进行加载。

这些驱动包括显示器驱动(DDI.dll)、键盘驱动、鼠标驱动、触摸屏驱动等。

驱动的加载过程,当Device.exe对设备驱动程序进行安装时将在注册表的HKEY_LOCAL_MACHINEDrivers项下检查一个字符串,其值为RootKey,传统地,其名字为BuiltIn。

然后设备管理器在进行初始化时使用注册信息检查器为它需要安装的各个驱动读取值为RootKey的键。

驱动的加载过程,驱动的加载过程,安装DLL,给每一个驱动创建一个Active键,然后调用ActivateDevice或者ActivateDeviceEx将DLL注册为系统中的一个设备驱动程序。

ActivateDevice在HKEY_LOCAL_MACHINEDriversActive下创建一个新的键值。

驱动的加载过程,驱动加载API,设备驱动程序也能通过应用程序进行手动的安装,这是ActivateDeviceEx的一个首选的功能。

安装驱动一个更老的方法是使用RegisterDevice与DeregisterDevice,主要内容,概述流驱动接口设备驱动程序架构USBmouse驱动开发示例WindowsCE系统服务,什么是流接口,流接口驱动包括所有提供流接口函数的驱动程序,不管由这个驱动控制的设备是什么类型。

典型的流接口驱动程序有:

文件系统驱动(iostream,fstream)COM,LPT,使用流接口,hSer=CreateFile(TEXT(“COM1:

”),GENERIC_READ,0,NULL,OPEN_EXSITING,0,NULL);

rc=ReadFile(hSer,直接使用Win32文件系统API。

创建一个流驱动程序,写一个导出具体流接口的DLL编译设备驱动程序对注册表进行配置,流接口函数,构建设备驱动程序,构建设备驱动程序与构建一个DLL一样简单。

可以使用PlatformBuilder与EVC+。

只需创建一个WindowsCEDLL项目,输出适当的入口点,然后编写代码。

常犯的一个错误是没有将入口点声明为externC,因此C+编译器就不能处理输出的函数名。

注册表设置,在Project.reg中:

HKEY_LOCAL_MACHINEDriversBuiltInSampleDll=mydriver.DllPrefix=DEMIndex=dword:

1Order=dword:

0FriendlyName=DemoDriverIoctl=dword:

0,注册表设置,Order给所有的驱动设置相对安装顺序。

Order为0的驱动先安装,依次安装Order为1,2,的驱动。

Oder可以让开发者保证有相到依赖关系的多个驱动以适当的顺序进行安装。

Index指定在文件系统中的驱动名的数字部分。

在默认情况下,带有前缀COM的驱动在文件系统中分配名字为COM1,下一个即为COM2。

为了保证驱动总是安装成COM2,必须提供Index=2。

演示:

使用emulator编写一个流接口驱动程序并使用它,驱动是如何工作的,WhenCE启动时,Device.exe根据注册表中的设置安装所有的驱动程序。

当安装mydriver.dll时,device.exe调用DEM1_Init。

Application程序调用CreateFile(“DEM1”),驱动是如何工作的

(2),Coredll.dll处理API调用并切换到device.exeDevice.exe调用mydriver.dll的DEM1_Open。

CreateFile返回DEM1_Open的retval,设备功能栈,硬件,WindowsCEDDKAPI,设备驱动程序,设备管理器(device.exe),应用程序,主要内容,概述流驱动接口设备驱动程序架构USBmouse驱动开发示例WindowsCE系统服务,驱动架构,驱动的类型,内置与流安装机制,通常内置驱动程序根据注册键值安装在GWES进程空间总线驱动由Device.exe根据键值进行安装可安装的流驱动或其它驱动由Device.exe根据总线驱动或注册检查器进行安装。

设备管理器,用户级进程继续运行与内核、注册表交互的单独应用程序,以及流接口驱动DLL。

提供ActivateDevice与DeactivateDeviceAPI。

设备管理器,包括IO资源管理器安装注册表检查器(RegEnum.dll),并由这一个注册表检查器根据注册表进行驱动的安装提供电源通知回调函数跟踪所有已安装的驱动程序,给设备接口发出拉入或删除的通知,设备管理器,设备驱动程序的安装过程,DEVICE.EXE,Kernel,I/OResourceManager(partofDevice.exe),REGENUM.DLL,PCIBUS.DLL,loads,loads,loads,DEVICE.EXE,I/OResourceManager(partofDevice.exe),REGENUM.DLL,PCIBUS.DLL,注册表枚举器,注册枚举器是RegEnum.dllDevice.exe根据HKEY_LOCAL_MACHINEDriversRootKey安装注册枚举器注册枚举器给每一个要安装的驱动程序扫描表项注册枚举器是可重入的,并支持分级使用当注册枚举器卸载时,同时也御载它安装的所有信息注册枚举器根据Order,检查紧挨着传给它的键的下一级键值。

注册枚举器对每一个找到的子键调用ActivateDeviceEx,ActivateDeviceEx,由Device.exe提供总线驱动程序当安装设备驱动时调用ActivateDeviceExActivateDeviceEx也在RAM工作区锁定流接口驱动程序这可以防止代码页被丢弃注册检查器对找到的每一个内置子键调用ActivateDeviceExActivateDeviceEx安装驱动并更新注册表,接口类,驱动程序的接口有以下特征每一个Iclass有一个GUID,一个名字GUID描述类设备接口Name描述接口的实例COM1:

DSK1:

等等提供一个驱动接口在注册表中的Iclass子键驱动程序发布接口AdvertiseInterface应用程序访问接口RequestDeviceNotifications每个已有的接口的预定义GUIDA32942B7-920C-486b-B0E6-92A702A99B35,I/O资源管理(IORM),IORM是设备管理器必备的部分跟踪可用I/O资源(IRQ与I/O基地址)OEM为内置设备预分配的资源当在总线上安装一个客户驱动时,总线驱动请求资源ResourceReleaseResourceRequestResourceCreateList当存在冲突时IORM调用ResourceRequest失败,注册表帮助例程,从注册表中读取资源初始化信息OpenDeviceKeyDDKReg_GetIsrInfoDDKReg_GetWindowInfoDDKReg_GetPciInfo在COREDLL的API在and的函数原型在publiccommonoakdrivers中的例子wavedevpddes1371wavepdd.cpp-GetRegistryConfig,电源管理,电源管理器灵活的系统级与外设级电源管理使设备智能化地管理它们的电源在设备与系统或应用之间充当协调者使OEM修改调用PowerOffSystem()的相关代码,电源管理,系统级电源状态设备(外设)级电源状态,电源管理器架构,驱动,电源管理器(pm.dll),PMAPIs,应用程序,通知消息队列,驱动APIs,应用API,物理内存,64MBRAM,32MBFlash,DbgSerialPort,2GBUser,512MBUncached,512MBCached,64MBRAM,32MBFlash,64MBRAM,32MBFlash,物理内存,内核虚拟地址,Reserved,04000000,82000000,80000000,80000000,A0000000,C0000000,0,NotUsed,Slot0,Slot32,64KB,32MB,64MB,2GB,3

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1