CN1333333C - 码流播放卡和码流采集卡的驱动方法 - Google Patents
码流播放卡和码流采集卡的驱动方法 Download PDFInfo
- Publication number
- CN1333333C CN1333333C CNB2005100418028A CN200510041802A CN1333333C CN 1333333 C CN1333333 C CN 1333333C CN B2005100418028 A CNB2005100418028 A CN B2005100418028A CN 200510041802 A CN200510041802 A CN 200510041802A CN 1333333 C CN1333333 C CN 1333333C
- Authority
- CN
- China
- Prior art keywords
- dma
- driver
- transmission
- interrupt
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
一种码流播放卡和码流采集卡的驱动方法,其码流数据在硬件和应用程序之间的传输采用直接存储器存取DMA传输模式;由驱动程序的中断服务例程ISR判断中断类型,并由中断延迟过程调用DPC例程分别对各中断类型进行处理;通过应用程序和驱动程序的通信,实现应用程序对硬件的控制。本发明解决了码流播放卡和码流采集卡和应用程序的接口问题,使得码流播放卡和码流采集卡能正常工作于计算机的PCI总线上,在计算机上完成码流播放和采集任务;进而使利用计算机进行码流的分析和监测成为可能。针对码流播放卡和码流采集卡要完成的功能,驱动程序按照要求完成了高速的码流传输,在码流速率高达120Mbps时数据传输正确,没有数据丢失现象。
Description
技术领域
本发明涉及数字电视领域中码流传输方法,具体是码流播放卡和码流采集卡的驱动方法。
背景技术
Windows操作系统为了保证系统的安全性和可移植性,限制了应用程序直接操作硬件设备,应用程序只能通过驱动程序来读写和控制设备。有许多自主开发的硬件,要使这些硬件正常地工作在PC机的Windows操作系统下,必须为它们编写Windows驱动程序。
通用的驱动程序开发方法是使用DDK驱动程序开发包,用这种方法开发周期长,程序设计复杂;在一定程度上制约了驱动程序的开发。
发明内容
本发明的目的是克服现有技术的不足,提供一种应用程序访问自主开发的硬件码流播放卡和码流采集卡的驱动方法,其技术方案是码流数据在硬件和应用程序之间的传输采用直接存储器存取DMA传输模式;由驱动程序的中断服务例程ISR判断中断类型,并由中断延迟过程DPC例程分别对各中断类型进行处理;通过应用程序和驱动程序的通信,实现应用程序对硬件的控制。
所述码流数据采用直接存储器存取DMA传输流程如下:
[1]对软件DriverStudio提供的KDmaTransfer类的实例初始化,选用公共缓冲区的内存传输方式,满足码流数据高速、频繁传输数据的要求;
[2]编写KDmaTransfer类实例的回调函数OnDmaReady,回调函数OnDmaReady判断数据传输是否完成;如果数据传输完成,则完成相应的I/O请求包;如果数据传输未完成,则进入StartDMA例程,启动DMA传输;
[3]DMA传输完成,DMA中断控制器产生中断,驱动程序的中断服务例程ISR做出响应,判断中断类型为DMA中断,则中断延迟过程调用DPC例程调用Continue函数,再回到DMA的回调函数OnDmaReady,由回调函数OnDmaReady判断传输完成,结束本次DMA传输。
所述中断类型的判断及处理执行如下步骤:
[1]中断类型判断,驱动程序的中断服务例程ISR根据PCI9054芯片的DMA中断寄存器的比特发生变化,判断中断类型是DMA传输完成的中断或是硬件的本地中断;
[2]根据所判断的中断类型,中断延迟过程调用DPC例程分别进行如下处理:
——硬件的本地中断,通知应用程序再次调用驱动程序进入DMA传输流程;
—DMA传输完成的中断,则调用Continue函数进而回到DMA的回调函数OnDmaReady,由回调函数OnDmaReady判断出传输已完成就结束本次DMA传输。
所述应用程序和驱动程序通信是在两者之间约定一系列相同的I/O控制代码,应用程序将I/O控制代码命令发给驱动程序,驱动程序根据相应的I/O控制代码对硬件执行相应的操作。
码流播放卡和码流采集卡是自主开发的工作于计算机PCI总线上的硬件。为了实现应用程序对码流播放卡和码流采集卡的操作,本发明为硬件开发驱动程序。驱动程序是硬件和应用程序的接口,应用程序通过驱动程序完成对硬件的访问及操作。本发明解决了码流播放卡和码流采集卡与应用程序的接口问题,使得码流播放卡和码流采集卡能正常工作于计算机的PCI总线上,在计算机上完成码流播放和采集任务。进而使利用计算机进行码流的分析和监测成为可能。针对码流播放卡和码流采集卡要完成的功能,驱动程序按照要求完成了高速的码流传输,在码流速率高达120Mbps时数据传输正确,没有数据丢失现象。
附图说明
图1:本发明码流播放卡应用程序和驱动程序通信示意框图
图2:本发明码流采集卡应用程序和驱动程序通信示意框图
图3:本发明码流播放卡驱动程序的DMA数据传输和中断处理流程图
图4:本发明码流采集卡驱动程序的DMA数据传输和中断处理流程图
具体实施方式
下面结合附图详细阐述本发明的具体实施。
本发明的驱动程序包括码流播放卡驱动程序和码流采集卡驱动程序,是计算机应用程序与硬件码流播放卡和码流采集卡的关键接口。两驱动程序采用WDM(Windows DriverModel)驱动程序模型,借助于第三方软件包DriverStudio、在Visual C++6.0环境下进行开发,具有硬件初始化单元,应用程序与驱动程序通信单元,数据传输单元和安装文件。上述各单元协调工作,驱动硬件高速播放和采集码流。
本发明的驱动程序与操作系统配合完成硬件初始化,使硬件成为操作系统可访问的设备。码流播放卡和码流采集卡的驱动程序访问硬件资源采用I/O端口映射方式,首先在设备类中产生类KIoRange对象,其次在设备启动例程中初始化该对象。初始化成功后就可以使用KIoRange类的成员函数inb,inw,ind,outb,outw,outd访问硬件设备。
本发明的应用程序和驱动程序的通信主要实现应用程序对硬件的控制。应用程序每发送一个命令,驱动程序都有对应的函数负责执行两者约定好的操作。应用程序与驱动程序之间依靠I/O控制代码传递命令。驱动程序定义了一系列I/O控制代码,这些定义都包含在驱动程序的头文件中,并且和应用程序完全相同。应用程序使用DeviceIoControl函数将I/O控制代码传递给驱动程序,驱动程序根据控制代码I/O的不同执行对应的操作。I/O控制代码的格式如下:
#define代码名称CTL_CODE(设备类型,控制代码,控制代码的缓冲区传送机制,请求者访问要求)
例如,在码流播放卡中定义一个名为CTRL_AD9851_INIT的I/O控制代码格式应为:
#define CTRL_AD9851_INIT CTL_CODE (FILE_DEVICE_UNKNOWN,0x807,
METHOD_IN_DIRECT,
FILE_ANY_ACCESS)
当驱动程序收到应用程序发送的这个I/O控制代码时,执行预先约定好的操作,对硬件的AD9851芯片进行配置,使硬件能够产生码流播放时需要的时钟信号。
如图1和图2所示,码流播放卡和码流采集卡的应用程序的命令和驱动程序的操作各自互相对应。
在图1所示的码流播放卡的应用程序和驱动程序的通信过程为:
[1]应用程序将分析的码流速率传给驱动,发送I/O控制代码,驱动程序则将码流速率对应的控制字写入硬件上的AD9851芯片,由AD9851产生时钟作为码流原始速率的时钟信号;
[2]应用程序将用户要发送的码流速率传给驱动,发送I/O控制代码,驱动程序则将码流速率对应的控制字写入播放卡的可编程逻辑器件FPGA;
[3]应用程序根据用户选择的输出码流端口发送对应端口的选择I/O控制代码,驱动程序则访问FPGA串/并口相应的选择单元;
[4]应用程序建立一个事件,通知驱动程序,驱动程序和应用程序共享事件;
[5]应用程序命令开始播放码流,驱动程序则启动硬件输出码流;
[6]应用程序命令停止播放,驱动程序则通知硬件停止输出码流。
在图2所示的码流采集卡应用程序和驱动程序通信过程为:
[1]应用程序根据用户选择的码流输入端口传送对应端口的选择命令I/O,驱动程序则访问码流采集卡的可编程逻辑器件FPGA串/并口相应的选择单元;
[2]应用程序建立一个事件,通知驱动程序,驱动程序和应用程序共享事件;
[3]应用程序命令开始采集,驱动程序启动硬件采集码流;
[4]应用程序命令停止采集,驱动程序通知硬件停止输出码流。
为了实现高速率码流的播放与采集,本发明的驱动程序使用直接存储器存取DMA工作模式,完成码流数据在硬件和应用程序之间的传输。驱动程序的中断服务例程ISR判断中断类型,并由中断延迟过程调用DPC例程分别对各中断类型进行处理。本发明使用的开发软件DriverStudio为DMA操作提供了KDmaTransfer类用于DMA传输控制。
一、码流播放卡驱动程序的DMA数据传输及中断处理的实施例:
参见图3,码流播放卡的DMA数据传输步骤如下:
[1]对开发软件DriverStudio提供的KDmaTransfer类的实例初始化。驱动程序选用“公共缓冲区”的内存传输方式,满足每次DMA传输256KBytes数据以及数据传输频繁的要求;
[2]编写KDmaTransfer类实例的回调函数OnDmaReady,由宏DMAREADY_CALLBACK定义,回调函数首先要调用KDmaTransfer类的成员函数BytesRemaining,判断其返回值是否为0,检查数据是否已经传输完成;
[3]如果传输已完成,则调用KDmaTransfer类的成员函数Terminate并且完成相应的I/O请求包IRP;如果未完成,则执行数据传输,回调函数通知硬件开始传输数据进入StartDMA例程启动DMA传输,不需要等待数据传输完成,图3中用断划线表示。
[4]当DMA传输完成,DMA中断控制器产生中断,驱动程序的中断服务例程ISR将做出响应,判断中断类型为DMA中断,然后在中断延迟过程调用DPC例程中调用Continue函数进而回到DMA的回调函数OnDmaReady,判断传输已完成,完成I/O请求包,实现给存储器FIFO发一半容量的数据。
存储器FIFO中的数据不断向端口输出,当数据少于半满时,硬件产生中断信号,此为本地中断,数据传输进入中断处理,如图3中灰色底纹流程所示。先由中断服务例程ISR根据PCI9054芯片的DMA中断寄存器的比特发生变化,判断中断类型是DMA传输完成的中断或是硬件的本地中断;
如果是DMA传输完成的中断,则调用Continue函数回到DMA的回调函数OnDmaReady,判断传输已完成并结束本次DMA传输。
如果是硬件的本地中断,中断延迟过程调用DPC例程通知应用程序发送数据,再次调用驱动程序进入上述数据的DMA传输流程;使传输过程循环进行,直到停止播放为止。
二、码流采集卡驱动程序的DMA数据传输及中断处理实施例:
参见图4,码流采集卡从端口不断接收码流,存储器FIFO中的数据量增加,当存储器FIFO达到半满时产生本地中断,进入中断处理过程,如图4中灰色底纹流程所示。先由中断服务例程ISR根据PCI9054芯片的DMA中断寄存器的比特发生变化,判断中断类型是DMA传输完成的中断或是硬件的本地中断;
如果是DMA传输完成的中断,则调用Continue函数回到DMA的回调函数OnDmaReady,判断传输已完成并结束本次DMA传输。
如果是硬件的本地中断,中断延迟过程调用DPC例程通知应用程序接收数据,再次调用驱动程序进入数据的DMA传输流程。
DMA传输步骤如下:
[1]对开发软件DriverStudio提供的KDmaTransfer类的实例初始化。驱动程序选用“公共缓冲区”的内存传输方式,满足每次DMA传输256KBytes数据以及数据传输频繁的要求;
[2]编写KDmaTransfer类实例的回调函数OnDmaReady,由宏DMAREADY_CALLBACK定义,回调函数首先要调用KDmaTransfer类的成员函数BytesRemaining,判断其返回值是否为0,检查数据是否已经传输完成;
[3]如果传输已完成,则调用KDmaTransfer类的成员函数Terminate并且完成相应的I/O请求包IRP;如果未完成,则执行数据传输,回调函数通知硬件开始传输数据进入StartDMA例程启动DMA传输,不需要等待数据传输完成,图4中用断划线表示。
[4]当DMA传输完成,DMA中断控制器产生中断,驱动程序的中断服务例程ISR将做出响应,判断中断类型为DMA中断,然后在中断延迟过程调用DPC例程中调用Continue函数进而回到DMA的回调函数OnDmaReady,判断传输已完成,完成I/O请求包,结束本次DMA传输。
上述DMA传输流程将存储器FIFO中的码流数据传给应用程序,完成码流采集卡数据的传输。存储器FIFO中的数据被读出少于半满;由于硬件从端口不断接收码流,存储器FIFO中的数据经过积累又达到半满,又产生本地中断,使上述数据传输过程循环进行,直到收到应用程序停止采集的命令为止。
码流播放卡和码流采集卡是自主开发的设备,为了使操作系统和本发明的驱动程序连接起来,需要修改驱动程序安装文件。微软定义了一系列全局唯一标识符GUID和设备类名,选择自主开发的设备要加入的类,将驱动程序安装文件中的“Class”和“ClassGUID”修改为微软定义的相应的设备类名和全局唯一标识符GUID;修改设备管理器中设备显示的图标;修改驱动安装文件中的厂商标识符、设备标识符、提供商以及制造商信息。
另外还要修改驱动安装文件中的Manufacturer and Models Sections节中PCI\VEN_aaaa&DEV_bbbb&SUBSYS_cccccccc&REV_dd,其中aaaa是厂商标识符,bbbb是设备标识符,cccccccc是设备报告的子系统id,dd是修订号,一般只用到厂商标识符和设备标识符,安装文件中的这些内容要和硬件EEPROM中的一致。码流播放卡驱动安装文件修改为PCI\VEN_10B5&DEV_7820&SUBSYS_00000000&REV_00;码流采集卡驱动安装文件修改为PCI\VEN_10B5&DEV_6820&SUBSYS_00000000&REV_00。使应用程序和驱动程序连接并支持驱动程序正常工作。
Claims (2)
1.一种码流播放卡和码流采集卡的驱动方法,其码流数据在硬件和应用程序之间的传输采用直接存储器存取DMA传输模式;通过驱动程序的中断服务例程ISR判断中断类型,并由中断延迟过程调用DPC例程分别对各中断类型进行处理;通过应用程序和驱动程序的通信,实现应用程序对硬件的控制;
所述码流数据采用直接存储器存取DMA传输的具体过程如下:
[1]对软件DriverStudio提供的KDmaTransfer类的实例初始化,选用公共缓冲区的内存传输方式,满足码流数据高速、频繁传输数据的要求;
[2]编写KDmaTransfer类实例的回调函数OnDmaReady,回调函数OnDmaReady判断数据传输是否完成;如果数据传输完成,则完成相应的I/O请求包;如果数据传输未完成,则进入StartDMA例程,启动DMA传输;
[3]DMA传输完成,DMA中断控制器产生中断,驱动程序的中断服务例程ISR做出响应,判断中断类型为DMA中断,则中断延迟过程调用DPC例程调用Continue函数,再回到DMA的回调函数OnDmaReady,由回调函数OnDmaReady判断传输完成,结束本次DMA传输;
所述中断类型的判断及处理的具体步骤如下:
[1]中断类型判断,驱动程序的中断服务例程ISR根据PCI9054芯片的DMA中断寄存器的比特发生变化,判断中断类型是DMA传输完成的中断或是硬件的本地中断;
[2]根据所判断的中断类型,中断延迟过程调用DPC例程分别进行如下处理:
——硬件的本地中断,通知应用程序再次调用驱动程序进入DMA传输流程;
——DMA传输完成的中断,则调用Continue函数进而回到DMA的回调函数OnDmaReady,由回调函数OnDmaReady判断出传输已完成就结束本次DMA传输。
2.根据权利要求1所述的码流播放卡和码流采集卡的驱动方法,其特征在于所述应用程序和驱动程序通信是在两者之间约定一系列相同的I/O控制代码,应用程序将I/O控制代码命令发给驱动程序,驱动程序根据I/O控制代码对硬件执行相应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100418028A CN1333333C (zh) | 2005-03-16 | 2005-03-16 | 码流播放卡和码流采集卡的驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100418028A CN1333333C (zh) | 2005-03-16 | 2005-03-16 | 码流播放卡和码流采集卡的驱动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1684030A CN1684030A (zh) | 2005-10-19 |
CN1333333C true CN1333333C (zh) | 2007-08-22 |
Family
ID=35263391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100418028A Expired - Fee Related CN1333333C (zh) | 2005-03-16 | 2005-03-16 | 码流播放卡和码流采集卡的驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1333333C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101052031B (zh) * | 2007-05-23 | 2011-08-10 | 中兴通讯股份有限公司 | 苹果计算机与无线通讯终端进行数据交互的方法 |
CN101521726B (zh) * | 2008-12-19 | 2013-07-10 | 康佳集团股份有限公司 | 一种网络电视机及其数据报的捕获方法 |
CN101634975B (zh) * | 2009-08-20 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种实现dma数据传输的方法及装置 |
CN102662894B (zh) * | 2012-03-23 | 2015-04-22 | 中国航天科技集团公司第九研究院第七七一研究所 | 总线从单元通用接口 |
US9967768B2 (en) * | 2012-10-01 | 2018-05-08 | Telefonaktiebolaget Lm Ericsson (Publ) | Apparatus and method relating to the streaming of content to one or more user devices |
CN106227591B (zh) * | 2016-08-05 | 2019-10-25 | 中国科学院计算技术研究所 | 在异构多核片上系统上进行无线通信调度的方法和装置 |
-
2005
- 2005-03-16 CN CNB2005100418028A patent/CN1333333C/zh not_active Expired - Fee Related
Non-Patent Citations (4)
Title |
---|
MPEG-2传输流实时解码及码流发送卡的设计 王兴东 余松煜 王峰,红外与激光工程,第31卷第1期 2002 * |
MPEG-2传输流实时解码及码流发送卡的设计 王兴东 余松煜 王峰,红外与激光工程,第31卷第1期 2002;基于PCI总线图像采集卡的数字视频监控系统 邢宏伟 谢桂海 王寅龙,军械工程学院学报,第14卷第4期 2002;基于视频采集卡的多通道电视监播系统 黄忠宝 陈国武,现代电视技术 2004 * |
基于PCI总线图像采集卡的数字视频监控系统 邢宏伟 谢桂海 王寅龙,军械工程学院学报,第14卷第4期 2002 * |
基于视频采集卡的多通道电视监播系统 黄忠宝 陈国武,现代电视技术 2004 * |
Also Published As
Publication number | Publication date |
---|---|
CN1684030A (zh) | 2005-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101065740B (zh) | USB便携式(On-The-Go)控制器 | |
US7752342B2 (en) | Interface integrated circuit device for a USB connection | |
CN101118523B (zh) | 存储器访问控制装置及其方法、存储器访问控制器及其方法 | |
US7725630B2 (en) | Protocol adapter for passing diagnostic messages between a host computer and vehicle networks operating in a J1989 or J1708 protocol | |
CN1333333C (zh) | 码流播放卡和码流采集卡的驱动方法 | |
WO2022213832A1 (zh) | 计算机设备、虚拟化加速设备、远程控制方法及存储介质 | |
CN102103566A (zh) | 闪存存储器接口 | |
CN111666242B (zh) | 一种基于飞腾平台lpc总线的多路通信系统 | |
TW200405172A (en) | Bus connection system | |
US6785760B2 (en) | Performance of a PCI-X to infiniband bridge | |
CN111931442B (zh) | Fpga内嵌flash控制器及电子装置 | |
CN101436171A (zh) | 模块化通信控制系统 | |
CN111124985A (zh) | 一种移动终端只读控制方法及装置 | |
CN100395742C (zh) | 可快速地于不同储存装置间传输数据的计算机系统 | |
US8074232B2 (en) | Method for improving the communication of the human interface device | |
CN109992556A (zh) | 一种i2c驱动方法和装置 | |
CN105718396A (zh) | 一种大数据主设备传输的i2c总线装置及其通讯方法 | |
CN1969268B (zh) | 主机控制器、总线通信设备和操作主机控制器的方法 | |
EP4323880B1 (en) | I2c bus architecture using shared clock and dedicated data lines | |
US8214569B2 (en) | Method for reading and writing non-standard register of serial advanced technology attachment (SATA) device | |
CN100462952C (zh) | 接口可配置的通用串行总线控制器 | |
CN101458671B (zh) | 外设访问控制方法、装置与系统 | |
CN109298683B (zh) | 支持多种总线驱动器通讯协议的数控系统 | |
CN111221753A (zh) | 多主机控制器及包括所述多主机控制器的半导体装置 | |
JPH10283284A (ja) | 通信制御方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070822 Termination date: 20140316 |