数据传送的方法、装置与系统的制作方法

文档序号:6579187阅读:166来源:国知局
专利名称:数据传送的方法、装置与系统的制作方法
技术领域
本发明涉及总线数据传送,特别是关于在主机与装置之间的数据传送方法、 装置与系统。
背景技术
以封包(packet)传送数据是当今流数据传送总线所使用的常用技术。为了 获得高效的总线利用,多个数据封包被打包(pack)成一传输数据(data transmission)。为达到装置存储器资源管理以及避免不必要的存储器滥用,使用 特定的硬件,例如队列管理单元(queue management unit,以下简称为QMU), 来剖析(parse)传送的数据以及存储封包至相应的緩冲器,而不是使用软件指 令来剖析传送的数据至緩沖器。然而, 一旦主机与QMU之间的同步丢失,传送 的封包就不能正确地分配至相应的緩冲器。
举例来说,如果在封包头(packetheader)内指示数据封包的封包长度的长 度域(length field)由于异常总线情况(例如总线错误)而出错(corrupt),传 送中止(abort)或者相似错误导致的同步丢失以及/或者封包损坏,由于封包之 间的边界由长度域定义,所以QMU将不能正确地从传输数据中分离封包。
因此,当异常总线情况发生时,正确地重新传送损坏的封包十分重要。

发明内容
本发明为了在异常总线情况发生时,实现正确地总线数据传送,提供了一 种数据传送方法、装置与系统。
本发明所披露的一种数据传送方法,所述方法在主机与装置之间经由总线 传送数据,所述方法包含从主机接收一列数据封包,并且存储接收到的数据 封包至装置内的緩冲单元;判定是否发生预设错误;当预设错误发生时,锁定 装置的緩冲单元,以停止接收数据封包;以及依据来自主机的解锁请求,解锁 装置的緩冲单元,以继续接收后续的数据封包。本发明另一实施方式提供一种数据传送系统,包含主机,提供一列数据
封包;总线;以及装置,经由总线耦接到主机,具有緩沖单元,并且从主机接
收数据封包,以及存储接收到的数据封包至緩冲单元,决定是否发生预设错误,
当预设错误发生时,锁定装置的緩沖单元,以停止接收数据封包;以及依据来 自主机的解锁请求,解锁装置的緩冲单元,以继续接收后续的数据封包。
本发明又一实施方式提供一种数据传送方法,所述方法在主机与装置之间 经由总线传送数据,所述方法包含传送一列数据封包,每一数据封包包含封 包头;接收主机传送的数据封包,并且存储接收到的数据封包至装置内的緩冲 单元;判定是否发生预设错误;当预设错误发生时,锁定装置的緩冲单元,以 停止接收数据封包;判定是否接收到由装置触发用以通知发生预设错误的一信 号;发出一解锁请求至装置,用以解锁装置的緩冲单元;以及继续传送后续的 数据封包至装置。
本发明又一实施方式提供一种数据传送装置,用于处理异常总线情况,所 述装置包含緩冲单元,用以接收一列数据封包,并且存储接收到的数据封包; 其中当至少一个预设错误发生时,锁定緩冲单元,以停止接收数据封包;以及 其中緩冲单元依据来自主机的解锁命令而解锁,以继续接收后续数据封包。
本发明提供的数据传送方法、装置与系统,可帮助装置从错误情况中快速 恢复,并且减少系统复杂度。


图1是依据本发明的一个实施方式的数据传送系统的简要示意图。 图2是数据传送的一个实施方式的简要示意图。
图3是依据本发明的实施方式的接收到的数据封包的封包头的数据格式的 简要示意图。
图4是依据本发明的实施方式的在主机与装置之间总线数据传送的方法的 流程图。
图5A至5D是依据本发明的总线数据传送的方法的实施方式的简要示意图。
具体实施例方式
以下是根据多个图式对本发明的较佳实施方式进行详细描述,本领域技术人员阅读后应可明确了解本发明的目的。
图1是依据本发明的一个实施方式的数据传送系统的简要示意图。在图1
中,传送系统10包含主机20,装置30以及总线40,例如安全数字输入/输出 总线(Secure Digital Input/Output bus, SDIO bus )、通用串行总线(Universal Serial Bus , USB)或者相似的串行总线。其中装置30包含错误检测器32、緩冲 单元(例如先进先出緩冲器)34 、 QMU36 、先进高性能总线(advanced High-performance Bus,图式中简称为AHB)、寄存器39以及缓冲队列38。其 中总线40耦接于主机20与装置30之间来实现两者的数据传送。主机20可将 一列数据封包打包成一个传输数据,然后经由总线40传送打包的数据封包至装 置30。每一数据封包包含封包头来提供关于所述数据封包的信息,例如数据封 包的长度与类型。
图2是数据传送的一个实施方式的简要示意图。在图2中,绘示了三个传 输数据T1, T2与T3,传输数据T1, T2与T3连续地被传送。每一传输数据可包 含不同数目的数据封包或者不同大小的数据封包或者数据块(data block)。 每一数据块可包含多个数据封包,其中数据块的结束以"块末端(end of block )" 标签来定义。每一数据封包可具有封包头与封包数据,其中封包头包含封包长 度、序列编号与封包类型等信息。封包头将在以下段落中详细描述。此外,图2 具体标出了序列编号分别为①、②、③的三个数据封包。冗余数据块(Redundant data block)在数据块之间插入。每一lt据块可包含一循环冗余校-睑(cycl ic redundancy check,以下简称为CRC)值,并且如果CRC冲全查其CRC值失败,凄t 据块被定义为出错。
图3是依据本发明的实施方式的接收到的数据封包的封包头300的数据格 式的简要示意图。如图3所示,封包头300可包含位于比特B0-B11的封包长度 域"长度"来指示数据封包的长度,位于比特B12-B20的序列编号域"序列编 号"来指示数据封包的唯一序列编号,位于比特B21-B23的传送类型域"传送 类型"来指示数据封包的传送类型,以及位于比特B24-B31的校验和域"校验 和"来指示数据封包的校验和值。封包长度域"长度"可用来决定数据封包之 间的边界。在传送之前,每一数据封包依据传送顺序被设定唯一的序列编号, 因此所述序列编号可用来指示各个数据封包。举例来说,请参照图2,具有序列 编号②的数据封包在具有序列编号①的数据封包之后传送,并且在具有序列编 号③的数据封包之前传送。"传送类型',域是用来决定数据封包的分配队列,稍后供QMU36使用。举例来说,数据封包的传送类型可为数据封包的类型或者 优先级。具有相同的传送类型的数据封包将被存储至相同的緩冲队列,而具有 不同的传送类型的数据封包将被存储至不同的緩冲队列。"校验和"域可指示 封包头信息的校验和并且可因此用来保护封包头避免出错。"校验和,,域稍后 被错误检测器32用来判定是否发生校验和错误。
装置30可经由总线40接收数据封包,然后存储以及分配接收到的数据封 包至相应的緩冲队列。举例来说,每一接收到的数据封包可依据其封包长度或 者优先级设定被分配至相应的緩冲队列。
装置30中每一緩沖队列可具有相同或者不同的大小或者优先级。Q而36耦 接至多个緩冲队列38,依据每一接收到的数据封包的封包头来剖析与分配接收 到的数据封包至相应的緩冲队列38。错误检测器32耦接至緩冲单元34,并且 能够依据相应的请求(例如,分别依据锁定命令或者解锁命令)来锁定(lock) 或者解锁(unlock)緩冲单元34。在本实施方式中,当预设错误发生时,错误 检测器32可产生锁定命令。 一旦緩冲单元34被锁定,装置30停止从主机20 接收数据封包,因此来自主机20的数据封包被阻止进入緩冲单元34。在緩冲单 元34被锁定后,装置30执行相对应于锁定命令的锁定程序。锁定程序可包含, 例如,清空(clear )装置緩冲单元并且通过发送至主机20的一个触发信号(例 如中断信号)来通知主机20的步骤。在其它的实施方式中,锁定程序可包含清 空装置緩冲单元、重新设定QMU至初始状态以及通过传送至主机20的触发信号 来通知主才几20的步骤。
当从主机20接收到打包在传输数据中的一列数据封包时,错误检测器32 首先检查接收到的数据封包(例如检查每一数据封包的封包头或者每一数据块 的CRC值),并且判定是否发生一个预设错误。举例来说,所述预设错误可为 任何种类的总线情况异常,例如指示总线错误的CRC错误、软件错误、主机产 生的特定命令(例如中止当前传送的中止命令)、或者指示接收到的数据封包 已损坏的数据封包的校验和错误。换言之,所述预设错误可为主机与装置之间 同步丟失以及由于封包头出错导致的数据封包损坏。错误检测器32可检查在接 收到的数据封包的封包头(如图3所示)的"校验和"域的校验和值,以判定 接收到的数据封包的校验和是否正确。如果校验和正确,即接收到的数据封包 正确,接收到的数据封包被允许存储至緩冲单元34以及进一步传递至QMU36。 否则,判定接收到的数据封包的校验和错误指示数据封包已损坏。类似地,错
8误检测器32可检查具有多个数据封包的数据块的CRC值,以判定接收到的数据 块的CRC值是否正确。如果CRC正确,即接收到的数据块正确,接收到的数据 封包被允许存储至緩冲单元34以及进一步传递至QMU36。否则,判定发生总线 错误。
如果有任何的数据封包被存储至緩冲单元34, Q丽36从緩沖单元34获取数 据封包,通过检查每一存储的数据封包的封包头来剖析获取的数据封包并且将 数据封包存储至相应的缓冲队列。具体来说,参见图3, QMU36可依据封包长度 域"长度"来决定数据封包的长度并且决定数据封包之间的边界,并且可依据 "传送类型"域,经由Q固36与緩冲队列38之间的内部总线,例如先进高性能 总线(advanced High-performance Bus,图式中简称为AHB),来将凄t据封包存 储至相应的緩冲队列38。在一个数据封包被成功地接收以及剖析之后,QMU36 可进一步记录成功接收的数据封包的序列编号至寄存器39。寄存器39耦接至 QMU36,用以在接收到的数据封包被成功地传递至QMU36之后,记录上一个接收 到的数据封包的序列编号。换言之,寄存器39记录上一个接收到的数据封包的 序列编号。
主机20可在接收到指示预设错误已发生的信号(例如由装置30触发的中 断信号)之后,进一步发出一个解锁请求以解锁緩冲单元34,并且发出请求来 获得装置30上一个接收到的数据封包的序列编号。在获得上一个接收到的数据 封包的序列编号之后,主机20可根据上一个接收到的数据封包的序列编号来选 择后续重新传送的数据封包,其中首先重新传送的后续的数据封包以一个封包 头开始。
图4是依据本发明的实施方式的在主机与装置之间总线数据传送的方法的 流程图,其中主机传送数据封包的流程在图4的左侧,而装置接收数据封包的 流程在图4的右侧。如图4的左侧所示,在主机中,数据封包被准备并且连续 地传送至装置(步骤S450 )。然后,判定是否接收到指示预设错误(例如封包 损坏或者由CRC错误导致同步丢失)的中断信号(步骤S460 )。如果没有接收 到这样的中断信号(在步骤S460中结果为否),流程返回步骤S450从而主机 继续传送数据封包至装置。如果接收到中断信号(在步骤S460中结果为是), 即緩冲单元(例如先进先出緩冲器)被锁定,因此主机发出一个解锁命令以解 锁緩冲单元并且发出请求以获得装置上一个接收到的数据封包的序列编号至装 置(步骤S470 )。主机可从装置的寄存器获得上一个接收到的数据封包的序列编号。在接收到请求上一个接收到的数据封包的序列编号的请求后,装置从寄存器获得上一个接收到的数据封包的序列编号并且将获得的序列编号发送至主机。在这个例子中,主机可依据上一个接收到的数据封包的序列编号来选#^重新传送的后续数据封包,其中首先重新传送的后续数据封包以 一个封包头开始。举例来说,主机可重新安排数据传送,以使得在具有获得的序列编号的数据封包随后的数据封包首先被传送,并且使用重新安排的传输数据来继续数据传送。如图4的右侧所示,在装置中,来自主机的数据封包连续地被接收(步骤
S410)。然后,判定是否发生一个预设错误,例如由CRC错误导致的同步丟失或者封包损坏(步骤S420 )。如果没有所述错误发生(在步骤S420中结果为否),流程返回到步骤S410以从主机连续地接收数据封包。如果发生一个预设错误(在步骤S420中结果为是),緩冲单元被锁定而执行一个锁定程序(步骤S430 ),从而停止从主机接收数据封包。所述锁定程序可包含,举例来说,清空装置緩沖单元的步骤,重新设定QMU至初始状态的步骤以及通过触发一个中断信号至主机来通知主机20预设错误已发生的步骤。在锁定程序被执行以及已触发中断信号至主机后,判定锁定的緩冲单元是否被解锁(步骤S440 )。需注意的是当接收到主机发送的解锁命令时,锁定的緩冲单元(例如先进先出緩冲器)可被解锁。如果緩冲单元依然被锁定,即主机还没有发出解锁命令(步骤S440结果为否),緩冲单元保持锁定直到主机发出解锁命令以解锁锁定的緩冲单元。如果锁定的装置緩冲单元被解锁,即接收到从主机发出的解锁命令(步骤S440的结果为是),则代表主机已获知发生了预设错误并且主机正准备从数据封包出错点开始重新传送后续的数据封包。因此,流程回到步骤S410,以继续接收具有在上一个接收到的数据封包的序列编号之后的序列编号的数据封包。主机可依据获得的序列编码来准备接下来的传输数据以重新传送数据封包,其中首先传送的数据封包以 一个封包头开始,以使装置接收封包头并且剖析封包头以分配凄史据封包至相应的緩冲队列。
图5A至5D是依据本发明的总线数据传送的方法的实施方式的简要示意图。如图5A所示,假设在传送第一传输数据Tl时,由于CRC错误(总线错误)导致同步丢失/数据封包损坏发生。由于主机可异步传送传输数据,即使在传送第一传输数据Tl中同步丟失/封包损坏发生,由于传输数据已经在主机(例如总线驱动器)中排序并且等待主机(例如主机驱动器)来传送,主机不能停止传送后续的两个传输数据T2与T3至装置。如图5B所示,当装置中的错误检测器
10判定预设错误(例如总线错误)发生时,緩冲单元(例如装置先进先出缓沖器)
被锁定以阻止任何的后续数据进入緩冲单元。然后,緩冲单元被清空,QMU被重
新设定到初始状态,并且用以指示发生预设错误的中断信号被触发至主机以通
知主机。如图5C所示,如上所述,在接收到主机发出的解锁命令之前,即使在传送第一传输数据Tl中发生同步丢失/封包损坏,主机不能够停止后续的两个传输数据,从而后续的两个传输数据T2与T3 ^^然被传送至装置。然而,由于緩沖单元被锁定,被传送的传输数据不能够进入緩冲单元。如图5D所示,在触发中断信号至主机从而主机获知预设错误(例如同步丢失/封包损坏)已发生后,主机发出解锁命令以指示误差检测器解锁被锁定的緩冲单元,发出请求命令至QMU36以获得上一个接收到的数据封包的序列编号,并且依据获得的序列编号来准备下一个传输数据以重新传送后续的数据封包,其中首先重新传送的传输数据的数据封包以一封包头开始。须注意的是,后续重新传送的数据封包可依据获得的序列编号来选择。举例来说,后续重新传送的数据封包可从具有获得的序列编号后续的序列编号的数据封包开始,或者从具有获得的序列编号的数据封包之后的另 一数据封包开始。
在另一实施方式中,预设错误可为由主机驱动器导致的软件错误,例如传送至装置的数据封包的总体数量超过緩沖队列所提供的数据緩冲器的总体数量。当预设错误为软件错误时,装置也可锁定緩冲单元并触发中断信号来通知主机。在其它实施方式中,预设错误可为主机发出的特定命令用以中止当前数据封包传送,例如在安全数字输入/输出总线标准所使用的中止命令。相似地,当接收到预设错误(例如特定命令)时,装置也可锁定緩冲单元并触发中断信号来通知主机。在两种情况下,主机可在接收到中断信号时,决定是否重新传送后续的数据封包并且使用如上所述的方法来解锁緩冲单元以在主机与装置之间继续数据传送。
在一些其它实施方式中,错误检测器32可设置在缓冲单元34中或者与緩冲单元34平行。当错误检测器32在緩冲单元34中时,数据封包由緩冲单元34接收。 一旦错误检测器32检测到预设错误发生,设置在缓冲单元34中的错误检测器32可产生锁定命令来锁定緩沖单元34以阻止接收数据封包,并且緩冲单元34依据锁定命令被清空。当错误检测器32与緩冲单元34平行时,缓冲单元34与错误检测器32同时地接收到数据封包,并且如果预设错误发生,错误检测器32反馈锁定命令给緩冲单元34。在另一实施方式中,错误检测器32可设置在緩冲单元34接收数据封包之后,并且错误4全测器32从緩冲单元34接收数据封包以检查是否预设错误发生。如果预设错误发生,错误检测器32向后发出锁定命令至緩冲单元34,并且缓冲单元34被锁定且清空。需注意的是,本发明的实施方式仅仅提供如何设置错误检测器32与缓冲单元34的举例说明,这并不能成为本发明的限制。依据本发明所提供的方法,当在数据传送中发生预设错误时,緩冲单元可被锁定以阻止后续的数据进入。此外,本发明的锁定机制可帮助装置从错误情况中快速恢复,并且提供减少系统复杂度的有利之处。另外,主机可解锁被锁定的緩冲单元,以确保主机可与装置再次同步,从而提供了一种基于重新传送机制的串流模式(streaming mode),以在主机与装置之间重新同步并且有效地重新传送损坏的数据封包。
以上所述仅为本发明的较佳实施方式,凡依本发明权利要求所做的均等变化与修饰,皆应属本发明的涵盖范围。
权利要求
1.一种数据传送方法,所述方法用于在主机与装置之间经由总线传送数据,所述方法包含从所述主机接收一列数据封包,并且存储接收到的所述数据封包至所述装置内的缓冲单元;判定是否发生预设错误;当所述预设错误发生时,锁定所述装置的所述缓冲单元,以停止接收数据封包;以及依据来自所述主机的解锁请求,解锁所述装置的所述缓冲单元,以继续接收后续的数据封包。
2. 如权利要求1所述的数据传送方法,其特征在于,锁定所述装置的所述緩 冲单元的步骤更包含_清空所述緩冲单元;重新设定队列管理单元至初始状态;以及 触发信号至所述主机,以通知所述主机所述预设错误已发生。
3. 如权利要求2所述的数据传送方法,其特征在于,进一步包含 在所述主机接收到所述信号后,接收用以获得上一个接收到的数据封包的序列编号的请求;以及发送上一个接收到的数据封包的序列编号至所述主机。
4. 如权利要求3所述的数据传送方法,其特征在于,所述继续接收后续数据 封包的步骤进一步包含判定所述装置的所述緩沖单元是否被解锁;以及当所述装置的所述缓冲单元被解锁时,继续接收所述后续的数据封包并且 存储接收到的数据封包至所述i爰沖单元,其中接收到的所述后续的lt据封包是依据所述上一个接收到的数据封包的 所述序列编号来选择,并且首先接收到的所述后续数据封包以封包头开始。
5. 如权利要求1所述的数据传送方法,其特征在于,所述预设4對吴是所述主 机与所述装置之间的同步丟失、由于封包头出错导致的数据封包损坏或者是所 述主机产生的特定命令。
6. —种数据传送系统,包含 主机,提供一列数据封包; 总线;以及装置,经由所述总线耦接到所述主机,具有緩沖单元,并且所述装置从所 述主机接收所述数据封包,以及存储接收到的所述数据封包至所述緩冲单元, 决定是否发生预设错误,当所述预设错误发生时,锁定所述装置的所述缓冲单 元,以停止接收数据封包;以及依据来自所述主机的解锁请求,解锁所述装置 的所述緩冲单元,以继续接收后续的数据封包。
7. 如权利要求6所述的数据传送系统,其特征在于,所述主机发出所述解锁 请求以解锁所述緩冲单元,并且在接收到指示所述预设错误发生的信号后,发 出请求以获得上一个接收到的数据封包的序列编号。
8. 如权利要求7所述的数据传送系统,其特征在于,所述主机进一步依据所 述上一个接收到的数据封包的所述序列编号来选择重新传送的所述后续的数据 封包,其中首先重新传送的所述后续的凝:据封包以封包头开始。
9. 如权利要求6所述的数据传送系统,其特征在于,所述緩冲单元是先进先 出緩冲器。
10. 如权利要求6所述的数据传送系统,其特征在于,所述总线是安全数字 输入/输出总线或通用串行总线。
11. 如权利要求6所述的数据传送系统,其特征在于,所述预设4fi吴是所述 主机与所述装置之间的同步丟失或者是由于封包头出错而导致的数据封包损 坏。
12. —种数据传送方法,所述方法用于在主机与装置之间经由总线传送数据, 所述方法包含传送一列数据封包,每一所述数据封包包含封包头;接收所述主机传送的所述数据封包,并且存储接收到的所述数据封包至所 述装置内的緩冲单元;判定是否发生预设错误;当所述预设错误发生时,锁定所述装置的所述緩冲单元,以停止接收所述 数据封包;判定是否接收到由所述装置触发用以通知发生所述预设错误的信号; 发出解锁请求至所述装置,用以解锁所述装置的所述緩冲单元;以及继续传送后续的lt据封包至所述装置。
13. 如权利要求12所述的数据传送方法,其特征在于,重新传送的所述后续数据封包是依据上一个接收到的数据封包的序列编号来选择,其中首先重新传 送的所述后续数据封包以封包头开始。
14. 如权利要求12所述的数据传送方法,其特征在于,锁定所述装置的所述 緩冲单元的步骤进一步包含清空所述緩冲单元;重新i殳定队列管理单元至初始状态;以及触发所述信号至所述主机,以通知所述主机所述预设错误已发生。
15. —种数据传送装置,用于处理一异常总线情况,所述装置包含 緩冲单元,用以4娄收一列数据封包,并且存储接收到的所述数据封包; 其中当至少一个预设错误发生时,所述緩冲单元被锁定,以停止接收所述数据封包;以及其中所述緩冲单元依据来自主机的解锁命令而解锁,以继续接收后续数据 封包。
16. 如权利要求15所述的数据传送装置,其特征在于,所述装置更包含4^吴 检测器耦接至所述緩沖单元,用以判定所述预设错误是否发生以及用以锁定或 者解锁所述缓冲单元。
17. 如权利要求16所述的用数据传送装置,其特征在于,所述装置进一步包含多个緩冲队列;以及队列管理单元,耦接至所述多个緩冲队列,用以依据每一接收到的数据封 包的封包头,剖析并且分配接收到的所述数据封包至相对应的緩冲队列。
18. 如权利要求17所述的数据传送装置,其特征在于,所述装置在所述緩沖 单元被锁定后更清空所述緩冲单元、重新设定所述队列管理单元至初始状态、 以及触发一个信号至所述主机,以通知所述主机所述预设错误已发生。
19. 如权利要求18所述的数据传送装置,其特征在于,所述装置更接收重新 传送的所述后续数据封包,并且其中首先重新传送的所述后续数据封包以封包 头开始。
20. 如权利要求17所述的数据传送装置,其特征在于,所述装置更包含寄存 器,耦接至所述队列管理单元,用以在接收到的数据封包成功地传递到所述队 列管理单元之后,存储上一个接收到的数据封包的序列编码。
全文摘要
本发明是关于一种数据传送方法、装置与系统,所述方法在主机与装置之间经由总线传送数据,所述方法包含从主机接收一列数据封包,并且存储接收到的数据封包至装置内的缓冲单元;判定是否发生一个预设错误;当预设错误发生时,锁定装置的缓冲单元,以停止接收数据封包;以及依据来自主机的解锁请求,解锁装置的缓冲单元,以继续接收后续的数据封包。本发明提供的数据传送方法、装置与系统,可帮助装置从错误情况中快速恢复,并且降低系统复杂度。
文档编号G06F13/38GK101634977SQ20091015791
公开日2010年1月27日 申请日期2009年7月16日 优先权日2008年7月21日
发明者刘晋泰, 林主民, 林建光, 王传弘 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1