文档详情

《驱动程序的概述》PPT课件

人***
实名认证
店铺
PPT
584.81KB
约16页
文档ID:579088914
《驱动程序的概述》PPT课件_第1页
1/16

驱动程序的概述驱动程序的概述 驱动程序的概述驱动程序的概述l什么是设备驱动程序什么是设备驱动程序l驱动程序的功能驱动程序的功能l驱动程序模型驱动程序模型l驱动程序开发的理解驱动程序开发的理解l何时编写驱动程序何时编写驱动程序l编写驱动程序的要素编写驱动程序的要素 什么是设备驱动程序什么是设备驱动程序A device driverA device driver is software that abstracts the is software that abstracts the functionality of a physical or virtual device. A functionality of a physical or virtual device. A device driver manages the operation of these device driver manages the operation of these devices. Examples of physical devices are devices. Examples of physical devices are network adapters, timers, and universal network adapters, timers, and universal asynchronous receiver-transmitters (UARTs). asynchronous receiver-transmitters (UARTs). An example of a virtual device is a file system. An example of a virtual device is a file system. Implementing a device driver allows the Implementing a device driver allows the functionality of your device to be exposed to functionality of your device to be exposed to applications and other parts of the operating applications and other parts of the operating system (OS). system (OS). ——MSDN——MSDN 驱动程序的功能驱动程序的功能l设备驱动程序将操作系统和设备链接起来,设备驱动程序将操作系统和设备链接起来,使得操作系统能够识别设备,并为应用程序使得操作系统能够识别设备,并为应用程序提供设备服务。

提供设备服务l驱动程序的任务,就是把操作系统的驱动接驱动程序的任务,就是把操作系统的驱动接口口“映射映射”到具体的功能实现中到具体的功能实现中 驱动程序的功能驱动程序的功能应用程序应用程序操作系统操作系统网卡驱动程序网卡驱动程序1网卡驱动程序网卡驱动程序2网卡网卡1网卡网卡1 Send() Send() SendPackage() SendPackage() MySendPackage1() MySendPackage1() MySendPackage2() MySendPackage2() 驱动程序模型驱动程序模型l为了简化驱动程序的编写,在很多操作系统上,通为了简化驱动程序的编写,在很多操作系统上,通为了简化驱动程序的编写,在很多操作系统上,通为了简化驱动程序的编写,在很多操作系统上,通常人们会把驱动程序分成不同的互相分离的层每一常人们会把驱动程序分成不同的互相分离的层每一常人们会把驱动程序分成不同的互相分离的层每一常人们会把驱动程序分成不同的互相分离的层每一层,都会提供一些预先定义的接口,用来处理层,都会提供一些预先定义的接口,用来处理层,都会提供一些预先定义的接口,用来处理层,都会提供一些预先定义的接口,用来处理I/OI/O的的的的数据。

数据l分层优点:开发人员在编写驱动程序的时候,通常分层优点:开发人员在编写驱动程序的时候,通常分层优点:开发人员在编写驱动程序的时候,通常分层优点:开发人员在编写驱动程序的时候,通常只须提供或修改某些层的实现,而不用从头开始编写只须提供或修改某些层的实现,而不用从头开始编写只须提供或修改某些层的实现,而不用从头开始编写只须提供或修改某些层的实现,而不用从头开始编写整个驱动程序整个驱动程序整个驱动程序整个驱动程序l驱动模型:通过提取某些驱动的共性而被抽象出来驱动模型:通过提取某些驱动的共性而被抽象出来驱动模型:通过提取某些驱动的共性而被抽象出来驱动模型:通过提取某些驱动的共性而被抽象出来的接口和层的接口和层的接口和层的接口和层 驱动程序模型驱动程序模型lWindows的的WDM(Windows Driver Model)模型模型ØWDMWDM体系结构实行分层处理:高层驱动程序、体系结构实行分层处理:高层驱动程序、体系结构实行分层处理:高层驱动程序、体系结构实行分层处理:高层驱动程序、中间层驱动程序、底层驱动程序中间层驱动程序、底层驱动程序中间层驱动程序、底层驱动程序中间层驱动程序、底层驱动程序。

Ø每层驱动再把每层驱动再把每层驱动再把每层驱动再把I/OI/O请求划分为更简单的请求,以请求划分为更简单的请求,以请求划分为更简单的请求,以请求划分为更简单的请求,以便传给更下层的驱动执行便传给更下层的驱动执行便传给更下层的驱动执行便传给更下层的驱动执行Ø最底层的驱动程序收到最底层的驱动程序收到最底层的驱动程序收到最底层的驱动程序收到I/OI/O请求后,通过硬件抽请求后,通过硬件抽请求后,通过硬件抽请求后,通过硬件抽象层,与硬件作用,从而完成象层,与硬件作用,从而完成象层,与硬件作用,从而完成象层,与硬件作用,从而完成I/OI/O请求工作请求工作请求工作请求工作 “一般一般”驱动程序开发的理解驱动程序开发的理解l l必须使用汇编语言对端口进行读写必须使用汇编语言对端口进行读写l l设备驱动程序是操作系统的一部分,难于设备驱动程序是操作系统的一部分,难于开发与调试开发与调试l l设备驱动程序控制硬件设备驱动程序控制硬件l l中断比较难于处理中断比较难于处理 必须使用汇编语言读写端口必须使用汇编语言读写端口l lCEDDK.dll 提供提供 APIs与硬件进行通信与硬件进行通信ØØHalGetBusDataHalGetBusDataØØREAD_PORT_UCHARREAD_PORT_UCHARØØWRITE_REGISTER_ULONGWRITE_REGISTER_ULONGl l对于逻辑设备驱动程序,采用对于逻辑设备驱动程序,采用Win32 APIs 从硬件获取数据从硬件获取数据 设备驱动程序是操作系统的一设备驱动程序是操作系统的一部分,难于开发与调试部分,难于开发与调试l l对于对于UNIX或者是或者是 Windows 9x,设备驱动程设备驱动程序是与操作系统映像连接的,并运行于系序是与操作系统映像连接的,并运行于系统内核态。

统内核态l l对于对于windows CE,大多数的设备驱动程序大多数的设备驱动程序运行于用户态,简单的来说就是一个运行于用户态,简单的来说就是一个DLL文件 设备驱动程序控制硬件设备驱动程序控制硬件l l大多数的设备驱动程序用来控制硬件大多数的设备驱动程序用来控制硬件l l对于某些硬件,是没有驱动的对于某些硬件,是没有驱动的ØØCPUCPUØØ内存内存内存内存l l对于虚拟设备驱动程序,没有物理设备对于虚拟设备驱动程序,没有物理设备ØØ文件系统驱动程序文件系统驱动程序文件系统驱动程序文件系统驱动程序ØØR Ramdisk(amdisk(是一种基于内存的虚拟文件系统是一种基于内存的虚拟文件系统是一种基于内存的虚拟文件系统是一种基于内存的虚拟文件系统) ) 中断有时难于处理中断有时难于处理l lWindows CE提供逻辑中断提供逻辑中断 (SYSINTRs) l l中断由一个用户态的线程进行处理中断由一个用户态的线程进行处理 (IST) 何时编写驱动程序何时编写驱动程序l操作系统没有内置支持的硬件操作系统没有内置支持的硬件ØØ不支持的硬件比较常见的是一些二级的设备不支持的硬件比较常见的是一些二级的设备。

不支持的硬件比较常见的是一些二级的设备不支持的硬件比较常见的是一些二级的设备l扩展已有驱动的功能扩展已有驱动的功能ØØ从头开始编写该外设的驱动从头开始编写该外设的驱动从头开始编写该外设的驱动从头开始编写该外设的驱动ØØ把现有的驱动程序进行封装把现有的驱动程序进行封装把现有的驱动程序进行封装把现有的驱动程序进行封装( (没有驱动程序源代码的情况没有驱动程序源代码的情况没有驱动程序源代码的情况没有驱动程序源代码的情况更为有效更为有效更为有效更为有效) )l提供软件层面的服务提供软件层面的服务ØØ伪驱动:可通过驱动程序,提供软件层面的一些服务,伪驱动:可通过驱动程序,提供软件层面的一些服务,伪驱动:可通过驱动程序,提供软件层面的一些服务,伪驱动:可通过驱动程序,提供软件层面的一些服务,这种驱动程序通常被称做伪驱动这种驱动程序通常被称做伪驱动这种驱动程序通常被称做伪驱动这种驱动程序通常被称做伪驱动ØØ伪驱动最常见的使用方式是为上层软件提供一些服务伪驱动最常见的使用方式是为上层软件提供一些服务伪驱动最常见的使用方式是为上层软件提供一些服务伪驱动最常见的使用方式是为上层软件提供一些服务 编写驱动程序的要素编写驱动程序的要素l了解驱动程序所针对的硬件了解驱动程序所针对的硬件Ø设备驱动程序的代码设备驱动程序的代码设备驱动程序的代码设备驱动程序的代码直接与硬件进行交互。

直接与硬件进行交互直接与硬件进行交互直接与硬件进行交互Ø开发人员必须对所要开发的硬件的原理、开发人员必须对所要开发的硬件的原理、功能和工作方式有充分的了解功能和工作方式有充分的了解Ø需要开发人员耐心地阅读这些硬件规范和需要开发人员耐心地阅读这些硬件规范和白皮书 编写驱动程序的要素编写驱动程序的要素l了解目标操作系统下驱动的工作机制了解目标操作系统下驱动的工作机制Ø不同操作系统下驱动程序有不同的工作机制;不同操作系统下驱动程序有不同的工作机制;不同操作系统下驱动程序有不同的工作机制;不同操作系统下驱动程序有不同的工作机制;不同的操作系统对驱动程序也有不同的管理方式不同的操作系统对驱动程序也有不同的管理方式不同的操作系统对驱动程序也有不同的管理方式不同的操作系统对驱动程序也有不同的管理方式Ø需要开发人员针对某一个具体的操作系统,去需要开发人员针对某一个具体的操作系统,去需要开发人员针对某一个具体的操作系统,去需要开发人员针对某一个具体的操作系统,去了解其驱动工作原理了解其驱动工作原理了解其驱动工作原理了解其驱动工作原理 编写驱动程序的要素编写驱动程序的要素l了解驱动程序的模型了解驱动程序的模型Ø通常对于某一类外设,操作系统都会提供特定通常对于某一类外设,操作系统都会提供特定通常对于某一类外设,操作系统都会提供特定通常对于某一类外设,操作系统都会提供特定的驱动模型。

的驱动模型的驱动模型的驱动模型Ø例如:网卡驱动程序例如:网卡驱动程序例如:网卡驱动程序例如:网卡驱动程序Windows CEWindows CE提供了提供了提供了提供了NDISNDIS(Network Driver Interface Specification)接口,在接口,在接口,在接口,在Windows Windows CECE下工作的网卡需要实现下工作的网卡需要实现下工作的网卡需要实现下工作的网卡需要实现NDISNDIS提供的一些接口提供的一些接口提供的一些接口提供的一些接口函数;而函数;而函数;而函数;而LinuxLinux操作系统下,对网卡驱动程序也操作系统下,对网卡驱动程序也操作系统下,对网卡驱动程序也操作系统下,对网卡驱动程序也有抽象,但它提供的数据结构和接口与有抽象,但它提供的数据结构和接口与有抽象,但它提供的数据结构和接口与有抽象,但它提供的数据结构和接口与NDISNDIS大相大相大相大相径庭。

下载提示
相似文档
正为您匹配相似的精品文档
相关文档