关 闭

新闻中心

EEPW首页>工控自动化>设计应用> 基于DSP的PCI驱动程序开发

基于DSP的PCI驱动程序开发

作者: 时间:2009-08-25 来源:网络 收藏

3程序功能实现
当把板卡第一次插到计算机的插槽以后,计算机的系统总线会检测到有个新设备没有安装程序,并提示安装程序。正确地安装驱动程序以后,用户就可以在应用程序中与驱动程序进行通信。
3.1 打开设备
在应用程序中调用系统提供的函数CreateFile()。如果系统根据设备名确实检测到设备并成功打开了这个设备,则返回一个指向这个设备的有效句柄;如果调用失败,则返回一个错误信息。
3.2 读/写设备
读/写设备包括读/写设备的配置空间、读/写设备的非配置空间,其中,非配置空间包括I/O空间、存储空间。
设备被打开以后,应用程序就调用DeviceloCon-trol()函数来达到访问设备的目的。DeviceIoControl()函数有8个参数,其中第3个参数是应用程序传递给驱动程序的数据缓冲区地址,在这个数据缓冲区存放的是应用程序要读写的设备的空间、偏移量、长度,这些都需要在应用程序中配置好。
这个调用由I/O系统服务接收。I/O管理器从这个请求构造一个合适的I/O请求包(IRP)。在最简单的情况下,I/O管理器只是把IRP传递给一个设备驱动程序,这个驱动程序调用硬件,并完成IRP的处理。I/O管理器把数据和结果返回给Win 32和用户应用程序。现在一个分层的设备驱动程序栈是很常见的。每个驱动程序把该请求划分为更简单的请求。高层次的驱动程序调用低层次的驱动程序,最后,最低层的驱动程序与硬件直接打交道完成用户的请求。I/O管理器把数据和结果返回给Win 32和用户应用程序。设备程序调用如图3所示。

当应用程序读/写设备时,驱动程序工作的流程图如图4所示。
首先,获取当前IRP栈单元的指针;然后再读取I/O控制代码,判断应用程序想达到什么样的目的:是读/写配置空间,还是读/写非配置空间,然后再调用相应的处理程序。


4 结 语
这里采用微软的驱动包Device Driver Kit(DDK)是因为它是其他几种工具的基础,它要求开发人员深刻了解驱动底层,虽然不易掌握,但开发出来的驱动程序通用性好,兼容性强。板卡与PC机的通信速度得到了很大的提高。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭