如何访问硬件.ppt

如何访问硬件.ppt

ID:48732671

大小:107.00 KB

页数:10页

时间:2020-01-20

如何访问硬件.ppt_第1页
如何访问硬件.ppt_第2页
如何访问硬件.ppt_第3页
如何访问硬件.ppt_第4页
如何访问硬件.ppt_第5页
资源描述:

《如何访问硬件.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、WDM驱动程序设计驱动程序中如何访问硬件常用的I/O资源类型资源类型处理概述Port可能映射I/O端口范围;应在设备扩展中保存端口范围基址Memory映射内存范围;应在设备扩展中保存内存范围基址Dma调用IoGetDmaAdapter函数创建适配器对象Interrupt调用IoConnectInterrupt函数创建中断对象,中断对象指向ISR(中断服务例程)访问端口和内存寄存器的HAL函数读写I/O端口UCHARREAD_PORT_UCHAR(INPUCHARPort);ULONGREAD_PORT_ULONG(INPULONGPort);USHORTREAD

2、_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_P

3、ORT_XXX函数或WRITE_PORT_XXX访问该寄存器就可以了。配置中断typedefstruct_DEVICE_EXTENSION{...PKINTERRUPTInterruptObject;}DEVICE_EXTENSION,*PDEVICE_EXTENSION;ULONGvector;//中断向量KIRQLirql;//中断请求级KINTERRUPT_MODEmode;//中断触发模式(电平/边缘)KAFFINITYaffinity;//CPU亲和性BOOLEANirqshare;//是否与其它设备共享............(接下页)配置中断sta

4、tus=IoConnectInterrupt(&pdx->InterruptObject,//存放内核中断对象的内存地址(PKSERVICE_ROUTINE)OnInterrupt,//中断服务例程(PVOID)pdx,//传递给ISR的上下文参数NULL,//当设备有多个中断时必须提供一个自旋锁vector,//中断向量irql,//中断请求级irql,//驱动中其它例程与ISR同步时将被提高到该级别mode,//中断触发模式(电平/边缘)irqshare,//是否与其它设备共享中断affinity,//该中断的CPU亲和掩码FALSE);//是否需要操作系统

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

6、做尽量少的工作,如果有大量的工作应该请求一个DPC来完成。中断服务例程的实现BOOLEANOnInterrupt(PKINTERRUPTInterruptObject,PVOIDContext){if(自己的设备没有发出中断)returnFALSE;<处理该中断>returnTRUE;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。