新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 一种64位高速PCI总线接口的设计与实现

一种64位高速PCI总线接口的设计与实现

作者:时间:2011-03-22来源:网络收藏


3 设备驱动开发
在Windows环境下开发设备驱动程序主要有两种模型,即WinDriver和WDM。本使用了WDM驱动模型。开发设备驱动程序WDM需要处理:硬件访问、中断处理和DMA传输3方面问题。
3.1 硬件访问
X86处理器有两种独立的映射空间:I/O空间和内存空间,I/O空间只能通过I/O指令来访问,KIoRange类封装了对I/O空间的操作命令。对于设备,可以通过实例化KIoRange类来对I/O空间进行相应的操作。
对于PCI设备可以使用KMemoryRange类对内存进行相应操作,具体操作与KIoRange类对I/O空间的操作相似。
3.2 中断处理
驱动程序使用KInterrupt类来对中断操作的处理,其中包括中断的初始化、将一个中断服务例程连接到一个中断和解除其连接等。
中断服务例程不是KInterrupt类的成员函数,这是为了减少中断延迟时间。中断处理需要中断服务例程和延迟过程调用例程,在中断服务例程中,首先判断该中断是否是自己设备产生的,若不是,则返回False;若是,则请求一个延迟过程调用例程(DPC)。
3.3 DMA传输
PCI9656使用DMA方式进行数据传输。DMA传输需要3个类:KDmaAdapter,KDmaTransfer和KCommonDmaBuffer。其中,KDmaAdapter类用于建立一个DMA适配器,它说明了DMA通道的特性,如宽度,单次传输最大个数等,需要注意的是本设备使用的是64位宽度,因此需要特别指出;KDmaTransfer类用于DMA传输控制,如传输开始、传输字节数等;KCommonDmaBuffer类用于申请系统提供的公共缓冲区。具体DMA传输设置如下
b.jpg

本文引用地址:http://www.eepw.com.cn/article/156552.htm



评论


相关推荐

技术专区

关闭