新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于WinDriver的PCI总线设备驱动开发

基于WinDriver的PCI总线设备驱动开发

作者:时间:2014-08-04来源:网络收藏

  图2中, Open()中注册的中断服务程序 Handle()完成XR17158的数据接收与发送; Read()和XR17D158 Write()为应用层提供读/写接口,通过内存缓沖区接收XR17D158_Handle()的数据或向XR17D158_Handle()发送数据。

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

  XR17D158_Open()使用WDC_PciReadCfg()和WDC_PciWriteCfg()实现对XR17D158PCI配置空间的访问,使用WDC_ReadAddr8()和WDC_Write Addr80实现对XR17D158中设备配置寄存器和UART配置寄存器的操作,如UART接口波特率的配置:

  

 

  UAR了接口数据的读取可以使用查询方式或者接口方式,但是查询方式要求处理器周期地对XR17D158的状态进行检测,处理器的效率较低。因此本文使用中断的方式完成UART接口数据的接收和发送。中断服务程序XR17D158 Handle()的工作过程过程如下:

  

 

  

 

  XR17D158_Handle()实现UART接口和内存缓冲区之间的数据交换,从内存缓冲区中读取XR17D158_Write()写入的数据实现数据的发送,向内存缓冲区中写入UART接口接收的数据,再由XR17D158_Read()读取实现数据的接收。在XR17D158_Open()使用WDC_XR17D158_IntEnable()注册XR17D158_Handle()。

  4 结果验证

  使用外部设备向XR17D158子卡发送RS232数据,发送数据波特率为9600 bps,发送周期为1 Hz,通过示波器观察XR17D158的接收数据波形。

  

 

  图3(a)为XR17D158接收到RS232数据的波形,图3(b)为XR17D158所产生的中断信号波形,中断信号为低电平时,驱动程序处理XR17D158所接收到的数据。试验中,RS232数据为周期发送,每帧数据为90字节,图3中可以看出驱动程序处理每帧数据的时间约为0.1ms,如果8路UART接口同时接收数据,且波特率为921.6kbps,此时驱动程序处理数据的时间约为100ms,不会出现丢数现象。

  5 结束语

  文中简单地介绍了软件工具的特点和驱动产生的过程,并针对一种PCI转UART设备XR17D158,提出了使用开发PCI设备驱动的软件架构。此时Windows驱动设备的开发更像是Windows应用程序的开发,仅在一个驱动函数中使用WinDriVer提供的接口函数,而无需触及Windows内核。此外该驱动架构不仅适用于XR17D158设备,还可应用于其它PCⅡ设备,如PCI9056等。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭