CN102844748A - 用于主从接口的基于包的数据传输***与方法 - Google Patents
用于主从接口的基于包的数据传输***与方法 Download PDFInfo
- Publication number
- CN102844748A CN102844748A CN2010800661983A CN201080066198A CN102844748A CN 102844748 A CN102844748 A CN 102844748A CN 2010800661983 A CN2010800661983 A CN 2010800661983A CN 201080066198 A CN201080066198 A CN 201080066198A CN 102844748 A CN102844748 A CN 102844748A
- Authority
- CN
- China
- Prior art keywords
- data
- segment
- data segment
- descriptor
- main device
- 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
Images
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9015—Buffering arrangements for supporting a linked list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3808—Network interface controller
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Communication Control (AREA)
Abstract
一种主从数据传输***中,从装置自外部装置接收基于包的数据并将包内容作为数据段存储进缓冲器。从装置将多个数据段合并入数据流且将其发送至主装置。主装置使用直接存储器存取将自从装置的数据流解包为单独数据段,而不需要存储器拷贝。为使能主装置建立直接存储器存取,从装置通过带外通道提前将关于数据段大小的信息发送至主装置,例如通过***前一数据流的头部和/或尾部来发送大小信息。主装置利用数据段大小信息来编程描述符表,使得每一个描述符引发数据流中的一个数据段存储至主装置的***存储器。
Description
技术领域
本发明有关于用于主从接口的数据传输方法与对应的装置;特别地,本发明提供了一种数据传输方法,其中主装置使用直接存储器存取来解包自从装置接收的包括多个数据单元的数据流,而不需要存储器拷贝。
背景技术
安全数字输入输出(Secure Digital Input Output,以下简称为SDIO)是使用安全数字(Secure Digital,以下简称为SD)卡而不是闪存(flash memory)卡作为装置的组成要素(form factor)的接口。该装置(SDIO接口的从装置)可包括全球定位***(GlobalPositioning System,GPS)接收器、无线保真(Wi-Fi)或者蓝牙(bluetooth)传输器(adapter)、调制解调器(modem,modulator-demodulator)、以太传输器(Ethernetadapter)、条码扫瞄器(barcode reader),红外数据协会(IrDA,Infrared DataAssociation)传输器、调频收音机(FM radio)调谐器(tuner)、电视(TV)调谐器、射频识别(Radio Frequency Identification,RFID)读取器(reader),数码相机(digitalcamera)、大容量存储媒体(mass storage media)例如硬盘驱动(hard drive)等。支持SDIO的主装置(SDIO接口的主装置)可为个人数字助理(personal digital assistant,PDA)、膝上电脑(laptop computer)、手机(“智能手机(smart phone)”)等。
现有的使用SDIO接口的主从***(host-slave system)中,主装置控制数据传输,从装置仅仅根据主装置的请求来移动(move)数据。从装置不能发起(initiate)数据传输。数据传输中,主装置的请求发送与从装置的请求接收之间有一个时间延迟(timedelay),类似地,从装置的响应发送(response sending)与主装置的响应接收之间也有一个时间延迟。此种情况被称为命令间延迟(inter-command delay)。因为从装置必须等待主装置来请求数据,所以与请求命令相关的命令间延迟会引发数据传输的延迟。命令间延迟可多达几百毫秒(microsecond)。
发明内容
本发明有关于安全数字输入输出或其它主从***与相关方法,其中从装置传输包括多个数据段的数据流以及主装置使用直接存储器存取以将数据段解包为单独的数据段。
本发明的一个目标是提供一种用于安全数字输入输出或其它主从接口的有效的数据传输方法。
本发明的其它特性与优点在下文的实施方式部分进行描述,其可自实施方式的描述或者自实施本发明的过程中得出。在结合附图来参考实施方式和权利要求中指出的结构之后,本发明的目标和其它优点可被理解并实现。
为达到这些目标和其它优点,在下文的实施方式中,本发明提供一种实施于主从数据传输***的数据传输方法,其中从装置与外部装置进行数据通信,所述方法包括:(a)从装置自外部装置接收数据并将接收的数据存储于从装置的缓冲器中,所述数据包括多个数据段;(b)从装置获取数据段大小信息,所述信息用于设定所述多个数据段的每一者的大小;(c)从装置通过带外通道将数据段大小信息发送至主装置;(d)主装置通过带外通道自从装置接收所述数据段大小信息;(e)主装置产生一个或者多个描述符表,每一个描述符表包括多个描述符,每一个描述符定义从装置与主装置的***存储器之间的一个数据传输,每一个描述符用于设定***存储器中的地址和准备传输的数据的长度,其中描述符中设定的长度是依据自从装置接收的数据段大小信息;(f)主装置发出数据传输命令至从装置以传输所述多个数据段;(g)为响应数据传输命令,从装置以一个数据流来传输所述多个数据段;以及(h)主装置根据描述符表执行直接存储器存取,以将包括在所述数据流中的一些独立的所述多个数据段中的一部分单独的数据段存储于主装置的***存储器的设定的地址。
在另一种实施方式中,本发明提供一种实施于主从数据传输***的数据传输方法,其中从装置与外部装置进行数据通信,所述方法包括:(a)从装置自外部装置接收数据且将接收的数据存储于从装置的缓冲器中,所述数据包括第一多个数据段和第二多个数据段;(b)从装置获取数据段大小信息,所述数据段大小信息用于设定第二多个数据段中的每一个数据段的大小;(c)为响应自主装置的第一数据传输命令,从装置产生第一数据流并将第一数据流发送至主装置,所述第一数据流包括第一多个数据段和多个辅助段,其中辅助段包括数据段大小信息,所述信息用于设定所述第二多个数据段的大小;(d)主装置接收第一数据流并自所述多个辅助段获取数据段大小信息;(e)主装置产生一个或者多个描述符表,每一描述符表包括多个描述符,每一个描述符定义从装置与主装置的***存储器之间的一个数据传输,每一个描述符用于设定***存储器中的地址以及准备传输的数据的长度,其中描述符中设定的长度是依据步骤(d)中获得的数据段大小信息;(f)主装置发出第二数据传输命令至从装置以作为数据流传输所述第二多个数据段;(g)为响应第二数据传输命令,从装置在第二数据流中传输所述第二多个数据段;以及(h)主装置根据描述符表执行直接存储器存取以将第二数据流中包括的所述第二多个数据段中的一部分单独的数据段存储于主装置的***存储器的设定的地址。
在另一种实施方式中,本发明提供一种数据传输方法,用于主从***的主装置,所述数据传输方法包括:自从装置接收一个或者多个数据流,所述数据流包括第一多个数据段和多个辅助段;自所述多个辅助段的至少一部分获取数据段大小信息,所述数据段大小信息用于设定存储于所述从装置的第二多个数据段的大小;产生一个或者多个描述符表,描述符表包括多个描述符,每一个描述符定义从装置与主装置的***存储器之间的数据传输,每一个描述符设定所述***存储器的地址和准备传输的数据的长度,其中所述描述符依据所述数据段大小信息设定所述长度;发出传输命令至所述从装置以数据流传输所述第二多个数据段;根据所述描述符表执行直接存储器存取,以将自从装置的数据流的第二多个数据段中的一部分单独的数据段存储于主装置的***存储器的所述设定地址。
在另一种实施方式中,本发明提供一种主从***中的主装置,包括:处理器;以及***存储器,用于存储由处理器执行的数据和程序代码,所述程序代码用于引发处理器执行一个数据传输程序,数据传输程序包括:自从装置接收一个或者多个数据流,所述数据流包括第一多个数据段和多个辅助段;自多个辅助段的至少一部分获取数据段大小信息,数据段大小信息用于设定存储于从装置的第二多个数据段的大小;产生一个或者多个描述符表,所述描述符表包括多个描述符,每一个描述符用于定义主装置的***存储器与从装置之间的数据传输,每一个描述符设定所述***存储器的一个地址和准备传输的数据的长度,其中描述符设定的长度是依据数据段大小信息;发出传输命令至从装置,以作为数据流传输第二多个数据段;根据描述符表执行直接存储器存取,以将自从装置的数据流的第二多个数据段中的一部分单独的数据段存储于主装置的***存储器的已设定的地址。
在另一种实施方式中,本发明提供一种从装置,连接至主从***的主装置,从装置用于主装置与外部装置之间的数据通信,从装置包括:缓冲器,用于存储自外部装置接收的数据,所述数据包括第一多个数据段和第二多个数据段;控制电路,耦接至缓冲器,用于获取数据段大小信息,数据段大小信息用于设定缓冲器内的第二多个数据段中的每一个数据段的大小;以及合并电路,耦接至缓冲器和控制电路,用于产生数据流并将数据流传输至主装置,以响应自主装置的数据传输命令,所述数据流包括第一多个数据段和多个辅助段,其中辅助段包括数据段大小信息。
在另一种实施方式中,本发明提供一种方法,实施于主从***的从装置,以协助主装置和外部装置之间的数据通信,所述方法包括:将自外部装置接收的数据存储至从装置的缓冲器,所述数据包括第一多个数据段和第二多个数据段;获取数据段大小信息,其中数据段大小信息用于设定缓冲器内的第二多个数据段中的每一个数据段的大小;以及产生一数据流并将数据流传输至主装置,以响应自主装置的数据传输命令,数据流包括第一多个数据段和多个辅助段,其中辅助段包括数据段大小信息。
在结合附图阅读下文的实施方式中的较佳实施方式之后,本领域的技术人员应可理解本发明的上述和其它优点。
附图说明
图1是根据本发明的一种实施方式的主从数据传输***的模块示意图。
图2是自从装置发送至主装置数据流的数据格式的实例的示意图。
图3a是根据SD主控制器精简规格版本2.00的ADMA2的示意图。
图3b、3c是ADMA2的操作的示意图。图3b是状态表以及图3c解释每一状态的操作。
图4、5是根据本发明的一种实施方式的数据传输方法的流程图。图4是从装置执行的过程以及图5是主装置执行的过程。
具体实施方式
在说明书与权利要求书当中使用了某些词汇来指称特定的元件。本领域的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同样的元件。本说明书与权利要求书并不以名称的差异来作为区分元件的方式,而是以元件在功能上的差异来作为区分的准则。在通篇说明书与权利要求中所提及的“包括”是开放式的用语,应解释成“包括但不限于”。另外,“耦接”一词在此包括任何直接与间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表所述第一装置可直接电气连接于所述第二装置,或透过其它装置或连接手段间接地电气连接至所述第二装置。
一种常用的解决方案是申请号为US 12/339,072、公开号为US 2009/0259786的美国专利申请,所述美国专利申请中描述了一种使用SDIO接口的主从***,其中从装置用于协助主装置与外部装置之间的数据通信。在此主从***中,从装置自外部装置接收数据包并将包合并为数据流以传输至主装置。每一个数据流包括多个被称为服务数据单元(Service Data Unit,以下简称为SDU)的数据段(data segment),其中每一SDU对应于自外部装置接收的包的数据内容(data content)。从装置也为向主装置传输的数据流***头部(header)和/或尾部(tailer),头部和/或尾部包括有关于从装置的状态(status)与缓冲器状况(condition)的信息。在主装置一侧,主装置自头部和/或尾部获取从装置的缓冲器状况信息。利用此信息,主装置确定发送至从装置或者自从装置接收的数据量,并据此发出传输命令至从装置。此方案可显著减少命令间延迟。
为提高性能,本发明的实施方式提供一种进一步改进的主从***,其中主装置利用直接存储器存取(Direct Memory Access,以下简称为DMA)技术来以一种高效率的方式解包自从装置接收的数据流。更特别地,当从装置传输包括多个SDU的数据流至主装置时,从装置在所述数据流中***头部和/或尾部,其中头部和/或尾部包括有关于准备传输至主装置的SDU的数据大小信息。主装置利用数据大小信息使用DMA建立后续数据传输,使得当主装置接收所述数据流后,主装置可将自从装置接收的数据流直接解包(unpack)为单独的包,而无需执行存储器拷贝(memory copy)。
而现有的装置并不实施本发明中描述的DMA技术,现有的装置中,整个(entire)数据流首先被接收到主装置的缓冲存储器(buffer memory)中,然后缓冲的数据被逐包(packet-by-packet)的拷贝出来,以将数据流解包为供其它程序使用的单独的包。此过程被称为存储器拷贝。存储器拷贝需要被分配相对较大的缓冲器区域来暂存(temporarilyholding)数据流。此外,存储器拷贝也需要主装置CPU的额外工作来将数据自数据所在的缓冲器拷贝到存储单独的包的缓冲器。本发明中使用DMA技术,当数据流被自从装置接收时,就将数据流解包为多个包,而不需要执行存储器拷贝。下文参考图1-图5来详细描述本发明的实施方式。
图1是根据本发明的一种实施方式的数据传输***100的方块示意图。数据传输***100包括以主从关系相互耦接的主装置(host/master device)101和从装置103。在实际应用中,主装置可为PDA、膝上电脑、移动电话等。从装置可为GPS接收器、WiFi或蓝牙传输器、调制解调器、以太传输器、条码扫瞄器、IrDA传输器、FM收音机调谐器、TV调谐器、RFID读取器、数码相机、大容量存储装置(例如硬盘驱动)等。主装置具有处理器(例如CPU)和用于存储程序代码和其它数据的存储器(memory),存储器例如为随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、大容量存储装置(例如硬盘驱动)等。在多种应用中,从装置与外部装置通信或者自外部装置接收信号,外部装置例如为GPS卫星、另一Wi-Fi或蓝牙装置、网络(network)等,其中所述数据传输使用与外部装置相容的通信协议或数据格式。
在一种实施方式中,从装置的一种组成要素为SD卡。换句话说,从装置包括连接器(connector),所述连接器具有SD卡槽可接受的物理形状(physical shape)与引脚结构(pin configuration)。在下文描述的一个实例中,从装置运作为通信传输器,以协助主装置101与外部装置(未画出)之间的数据通信。
从装置103包括合并电路(merging circuit)111、控制电路112、缓冲器池(bufferpool)114(也可以被称为缓冲器)以及接口电路(interface circuit)116。从装置103的与本发明无关的组件未画出。缓冲器114用于暂存外部装置与主装置101之间传输的数据。接口电路116控制与外部装置的数据传输,其中所述数据传输使用与外部装置相容的适当通信协议或数据格式。
控制电路112管理缓冲器池114且控制合并电路111。在接收数据交换(transaction)期间(即主装置通过从装置自外部装置接收数据),控制电路112产生头部和/或尾部,在下文中详细描述。头部和/或尾部被输入至合并电路111。合并电路111按照预定数据格式将缓冲器池中的数据(即自外部装置接收的数据)与头部和/或尾部合并以产生合并数据(merged data)流,且将合并数据发送至主装置101。
图2是合并电路111产生且发送至主装置101的数据流的数据格式的一种实施方式的示意图。自外部装置接收的数据通常是基于包(packet-based)的数据。接口电路116自数据包中提取(extract)出数据内容(“纯数据(pure data)”)并将纯数据放入缓冲器114。在图2所示的数据结构中,每一SDU数据段22对应于自外部装置接收的包的数据内容。合并电路111为每一SDU数据段22添加头部21(“SDU header”)及尾部23(“SDUtailer”),并将多个SDU数据段与其头部和尾部合并为数据流。数据流是传输至主装置以响应主装置的传输命令的数据的连续(continuous)的流。
图2的虚线26表示SDIO协议定义的块边界(boundaries)。如同许多其它协议,SDIO中主装置以块(block)为单位传输数据。SDIO在一次数据交换中使用多个块以存取大量数据;块大小在从装置与主装置之间是可配置的(configurable),其范围为从1B到2KB。主装置发出的每一数据传输命令设定准备被传输的多个块。如图2所示,从装置103的合并电路111产生的数据流中,SDU数据段大小由包大小决定,所以块边界与SDU数据段22的边界无关。SDU数据段可具有不同大小。因此,当主装置需要进行一次数据交换来接收特定数目的SDIO块时,这些块可包括一个或多个SDU、或者包括SDU的一部分。块边界(虚线26)可位于数据流的任何位置,例如SDU数据段22内、SDU头部21内、SDU尾部23内等。在数据流的结尾(end),从装置可添加填充数据(padding data)25,使得数据流的数据总量符合传输命令设定的块数量。
从装置103使用头部21和/或尾部23来输送(convey)各种信息至主装置101。头部或尾部数据可为任何所需的格式。SDU头部及尾部的位置并不重要;并不需要位于SDU前或者其后。更一般的,头部和/或尾部可统称为数据流的辅助段,而SDU可被称为数据流的数据段。在上述相关(co-pending)专利申请中,头部和/或尾部包括关于从装置的状态及缓冲器状况的信息。根据本发明的实施方式,头部和/或尾部包括有关于数据流的SDU大小的信息,其中主装置101使用此信息来设置DMA。
主装置101实施SD主控制器标准规格(SD Host controller Standard Specification)中规定的特性。是通过CPU执行存储于主装置的存储器中的程序代码来执行。SD主控制器标准规格使得SD主控制器可选择地使用DMA来进行数据传输。定义于SD主控制器标准规格版本1.00的DMA演算法(algorithm)被称为单操作DMA(Single Operation DMA,以下简称为SDMA);定义于SD规格的A2部分,SD主控制器精简规格(SD Host ControllerSimplified Specification)版本2.00与版本3.0的DMA演算法被称为高级DMA(AdvancedDMA,以下简称为ADMA)(参照版本2.00的1.4与1.13部分)。在ADMA的方案中,在执行ADMA之前,主装置驱动器可将数据列表编程为描述符表,所述数据传输于***存储器与SD从装置之间。这使得ADMA的运作不必中断(interrupting)主装置驱动器。
图3a(出自SD主控制器精简规格,版本2.00的图1-图9)是ADMA2的示意图,其中ADMA2是ADMA两个版本中的一个。描述符表31由主装置驱动器在***存储器32中创建(create)。每一行描述符(一个可执行单元)包括地址、长度及属性(attribute)字段。所述属性设定描述符行的操作,例如数据传输(“Tran”)、链接等。图3所示的实例中,当描述符表的第1行的“Address 1,Length 1,Tran”被执行时,将引发自从装置传输的一定量的数据作为“Data 1”被存储于***存储器。当描述符表的第3行的“Address,-,Link”被执行时,将引发描述符指标(pointer)移向另一地址,所述另一地址包括描述符表的另一行。ADMA部分33的结构包括下列硬件组件:SDMA、状态机(StateMachine),以及寄存器(Register)电路(参照图3a)。
ADMA的链接列表特性(link list feature)可被用于解包由从装置接续(concatenate)的包括多个SDU的数据流。链接描述符,亦即属性值为Link的描述符,可链接至另一描述符表,所述另一描述符表设定于链接描述符的地址字段。例如,图3的实例中,描述符表的第3行是链接描述符。使用链接描述符,多个描述符表可被链接起来,使得长数据流可被解包。
图3b(出自SD主控制器精简规格版本2.00的图1-图12)是ADMA2的状态表的示意图。图3c(出自SD主控制器精简规格版本2.00的图1-图12)用于解释每一状态的操作。四种状态被定义为:取描述符状态(Fetch Descriptor state)、改变地址状态(ChangeAddress state)、传输数据状态(Transfer Data state)以及停止DMA状态(Stop DMAstate)。取描述符状态下,ADMA2取一个描述符行并在内部寄存器(internal register)中设定参数,然后进入改变地址状态。改变地址状态下,链接操作将另一描述符地址下载(load)到ADMA***地址寄存器。在另一种实施方式中,ADMA***地址寄存器被增加(increment)以指向下一描述符行。若描述符的属性字段的END值未指示终止(End=0),ADMA2进入传输数据状态。传输数据状态下,在***存储器与从装置之间执行一个描述符行的数据传输。若数据传输继续(End=0),ADMA2进入取描述符状态。若数据传输完成,ADMA2进入停止DMA状态。以下情况下ADMA2停留在停止DMA状态:(1)电源重启(PowerOn reset)或软件重启(software reset)之后;以及(2)所有描述符数据传输完成。当新的ADMA2操作由写入命令寄存器(writing Command register)启动时,ADMA2进入取描述符状态。以上描述的ADMA规定在SD主控制器精简规格版本2.00中且被相关领域的技术人员所熟知。
图4、5是根据本发明的一种实施方式的主装置自从装置接收数据的数据传输程序的示意图。图4是从装置103执行的过程以及图5是主装置101执行的过程。
如图4所示,从装置103自外部装置接收数据且将其存储于缓冲器(步骤S41)。如上所述,自外部装置接收的数据通常为基于包的数据,以及从装置103自数据包提取数据内容(“纯数据”)且将其作为SDU存入缓冲器。控制电路112获取缓冲器状况信息及其它关于从装置的状态信息,也获取有关于SDU大小的信息(步骤S42)。当从装置自主装置接收传输命令时(步骤S43),此情况下所述传输命令是接收数据的命令,控制电路112产生头部和/或尾部,其中头部和/或尾部包括SDU大小信息及其它信息(步骤S44)。步骤S42、S43及S44的顺序并不重要。然后,合并电路111将多个SDU与头部及尾部合并以产生数据流(步骤S45)。所述数据流被传输至主装置(步骤S46)。本程序(步骤S41至S46)被重复执行以使自外部装置接收的其它数据被传输至主装置。
应当注意,头部或尾部中的SDU大小信息并不描述当前数据流中正在被传输的SDU大小;而是,SDU大小信息是有关于未被在当前数据流中传输但准备(ready to)在后续传输的SDU。如下文所述,主装置使用包括于数据流的头部/尾部的SDU大小信息来建立DMA以接收后续数据流。
在主装置一侧,如图5所示,主装置101自从装置103接收数据流(步骤S51)。如上文所述,数据流包括头部和/或尾部,其中头部和/或尾部包括关于准备自从装置传输至主装置的SDU的大小信息。请再次注意头部和/或尾部中的大小信息并不是当前数据流的SDU的大小信息。主装置自头部和/或尾部中收集(gather)此SDU大小信息(步骤S52)。然后,主装置可依据所述SDU大小信息来配置主装置控制器DMA引擎(engine)以传输一些准备好的SDU。更特别地,主装置产生描述符表(descriptor table),通过设定描述符表的每一行的地址,长度与属性,使得每一行对应于一个准备传输的SDU(步骤S53)。描述符行的长度字段(field)是依据上述步骤S52中收集的SDU大小信息来设定的。例如,长度值可为准备的SDU的长度加上头部的长度与尾部的长度。描述符表被建立后,主装置101发出读取命令(read command)至从装置以传输多个SDU(步骤S54)。为响应此传输命令,从装置在数据流中传输被请求的数据。主装置执行DMA(例如上文所述的ADMA)以将来自从装置的数据流解包为单独的(individual)SDU并将所述SDU存储于主装置的***存储器中(步骤S54)。通过执行DMA,自从装置的数据流直接(directly)解包为单独的SDU,而无需执行存储器拷贝。
请注意图5所示的过程的流程图,步骤S51(自从装置接收数据流的步骤),其自身也可使用DMA操作。步骤S55中,自从装置接收的数据流的头部和/或尾部中可包括SDU大小信息,所述SDU大小信息有关于从装置缓冲器的其它SDU,以及主装置收集所述SDU大小信息以为后续的数据传输准备DMA描述符表。步骤52-55可被重复以自从装置传输后续数据。
图5中描述由主装置101执行的方法,可被实施为主装置SD驱动程序(host SD driverprogram)。此实施并不需要对主装置101的硬件结构作出任何修改。此驱动程序配合SD从装置103完成数据传输。
在上文所述的方法中,从装置利用***至第一数据流的头部和/或尾部来将数据段大小信息发送至主装置,从而使能(enable)主装置为后续的第二数据流建立DMA。更一般地,从装置与主装置可使用任何合适的通信方法来通信数据段大小信息,这些方法可以被统称为带外通道(outband channel)。
应可注意,尽管上文是以SDIO主从***为例进行描述,本发明并不限于SDIO***,本发明也可以应用于其它主从接口***。本发明尤其适用于与无固有的流量控制的协议相容的主从***。
在不脱离本发明的思想或范围的前提下,本领域的技术人员可以对本发明的主从数据传输***和对应的方法做出各种修改与变化。因此,对本发明的等同变化与修改均应涵盖在权利要求书的范围内。
Claims (20)
1.一种数据传输方法,用于主从***的主装置,该数据传输方法包括:
自该主从***的从装置接收一个或者多个数据流,该数据流包括第一多个数据段和多个辅助段;
自该多个辅助段的至少一部分获取数据段大小信息,该数据段大小信息用于设定存储于该从装置的第二多个数据段的大小;
产生一个或者多个描述符表,每一个描述符表包括多个描述符,每一个描述符定义该从装置与该主装置的***存储器之间的数据传输,每一该多个描述符用于设定该***存储器的地址和准备传输的数据的长度,其中该描述符设定的该长度是依据该数据段大小信息;
发出传输命令至该从装置,以使得该从装置以数据流来传输该第二多个数据段;
根据该描述符表执行直接存储器存取,以将自该从装置的该数据流的该第二多个数据段其中之一部分单独的数据段存储于该主装置的该***存储器的该设定的地址。
2.根据权利要求1所述的方法,其特征在于,该描述符表的每一描述符设定的该长度是依据该第二多个数据段其中之一的大小,以及其中每一描述符的该执行引发该第二多个数据段其中之一将被存储于该***存储器。
3.根据权利要求1所述的方法,其特征在于,该描述符表更包括一个或者多个额外描述符,每一额外描述符定义至另一个描述符表的链接。
4.根据权利要求1所述的方法,其特征在于,该辅助段位于该对应数据段前的头部或者位于该对应数据段后的尾部。
5.根据权利要求1所述的方法,其特征在于,该主从***使用安全数字输入输出接口。
6.一种主装置,用于主从***中,包括:
处理器;以及
***存储器,用于存储由该处理器执行的数据和程序代码,该程序代码用于引发该处理器执行数据传输程序,该数据传输程序包括:
自该从装置接收一个或者多个数据流,该数据流包括第一多个数据段与多个辅助段;
自该多个辅助段的至少一部分获取数据段大小信息,该数据段大小信息用于设定存储于该从装置的第二多个数据段的大小;
产生一个或者多个描述符表,每一描述符表包括多个描述符,每一描述符用于定义该主装置的该***存储器与该从装置之间的数据传输,每一该多个描述符设定该***存储器的地址和准备传输的数据的长度,其中该描述符设定的该长度是依据该数据段大小信息;
发出传输命令至该从装置,以作为数据流传输该第二多个数据段;
根据该描述符表执行直接存储器存取,以将自该从装置的该数据流的该第二多个数据段其中的一部分单独的数据段存储于该主装置的该***存储器的该设定的地址。
7.根据权利要求6所述的主装置,其特征在于,该描述符表的每一描述符设定的该长度是依据该第二多个数据段其中之一的大小,以及其中每一描述符的该执行引发该第二多个数据段其中之一被存储于该***存储器。
8.根据权利要求6所述的主装置,其特征在于,该描述符表更包括一个或者多个额外描述符,每一额外描述符定义至另一个描述符表的链接。
9.根据权利要求6所述的主装置,其特征在于,该辅助段是位于该对应数据段前的头部或者位于该对应数据段后的尾部。
10.根据权利要求6所述的主装置,其特征在于,该主从***使用安全数字输入输出接口。
11.一种从装置,连接至主从***的主装置,用于该主装置与外部装置之间的数据通信,该从装置包括:
缓冲器,用于存储自该外部装置接收的数据,该数据包括第一多个数据段和第二多个数据段;
控制电路,耦接至该缓冲器,用于获取数据段大小信息,该数据段大小信息设定该缓冲器内的每一该第二多个数据段大小;以及
合并电路,耦接至该缓冲器和该控制电路,用于产生数据流并将该数据流传输至该主装置,以响应自该主装置的数据传输命令,该数据流包括该第一多个数据段和多个辅助段,其中该辅助段包括该数据段大小信息。
12.根据权利要求11所述的从装置,其特征在于,该从装置更包括接口电路,用于使用预定通信协议控制该从装置及该外部装置之间的数据传输,其中自该外部装置接收的该数据包括多个数据包,其中该接口电路自每一数据包提取数据内容且将该提取的数据内容作为该多个数据段其中之一放入该缓冲器。
13.根据权利要求11所述的从装置,其特征在于,该合并电路以基于块的方式传输该数据流至该主装置。
14.根据权利要求11所述的从装置,其特征在于,该辅助段位于该对应数据段前的头部或者位于该对应数据段后的尾部。
15.根据权利要求11所述的从装置,其特征在于,该主从***使用安全数字输入输出接口。
16.一种方法,实施于主从***的从装置,以协助主装置与外部装置之间的数据通信,该方法包括:
将自该外部装置接收的数据存储至该从装置的缓冲器,该数据包括第一多个数据段和第二多个数据段;
获取设定该缓冲器内的每一该第二多个数据段的大小的数据段大小信息;以及
产生数据流并将该数据流传输至该主装置,以响应自该主装置的数据传输命令,该数据流包括该第一多个数据段和多个辅助段,其中该辅助段包括该数据段大小信息。
17.根据权利要求16所述的方法,其特征在于,该方法更包括:
使用预定通信协议控制该从装置与该外部装置之间的数据传输,其中自该外部装置接收的该数据包括多个数据包,该控制步骤包括自每一数据包提取数据内容以及将该提取的数据内容作为该多个数据段其中之一放入该缓冲器。
18.根据权利要求16所述的方法,其特征在于,该传输步骤中,该数据流被以基于块的方式传输至该主装置。
19.根据权利要求16所述的方法,其特征在于,该辅助段位于该对应数据段前的头部或者位于该对应数据段后的尾部。
20.根据权利要求16所述的方法,其特征在于,该主从***使用安全数字输入输出接口。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/773,660 US8626963B2 (en) | 2010-05-04 | 2010-05-04 | Packet based data transfer system and method for host-slave interface |
US12/773,660 | 2010-05-04 | ||
PCT/CN2010/075586 WO2011137608A1 (en) | 2010-05-04 | 2010-07-30 | Packet based data transfer system and method for host-slave interface |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102844748A true CN102844748A (zh) | 2012-12-26 |
CN102844748B CN102844748B (zh) | 2015-09-16 |
Family
ID=44902712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080066198.3A Active CN102844748B (zh) | 2010-05-04 | 2010-07-30 | 数据传输方法、主装置和从装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8626963B2 (zh) |
CN (1) | CN102844748B (zh) |
TW (1) | TWI479326B (zh) |
WO (1) | WO2011137608A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108462679A (zh) * | 2017-02-21 | 2018-08-28 | 杭州海康威视数字技术股份有限公司 | 数据传输方法及装置 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI465905B (zh) | 2010-09-22 | 2014-12-21 | Toshiba Kk | 記憶體系統、主機控制器、及直接記憶體存取之控制方法 |
US20140366071A1 (en) * | 2011-09-27 | 2014-12-11 | Thomson Licensing | Method and apparatus for qam modulator channel duplication |
US9577898B1 (en) | 2013-12-31 | 2017-02-21 | Narus, Inc. | Identifying IP traffic from multiple hosts behind a network address translation device |
CN105847190B (zh) * | 2016-03-17 | 2019-09-20 | 青岛海信电器股份有限公司 | 一种数据传输方法及处理器 |
US10268448B2 (en) * | 2016-05-06 | 2019-04-23 | Texas Instruments Incorporated | Data flow control for multi-chip-select |
US11243714B2 (en) * | 2019-06-11 | 2022-02-08 | Samsung Electronics Co., Ltd. | Efficient data movement method for in storage computation |
CN115242860B (zh) * | 2022-07-25 | 2024-02-02 | 苏州欧普照明有限公司 | 一种并发数据上报方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1218566A (zh) * | 1996-03-13 | 1999-06-02 | 钻石多媒体***公司 | 支持要求驱动的多重并行数字数据流传输的方法和装置 |
US20090172202A1 (en) * | 2007-12-26 | 2009-07-02 | Check-Yan Goh | Method for Receiving Data over an SDIO Interface and Device Using the Same |
CN101556569A (zh) * | 2008-04-10 | 2009-10-14 | 联发科技股份有限公司 | 在主装置以及从装置之间传送数据的方法及从装置 |
US20090327533A1 (en) * | 2008-06-25 | 2009-12-31 | Subba Reddy Kallam | Concatenating Secure Digital Input Output (SDIO) Interface |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01293431A (ja) | 1988-05-23 | 1989-11-27 | Toshiba Corp | メモリアクセス方式 |
US5014265A (en) | 1989-11-30 | 1991-05-07 | At&T Bell Laboratories | Method and apparatus for congestion control in a data network |
US6031867A (en) | 1993-07-02 | 2000-02-29 | Multi-Tech Systems, Inc. | Modem with firmware upgrade feature |
US5797033A (en) | 1995-03-31 | 1998-08-18 | Cirrus Logic, Inc. | Direct memory access for storing and retrieving data based on packet size |
US5638535A (en) | 1995-05-15 | 1997-06-10 | Nvidia Corporation | Method and apparatus for providing flow control with lying for input/output operations in a computer system |
US6201813B1 (en) | 1997-06-30 | 2001-03-13 | Cisco Technology, Inc. | Method and apparatus for using ATM queues for segmentation and reassembly of data frames |
US6714553B1 (en) * | 1998-04-15 | 2004-03-30 | Top Layer Networks, Inc. | System and process for flexible queuing of data packets in network switching |
US6438140B1 (en) * | 1998-11-19 | 2002-08-20 | Diva Systems Corporation | Data structure, method and apparatus providing efficient retrieval of data from a segmented information stream |
TW437223B (en) | 1998-12-21 | 2001-05-28 | D Link Corp | A circuit and method capable of automatically detecting and switching for transmitting and receiving data on network twist-pair wire |
US6609167B1 (en) | 1999-03-17 | 2003-08-19 | Adaptec, Inc. | Host and device serial communication protocols and communication packet formats |
US6662280B1 (en) | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
KR100608043B1 (ko) * | 1999-12-31 | 2006-08-02 | 삼성전자주식회사 | 오디오 데이터를 비디오 데이터와 연결해서 재생 가능한데이터 구조로 기록된 기록 매체, 기록/재생 방법 및 장치 |
US7082569B2 (en) * | 2001-01-17 | 2006-07-25 | Outlooksoft Corporation | Systems and methods providing dynamic spreadsheet functionality |
US7035948B1 (en) | 2001-03-19 | 2006-04-25 | Transdimension, Inc. | System and method for USB controllers |
US7012913B2 (en) | 2003-11-25 | 2006-03-14 | Nokia Corporation | Apparatus, and associated method, for facilitating communication of unfragmented packet-formatted data in a radio communication system |
JP5008270B2 (ja) * | 2005-04-13 | 2012-08-22 | ソニー株式会社 | 情報処理装置、および情報処理方法 |
US20070118677A1 (en) * | 2005-05-13 | 2007-05-24 | Freescale Semiconductor Incorporated | Packet switch having a crossbar switch that connects multiport receiving and transmitting elements |
US7496699B2 (en) * | 2005-06-17 | 2009-02-24 | Level 5 Networks, Inc. | DMA descriptor queue read and cache write pointer arrangement |
CN1713164A (zh) | 2005-07-21 | 2005-12-28 | 复旦大学 | 可自主处理多事务传输要求的dma控制器及数据传输方法 |
US8438365B2 (en) * | 2006-10-06 | 2013-05-07 | Calos Fund Limited Liability Company | Efficient data loading in a data-parallel processor |
US7620749B2 (en) * | 2007-01-10 | 2009-11-17 | International Business Machines Corporation | Descriptor prefetch mechanism for high latency and out of order DMA device |
CN101335667B (zh) | 2007-06-26 | 2010-12-29 | 中兴通讯股份有限公司 | 数据传输方法 |
JP4672742B2 (ja) * | 2008-02-27 | 2011-04-20 | 株式会社東芝 | メモリコントローラおよびメモリシステム |
JP2012133405A (ja) * | 2009-07-24 | 2012-07-12 | Hitachi Ltd | ストレージ装置及びそのデータ転送制御方法 |
-
2010
- 2010-05-04 US US12/773,660 patent/US8626963B2/en active Active
- 2010-07-30 CN CN201080066198.3A patent/CN102844748B/zh active Active
- 2010-07-30 WO PCT/CN2010/075586 patent/WO2011137608A1/en active Application Filing
-
2011
- 2011-04-29 TW TW100115046A patent/TWI479326B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1218566A (zh) * | 1996-03-13 | 1999-06-02 | 钻石多媒体***公司 | 支持要求驱动的多重并行数字数据流传输的方法和装置 |
US20090172202A1 (en) * | 2007-12-26 | 2009-07-02 | Check-Yan Goh | Method for Receiving Data over an SDIO Interface and Device Using the Same |
CN101556569A (zh) * | 2008-04-10 | 2009-10-14 | 联发科技股份有限公司 | 在主装置以及从装置之间传送数据的方法及从装置 |
US20090327533A1 (en) * | 2008-06-25 | 2009-12-31 | Subba Reddy Kallam | Concatenating Secure Digital Input Output (SDIO) Interface |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108462679A (zh) * | 2017-02-21 | 2018-08-28 | 杭州海康威视数字技术股份有限公司 | 数据传输方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI479326B (zh) | 2015-04-01 |
WO2011137608A1 (en) | 2011-11-10 |
US20110276730A1 (en) | 2011-11-10 |
CN102844748B (zh) | 2015-09-16 |
US8626963B2 (en) | 2014-01-07 |
TW201202947A (en) | 2012-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102844748A (zh) | 用于主从接口的基于包的数据传输***与方法 | |
CN107203484B (zh) | 一种基于FPGA的PCIe与SRIO总线桥接*** | |
US8103813B2 (en) | Method and system for hardware based implementation of USB 1.1 over a high speed link | |
CN101556569B (zh) | 在主装置以及从装置之间传送数据的方法及从装置 | |
EP2563091B1 (en) | Wireless internet-accessing module, host, communication method thereof, and data card | |
WO2017113970A1 (zh) | 近场通信方法及移动终端 | |
US20030041188A1 (en) | Reconfigurable flash media reader system | |
CN103902486A (zh) | 一种远端直接内存访问实现方法、装置及*** | |
CN108234264A (zh) | 一种基于PCIe信号接口扩展的数据包转发方法及装置 | |
CN100401277C (zh) | 信息处理器和信息处理方法 | |
CN101645780A (zh) | 一种poe***断电上电后恢复配置的方法及装置 | |
CN202750089U (zh) | 蓝牙装置和集成式外设 | |
CN107341131A (zh) | 具有近端数据处理引擎的芯片组 | |
CN101702838B (zh) | Td-scdma rru多级级联快速启动装置及方法 | |
JP2005071155A (ja) | ファームウエア更新可能な通信機器端末 | |
CN100365607C (zh) | 对sd卡接口进行控制的装置和方法 | |
CN103024029A (zh) | 一种路由器软件升级的方法和*** | |
CN204256731U (zh) | 一种fpga高速读取usb设备数据装置 | |
CN101303652B (zh) | 组态设定方法、电子***、计算机及通用串行总线设备 | |
KR102509982B1 (ko) | Usb 인식 장치 및 방법, 그리고 이를 위한 리더의 동작 방법 | |
CN103024087A (zh) | 同时支持大容量存储和以太网通信的***及方法 | |
JP2007028265A (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 |