新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PCI9052接口芯片的配置及驱动程序开发

PCI9052接口芯片的配置及驱动程序开发

作者:时间:2012-03-21来源:网络收藏

(2) 内存的访问

在基于DriverStudio开发的中,向存储器空间读写大量数据一般选用Write/Read函数,但对于一个实际存在的物理设备的访问,在某一时刻只能进行一个操作,因而在访问内存对象的时候,一般都要求一个IRP排队的队列,可通过设备类的成员函数QueueIrp将IRP插入队列。DriverWorks提供有KDeviceQueue类,其成员函数StartIo用于处理设备对象的IRP队列。具体的操作是通过KMemoryRange类来实现对设备内存映射空间的访问。其访问流程见图4所示。需要注意的是,当IRP队列为空时,调用QueueIrp时,系统将同步调用StartIo函数。

(3) 中断处理

的中断处理编程涉及到内核机制比较多的一种,因而相对复杂。首先用中断服务程序提升系统的IRQL,但不能进行大多数有用的内核调用。另外,提升IRQL运行代码需要尽可能快地运行。所以,中断处理一般和在DIS-PATCH_LEVEL级运行的延迟调用(DPC)例程相配合可解决以上两个问题。在DriverWorks中,通常通过KInterrupt类和KDeferredCall类来实现,并通过向导来在中断服务例程和DPC中增加功能代码。KDeferredCall类封装有DPC的操作。KInter-rupt类用于实现硬件中断的处理,其成员函数包括中断初始化,以及将一个中断服务例程连接到另一个中断和解除其连接等。在中断服务例程中把IRP交给DPC例程,可在DPC处理完后结束该IRP。需要注意的是,中断服务例程不是KInter-rupt类的成员函数,它的主要作用是减少中断延迟时间。

3 结束语

本文主要从访问设备硬件资源的角度介绍了PCI配置空间的配置和驱动程序的开发方法。利用该方法可对PCI板卡的配置空间和所需的硬件资源进行正确设置,然后通过DriverStudio的驱动程序向导生成工具在程序框架里添加适当的代码,最后借助于DriverStudio开发包提供的调试工具SoftICE和DriverMonitor以及由Wizard产生的控制台应用程序,来快速开发出基于PCI总线的设备驱动程序。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭