CN102495817A - 一种基于pci总线的高速数据传输方法 - Google Patents
一种基于pci总线的高速数据传输方法 Download PDFInfo
- Publication number
- CN102495817A CN102495817A CN2011104064367A CN201110406436A CN102495817A CN 102495817 A CN102495817 A CN 102495817A CN 2011104064367 A CN2011104064367 A CN 2011104064367A CN 201110406436 A CN201110406436 A CN 201110406436A CN 102495817 A CN102495817 A CN 102495817A
- Authority
- CN
- China
- Prior art keywords
- dma
- data transmission
- interrupt
- speed data
- data
- 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.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明公开了一种基于PCI总线的高速数据传输方法,其实现高速数据传输的驱动程序包括步骤:初始化驱动程序,分配DMA公用缓冲区用作数据缓冲队列;设置中断控制寄存器,使能设备中断;等待中断触发,若为设备中断,检查DMA是否处于数据传输完成状态,若数据传输未完成则返回重新等待中断触发,数据传输完成则禁止设备中断,配置DMA控制器,启动DMA操作,再使能设备中断;若为DMA传输完成中断,则清除DMA中断,重置数据缓冲队列头指针,再使能DMA传输完成中断。通过设置中断控制寄存器可以启动和禁止数据传输,使能中断后驱动程序响应中断信号,将设备中的数据连续读入数据缓冲队列,从而使数据传输速率得到极大提高。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种基于PCI总线的高速数据传输方法。
背景技术
计算机总线是计算机各部件之间进行信息传输的公共通道。微型计算机系统中广泛采用总线结构,其优点是系统成本低、组态灵活、维修方便。采用总线标准设计、生产的硬件模块兼容性强,并通过系统总线可以方便地组合在一起,以构成满足不同需要的微机系统。
计算机总线技术包括通道控制功能、使用方法、仲裁方法和传输方式等。任何系统的研制和外围模块的开发,都必须服从一定的总线规范。总线的结构不同,性能差别很大。计算机总线的主要职能是负责计算机各模块间的信息传输,因此,对总线性能的衡量,也是围绕着这一职能而定义、测试比较的。总线的传输率是其性能的主要技术指标。
随着计算机技术的不断发展,微型计算机的体系结构发生了显著的变化。如CPU运行速度的提高,多处理器结构的出现,高速缓冲存储器的广泛采用等,都要求有高速的总线来传输数据,从而出现了多总线结构。多总线结构是指CPU与存储器、I/O等设备之间有两种以上的总线,这样可以将慢速的设备和快速的设备挂在不同的总线上,减少总线竞争现象,使系统的效率大大提高。
在多总线结构中,局部总线的发展最令人瞩目。局部总线是指来自处理器的延伸线路,与处理器同步操作。外部设备如果直接挂到局部总线上,就能以CPU的速度运行。由于局部总线具有极高的数据传输率,因此局部总线在CPU与高速缓冲存储器(Cache)、CPU与高速图形卡等需要高速传输信息的场合得到了广泛的应用。
PCI是先进的高性能局部总线、可同时支持多组外围设备。PCI局部总线不受制于处理器,为中央处理器及高速外围设备提供一座桥梁,更可作为总线之间的交通指挥员,提高数据吞吐量。PCI采用高度综合化的局部总线结构。其优化的设计可充分利用当今最先进的微处理器及个人电脑技术,它可确保电脑部件、附加卡及系统之间的运作可靠,并能完全兼容现有的ISA/EISA/Micro Channel扩充总线。总之,PCI总线具有高性能、线性突发传输、极小的存取延误、采用总线主控和同步操作、不受处理器限制、适合各种机型、兼容性强等特点。
实现PCI总线高速数据传输需要高效率的驱动程序支持,在驱动程序中使用接口芯片的DMA功能可以大幅提升数据传输速度,现有的驱动实现方法都使用直接存储器访问方式提高数据传输速率。
目前,大部分PCI设备上都带有较大的动态存储器作为数据缓冲空间,用以提高数据的传输效率,但是如果传输的数据为实时数据(如语音和视频),采用上述方式处理数据就会带来一定的时延;减小设备缓冲空间可以降低时延,但应用程序需要频繁读取数据,从而影响数据传输速度。如果在驱动程序中使用数据缓冲队列,当设备发出数据传输请求时,由驱动程序响应设备请求,并将数据读入数据缓冲队列,这样不但可以提高数据传输速度,而且可以降低采用大缓冲机制给实时数据处理带来的时延。
发明内容
本发明的目的在于克服现有技术中所存在的上述不足,提供一种基于PCI总线的高速数据传输方法。该方法可降低系统时间开销,大幅提升数据传输速度。
为了实现上述发明目的,本发明提供了以下技术方案:
一种基于PCI总线的高速数据传输方法,该方法实现高速数据传输的驱动程序包括以下步骤:
步骤1:初始化驱动程序,分配DMA公用缓冲区用作数据缓冲队列,进入步骤2;
步骤2:设置中断控制寄存器,使能设备中断,进入步骤3;
步骤3:等待中断触发,如果有中断触发,进入中断处理程序,若为设备中断触发,进入步骤4,若为DMA传输完成中断,进入步骤6;
步骤4:检查DMA传输是否完成,如果传输未完成返回步骤3,反之进入步骤5;
步骤5:禁止设备中断,配置DMA控制器,启动DMA操作,使能设备中断,返回步骤3;
步骤6:禁止DMA传输完成中断,清除中断,重置数据缓冲队列的头指针,使能DMA传输完成中断,返回步骤3;
根据本发明的实施例,步骤1所述的数据缓冲队列包括DMA数据缓冲队列,以及用作驱动程序和应用程序通信的数据缓冲对列。
根据本发明的实施例,所述步骤1中分配DMA公用缓冲区用作数据缓冲队列的方法是:获取DMA公用缓冲区物理地址用作传递给DMA控制器的参数。
根据本发明的实施例,所述步骤5中配置DMA控制器包括:配置DMA工作模式寄存器,配置DMA传输地址、数据长度和方向寄存器,配置DMA命令状态寄存器,配置PCI存储空间物理地址和配置置位DMA启动标志位。
根据本发明的实施例,配置DMA工作模式寄存器的操作包括:设置总线宽度、本地总线地址模式和使能DMA操作结束中断。
与现有技术相比,本发明的有益效果:本发明的基于PCI总线的高速数据传输方法,驱动程序开始读取数据后,将持续响应设备请求,从设备读取的数据写入数据缓冲队列,直到设备中断被禁止,因为驱动程序具有很高的系统优先级,使数据传输速率得到了极大的提高,从而也改善了系统性能。
附图说明:
图1为本发明方法实现高速数据传输的驱动程序流程图。
具体实施方式
下面结合试验例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。
实现PCI总线高速数据传输需要高效率的驱动程序。如图1所示的本发明基于PCI总线的高速数据传输方法的驱动程序工作流程图,该驱动程序包括如下步骤:
初始化驱动程序,分配DMA公用缓冲区用作数据缓冲队列;设置中断控制寄存器,使能设备中断;驱动程序工作时等待中断触发,如果有中断触发,进入中断服务程序;
若为设备中断触发,则检查DMA是否处于数据传输完成状态,如果数据传输未完成,则返回重新等待中断触发;如果数据传输完成,则先禁止设备中断,然后配置DMA控制器。配置DMA控制器包括配置DMA工作模式寄存器,配置DMA传输地址、数据长度和方向寄存器,配置DMA命令状态寄存器,配置PCI存储空间物理地址和配置置位DMA启动标志位,其中,配置DMA工作模式寄存器的操作包括:设置总线宽度、本地总线地址模式和使能DMA操作结束中断。再启动DMA操作,然后使能设备中断;
若为DMA传输完成中断触发,则禁止DMA传输完成中断,清除DMA中断,重新设置数据缓冲队列的头指针,再使能DMA传输完成中断;
驱动程序依照上述步骤循环运行,将设备存储空间的数据连续读到数据缓冲队列;应用程序读取数据时,检查数据缓冲队列的头指针和尾指针是否相等,如果数据缓冲队列的头指针和尾指针不相等,则将数据缓冲队列中的数据拷贝到用户缓冲区。
本发明的基于PCI总线的高速数据传输方法,通过设置中断控制寄存器可以启动和禁止数据传输,使能中断后,驱动程序响应中断信号,将设备中的数据连续读入数据缓冲队列,从而使数据传输速率得到了极大的提高;禁止中断后,驱动程序则停止从设备存储空间读取数据。
Claims (5)
1.一种基于PCI总线的高速数据传输方法,其特征在于,该方法实现高速数据传输的驱动程序包括以下步骤:
步骤1:初始化驱动程序,分配DMA公用缓冲区用作数据缓冲队列,进入步骤2;
步骤2:设置中断控制寄存器,使能设备中断,进入步骤3;
步骤3:等待中断触发,如果有中断触发,进入中断处理程序,若为设备中断触发,进入步骤4,若为DMA传输完成中断,进入步骤6;
步骤4:检查DMA传输是否完成,如果传输未完成返回步骤3,反之进入步骤5;
步骤5:禁止设备中断,配置DMA控制器,启动DMA操作,使能设备中断,返回步骤3;
步骤6:禁止DMA传输完成中断,清除DMA中断,重置数据缓冲队列的头指针,使能DMA传输完成中断,返回步骤3。
2.根据权利要求1所述的基于PCI总线的高速数据传输方法,其特征在于,步骤1所述的数据缓冲队列包括DMA数据缓冲队列,以及用作驱动程序和应用程序通信的数据缓冲对列。
3.根据权利要求1所述的基于PCI总线的高速数据传输方法,其特征在于,所述步骤1中分配DMA公用缓冲区用作数据缓冲队列的方法是:获取DMA公用缓冲区物理地址用作传递给DMA控制器的参数。
4.根据权利要求1所述的基于PCI总线的高速数据传输方法,其特征在于,所述步骤5中配置DMA控制器包括:配置DMA工作模式寄存器,配置DMA传输地址、数据长度和传输方向寄存器,配置DMA命令状态寄存器,配置PCI总线存储空间物理地址和配置置位DMA启动标志位。
5.根据权利要求4所述的基于PCI总线的高速数据传输方法,其特征在于,配置DMA工作模式寄存器的操作包括:设置总线宽度、本地总线地址模式和使能DMA传输完成中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104064367A CN102495817A (zh) | 2011-12-08 | 2011-12-08 | 一种基于pci总线的高速数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104064367A CN102495817A (zh) | 2011-12-08 | 2011-12-08 | 一种基于pci总线的高速数据传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102495817A true CN102495817A (zh) | 2012-06-13 |
Family
ID=46187642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104064367A Pending CN102495817A (zh) | 2011-12-08 | 2011-12-08 | 一种基于pci总线的高速数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495817A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646001A (zh) * | 2013-12-12 | 2014-03-19 | 北京经纬恒润科技有限公司 | Dma数据传输控制方法及系统 |
CN108228490A (zh) * | 2018-01-26 | 2018-06-29 | 武汉精测电子集团股份有限公司 | 一种基于pcie卡高速数据传输的驱动方法 |
CN110825674A (zh) * | 2019-10-30 | 2020-02-21 | 北京计算机技术及应用研究所 | 基于fpga的pcie dma交互系统及交互方法 |
CN111427823A (zh) * | 2020-03-30 | 2020-07-17 | 天津光电通信技术有限公司 | 支持pc与fpga通过pcie通信的驱动设计方法 |
CN112231003A (zh) * | 2020-10-15 | 2021-01-15 | 天津津航计算技术研究所 | 一种VxWorks系统下CAN设备管理方法 |
CN115858414A (zh) * | 2022-12-13 | 2023-03-28 | 东信和平科技股份有限公司 | 基于中断和缓冲区的spi数据传输方法、系统和控制器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996930A (zh) * | 2006-01-06 | 2007-07-11 | 惠普开发有限公司 | 用于通信接口的队列头高速缓存 |
US20080168191A1 (en) * | 2007-01-10 | 2008-07-10 | Giora Biran | Barrier and Interrupt Mechanism for High Latency and Out of Order DMA Device |
CN201583943U (zh) * | 2009-10-26 | 2010-09-15 | 福州瑞芯微电子有限公司 | 音频soc芯片的高效低功耗dma的ip结构 |
CN102231142A (zh) * | 2011-07-21 | 2011-11-02 | 浙江大学 | 一种带有仲裁器的多通道dma控制器 |
-
2011
- 2011-12-08 CN CN2011104064367A patent/CN102495817A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1996930A (zh) * | 2006-01-06 | 2007-07-11 | 惠普开发有限公司 | 用于通信接口的队列头高速缓存 |
US20080168191A1 (en) * | 2007-01-10 | 2008-07-10 | Giora Biran | Barrier and Interrupt Mechanism for High Latency and Out of Order DMA Device |
CN201583943U (zh) * | 2009-10-26 | 2010-09-15 | 福州瑞芯微电子有限公司 | 音频soc芯片的高效低功耗dma的ip结构 |
CN102231142A (zh) * | 2011-07-21 | 2011-11-02 | 浙江大学 | 一种带有仲裁器的多通道dma控制器 |
Non-Patent Citations (4)
Title |
---|
《军事通信技术》 20040325 王孝国,王凌,张雄伟 "高速数据采集系统中的PCI中断处理机制和DMA编程" 第44-47页 1-5 第25卷, 第1期 * |
《电脑开发与应用》 20091105 尹朕昊,詹亚锋 "PCI总线中DMA高速数据传输的设计与实现" 第31-32页 1-5 第22卷, 第11期 * |
尹朕昊,詹亚锋: ""PCI总线中DMA高速数据传输的设计与实现"", 《电脑开发与应用》 * |
王孝国,王凌,张雄伟: ""高速数据采集系统中的PCI中断处理机制和DMA编程"", 《军事通信技术》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646001A (zh) * | 2013-12-12 | 2014-03-19 | 北京经纬恒润科技有限公司 | Dma数据传输控制方法及系统 |
CN103646001B (zh) * | 2013-12-12 | 2016-07-06 | 北京经纬恒润科技有限公司 | Dma数据传输控制方法及系统 |
CN108228490A (zh) * | 2018-01-26 | 2018-06-29 | 武汉精测电子集团股份有限公司 | 一种基于pcie卡高速数据传输的驱动方法 |
CN108228490B (zh) * | 2018-01-26 | 2022-11-01 | 武汉精测电子集团股份有限公司 | 一种基于pcie卡高速数据传输的驱动方法 |
CN110825674A (zh) * | 2019-10-30 | 2020-02-21 | 北京计算机技术及应用研究所 | 基于fpga的pcie dma交互系统及交互方法 |
CN110825674B (zh) * | 2019-10-30 | 2021-02-12 | 北京计算机技术及应用研究所 | 基于fpga的pcie dma交互系统及交互方法 |
CN111427823A (zh) * | 2020-03-30 | 2020-07-17 | 天津光电通信技术有限公司 | 支持pc与fpga通过pcie通信的驱动设计方法 |
CN111427823B (zh) * | 2020-03-30 | 2023-05-02 | 天津光电通信技术有限公司 | 支持pc与fpga通过pcie通信的驱动设计方法 |
CN112231003A (zh) * | 2020-10-15 | 2021-01-15 | 天津津航计算技术研究所 | 一种VxWorks系统下CAN设备管理方法 |
CN115858414A (zh) * | 2022-12-13 | 2023-03-28 | 东信和平科技股份有限公司 | 基于中断和缓冲区的spi数据传输方法、系统和控制器 |
CN115858414B (zh) * | 2022-12-13 | 2024-10-01 | 东信和平科技股份有限公司 | 基于中断和缓冲区的spi数据传输方法、系统和控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101556565B (zh) | 嵌入式处理器的片上高性能dma | |
CN112204524B (zh) | 用于硬件加速的硬件资源的嵌入式调度 | |
US5625779A (en) | Arbitration signaling mechanism to prevent deadlock guarantee access latency, and guarantee acquisition latency for an expansion bridge | |
CN102077181B (zh) | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 | |
CN102414671B (zh) | 对于不同源的分级内存仲裁技术 | |
CN102495817A (zh) | 一种基于pci总线的高速数据传输方法 | |
US7797467B2 (en) | Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features | |
CN1866230B (zh) | 一种存储器仲裁器、处理器系统及存储器仲裁方法 | |
US8433833B2 (en) | Dynamic reassignment for I/O transfers using a completion queue | |
US9128920B2 (en) | Interrupt handling systems and methods for PCIE bridges with multiple buses | |
US8166223B2 (en) | Apparatuses to provide a message signaled interrupt to generate a PCI express interrupt | |
US20080133787A1 (en) | Method and apparatus for host messaging unit for peripheral component interconnect busmaster devices | |
CN103077132B (zh) | 一种高速缓存处理方法及协议处理器高速缓存控制单元 | |
US9552308B2 (en) | Early wake-warn for clock gating control | |
TW200534110A (en) | A method for supporting improved burst transfers on a coherent bus | |
CN102693162A (zh) | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 | |
WO2007005815A1 (en) | Dynamic bus parking | |
EP3001323B1 (en) | Serial peripheral interface | |
KR20160051883A (ko) | 가상 재시도 큐 | |
CN103593306A (zh) | 一种协议处理器Cache控制单元的设计方法 | |
US11487684B2 (en) | Power management in a seamlessly integrated microcontroller chip | |
WO2013048943A1 (en) | Active state power management (aspm) to reduce power consumption by pci express components | |
US5768545A (en) | Collect all transfers buffering mechanism utilizing passive release for a multiple bus environment | |
US8943238B2 (en) | Operations using direct memory access | |
US7779188B2 (en) | System and method to reduce memory latency in microprocessor systems connected with a bus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120613 |