如何访问硬件_第1页
如何访问硬件_第2页
如何访问硬件_第3页
如何访问硬件_第4页
如何访问硬件_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何访问硬件第一页,共十页,2022年,8月28日常用的I/O资源类型资源类型处理概述Port可能映射I/O端口范围;应在设备扩展中保存端口范围基址Memory映射内存范围;应在设备扩展中保存内存范围基址Dma调用IoGetDmaAdapter函数创建适配器对象Interrupt调用IoConnectInterrupt函数创建中断对象,中断对象指向ISR(中断服务例程)第二页,共十页,2022年,8月28日第三页,共十页,2022年,8月28日访问端口和内存寄存器的HAL函数第四页,共十页,2022年,8月28日读写I/O端口UCHARREAD_PORT_UCHAR(INPUCHARPort);ULONGREAD_PORT_ULONG(INPULONGPort);USHORTREAD_PORT_USHORT(INPUSHORTPort);VOIDWRITE_PORT_UCHAR(INPUCHARPort,INUCHARValue);VOIDWRITE_PORT_USHORT(INPUCHARPort,INUSHORTValue);VOIDWRITE_PORT_ULONG(INPUCHARPort,INULONGValue);如果设备要求将其寄存器映射到I/O地址空间,则对于具有独立的I/O地址空间的CPU(如Intel)会满足其要求;而对于没有独立的I/O地址空间的CPU则将其映射到内存地址空间。开发人员不用关心这些细节,只须用READ_PORT_XXX函数或WRITE_PORT_XXX访问该寄存器就可以了。第五页,共十页,2022年,8月28日第六页,共十页,2022年,8月28日配置中断typedefstruct_DEVICE_EXTENSION{...PKINTERRUPTInterruptObject;}DEVICE_EXTENSION,*PDEVICE_EXTENSION;ULONGvector;//中断向量KIRQLirql;//中断请求级KINTERRUPT_MODEmode;//中断触发模式(电平/边缘)KAFFINITYaffinity;//CPU亲和性BOOLEANirqshare;//是否与其它设备共享............(接下页)第七页,共十页,2022年,8月28日配置中断status=IoConnectInterrupt(&pdx->InterruptObject,//存放内核中断对象的内存地址

(PKSERVICE_ROUTINE)OnInterrupt,//中断服务例程

(PVOID)pdx,//传递给ISR的上下文参数

NULL,//当设备有多个中断时必须提供一个自旋锁

vector,//中断向量

irql,//中断请求级

irql,//驱动中其它例程与ISR同步时将被提高到该级别

mode,//中断触发模式(电平/边缘)irqshare,//是否与其它设备共享中断

affinity,//该中断的CPU亲和掩码

FALSE);//是否需要操作系统保存浮点上下文第八页,共十页,2022年,8月28日中断服务例程的实现当设备生成中断时,HAL将基于你指定的CPU亲合掩码选择一个CPU来服务这个中断。然后该CPU的IRQL提升到合适的同步级并请求一个与中断对象关联的自旋锁。最后调用ISR因为有可能多个设备共享一个中断向量,所以在ISR中首先应该判断是否是自己的设备产生了中断。如果不是则返回FALSE,以便HAL能把中断送往其它设备驱动程序。如果是,应该先清除该中断然后返回TRUE。ISR执行在高于DISPATCH_LEVEL的IRQL上。因此ISR中使用的所有代码和数据必须存在于非分页内存中,此外,ISR只能调用有限的内核服务函数。在ISR中应该做尽量少的工作,如果有大量的工作应该请求一个DPC来完成。第九页,共十页,2022年,8月28日中断服务例程的实现BOOLEANOnInterrupt(PKINTERRUPTInterruptObject,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论