CN107967225A - 数据传输方法、装置、计算机可读存储介质和终端设备 - Google Patents
数据传输方法、装置、计算机可读存储介质和终端设备 Download PDFInfo
- Publication number
- CN107967225A CN107967225A CN201711165798.5A CN201711165798A CN107967225A CN 107967225 A CN107967225 A CN 107967225A CN 201711165798 A CN201711165798 A CN 201711165798A CN 107967225 A CN107967225 A CN 107967225A
- Authority
- CN
- China
- Prior art keywords
- write
- read
- buffering area
- destination buffer
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/287—Multiplexed DMA
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明属于计算机领域,提供了一种数据传输方法、装置、计算机可读存储介质和终端设备。所述方法包括:配置宽带卫星调制解调卡读写缓冲区的相关信息以及宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的DMA控制器通道;当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,将第一写源缓冲区和第二写源缓冲区中数据交替写入至第一写目标缓冲区和第二写目标缓冲区;当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读请求时,将第一读源缓冲区和第二读源缓冲区中数据交替读取至第一读目标缓冲区和第二读目标缓冲区。本发明降低了宽带卫星调制解调卡和计算机终端之间高速信号连续传输的实现成本。
Description
技术领域
本发明属于计算机领域,尤其涉及一种数据传输方法、装置、计算机可读存储介质和终端设备。
背景技术
宽带卫星调制解调卡是安装在计算机系统上的周边设备,其一方面可以完成下行卫星信号的采集、解调、译码和传输,最终实现在计算机系统上处理面向用户的所有业务;另一方面可以完成上行卫星信号的用户业务处理、传输、编码、调制和发射。由于宽带卫星调制解调卡具有上、下行信号传输速度快、数据量大的特性,应用PCIe总线技术成为实现宽带卫星调制解调卡与计算机终端进行数据传输和交互的必然选择,因此,如何解决宽带卫星调制解调卡和计算机终端之间高速信号的连续传输是业界研究的关键问题。
在以中央处理单元(Central Processing Unit,CPU)为主控设备的信息处理系统(例如,计算机)中,数据的传输通常采用轮询、中断和直接存储器存取(Direct MemoryAccess,DMA)等三种处理方式,其中,DMA是指数据传输时不需要CPU的介入,I/O设备和存储器之间直接进行大量数据信息交换的传输方式。由于是由硬件设备代替CPU接管总线并负责数据传输,省去了由CPU负责传输时所必须的寻址指令,因此,与轮询和中断的处理方式相比,DMA传输方式具有传输速度快、I/O响应时间短以及CPU额外开销小的明显优点,使整个系统的性能大大提高。
考虑到当执行高速传输时,若没有板载双倍速率(Double Data Rate,DDR)同步动态随机存储器(SDRAM,Synchronous Dynamic Random Access Memory)作为缓存,数据就会溢出,不能实现连续传输,因此,现有DMA方式需要在宽带卫星调制解调卡中额外增添一定容量的硬件存储器即DDR颗粒作为缓存。然而,由于DDR颗粒价格昂贵,增加了这一硬件后,在实现时不仅使得系统的价格成本偏高,同时还增加了开发难度,因此,就宽带卫星调制解调卡和计算机终端之间高速信号的连续传输问题而言,现有DMA方式的解决成本较高。
发明内容
本发明的目的在于提供一种数据传输方法、装置、计算机可读存储介质和终端设备,以降低宽带卫星调制解调卡和计算机终端之间高速信号连续传输的实现成本。
本发明第一方面提供一种数据传输方法,所述方法包括:
配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,所述宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
本发明第二方面提供一种数据传输装置,所述装置包括:
配置模块,用于配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,所述宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;
交替写入模块,用于当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;
交替读取模块,用于当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
本发明第三方面提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下方法的步骤:
配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,所述宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
结合本发明第三方面,在本发明第三方面的第一种实施方式中,所述通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区,包括:通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区并写入完成后,在所述第一写目标缓冲区中数据被读出时,通过设置所述写通道将所述第二写源缓冲区中数据写入至所述第二写目标缓冲区并写入完成后,在所述第二写目标缓冲区中数据被读出时,通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区;
所述通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区,包括:通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区并在读取完成后,在所述第一读目标缓冲区中数据被读出时,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区并在读取完成后,在所述第二读目标缓冲区中数据被读出时,通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区。
结合本发明第三方面的第一种实施方式,在本发明第三方面的第二种实施方式中,所述通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区并写入完成后,在所述第一写目标缓冲区中数据被读出时,通过设置所述写通道将所述第二写源缓冲区中数据写入至所述第二写目标缓冲区并写入完成后,在所述第二写目标缓冲区中数据被读出时,通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区,包括:
在执行向所述第一写目标缓冲区或第二写目标缓冲区写数据的操作时,查询上下文区,所述上下文区保存有所述第一写目标缓冲区或第二写目标缓冲区的地址以及所述第一写目标缓冲区或第二写目标缓冲区的被写满后触发中断的写目标缓冲区的信息;
若所述上下文区中保存有所述第一写目标缓冲区的信息,则在所述第一写目标缓冲区中数据被读出时,根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置所述写通道将所述第二写源缓冲区的数据写入至所述第二写目标缓冲区;
若所述上下文区中保存有所述第二写目标缓冲区的信息,则在所述第二写目标缓冲区中数据被读出时,根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置所述写通道将所述第一写源缓冲区的数据写入至所述第一写目标缓冲区;
所述通过所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区并在读取完成后,在所述第一读目标缓冲区中数据被读出时,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区并在读取完成后,在所述第二读目标缓冲区中数据被读出时,通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区,包括:
在执行从所述第一读源缓冲区或第二读源缓冲区读取数据的操作时,查询所述上下文区,所述上下文区保存有所述第一读源缓冲区或第二读源缓冲区的地址以及所述第一读源缓冲区或第二读源缓冲区被读空后触发中断的读源缓冲区的信息;
若所述上下文区中保存有所述第一读源缓冲区的信息,则在所述第一读目标缓冲区中数据被读出时,根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区;
若所述上下文区中保存有所述第二读源缓冲区的信息,则在所述第二读目标缓冲区中数据被读出时,根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置所述读通道从所述第一读源缓冲区的读取数据至所述第一读目标缓冲区。
结合本发明第三方面的第二种实施方式,在本发明第三方面的第三种实施方式中,所述根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置所述写通道将所述第一写源缓冲区的数据写入至所述第一写目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第一写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第一写目标缓冲区写入数据的第一长度;将所述第一写源缓冲区和第一写目标缓冲区对应的第一DMA写请求线配置到所述写通道;设置DMA控制器根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址将所述第一写源缓冲区中所述第一长度的数据写入至所述第一写目标缓冲区,通过所述第一DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址,通过所述写通道将所述第二写源缓冲区的数据写入至所述第二写目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第二写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第二写目标缓冲区写入数据的第二长度;将所述第二写源缓冲区和第二写目标缓冲区对应的第二DMA写请求线配置到所述写通道;设置DMA控制器根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址将所述第二写源缓冲区中所述第二长度的数据写入至所述第二写目标缓冲区,通过所述第二DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置所述读通道从所述第一读源缓冲区的读取数据至所述第一读目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第一读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第一读源缓冲区读取数据的第三长度;将所述第一读源缓冲区和第一读目标缓冲区对应的第一DMA读请求线配置到所述读通道;设置DMA控制器根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址从所述第一读源缓冲区中读取所述第三长度的数据至所述第一读目标缓冲区,通过所述第一DMA读请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第二读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第二读源缓冲区读取数据的第四长度;将所述第二读源缓冲区和第二读目标缓冲区对应的第二DMA读请求线配置到所述读通道;设置DMA控制器根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址从所述第二读源缓冲区中读取所述第四长度的数据至所述第二读目标缓冲区,通过所述第二DMA读请求线通知所述DMA控制器本次DMA传输是否完成。
本发明第四方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下方法的步骤:
配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,所述宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
结合本发明第四方面,在本发明第四方面的第一种实施方式中,所述通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区,包括:通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区并写入完成后,在所述第一写目标缓冲区中数据被读出时,通过设置所述写通道将所述第二写源缓冲区中数据写入至所述第二写目标缓冲区并写入完成后,在所述第二写目标缓冲区中数据被读出时,通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区;
所述通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区,包括:通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区并在读取完成后,在所述第一读目标缓冲区中数据被读出时,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区并在读取完成后,在所述第二读目标缓冲区中数据被读出时,通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区。
结合本发明第四方面的第一种实施方式,在本发明第四方面的第二种实施方式中,所述通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区并写入完成后,在所述第一写目标缓冲区中数据被读出时,通过设置所述写通道将所述第二写源缓冲区中数据写入至所述第二写目标缓冲区并写入完成后,在所述第二写目标缓冲区中数据被读出时,通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区,包括:
在执行向所述第一写目标缓冲区或第二写目标缓冲区写数据的操作时,查询上下文区,所述上下文区保存有所述第一写目标缓冲区或第二写目标缓冲区的地址以及所述第一写目标缓冲区或第二写目标缓冲区的被写满后触发中断的写目标缓冲区的信息;
若所述上下文区中保存有所述第一写目标缓冲区的信息,则在所述第一写目标缓冲区中数据被读出时,根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置所述写通道将所述第二写源缓冲区的数据写入至所述第二写目标缓冲区;
若所述上下文区中保存有所述第二写目标缓冲区的信息,则在所述第二写目标缓冲区中数据被读出时,根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置所述写通道将所述第一写源缓冲区的数据写入至所述第一写目标缓冲区;
所述通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区并在读取完成后,在所述第一读目标缓冲区中数据被读出时,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区并在读取完成后,在所述第二读目标缓冲区中数据被读出时,通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区,包括:
在执行从所述第一读源缓冲区或第二读源缓冲区读取数据的操作时,查询所述上下文区,所述上下文区保存有所述第一读源缓冲区或第二读源缓冲区的地址以及所述第一读源缓冲区或第二读源缓冲区被读空后触发中断的读源缓冲区的信息;
若所述上下文区中保存有所述第一读源缓冲区的信息,则在所述第一读目标缓冲区中数据被读出时,根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区;
若所述上下文区中保存有所述第二读源缓冲区的信息,则在所述第二读目标缓冲区中数据被读出时,根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置所述读通道从所述第一读源缓冲区的读取数据至所述第一读目标缓冲区。
结合本发明第四方面的第二种实施方式,在本发明第四方面的第三种实施方式中,所述根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置所述写通道将所述第一写源缓冲区的数据写入至所述第一写目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第一写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第一写目标缓冲区写入数据的第一长度;将所述第一写源缓冲区和第一写目标缓冲区对应的第一DMA写请求线配置到所述写通道;设置DMA控制器根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址将所述第一写源缓冲区中所述第一长度的数据写入至所述第一写目标缓冲区,通过所述第一DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址,通过所述写通道将所述第二写源缓冲区的数据写入至所述第二写目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第二写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第二写目标缓冲区写入数据的第二长度;将所述第二写源缓冲区和第二写目标缓冲区对应的第二DMA写请求线配置到所述写通道;设置DMA控制器根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址将所述第二写源缓冲区中所述第二长度的数据写入至所述第二写目标缓冲区,通过所述第二DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置所述读通道从所述第一读源缓冲区的读取数据至所述第一读目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第一读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第一读源缓冲区读取数据的第三长度;将所述第一读源缓冲区和第一读目标缓冲区对应的第一DMA读请求线配置到所述读通道;设置DMA控制器根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址从所述第一读源缓冲区中读取所述第三长度的数据至所述第一读目标缓冲区,通过所述第一DMA读请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址,通过所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第二读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第二读源缓冲区读取数据的第四长度;将所述第二读源缓冲区和第二读目标缓冲区对应的第二DMA读请求线配置到所述读通道;设置DMA控制器根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址从所述第二读源缓冲区中读取所述第四长度的数据至所述第二读目标缓冲区,通过所述第二DMA读请求线通知所述DMA控制器本次DMA传输是否完成。
从上述本发明技术方案可知,一方面,由于计算机中的数据是通过其中的两个写源缓冲区交替写入至宽带卫星调制解调卡,宽带卫星调制解调卡中的数据是通过其中的两个读源缓冲区交替读取至计算机,因此,满足了计算机与宽带卫星调制解调卡之间高速传输的要求,能够实现计算机与宽带卫星调制解调卡之间数据的高速传输;另一方面,宽带卫星调制解调卡只需要设置四个缓冲区,而无需像现有DMA传输方式一样需要添加板载内存颗粒,例如DDR SDRAM来充当数据流缓冲池,因而降低了硬件的成本和宽带卫星调制解调卡硬件的开发难度。
附图说明
图1是本发明实施例提供的数据传输方法的实现流程示意图;
图2本发明实施例提供的宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区及其之间的硬件组织结构示意图;
图3是本发明另一实施例提供的数据传输方法的实现流程示意图;
图4是本发明实施例提供的DMA传输硬件编程程序流程图;
图5是本发明实施例提供的数据传输装置的结构示意图;
图6是本发明另一实施例提供的数据传输装置的结构示意图;
图7是本发明另一实施例提供的数据传输装置的结构示意图;
图8是本发明另一实施例提供的数据传输装置的结构示意图;
图9是本发明实施例提供的终端设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明的技术方案,下面通过具体实施例来进行说明。
附图1是本发明实施例提供的数据传输方法的实现流程示意图,主要包括以下步骤S101至S103,以下详细说明:
S101,配置宽带卫星调制解调卡读写缓冲区的相关信息以及宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道。
与现有技术是在宽带卫星调制解调卡上添加板载内存颗粒,例如DDR SDRAM来充当数据流缓冲池,进而来缓解传输速度和存取速度不匹配问题,在本发明实施例中,是在宽带卫星调制解调卡和计算机中各构造或配置4个缓冲区,即各构造两个读缓冲区和两个写缓冲区,其中,宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,计算机内部配置的读写缓冲区包括第一写源缓冲区、第二写源缓冲区、第一读目标缓冲区和第二读目标缓冲区。宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间通过直接内存存取DMA控制器通道进行数据传输。需要说明的是,DMA控制器通道本身就表明了宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间是DMA传输方式。附图2是本发明实施例提供的宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区及其之间的硬件组织结构示意图。附图2中,DMA控制器通道由DMA控制器配置,其可以配置为多通道,在本发明实施例中,至少被配置为DMA控制器通道的读通道和DMA控制器通道的写通道,而第一写源缓冲区和第一写目标缓冲区之间的第一DMA写请求线以及第二写源缓冲区和第二写目标缓冲区之间的第二DMA写请求线在写数据时被配置到DMA控制器通道的写通道,第一读源缓冲区和第一读目标缓冲区之间的第一DMA读请求线以及第二读源缓冲区和第二读目标缓冲区之间的第二DMA读请求线在读数据时被配置到DMA控制器通道的读通道。微软公司Windows8及其之后版本的操作系统和内核模式驱动程序框架(KMDF)开始支持片上计算机系统的系统模式DMA,即,在本发明实施例中,DMA控制器在计算机的主控CPU这一端,可以由计算机编程人员发起资源请求并在DMA通道内构造传输结构和控制DMA的传输过程。在本发明实施例中,宽带卫星调制解调卡读写缓冲区包括的第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,其数据结构可以是先进先出(First Input First Output,FIFO)的队列,因此,在本发明实施例中,第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区也可被称之为FIFO缓冲器。
需要说明的是,上述宽带卫星调制解调卡读写缓冲区的相关信息以及宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间DMA控制器通道的配置可通过宽带卫星调制解调卡的驱动编程来实现,具体地,当宽带卫星调制解调卡驱动程序第一次被装载时,会调用DriverEntry例程,这是KMDF驱动程序的主入口地址。DriverEntry函数首先要激活软件调试,接着初始化WDF_DRIVER_CONFIG结构,注册EvtDriverDeviceAdd事件回调函数,之后再初始化WDF_OBJECT_ATTRIBUTES结构,最后创建驱动对象。如果创建成功,则进行下一步操作,否则整个驱动程序终止执行,DriverEntry函数返回失败并退出。宽带卫星调制解调卡是一个PCI Express设备,计算机系统要识别PCI Express设备、寻址PCI Express设备的资源和配置PCI Express设备中断服务。在PCI Express设备驱动程序的初始化过程中,计算机系统利用设备识别号(Device-ID)、厂商识别号(Vendor-ID)和索引号来搜索和识别PCI Express设备,并确定其物理位置(包括总线号、设备号和功能号等),总线号、设备号、功能号是一个PCI Express设备在系统中的唯一寻址标志,计算机系统可以利用它们寻址该设备的配置空间(Configuration Space)。然后由设备驱动程序从配置空间获取设备的硬件参数,在本发明实施例中,主要是获取宽带卫星调制解调卡的FIFO缓冲器的地址和空间大小的信息,并将该信息存储到上下文区。每次系统枚举属于驱动程序的设备时都会调用EvtDriverDeviceAdd回调函数,该回调函数执行设备枚举时所需的各种操作。主要完成创建并初始化设备对象和相应的上下文区,为驱动程序的即插即用和电源管理回调函数设置入口点,创建设备接口,初始化设备资源。
EvtDriverDeviceAdd回调函数第一个任务是初始化设备对象的上下文区和特性,接着创建设备对象,该设备对象连接到设备栈,然后设置适当的标志和特性,并返回该对象的句柄。用户模式应用程序打开设备时必须有一个接口,EvtDriverDeviceAdd回调函数第二个任务就是创建设备接口,驱动程序传递设备对象的句柄,指向GUID的指针、指向可选字符串的指针。EvtDriverDeviceAdd回调函数第三个任务,是当设备对象定义了即插即用和电源事件后,驱动程序在创建设备对象时,必须在EvtDriverDeviceAdd回调函数中注册这些事件,通过注册EvtDevicePrepareHardware和EvtDeviceReleaseHardware回调函数对,在这些回调函数中映射和取消映射硬件资源。因此,配置宽带卫星调制解调卡读写缓冲区的相关信息,具体是在宽带卫星调制解调卡内部构造了4个FIFO缓冲器(8192级深度,64bit位宽),并在配置空间(Configuration Space)的基地址寄存器(BAR2)设置了一块内存空间用来存储4个FIFO缓冲器的物理地址以及表示其空或满的状态寄存器。当PnP管理器为宽带卫星调制解调卡分配完硬件资源后,KMDF框架自动调用EvtDevicePrepareHardware函数来获取宽带卫星调制解调卡的内存空间,驱动程序根据EvtDevicePrepareHardware函数提供的ResourcesRaw和ResourcesTranslated两个参数来寻址硬件设备的内存空间,得到存储了FIFO缓冲器地址和状态的内存空间的物理首地址与长度,然后将物理地址映射成驱动程序可以识别的虚拟地址并将此虚拟地址保存到上下文区。EvtDriverDeviceAdd回调函数最后一个任务是初始化设备资源,包括初始化I/O队列、初始化系统DMA以及初始化中断处理等。
S102,当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置DMA控制器通道的写通道将计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至第一写目标缓冲区和第二写目标缓冲区。
S103,当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置DMA控制器通道的读通道将第一读源缓冲区和第二读源缓冲区中数据交替读取至计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
基于上述步骤S102和S103的传输策略,本发明在Windows8及之后版本操作系统的支持下,编写驱动程序实现计算机系统的上述组织架构。为了能够调动和分配计算机系统的上述硬件资源,需要在内核模式下编写驱动程序,该驱动程序将使用内核模式驱动程序框架(KMDF)配合实现附图2的组织架构。宽带卫星调制解调卡的驱动程序在实现DMA传输过程中使用两种IO队列:读队列和写队列。系统根据应用程序以及上层驱动发送过来的IRP包(即I/O请求数据包)的主请求码在相应的队列中排队,其中,读队列用来处理来自上层应用程序的读数据请求,写队列用来处理来自上层应用程序的写数据请求。首先,驱动程序初始化WDF_IO_QUEUE_CONFIG结构体,然后创建I/O队列,一旦创建队列成功,则向系统内核注册这个队列,当有相应的I/O读写数据请求到来时,就将读写数据请求在这个队列中排队,由KMDF框架从队列调度I/O读写数据请求。在配置队列之后,驱动程序为I/O事件注册回调函数。上述过程需要执行2次,分别初始化读队列和写队列。对于运行Windows8及之后版本操作系统的片上计算机系统,内核模式驱动程序框架支持系统模式直接内存访问(DMA)设备,在计算机系统中内置有多通道DMA控制器,本发明使用Windows8支持的V3版本的系统DMA。当基于KMDF框架的驱动程序处理系统DMA的I/O操作时,驱动程序必须启用框架的DMA功能,驱动程序需要初始化一系列的DMA准备工作,首先初始化WDF_DMA_ENABLER_CONFIG结构,设置传输方式为系统全双工模式,设置系统DMA单次最大传输长度(本发明设置为64K字节),再调用WdfDmaEnablerCreate创建系统模式DMA启用程序对象;然后初始化WDF_DMA_SYSTEM_PROFILE_CONFIG结构,设置传输目标的物理地址,传输数据位宽(本发明支持64bit)和系统DMA资源描述符,由于设置为系统全双工模式,因此需要调用2次WdfDmaEnablerConfigureSystemProfile方法分别为写和读操作配置系统模式DMA启用程序对象并指定其传输方向最终完成相关资源初始化。最后调用WdfDmaTransactionCreate为I/O读数据请求和I/O写数据请求分别创建DMA事务对象。
当驱动程序收到I/O请求数据包(IRP)时,框架会截取IRP并创建框架请求对象。框架会将请求对象放入驱动程序创建的I/O队列中,驱动程序已为队列注册了请求处理程序EvtIOXXX,框架会调用请求处理程序,同时传递该队列对象句柄和请求对象句柄。在本发明中,构建和操作DMA的请求处理程序是EvtIoRead和EvtIoWrite,分别处理DMA的I/O读数据请求和I/O写数据请求。
当请求处理程序已收到框架请求对象时,驱动程序需要为DMA读写操作配置DMA通道。驱动程序调用WdfDmaTransactionSetChannelConfigurationCallback方法为系统模式DMA注册基于DMA事务的通道配置事件回调函数。在该函数中再注册EvtDmaTransactionConfigureDmaChannel事件回调函数来具体设置系统DMA控制器,在其中构造乒乓双缓冲结构的传输体系,具体地,通过该乒乓双缓冲结构的传输体系,当计算机的DMA控制器收到来自宽带卫星调制解调卡的驱动程序的写数据请求(该写数据请求来自上层应用程序)时,通过DMA控制器通道的写通道将计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至第一写目标缓冲区和第二写目标缓冲区;当计算机的DMA控制器收到来自宽带卫星调制解调卡的驱动程序的读数据请求(该读数据请求来自上层应用程序)时,通过DMA控制器通道的读通道将第一读源缓冲区和第二读源缓冲区中数据交替读取至计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
从上述附图1示例的数据传输方法可知,一方面,由于计算机中的数据是通过其中的两个写源缓冲区交替写入至宽带卫星调制解调卡,宽带卫星调制解调卡中的数据是通过其中的两个读源缓冲区交替读取至计算机,因此,满足了计算机与宽带卫星调制解调卡之间高速传输的要求,能够实现计算机与宽带卫星调制解调卡之间数据的高速传输;另一方面,宽带卫星调制解调卡只需要设置四个缓冲区,而无需像现有DMA传输方式一样需要添加板载内存颗粒,例如DDR SDRAM来充当数据流缓冲池,因而降低了硬件的成本和宽带卫星调制解调卡硬件的开发难度。
附图3是本发明实施例提供的数据传输方法的实现流程示意图。附图3示例的方法适用于附图2示例的硬件组织结构,主要包括以下步骤S301至S303,以下详细说明:
S301,配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道。
其中,宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,DMA控制器通道包括写通道和读通道。步骤S301和步骤S201的实现过程完全类似,其相关概念、术语等可参照S201的说明,此处不做赘述。
S302,当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置DMA控制器通道的写通道将第一写源缓冲区中数据写入至第一写目标缓冲区并写入完成后,在第一写目标缓冲区中数据被读出时,通过设置DMA控制器通道的写通道将第二写源缓冲区中数据写入至第二写目标缓冲区并写入完成后,在第二写目标缓冲区中数据被读出时,通过设置DMA控制通道的写通道将第一写源缓冲区中数据写入至第一写目标缓冲区。
需要说明的是,第一写目标缓冲区中数据被读出并非是通过DMA通道读出至计算机,而是被宽带卫星调制解调卡更高层的应用或其他部件读出;第二写目标缓冲区中数据被读出的含义与第一写目标缓冲区中数据被读出的含义相当。在本发明实施例中,步骤S302可通过如下步骤S1至步骤S3实现:
S1,在执行向第一写目标缓冲区或第二写目标缓冲区写数据的操作时,查询上下文区,其中,上下文区保存有第一写目标缓冲区或第二写目标缓冲区的地址以及第一写目标缓冲区或第二写目标缓冲区的被写满后触发中断的写目标缓冲区的信息。
在本发明实施例中,宽带卫星调制解调卡具备向系统发起中断请求的能力,当它内部的4个FIFO缓冲器被读空或被写满时,都可以由宽带卫星调制解调卡的中断控制寄存器向计算机系统发起中断,通知计算机的CPU做出响应。PCI Express总线设备使用MSI(Message Signaled Interrupt)中断方式,当系统枚举时为设备分配相关的中断资源,框架会将中断资源存储在设备的中断对象中。具体到驱动编程,处理设备硬件中断的基于框架的驱动程序必须为该设备可支持的中断创建框架中断对象,驱动程序必须初始化WDF_INTERRUPT_CONFIG结构并将其传递到WdfInterruptCreate方法,此方法注册驱动程序提供的事件回调函数:启用硬件中断回调函数、禁用硬件中断回调函数、中断的中断服务例程(ISR)和中断的延迟过程调用(DPC)。驱动程序处理设备中断必须提供启用和禁用硬件中断回调函数,在这些函数中设置前述的设备中断控制寄存器以启用和禁用设备的中断机制,使其支持DMA中断操作。在中断的中断服务例程(ISR)和中断的延迟过程调用(DPC)这两个回调函数中处理DMA传输完成之后的一系列操作。
需要说明的是,宽带卫星调制解调卡的中断控制寄存器向计算机系统发起中断时,进入中断服务例程回调函数,在该函数中判断是由哪个FIFO缓冲器触发中断的,清中断标志位。之后进入中断延迟过程调用回调函数,在该函数中,判断DMA事务传输是否完成,对比已传输的字节数是否与I/O请求缓冲区的大小相等,相等表示传输完成,调用WdfRequestCompleteWithInformation方法完成请求;不相等,表示DMA事务未完成,保存触发中断的FIFO缓冲器的信息至上下文区。例如,当中断服务例程回调函数判断是第一写目标缓冲区触发中断的,则在DMA事务未完成时,保存第一写目标缓冲区的信息至上下文区;又如,当中断服务例程回调函数判断是第一读源缓冲区触发中断的,则在DMA事务未完成时,保存第一读源缓冲区的信息至上下文区,等等。
S2,若上下文区中保存有第一写目标缓冲区的信息,则在第一写目标缓冲区中数据被读出时,根据第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第二写源缓冲区的数据写入至第二写目标缓冲区。
S3,若上下文区中保存有第二写目标缓冲区的信息,则在第二写目标缓冲区中数据被读出时,根据第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第一写源缓冲区的数据写入至第一写目标缓冲区。
按照前述对上下文区中保存信息的解释,若查询到上下文区中保存有第一写目标缓冲区的信息,则表明此时第一写目标缓冲区已经被写满,因此,可以在第一写目标缓冲区中数据被读出时,根据第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第二写源缓冲区的数据写入至第二写目标缓冲区,反之,若查询到上下文区中保存有第二写目标缓冲区的信息,则表明此时第二写目标缓冲区已经被写满,因此,可在第二写目标缓冲区中数据被读出时,根据第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第一写源缓冲区的数据写入至第一写目标缓冲区;随后,开始下一轮的循环,即在第一写目标缓冲区又被写满时,上下文区中必保存有第一写目标缓冲区的信息,按照前述实施例描述的技术方案,又根据第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第二写源缓冲区的数据写入至第二写目标缓冲区,在第二写目标缓冲区又被写满时,上下文区中必保存有第二写目标缓冲区的信息,按照前述实施例描述的技术方案,又根据第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第一写源缓冲区的数据写入至第一写目标缓冲区。如此,实现将第一写源缓冲区的数据和第二写源缓冲区的数据交替写入至第一写目标缓冲区和第二写目标缓冲区。
在宽带卫星调制解调卡内部配置有4条DMA请求线,即第一DMA写请求线、第二DMA写请求线、第一DMA读请求线和第二DMA读请求线,当内部FIFO缓冲器即第一读源缓冲区或第二读源缓冲区被读空,或者第一写目标缓冲区或第二写目标缓冲区被写满时,均可以通过对应的请求线向系统DMA控制器发起处理请求,例如,第一写目标缓冲区被写满时,通过对应的第一DMA写请求线向DMA控制器发起处理请求;又如,第二读源缓冲区被读空被读空时,通过对应的第二DMA读请求线向DMA控制器发起处理请求。在系统枚举时,4条DMA请求线被连接到DMA控制器内部,可以由驱动程序编程分配,对于DMA写操作,当第一写目标缓冲区或第二写目标缓冲区被写满时,由这2个相关的DMA请求线即第一DMA写请求线或第二DMA写请求线向DMA控制器发起写处理请求;对于DMA读操作,当第一读源缓冲区或第二读源缓冲区被读空时,由这2个相关的DMA请求线即第一DMA读请求线或第二DMA读请求线向DMA控制器发起读处理请求。在Windows操作系统内核中,使用被称为适配器对象的数据结构来描述系统DMA的特征,并用它来控制潜在的共享资源,例如,DMA通道和DMA控制器的寄存器。在EvtDmaTransactionConfigureDmaChannel回调函数中,首先调用WdfDmaEnablerWdmGetDmaAdapter函数获取指向DMA_ADAPTER结构体(即适配器对象)的指针,该结构体代表了系统模式DMA通道,需要调用2次分别为DMA读操作各获取1个DMA通道即读通道,为DMA写操作各获取1个DMA通道即写通道,该结构体为Windows8之后开始支持的V3版本的DMA_ADAPTER结构体。在适配器对象中有一个指针指向一个DMA_OPERATIONS结构,该结构中包含了所有与DMA相关的其它函数,调用其中的ConfigureAdapterChannel函数为DMA通道编程,完成对DMA控制器的寄存器,例如DMA控制器的源地址寄存器、DMA控制器的目标地址寄存器和DMA控制器的长度寄存器等一系列设置。
基于上述实施例对DMA请求线和DMA控制器的寄存器的相关描述,上述S2中根据第二写源缓冲区的地址和第二写目标缓冲区的地址,通过写通道将第二写源缓冲区的数据写入至第二写目标缓冲区可以是:向DMA控制器的源地址寄存器中写入第二写源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第二写目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次向第二写目标缓冲区写入数据的第二长度;将第二写源缓冲区和第二写目标缓冲区对应的第二DMA写请求线配置到DMA控制器通道的写通道;设置DMA控制器根据第二写源缓冲区的地址和第二写目标缓冲区的地址将第二写源缓冲区中第二长度的数据写入至第二写目标缓冲区,通过第二DMA写请求线通知DMA控制器,本次DMA传输是否完成。上述S3中根据第一写源缓冲区的地址和第一写目标缓冲区的地址,通过DMA通道的写通道将第一写源缓冲区的数据写入至第一写目标缓冲区可以是:向DMA控制器的源地址寄存器中写入第一写源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第一写目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次向第一写目标缓冲区写入数据的第一长度;将第一写源缓冲区和第一写目标缓冲区对应的第一DMA写请求线配置到DMA控制器通道的写通道;设置DMA控制器根据第一写源缓冲区的地址和第一写目标缓冲区的地址将第一写源缓冲区中第一长度的数据写入至第一写目标缓冲区,通过第一DMA写请求线,通知DMA控制器本次DMA传输是否完成。
为DMA通道编程完成后,将其地址作为输入参数传递给ConfigureAdapterChannel函数,由其连接入计算机系统的多通道DMA控制器,完成DMA控制器的配置。完成DMA控制器的设置后,初始化DMA事务对象,将请求传递到硬件,驱动程序调用WdfDmaTransactionInitializeUsingRequest方法,该方法接受请求对象句柄作为输入并从请求对象中提取请求的地址参数,该方法也需要EvtProgramDma事件回调函数的地址作为输入参数,此回调函数会为设备制定计划,并且每当DMA传输可用时内核模式驱动程序框架(KMDF)都会调用此回调函数,在EvtProgramDma回调函数中具体编程为DMA传输而请求分配的硬件。系统DMA事务初始化成功后,调用WdfDmaTransactionExecute方法启动DMA事务。
S303,当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置DMA控制器通道的读通道从第一读源缓冲区读取数据至第一读目标缓冲区并在读取完成后,在第一读目标缓冲区中数据被读出时,通过设置DMA控制器通道的读通道从第二读源缓冲区读取数据至第二读目标缓冲区并在读取完成后,在第二读目标缓冲区中数据被读出时,通过读通道从第一读源缓冲区读取数据至第一读目标缓冲区。
需要说明的是,第一读目标缓冲区中数据被读出并非是通过DMA通道读出至宽带卫星调制解调卡,而是被计算机更高层的应用或其他部件读出,例如,由DMA事务传递过来的缓冲区;第二读目标缓冲区中数据被读出的含义与第一读目标缓冲区中数据被读出的含义相当。在本发明实施例中,步骤S303可通过如下步骤S’1至步骤S’3实现:
S’1,在执行从第一读源缓冲区或第二读源缓冲区读取数据的操作时,查询上下文区。
S’1中,上下文区保存有第一读源缓冲区或第二读源缓冲区的地址以及第一读源缓冲区或第二读源缓冲区被读空后触发中断的读源缓冲区的信息。
S’2,若上下文区中保存有第一读源缓冲区的信息,则在第一读目标缓冲区中数据被读出时,根据第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置DMA通道的读通道从第二读源缓冲区读取数据至第二读目标缓冲区。
S’3,若上下文区中保存有第二读源缓冲区的信息,则在第二读目标缓冲区中数据被读出时,根据第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置DMA通道的读通道从第一读源缓冲区的读取数据至第一读目标缓冲区。
按照前述对上下文区中保存信息的解释,若查询到上下文区中保存有第一读源缓冲区的信息,则表明此时第一读源缓冲区已经被读空,因此,可以在第一读目标缓冲区中数据被读出时,根据第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置DMA控制器通道的读通道将第二读源缓冲区的数据读入至第二读目标缓冲区,反之,若查询到上下文区中保存有第二读源缓冲区的信息,则表明此时第二读源缓冲区已经被读空,因此,可在第二读目标缓冲区中数据被读出时,根据第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置DMA控制器通道的读通道将第一读源缓冲区的数据读入至第一读目标缓冲区;随后,开始下一轮的循环,即在第一读源缓冲区又被读空时,上下文区中必保存有第一读源缓冲区的信息,按照前述实施例描述的技术方案,又根据第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置DMA控制器通道的读通道将第二读源缓冲区的数据读入至第二读目标缓冲区,在第二读源缓冲区又被读空时,上下文区中必保存有第二读源缓冲区的信息,按照前述实施例描述的技术方案,又根据第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置DMA控制器通道的读通道将第一读源缓冲区的数据读入至第一读目标缓冲区。如此,实现将第一读源缓冲区的数据和第二读源缓冲区的数据交替读取至第一读目标缓冲区和第二读目标缓冲区。
上述S’2中根据第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置DMA控制器通道的读通道从第二读源缓冲区读取数据至第二读目标缓冲区可以是:向DMA控制器的源地址寄存器中写入第二读源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第二读目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次从第二读源缓冲区读取数据的第四长度;将第二读源缓冲区和第二读目标缓冲区对应的第二DMA读请求线配置到DMA控制器通道的读通道;设置DMA控制器根据第二读源缓冲区的地址和第二读目标缓冲区的地址从第二读源缓冲区中读取第四长度的数据至第二读目标缓冲区,通过第二DMA读请求线通知DMA控制器本次DMA传输是否完成。上述S’3中根据第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置DMA通道的读通道从第一读源缓冲区的读取数据至第一读目标缓冲区,包括:向DMA控制器的源地址寄存器中写入第一读源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第一读目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次从第一读源缓冲区读取数据的第三长度;将第一读源缓冲区和第一读目标缓冲区对应的第一DMA读请求线配置到DMA控制器通道的读通道;设置DMA控制器根据第一读源缓冲区的地址和第一读目标缓冲区的地址从第一读源缓冲区中读取第三长度的数据至第一读目标缓冲区,通过第一DMA读请求线通知DMA控制器本次DMA传输是否完成。
附图4是本发明实施例提供的DMA传输硬件编程程序流程图,以下进行详细说明。
在EvtProgramDma事件回调函数中执行具体的DMA传输硬件编程,该事件回调函数提供了指向SCATTER_GATHER_LIST结构体(即分散聚合列表)的指针,在该结构体中包含了表示缓冲区对象的SCATTER_GATHER_ELEMENT队列,在该队列结构体中包含有表示缓冲区物体地址和缓冲区长度的变量,由于本发明不使用分散聚合式的传输方式,而使用基于包传输的方式,因此SCATTER_GATHER_ELEMENT队列数只有一个,表示由DMA事务传递过来的缓冲区,其中的物理地址变量表示缓冲区的首地址,长度变量表示缓冲区的大小。
在EvtProgramDma事件回调函数中调用WdfMemoryCreate分别为DMA写和DMA读各创建2块内部缓冲区,其中,为DMA写创建的2块内部缓冲区即前述实施例提及的第一写源缓冲区和第二写源缓冲区,为DMA读创建的2块内部缓冲区即前述实施例提及的第一读目标缓冲区和第二读目标缓冲区。设置池类型为非分页式防止内存页被动态交换到硬盘区,设置缓冲区空间大小(本发明设置为64K字节),当调用成功时,将获得2个分别指向该缓冲区对象的句柄,再调用WdfMemoryGetBuffer方法分别获取2个指向该缓冲区对象的指针,之后再调用MmGetPhysicalAddress函数分别获得2个该缓冲区对象的物理地址。
在EvtProgramDma事件回调函数中提供了指向SCATTER_GATHER_LIST结构体(即分散聚合列表)的指针,在该结构体中包含了表示传输缓冲区对象的SCATTER_GATHER_ELEMENT队列,在该队列结构体中包含有表示缓冲区物体地址和缓冲区长度的变量,由于本发明不使用分散聚合式的传输方式,而使用系统模式DMA的方式,因此SCATTER_GATHER_ELEMENT队列数只有一个,表示由DMA事务传递过来的缓冲区,其中的物理地址变量表示缓冲区的首地址,长度变量表示缓冲区的大小,调用MmMapIoSpace函数将DMA事务传递过来的缓冲区的物理地址转换为驱动程序可以使用的虚拟地址。当处理DMA写传输时,取出保存在上下文区的FIFO缓冲器的信息,判断当前轮转的内部缓冲区,即判断当前是从第一写源缓冲区将数据写入第一写目标缓冲区还是从第二写源缓冲区将数据写入第二写目标缓冲区,或者,判断当前数据读取到的目标缓冲区是第一读目标缓冲区还是第二读目标缓冲区。对于首次DMA写传输,调用WdfMemoryCopyFromBuffer将DMA事务传递过来的缓冲区中的数据移入创建的第1个内部写缓冲区,例如第一写源缓冲区中,该对象方法检查源和目标大小,并避免出现缓冲区溢出错误。在执行完DMA控制器硬件编程启动DMA传输后,立即取出保存在上下文区的FIFO缓冲器的信息,判断当前轮转的内部缓冲区,将DMA事务传递过来的缓冲区中的数据移入轮转过来的第2个内部写缓冲区,例如,第二写源缓冲区,此时第1个内部写缓冲区已在DMA控制器的控制下执行传输,从DMA事务的视角看,好像只有一个缓冲区在接收它传递过来的数据;当处理DMA读传输时,在执行完DMA控制器硬件编程启动DMA传输后,取出保存在上下文区的FIFO缓冲器的信息,判断当前轮转的内部缓冲区。对于首次DMA读传输,启动DMA传输之后,立即调用WdfMemoryCopyToBuffer将创建的第2个内部缓冲区,例如第二读目标缓冲区中的数据移出至DMA事务传递过来的缓冲区中(此时正在执行DMA读传输,CPU执行的是无效的读),之后再次执行DMA控制器硬件编程启动DMA传输(此时内部缓冲区已翻转),立即取出保存在上下文区的FIFO缓冲器的信息,判断当前轮转的内部缓冲区,将轮转过来的第1个内部缓冲区,例如第一读目标缓冲区的数据移出至DMA事务传递过来的缓冲区中(此时才是第一次读),从DMA事务的视角看,好像只有一个缓冲区在向它传递数据。
当处理DMA写传输硬件编程时,将前述获取的宽带卫星调制解调卡2个写FIFO缓冲器即第一写目标缓冲区和第二写目标缓冲区的第1个物理地址写入DMA控制器的目标地址寄存器中,将驱动程序创建的2个内部写缓冲区即第一写源缓冲区和第二写源缓冲区的第1个物理地址写入DMA控制器的源地址寄存器中,将单次传输长度(本发明设置为64K字节)写入DMA控制器的长度寄存器中,将前述的第一DMA写请求线配置到DMA控制器的写通道即前述实施例提及的DMA通道的写通道,之后置位DMA控制器的写通道启动寄存器启动DMA传输,当传输完成后,由宽带卫星调制解调卡的中断控制寄存器触发中断,通知CPU传输完成,当中断触发时,表示第一写目标缓冲区被写满,由框架再次调用EvtProgramDma事件回调函数,将前述获取的宽带卫星调制解调卡2个写FIFO缓冲器即第一写目标缓冲区和第二写目标缓冲区的第2个物理地址写入DMA控制器的目标地址寄存器中,将驱动程序创建的2个内部写缓冲区即第一写源缓冲区和第二写源缓冲区的第2个物理地址写入DMA控制器的源地址寄存器中,将单次传输长度(本发明设置为64K字节)写入DMA控制器的长度寄存器中,将前述的第二DMA写请求线配置到DMA控制器的写通道即前述实施例的DMA通道的写通道,之后置位系统DMA控制器的写通道启动寄存器再次启动DMA传输,当再次触发中断时,表示第二写目标缓冲区被写满……,如此循环执行轮转交替的DMA传输;当处理DMA读传输硬件编程时,将前述获取的宽带卫星调制解调卡2个读FIFO缓冲器即第一读源缓冲区和第二读源缓冲区的第1个物理地址写入DMA控制器的源地址寄存器中,将驱动程序创建的2个内部读缓冲区即第一读目标缓冲区和第二读目标缓冲区的第1个物理地址写入系统DMA控制器的目标地址寄存器中,将单次传输长度(本发明设置为64K字节)写入DMA控制器的长度寄存器中,将前述的第一DMA读请求线配置到DMA控制器的读通道即前述实施例提及的DMA通道的读通道,之后置位DMA控制器的读通道启动寄存器启动DMA传输,当传输完成后,由宽带卫星调制解调卡的中断控制寄存器触发中断,通知CPU传输完成,当中断触发时,表示第一读源缓冲区被读空,由框架再次调用EvtProgramDma事件回调函数,将前述获取的宽带卫星调制解调卡2个读FIFO缓冲器即第一读源缓冲区和第二读源缓冲区的第2个物理地址写入DMA控制器的源地址寄存器中,将驱动程序创建的2个内部读缓冲区即第一读目标缓冲区和第二读目标缓冲区的第2个物理地址写入DMA控制器的目标地址寄存器中,将单次传输长度(本发明设置为64K字节)写入DMA控制器的长度寄存器中,将前述的第二DMA读请求线配置到DMA控制器的读通道即DMA通道的读通道,之后置位DMA控制器的读通道启动寄存器再次启动DMA传输,当再次触发中断时,表示第二读源缓冲区被读空……,如此循环执行轮转交替的DMA传输。
图5是本发明实施例提供的数据传输装置的示意图,主要包括配置模块501、交替写入模块502和交替读取模块503,详细说明如下:
配置模块501,用于配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,其中,宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;
交替写入模块502,用于当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置DMA控制器通道的写通道将计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至第一写目标缓冲区和第二写目标缓冲区;
交替读取模块503,用于当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置DMA控制器通道的读通道将第一读源缓冲区和第二读源缓冲区中数据交替读取至计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
需要说明的是,本发明实施例提供的装置,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
附图5示例的交替写入模块502包括交替写数据单元601,交替读取模块503包括交替读数据单元602,如附图6示例的图像检索装置,其中:
交替写数据单元601,用于通过设置DMA控制器通道的写通道将第一写源缓冲区中数据写入至第一写目标缓冲区并写入完成后,在第一写目标缓冲区中数据被读出时,通过设置DMA控制器通道的写通道将第二写源缓冲区中数据写入至第二写目标缓冲区并写入完成后,在第二写目标缓冲区中数据被读出时,通过设置DMA控制器通道的写通道将第一写源缓冲区中数据写入至第一写目标缓冲区;
交替读数据单元602,用于通过设置DMA控制器通道的读通道从第一读源缓冲区读取数据至第一读目标缓冲区并在读取完成后,在第一读目标缓冲区中数据被读出时,通过设置DMA控制器通道的读通道从第二读源缓冲区读取数据至第二读目标缓冲区并在读取完成后,在第二读目标缓冲区中数据被读出时,通过设置DMA控制器通道的读通道从第一读源缓冲区读取数据至第一读目标缓冲区。
附图6示例的交替写数据单元601包括第一查询单元701、第一写单元702和第二写单元703,交替读数据单元602包括第二查询单元704、第一读单元705和第二读单元706,如附图7示例的图像检索装置,其中:
第一查询单元701,用于在执行向第一写目标缓冲区或第二写目标缓冲区写数据的操作时,查询上下文区,其中,上下文区保存有第一写目标缓冲区或第二写目标缓冲区的地址以及第一写目标缓冲区或第二写目标缓冲区的被写满后触发中断的写目标缓冲区的信息;
第二写单元703,用于若上下文区中保存有第一写目标缓冲区的信息,则在第一写目标缓冲区中数据被读出时,根据第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第二写源缓冲区的数据写入至第二写目标缓冲区;
第一写单元702,用于若上下文区中保存有第二写目标缓冲区的信息,则在第二写目标缓冲区中数据被读出时,根据第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置DMA控制器通道的写通道将第一写源缓冲区的数据写入至第一写目标缓冲区;
第二查询单元704,用于在执行从第一读源缓冲区或第二读源缓冲区读取数据的操作时,查询上下文区,其中,上下文区保存有第一读源缓冲区或第二读源缓冲区的地址以及第一读源缓冲区或第二读源缓冲区被读空后触发中断的读源缓冲区的信息;
第二读单元706,用于若上下文区中保存有第一读源缓冲区的信息,则在第一读目标缓冲区中数据被读出时,根据第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置DMA控制器通道的读通道从第二读源缓冲区读取数据至第二读目标缓冲区;
第一读单元705,用于若上下文区中保存有第二读源缓冲区的信息,则在第二读目标缓冲区中数据被读出时,根据第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置DMA控制器通道的读通道从第一读源缓冲区的读取数据至第一读目标缓冲区。
附图7示例的第一写单元702包括第一寄存器设置单元801、第一写通道配置单元802和第一目标缓冲区写入单元803,第一读单元705包括第三寄存器设置单元804、第一读通道配置单元805和第一源缓冲区读取单元806,第二写单元703包括第二寄存器设置单元807、第二写通道配置单元808和第二目标缓冲区写入单元809,第二读单元706包括第四寄存器设置单元810、第二读通道配置单元811和第二源缓冲区读取单元812,如附图8示例的图像检索装置,其中:
第一寄存器设置单元801,用于向DMA控制器的源地址寄存器中写入第一写源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第一写目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次向第一写目标缓冲区写入数据的第一长度;
第一写通道配置单元802,用于将第一写源缓冲区和第一写目标缓冲区对应的第一DMA写请求线配置到DMA控制器通道的写通道;
第一目标缓冲区写入单元803,用于设置DMA控制器根据第一写源缓冲区的地址和第一写目标缓冲区的地址将第一写源缓冲区中第一长度的数据写入至第一写目标缓冲区,通过第一DMA写请求线通知DMA控制器本次DMA传输是否完成;
第二寄存器设置单元807,用于向DMA控制器的源地址寄存器中写入第二写源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第二写目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次向第二写目标缓冲区写入数据的第二长度;
第二写通道配置单元808,用于将第二写源缓冲区和第二写目标缓冲区对应的第二DMA写请求线配置到DMA控制器通道的写通道;
第二目标缓冲区写入单元809,用于设置DMA控制器根据第二写源缓冲区的地址和第二写目标缓冲区的地址将第二写源缓冲区中第二长度的数据写入至第二写目标缓冲区,通过第二DMA写请求线通知DMA控制器本次DMA传输是否完成;
第三寄存器设置单元804,用于向DMA控制器的源地址寄存器中写入第一读源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第一读目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次从第一读源缓冲区读取数据的第三长度;
第一读通道配置单元805,用于将第一读源缓冲区和第一读目标缓冲区对应的第一DMA读请求线配置到DMA控制器通道的读通道;
第一源缓冲区读取单元806,用于设置DMA控制器根据第一读源缓冲区的地址和第一读目标缓冲区的地址从第一读源缓冲区中读取第三长度的数据至第一写目标缓冲区,通过第一DMA读请求线通知DMA控制器本次DMA传输是否完成;
第四寄存器设置单元810,用于向DMA控制器的源地址寄存器中写入第二读源缓冲区的地址、向DMA控制器的目标地址寄存器中写入第二读目标缓冲区的地址和向DMA控制器的长度寄存器中写入单次从第二读源缓冲区读取数据的第四长度;
第二读通道配置单元811,用于将读通道配置到第二读源缓冲区和第二读目标缓冲区对应的第二DMA读请求线;
第二源缓冲区读取单元812,用于设置DMA控制器根据第二读源缓冲区的地址和第二读目标缓冲区的地址从第二读源缓冲区中读取第四长度的数据至第二写目标缓冲区,通过第二DMA读请求线通知DMA控制器本次DMA传输是否完成。
图9是本发明一实施例提供的终端设备的结构示意图。如图9所示,该实施例的终端设备9包括:处理器90、存储器91以及存储在存储器91中并可在处理器90上运行的计算机程序92,例如数据传输方法的程序。处理器90执行计算机程序92时实现上述数据传输方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,处理器90执行计算机程序92时实现上述各装置实施例中各模块/单元的功能,例如图5所示配置模块501、交替写入模块502和交替读取模块503的功能。
示例性的,数据传输方法的计算机程序92主要包括:配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,所述宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。计算机程序92可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器91中,并由处理器90执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序92在计算设备9中的执行过程。例如,计算机程序92可以被分割成配置模块501、交替写入模块502和交替读取模块503的功能(虚拟装置中的模块),各模块具体功能如下:配置模块501,用于配置宽带卫星调制解调卡读写缓冲区的相关信息以及宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,其中,宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,DMA控制器通道包括写通道和读通道;交替写入模块502,用于当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置写通道将计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至第一写目标缓冲区和第二写目标缓冲区;交替读取模块503,用于当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置读通道将第一读源缓冲区和第二读源缓冲区中数据交替读取至计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
终端设备9可包括但不仅限于处理器90、存储器91。本领域技术人员可以理解,图9仅仅是终端设备9的示例,并不构成对终端设备9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器91可以是终端设备9的内部存储单元,例如终端设备9的硬盘或内存。存储器91也可以是终端设备9的外部存储设备,例如终端设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器91还可以既包括终端设备9的内部存储单元也包括外部存储设备。存储器91用于存储计算机程序以及终端设备所需的其他程序和数据。存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,数据传输方法的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤,即,配置宽带卫星调制解调卡读写缓冲区的相关信息以及宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,其中,宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,DMA控制器通道包括写通道和读通道;当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置写通道将计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;当宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置读通道将第一读源缓冲区和第二读源缓冲区中数据交替读取至计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据传输方法,其特征在于,所述方法包括:
配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,所述宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;
当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
2.如权利要求1所述的方法,其特征在于,所述通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区,包括:通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区并写入完成后,在所述第一写目标缓冲区中数据被读出时,通过设置所述写通道将所述第二写源缓冲区中数据写入至所述第二写目标缓冲区并写入完成后,在所述第二写目标缓冲区中数据被读出时,通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区;
所述通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区,包括:通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区并在读取完成后,在所述第一读目标缓冲区中数据被读出时,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区并在读取完成后,在所述第二读目标缓冲区中数据被读出时,通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区。
3.如权利要求2所述的方法,其特征在于,所述通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区并写入完成后,在所述第一写目标缓冲区中数据被读出时,通过设置所述写通道将所述第二写源缓冲区中数据写入至所述第二写目标缓冲区并写入完成后,在所述第二写目标缓冲区中数据被读出时,通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区,包括:
在执行向所述第一写目标缓冲区或第二写目标缓冲区写数据的操作时,查询上下文区,所述上下文区保存有所述第一写目标缓冲区或第二写目标缓冲区的地址以及所述第一写目标缓冲区或第二写目标缓冲区的被写满后触发中断的写目标缓冲区的信息;
若所述上下文区中保存有所述第一写目标缓冲区的信息,则在所述第一写目标缓冲区中数据被读出时,根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置所述写通道将所述第二写源缓冲区的数据写入至所述第二写目标缓冲区;
若所述上下文区中保存有所述第二写目标缓冲区的信息,则在所述第二写目标缓冲区中数据被读出时,根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置所述写通道将所述第一写源缓冲区的数据写入至所述第一写目标缓冲区;
所述通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区并在读取完成后,在所述第一读目标缓冲区中数据被读出时,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区并在读取完成后,在所述第二读目标缓冲区中数据被读出时,通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区,包括:
在执行从所述第一读源缓冲区或第二读源缓冲区读取数据的操作时,查询所述上下文区,所述上下文区保存有所述第一读源缓冲区或第二读源缓冲区的地址以及所述第一读源缓冲区或第二读源缓冲区被读空后触发中断的读源缓冲区的信息;
若所述上下文区中保存有所述第一读源缓冲区的信息,则在所述第一读目标缓冲区中数据被读出时,根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区;
若所述上下文区中保存有所述第二读源缓冲区的信息,则在所述第二读目标缓冲区中数据被读出时,根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置所述读通道从所述第一读源缓冲区的读取数据至所述第一读目标缓冲区。
4.如权利要求3所述的方法,其特征在于,所述根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置所述写通道将所述第一写源缓冲区的数据写入至所述第一写目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第一写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第一写目标缓冲区写入数据的第一长度;将所述第一写源缓冲区和第一写目标缓冲区对应的第一DMA写请求线配置到所述写通道;设置DMA控制器根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址将所述第一写源缓冲区中所述第一长度的数据写入至所述第一写目标缓冲区,通过所述第一DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置所述写通道将所述第二写源缓冲区的数据写入至所述第二写目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第二写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第二写目标缓冲区写入数据的第二长度;将所述第二写源缓冲区和第二写目标缓冲区对应的第二DMA请求线配置到所述写通道;设置DMA控制器根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址将所述第二写源缓冲区中所述第二长度的数据写入至所述第二写目标缓冲区,通过所述第二DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址,通过所述读通道从所述第一读源缓冲区的读取数据至所述第一读目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第一读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第一读源缓冲区读取数据的第三长度;将所述第一读源缓冲区和第一读目标缓冲区对应的第一DMA读请求线配置到所述读通道;设置DMA控制器根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址从所述第一读源缓冲区中读取所述第三长度的数据至所述第一读目标缓冲区,通过所述第一DMA读请求线通知所述DMA控制器本次DMA传输是否完成;
所述根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址,通过所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区,包括:向DMA控制器的源地址寄存器中写入所述第二读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第二读源缓冲区读取数据的第四长度;将所述第二读源缓冲区和第二读目标缓冲区对应的第二DMA读请求线配置到所述读通道;设置DMA控制器根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址从所述第二读源缓冲区中读取所述第四长度的数据至所述第二读目标缓冲区,通过所述第二DMA读请求线通知所述DMA控制器本次DMA传输是否完成。
5.一种数据传输装置,其特征在于,所述装置包括:。
配置模块,用于配置宽带卫星调制解调卡读写缓冲区的相关信息以及所述宽带卫星调制解调卡读写缓冲区与计算机读写缓冲区之间的直接内存存取DMA控制器通道,所述宽带卫星调制解调卡读写缓冲区包括第一写目标缓冲区、第二写目标缓冲区、第一读源缓冲区和第二读源缓冲区,所述DMA控制器通道包括写通道和读通道;
交替写入模块,用于当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的写数据请求时,通过设置所述写通道将所述计算机内部配置的第一写源缓冲区和第二写源缓冲区中数据交替写入至所述第一写目标缓冲区和第二写目标缓冲区;
交替读取模块,用于当所述宽带卫星调制解调卡的驱动程序收到来自上层应用程序的读数据请求时,通过设置所述读通道将所述第一读源缓冲区和第二读源缓冲区中数据交替读取至所述计算机内部配置的第一读目标缓冲区和第二读目标缓冲区。
6.如权利要求5所述的装置,其特征在于,所述交替写入模块包括交替写数据单元,所述交替读取模块包括交替读数据单元;
所述交替写数据单元,用于通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区并写入完成后,在所述第一写目标缓冲区中数据被读出时,通过设置所述写通道将所述第二写源缓冲区中数据写入至所述第二写目标缓冲区并写入完成后,在所述第二写目标缓冲区中数据被读出时,通过设置所述写通道将所述第一写源缓冲区中数据写入至所述第一写目标缓冲区;
所述交替读数据单元,用于通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区并在读取完成后,在所述第一读目标缓冲区中数据被读出时,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区并在读取完成后,在所述第二读目标缓冲区中数据被读出时,通过设置所述读通道从所述第一读源缓冲区读取数据至所述第一读目标缓冲区。
7.如权利要求6所述的装置,其特征在于,所述交替写数据单元包括第一查询单元、第一写单元和第二写单元,所述交替读数据单元包括第二查询单元、第一读单元和第二读单元;
所述第一查询单元,用于在执行向所述第一写目标缓冲区或第二写目标缓冲区写数据的操作时,查询上下文区,所述上下文区保存有所述第一写目标缓冲区或第二写目标缓冲区的地址以及所述第一写目标缓冲区或第二写目标缓冲区的被写满后触发中断的写目标缓冲区的信息;
所述第二写单元,用于若所述上下文区中保存有所述第一写目标缓冲区的信息,则在所述第一写目标缓冲区中数据被读出时,根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址,通过设置所述写通道将所述第二写源缓冲区的数据写入至所述第二写目标缓冲区;
所述第一写单元,用于若所述上下文区中保存有所述第二写目标缓冲区的信息,则在所述第二写目标缓冲区中数据被读出时,根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址,通过设置所述写通道将所述第一写源缓冲区的数据写入至所述第一写目标缓冲区;
所述第二查询单元,用于在执行从所述第一读源缓冲区或第二读源缓冲区读取数据的操作时,查询所述上下文区,所述上下文区保存有所述第一读源缓冲区或第二读源缓冲区的地址以及所述第一读源缓冲区或第二读源缓冲区被读空后触发中断的读源缓冲区的信息;
所述第二读单元,用于若所述上下文区中保存有所述第一读源缓冲区的信息,则在所述第一读目标缓冲区中数据被读出时,根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址,通过设置所述读通道从所述第二读源缓冲区读取数据至所述第二读目标缓冲区;
所述第一读单元,用于若所述上下文区中保存有所述第二读源缓冲区的信息,则在所述第二读目标缓冲区中数据被读出时,根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址,通过设置所述读通道从所述第一读源缓冲区的读取数据至所述第一读目标缓冲区。
8.如权利要求7所述的装置,其特征在于,所述第一写单元包括:
第一寄存器设置单元,用于向DMA控制器的源地址寄存器中写入所述第一写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第一写目标缓冲区写入数据的第一长度;
第一写通道配置单元,用于将所述第一写源缓冲区和第一写目标缓冲区对应的第一DMA写请求线配置到所述写通道;
第一目标缓冲区写入单元,用于设置DMA控制器根据所述第一写源缓冲区的地址和第一写目标缓冲区的地址将所述第一写源缓冲区中所述第一长度的数据写入至所述第一写目标缓冲区,通过所述第一DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述第二写单元包括:
第二寄存器设置单元,用于向DMA控制器的源地址寄存器中写入所述第二写源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二写目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次向所述第二写目标缓冲区写入数据的第二长度;
第二写通道配置单元,用于将所述第二写源缓冲区和第二写目标缓冲区对应的第二DMA写请求线配置为所述写通道;
第二目标缓冲区写入单元,用于设置DMA控制器根据所述第二写源缓冲区的地址和第二写目标缓冲区的地址将所述第二写源缓冲区中所述第二长度的数据写入至所述第二写目标缓冲区,通过所述第二DMA写请求线通知所述DMA控制器本次DMA传输是否完成;
所述第一读单元包括:
第三寄存器设置单元,用于向DMA控制器的源地址寄存器中写入所述第一读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第一读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第一读源缓冲区读取数据的第三长度;
第一读通道配置单元,用于将第一读源缓冲区和第一读目标缓冲区对应的第一DMA读请求线配置为所述读通道;
第一源缓冲区读取单元,用于设置DMA控制器根据所述第一读源缓冲区的地址和第一读目标缓冲区的地址从所述第一读源缓冲区中读取所述第三长度的数据至所述第一读目标缓冲区,通过所述第一DMA读请求线通知所述DMA控制器本次DMA传输是否完成;
所述第二读单元包括:
第四寄存器设置单元,用于向DMA控制器的源地址寄存器中写入所述第二读源缓冲区的地址、向所述DMA控制器的目标地址寄存器中写入所述第二读目标缓冲区的地址和向所述DMA控制器的长度寄存器中写入单次从所述第二读源缓冲区读取数据的第四长度;
第二读通道配置单元,用于将所述第二读源缓冲区和第二读目标缓冲区对应的第二DMA读请求线配置为所述读通道;
第二源缓冲区读取单元,用于设置DMA控制器根据所述第二读源缓冲区的地址和第二读目标缓冲区的地址从所述第二读源缓冲区中读取所述第四长度的数据至所述第二读目标缓冲区,通过所述第二DMA读请求线通知所述DMA控制器本次DMA传输是否完成。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711165798.5A CN107967225B (zh) | 2017-11-21 | 2017-11-21 | 数据传输方法、装置、计算机可读存储介质和终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711165798.5A CN107967225B (zh) | 2017-11-21 | 2017-11-21 | 数据传输方法、装置、计算机可读存储介质和终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107967225A true CN107967225A (zh) | 2018-04-27 |
CN107967225B CN107967225B (zh) | 2021-04-27 |
Family
ID=62001449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711165798.5A Active CN107967225B (zh) | 2017-11-21 | 2017-11-21 | 数据传输方法、装置、计算机可读存储介质和终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107967225B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502190A (zh) * | 2019-08-28 | 2019-11-26 | 上海航天电子通讯设备研究所 | 文件读写方法 |
CN110896567A (zh) * | 2018-09-12 | 2020-03-20 | 广州优视网络科技有限公司 | 基于wifi的数据传输方法及设备 |
CN110990309A (zh) * | 2019-10-30 | 2020-04-10 | 西安电子科技大学 | Tte端系统适配卡pcie控制器的高效中断操作方法 |
CN111555791A (zh) * | 2020-03-31 | 2020-08-18 | 北京控制工程研究所 | 一种高可靠高频率的卫星无线数据采集系统及方法 |
CN112835829A (zh) * | 2021-02-10 | 2021-05-25 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多通道dma传输测控信号的方法 |
CN113342724A (zh) * | 2021-04-25 | 2021-09-03 | 西人马(西安)测控科技有限公司 | 一种基于fpga的数据传输方法与装置 |
CN114490466A (zh) * | 2021-12-28 | 2022-05-13 | 深圳市紫光同创电子有限公司 | 一种实现数据连续存储的ddr ip核架构及方法 |
CN115833920A (zh) * | 2023-02-14 | 2023-03-21 | 北京融为科技有限公司 | 一种解调数据的传输方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080183908A1 (en) * | 2007-01-30 | 2008-07-31 | Hewlett-Packard Development Company, L.P. | Control of Data Transfer |
CN101540191A (zh) * | 2009-04-21 | 2009-09-23 | 苏州国芯科技有限公司 | 实时加密u盘及高速加解密方法 |
CN102221986A (zh) * | 2010-04-15 | 2011-10-19 | 研祥智能科技股份有限公司 | 一种基于pci总线的高速数据缓存与采集系统 |
CN104780019A (zh) * | 2014-12-03 | 2015-07-15 | 中国航天科工集团第三研究院第八三五七研究所 | 光纤通信数据的存储方法 |
CN105738065A (zh) * | 2015-12-18 | 2016-07-06 | 金陵科技学院 | 一种基于高速数据采集卡的运动地板震动吸收测量仪及其方法 |
-
2017
- 2017-11-21 CN CN201711165798.5A patent/CN107967225B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080183908A1 (en) * | 2007-01-30 | 2008-07-31 | Hewlett-Packard Development Company, L.P. | Control of Data Transfer |
CN101540191A (zh) * | 2009-04-21 | 2009-09-23 | 苏州国芯科技有限公司 | 实时加密u盘及高速加解密方法 |
CN102221986A (zh) * | 2010-04-15 | 2011-10-19 | 研祥智能科技股份有限公司 | 一种基于pci总线的高速数据缓存与采集系统 |
CN104780019A (zh) * | 2014-12-03 | 2015-07-15 | 中国航天科工集团第三研究院第八三五七研究所 | 光纤通信数据的存储方法 |
CN105738065A (zh) * | 2015-12-18 | 2016-07-06 | 金陵科技学院 | 一种基于高速数据采集卡的运动地板震动吸收测量仪及其方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110896567A (zh) * | 2018-09-12 | 2020-03-20 | 广州优视网络科技有限公司 | 基于wifi的数据传输方法及设备 |
CN110502190A (zh) * | 2019-08-28 | 2019-11-26 | 上海航天电子通讯设备研究所 | 文件读写方法 |
CN110502190B (zh) * | 2019-08-28 | 2023-03-17 | 上海航天电子通讯设备研究所 | 文件读写方法 |
CN110990309A (zh) * | 2019-10-30 | 2020-04-10 | 西安电子科技大学 | Tte端系统适配卡pcie控制器的高效中断操作方法 |
CN110990309B (zh) * | 2019-10-30 | 2023-04-28 | 西安电子科技大学 | Tte端系统适配卡pcie控制器的高效中断操作方法 |
CN111555791B (zh) * | 2020-03-31 | 2022-04-08 | 北京控制工程研究所 | 一种高可靠高频率的卫星无线数据采集系统及方法 |
CN111555791A (zh) * | 2020-03-31 | 2020-08-18 | 北京控制工程研究所 | 一种高可靠高频率的卫星无线数据采集系统及方法 |
CN112835829A (zh) * | 2021-02-10 | 2021-05-25 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 多通道dma传输测控信号的方法 |
CN113342724A (zh) * | 2021-04-25 | 2021-09-03 | 西人马(西安)测控科技有限公司 | 一种基于fpga的数据传输方法与装置 |
CN114490466A (zh) * | 2021-12-28 | 2022-05-13 | 深圳市紫光同创电子有限公司 | 一种实现数据连续存储的ddr ip核架构及方法 |
CN114490466B (zh) * | 2021-12-28 | 2024-04-30 | 深圳市紫光同创电子有限公司 | 一种实现数据连续存储的ddr ip核架构及方法 |
CN115833920A (zh) * | 2023-02-14 | 2023-03-21 | 北京融为科技有限公司 | 一种解调数据的传输方法和装置 |
CN115833920B (zh) * | 2023-02-14 | 2023-04-25 | 北京融为科技有限公司 | 一种解调数据的传输方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107967225B (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107967225A (zh) | 数据传输方法、装置、计算机可读存储介质和终端设备 | |
US10324873B2 (en) | Hardware accelerated communications over a chip-to-chip interface | |
EP2288996B1 (en) | Virtual-interrupt-mode interface and method for virtualizing an interrupt mode | |
US4956771A (en) | Method for inter-processor data transfer | |
CN100592273C (zh) | 执行dma数据传输的设备和方法 | |
EP1896965B1 (en) | Dma descriptor queue read and cache write pointer arrangement | |
US7784060B2 (en) | Efficient virtual machine communication via virtual machine queues | |
WO2017066944A1 (zh) | 一种存储设备访问方法、装置和系统 | |
US7647416B2 (en) | Full hardware based TCP/IP traffic offload engine(TOE) device and the method thereof | |
CN101150488B (zh) | 一种零拷贝网络报文接收方法 | |
US20080086575A1 (en) | Network interface techniques | |
CN101150487A (zh) | 一种零拷贝网络报文发送方法 | |
EP0325856B1 (en) | Interface circuit for data transfer between processor and input/output device | |
EP1103889A2 (en) | Flexible general-purpose input/output system | |
US7191262B2 (en) | High-throughput UART interfaces | |
EP1625506B1 (en) | Usb host controller with memory for transfer descriptors | |
CN114175005A (zh) | 包括主机计算设备和网络接口设备的可编程网络接口设备 | |
US11704263B2 (en) | Configurable multi-function PCIe endpoint controller in an SoC | |
CN110874336B (zh) | 一种基于申威平台的分布式块存储低延迟控制方法及系统 | |
CN113010470A (zh) | 边缘节点远程控制系统、方法、设备及存储介质 | |
US7216186B2 (en) | Controlling data flow between processor systems | |
EP1759297B1 (en) | Interrupt scheme for bus controller | |
US5488734A (en) | Coupler for providing a high speed interface between a communication controller and a controller extension | |
US6735659B1 (en) | Method and apparatus for serial communication with a co-processor | |
CN110659143B (zh) | 一种容器间的通讯方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |