CN103514119B - 将多功能设备以usb组合设备呈现给主机的方法、装置及应用 - Google Patents
将多功能设备以usb组合设备呈现给主机的方法、装置及应用 Download PDFInfo
- Publication number
- CN103514119B CN103514119B CN201210214408.XA CN201210214408A CN103514119B CN 103514119 B CN103514119 B CN 103514119B CN 201210214408 A CN201210214408 A CN 201210214408A CN 103514119 B CN103514119 B CN 103514119B
- Authority
- CN
- China
- Prior art keywords
- address
- port number
- bag
- usb
- physical port
- 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
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种将多功能设备以USB组合设备呈现给主机的方法、装置及应用。本发明能够使多功能设备实现无软件安装即插既用,并使各功能设备可以独立地进行插拔。本发明通过引入多地址包识别及端口号转换使得一个USB设备处理器可以为多个USB设备进行包处理并完成与主机的会话;在接入主机时先将设备枚举成一个集线器,再以集线器的身份将其它功能设备一一接入主机从而将多功能设备以组合设备形式呈现给主机。本发明提供了一种智能设备的系统结构。这一系统结构使得通用CPU生产商和手机芯片生产商可以绕过应用处理器的复杂性而更容易加入到智能设备如智能手机的竞争中来。
Description
技术领域
本发明涉及一种USB设备处理器,特别涉及一种将多功能设备以USB组合设备呈现给主机的方法、USB设备处理器以及包含该USB设备处理器的智能设备。
背景技术
现有的多功能设备,例如手机或多功能打印机,在通过USB接口连接到计算机时都可以提供多种功能。例如手机可以是调制解调器(modem)、U盘以及摄像头等。多功能打印机可以是打印机、扫描仪以及传真机等。目前,这些多功能设备都是以合成设备(compositedevice)的形式呈现给主机的。也就是说这些功能是合成在一个USB设备里的,在主机端必须有一个合成设备驱动程序将各功能分离出来后才能进一步使用各功能设备的驱动程序。目前,大多数功能设备的驱动程序已有标准通用版,不必为各具体设备另写。但由于多功能设备的差异性很大,以及USB规范在合成设备定义方面的缺陷,还没有能够实现通用水平的合成设备驱动程序。这使得多功能设备都必须自带合成设备驱动程序,从而使得多功能设备无法做到无软件安装即插即用。这给多功能设备的使用带来了麻烦。另外,一个合成设备里所含有的功能模块不能独立地增加或减少,功能模块的配置必须在USB设备接入主机时确定。只有在重新将USB设备接入主机时才能改变,而不能在保持某一功能模块与主机联接的情况下改变其它功能模块的配置。这使得USB不能用于复杂的应用,例如在智能手机里,操作系统可以运行在一个纯CPU或CPU+显示的环境里,而所有其它外部设备如键盘、大容量存储、modem、摄像头等都可以通过USB来接入,但以合成设备的形式来将它们整合起来再接入操作系统就不能被接受,原因就是合成设备缺乏管理上的灵活性。
USB标准定义了另一种将多功能设备接入主机的结构:组合设备(compounddevice).它是用集线器(HUB)连接起来的多个USB设备(相当于一棵USB子树).每个功能以一个独立USB设备(也被称作功能设备)的形式接入主机。由于组合设备的每一功能是一个独立的USB设备,可以直接使用主机的功能设备驱动程序,因而组合设备没有合成设备驱动程序的问题,可以做到无软件安装即插即用,在对各功能设备的管理上也有相当的灵活性,可以用来整合多个外部设备并将它们接入操作系统。但如将每个功能做成独立的USB设备显然有成本上的问题。
对于通讯中的基本问题:如何在一条物理线路上传输多路逻辑上独立的数据流,USB的方案是:定义一个单向数据传输的基本单元“端口”(endpoint),端口包含一个数据缓冲区,由主机以轮询的方式,以会话(transaction)为单位将数据由设备的端口数据缓冲区读入主机(即输入),或将数据由主机写入设备的端口数据缓冲区(即输出,USB的数据传输方向总是以主机为参考点而定义的)。USB的会话是由硬件实现的,程序只要将数据放入端口的数据缓冲区或直接从端口的数据缓冲区读取数据就可以了。因此,由包(packet)处理直至会话处理的会话控制器就构成了USB硬件的主要部分。端口在USB系统中由一个三元组<USB设备地址,端口号(endpoint number),端口数据方向>唯一寻址,每个设备由主机设定一个唯一的设备地址并可有至多16个端口号即32个端口,这样,各个设备的各个端口的独立数据流就复用了同一条物理USB线。
会话总是由主机发起的,通常包含2至3个包。一个典型的输入会话是这样的:主机发出会话启动包(IN,设备地址,端口号),设备如无数据发往主机,则回一包(NAK),会话结束;设备如有数据发往主机,则回以数据包(DATA,数据),主机收到数据后回以一确认包(ACK),表示数据已收到,可从设备的端口数据缓冲区中除去。会话是USB数据交换的最小单位,一定是一个会话接一个会话顺序地进行的,属于不同会话的包是不会交叉在一起的(USB3 SuperSpeed除外)。因此,一个USB设备虽然可有多个端口,却只需要一个会话控制器.
USB会话的这一顺序特征隐含的另一性质是:如果需要,一个会话控制器可以为所有USB系统中的设备处理会话。有些发明正是基于这一点试图通过复用会话控制器来使一个USB设备拥有多于一个设备的功能。但是到目前为止,这些方案都只满足于使用一个会话控制器来实现多于一个USB设备的功能,而对已有的USB设备处理器技术却未加利用,因此,从所提的技术方案来看,其实施难度相当于重新设计一个USB设备处理器,成本较高。这些难以实施的技术方案反过来又使人们忽略了将多功能设备以USB组合设备呈现给主机这一技术方案,使之至今没有得到很好的应用。
图1是带USB接口的多功能设备的常规模型,图1中只标出了与USB相关的部分,其它外部设备也挂在总线上并通过CPU与USB发生联系,出于简洁的原因它们没有被标出。USB收发器(transceiver)101一面与USB连接线连接,将USB连接线上的串行信号转换成以字节为单位的并行数据流以提供给另一面的UMTI/ULPI界面或非标准的私有界面。USB设备处理器(handler,有些文献称为SIE,Serial Interface Engine)102基于UMTI/ULPI界面或非标准的私有界面提供的数据流实现设备与主机之间的会话,并按端口在主机与设备之间对应的端口缓冲区之间传送数据。因此,端口和它的缓冲区构成了程序与USB处理器的主要界面。在中央处理器(CPU)103上运行的USB栈(USB stack)程序104基于应用程序105的要求操作USB设备处理器102及USB收发器101,以实现USB标准所定义的功能并向应用程序报告USB设备处理器102及USB收发器101所发生的事件(包括各端口缓冲区中数据的收发事件)。
图1中的USB设备处理器102在USB2时可以进一步用图2来说明,它由四个部分构成:包缓冲区240,用于暂存从USB线路收到的包,包缓冲区逻辑上包含所收包所含的各种信息,但物理上不一定拥有与所收包一样的结构;一组物理端口206至208(每个标号代表一个端口号,含输入和输出2个端口),用于与多功能设备的界面耦合并暂存由主机发来的或将要发往主机的数据;包识别机构268,用于判断一个带地址的包是否与本多功能设备相关并提供端口号;工作电路205,用于实现USB规范指定的包处理并完成与主机的会话.工作电路205包含了USB设备处理器95%以上的复杂性,是USB设备处理器的主要部分。工作电路205对包缓冲区240中的包进行处理,当包中不含地址时,工作电路205可以独立地完成对包的处理,当包中含有地址时,工作电路通过信号217请求包识别机构268对该包是否与本多功能设备相关进行判断,判断结果通过信号210返回给工作电路205,如果该包与本多功能设备无关,工作电路205将丢弃该包,如果该包与本多功能设备相关,包识别机构268还将包中的端口号域203通过信号209一并提供给工作电路205,工作电路205根据所提供的端口号以及包中的数据方向信息(例如通过包名215)确定一个端口并继续对该包进行处理,例如包缓冲区240中的端口号可能指向端口号207,而工作电路205则可以进一步确定其中的一个端口作为操作对象,工作电路205还可以向主机发送应发送的包以实现与主机的会话从而将主机发来的数据存入对应物理端口的缓冲区或将数据从对应物理端口的缓冲区发往主机。
包识别机构268包括:地址寄存器201,用于存放设备的USB地址;地址比较器204,用于比较地址寄存器201中的地址和包缓冲区240中的地址域202中的地址,端口号形成电路(图2中为一条直通的连线)将端口号由包缓冲区240中的端口号域203取出并直接通过信号209提供给工作电路205。在收到工作电路205的请求(信号217)时,地址比较器204工作,并将比较结果通过信号210输出,如果地址相等,则该包与本多功能设备相关;如果不等,则无关。USB地址是7位二进制数,在地址寄存器201和地址比较器204之间以及地址比较器204与包缓冲区240的地址域202之间是7根线的连接。端口号是一个4位二进制数,USB会话控制器(即工作电路)205与包缓冲区240的端口号域203之间是4根线的连接。
USB3的SuperSpeed(以下简称USB3)与USB2的不同之处是:USB3的上下行数据在独立的物理通道中传输,因而上下行数据可以独立地传输;每个由主机发往设备的包都含有设备地址(除了一个类似于USB2的SOF包的均匀传输时标包ITP为广播包因而不含地址外);而且设备发往主机的包也含设备地址,并且有时不因主机的询问而产生。USB3的包都有一个16字节的包头,从主机发出的包头中含有路由信息,因此HUB不再向其所有下行端口(downstream port)广播由主机来的包(除ITP包外),而是根据包头中的路由信息只向路由中的下行端口转发由主机来的包;另外,USB2的HUB可以有多至126个下行端口,而USB3的HUB最多只能有15个下行端口。虽然USB3的会话不再严格地顺序进行,USB3设备处理器中也可能有多个会话控制器,但由于与会话相关的包都含有USB设备地址,因此与USB2类似结构仍然存在。
图3是USB3设备处理器的基本结构,图3中与图2标有相同标号的构件与USB2时具有相同的含义。与USB2设备处理器的图2相比它只有很小的变化,这是因为与图2一样,大部分的复杂性都被隐藏在工作电路205里了。与USB2的图2相比,包识别机构268多了一个向工作电路205提供设备USB地址的信号218;包缓冲区240中多了一些内容,包括一个HUB深度域231和一个路由表域230。工作电路205在向主机发送包时需要设备的USB地址用以填写包头。USB3与USB2的一个内在的差别是,各端口可以有自己的会话控制自动机来管理与主机的会话,因而不同端口与主机的会话在时间上可能重叠,各会话控制自动机可能并发地形成发往主机的包,从而导致并发地通过信号218读取设备的USB地址,但这些并发地形成的将发往主机的包会由一个电路顺序地发往主机。包缓冲区240中的路由表域230含有每级HUB应向下转发该包的下行端口,HUB深度域231则给出当前HUB在路由表中的位置。在主机发出包时,HUB深度域231为0,每级HUB在转发包时会将HUB深度域加1.由于USB3的HUB不向所有下行端口广播由主机发来的包,这使得USB设备更容易进入睡眠状态从而节省电能。
由于每个USB设备处理器都有一个USB地址寄存器,而且必须能够将其与包中的地址相比较,因此图2和图3的模型对于现有技术的USB设备处理器普遍适用。
内容可寻址存储器(Content-Addressable Memory,CAM)是一种可以对所存内容进行快速搜索的存储器,被广泛用于CPU的高速缓存(cache)的管理。内容可寻址存储器的存储单元含二个部分:标识(tag)部分和数据部分。除了可以像普通存储器一样可以通过地址对这两部分进行读写外,内容可寻址存储器还有一个内容寻址通道,它由一个标识寻址输入,一个内容寻址命中输出和一个内容寻址输出构成。在进行内容寻址时,标识寻址输入将被同时与所有存储单元中的标识部分比较。如有一个单元的标识部分与标识寻址输入相等,则内容寻址命中输出为命中,同时,内容寻址输出为命中单元的数据部分。如果没有一个单元的标识部分与标识寻址输入相等,则内容寻址命中输出为不命中,内容寻址输出没有定义。如有多个单元的标识部分与标识寻址输入相等,则内容寻址命中输出为命中,但这时内容寻址输出的内容取决于内容可寻址存储器的具体设计。由于每个内容可寻址存储器的存储单元都含有一个标识部分与标识寻址输入的比较器,因此内容可寻址存储器较复杂,成本也较高。
USB是以连接主机与外部设备为目的而设计的,自提出以来已获得了极大的成功,几乎所有设备都有现成的基于USB的驱动程序,因而可以通过USB连接到主机上。因此USB是有着巨大应用优势的连接方式。但USB还难以被用在系统的内部总线上,主要原因就是它在连接多功能设备时缺少灵活性。
现有的智能设备(如智能手机等)使用一个功能强大的应用处理器(ApplicationProcessor,AP)。它自己就几乎是一台独立的计算机,几乎所有外部设备都可以直接挂载在其上。AP有一个强大的中央处理器(CPU),带有一条强大的总线(bus)以及挂载在总线上的各种外部设备的适配器。但这一系统结构一方面在硬件上非常复杂,另一方面为使通用操作系统如Windows,Linux等在其上运行,所须开发的驱动程序也既多且非常复杂,因此智能设备的核心部件—AP被少数几家公司所控制。以智能手机为例来看,目前的手机芯片在智能手机中只能成为调制解调器(modem),并以外部设备的身份接在应用处理器上。而目前的手机芯片本来也相当于AP,也能挂载各种外设,只是它的CPU性能还不够强大,而且通用操作系统如Windows,Linux等也不适合于与现有的无线系统所用的实时系统在同一CPU上运行,因此向智能手机发展时增加一个性能强大的CPU是必须的。但如果像现有智能手机的系统结构去增加AP,则目前的手机芯片上的许多外部设备管理功能都没用了,其价值被大打折扣,而且通用CPU厂商由于没有AP也不能参与到智能设备的生产链中来。
因此,现有的智能手机的系统结构使得通用处理器厂商和手机芯片厂商都不能够充分发挥他们的能力。这个局面是通用处理器厂商和手机芯片厂商都不愿意接受的。一种能让通用处理器厂商和手机芯片厂商重新加入智能手机竞争的系统结构将是非常受欢迎的。
发明内容
本发明要解决的技术问题是提供一种将多功能设备以USB组合设备呈现给主机的方法及相应的USB设备处理器,它能将多功能设备以组合设备的形式呈现给主机,从而使多功能设备做到无软件安装即插既用,并且可以对多功能设备中的各功能设备做到独立插拔。
为解决上述技术问题,本发明提供了一种通过一个USB设备处理器将多个功能设备以独立USB设备的身份接入主机的方法,还提供了一种实现该方法所需的USB设备处理器,更进一步地将该方法及USB设备处理器应用于智能设备而提供了一种智能设备的系统结构。
本发明通过在USB设备处理器中的包识别机构里设置多个地址寄存器及地址比较器,从而使得包识别机构可以为多个USB设备进行包识别;通过提供一个逻辑端口号至物理端口号转换器将包中属于不同功能设备的可能重复的逻辑端口号(例如逻辑端口号0)转换成唯一的物理端口号再提供给工作电路,从而使得一个USB设备处理器可以为多个USB设备进行包处理并实现会话。
本发明通过如下步骤将多个功能设备以独立USB设备的身份接入主机:
步骤a,在将多功能设备接入主机时的枚举过程中,声明多功能设备是集线器,并按USB规范实现虚拟集线器,并虚拟地实现出各下行端口的状态(status);
步骤b,通过模拟产生所述虚拟集线器的一个下行端口的状态变化并在主机询问时报告给主机,从而模拟出一个新设备接入该下行端口的事件,以使主机启动对该新接入设备的枚举过程;
步骤c,在主机指令所述虚拟集线器对一个模拟的新接入设备进行重置后,将该新接入的功能设备加入USB设备处理器,以使USB设备处理器可以为该新接入的功能设备处理会话;
步骤d,由主机对所述经重置的新接入的功能设备进行枚举直至主机为其设置USB地址;
重复步骤b.至d.直至将所有应接入主机的功能设备接入主机。
本发明提供的智能设备的系统结构由中央处理模块和外设管理模块二部分构成,二模块之间通过USB进行连接.中央处理模块基本上就是一个功能强大的CPU,用于运行通用操作系统例如Windows、Linux等;而外设管理模块基本上就是一个现有的手机芯片,用于管理各种外部设备并通过USB将各种外部设备以组合设备的形式呈现给中央处理模块。
与现有技术相比,本发明具有以下优点:
(1)无软件安装即插即用,与目前通常使用的USB设备处理器相比,本发明可以将一个多功能设备以一个USB组合设备的形式呈现给主机,从而做到无软件安装即插即用,并且可以对多功能设备中的各功能设备做到独立插拔。
(2)容易实施,与现有的类似技术相比,本发明实施起来更容易,相对于目前通常使用的USB设备处理器,实施本发明所须的改动主要集中在包识别机构里,不必重新设计整个USB设备处理器。
(3)兼容性,与现有的类似技术相比,本发明可以做到与目前通常使用的USB设备处理器的完全兼容,现有软件不经改动可以应用于本发明的USB设备处理器。
(4)构造没有AP的智能设备,本发明提出的智能设备的系统结构绕开了应用处理器的复杂性而使得现有技术可以很快应用于智能设备如智能手机和平板电脑等。这一基于USB的系统结构还可以继承大量基于USB的设备驱动程序从而使得通用操作系统可以很方便地运行起来。
附图说明
图1是现有技术中带USB接口的设备的常规结构框图。
图2是现有技术中USB2设备处理器的结构框图。
图3是现有技术中USB3设备处理器的结构框图。
图4是本发明实施例的USB2设备处理器的模型。
图5是本发明实施例的包处理方法的流程图。
图6是本发明实施例的USB3设备处理器的模型。
图7是对于USB3的另一种地址识别方法的流程图。
图8是本发明实施例的一种USB2设备处理器的结构框图。
图9是本发明实施例的一种USB3设备处理器的结构框图。
图10是本发明实施例的另一种USB2设备处理器的结构框图。
图11是本发明实施例的另一种USB3设备处理器的结构框图。
图12是本发明实施例的接入方法的流程图。
图13是本发明实施例的一种智能设备的系统结构框图。
图14是本发明实施例的一种含OTG及内存共享的智能设备的结构框图。
图15是本发明实施例的一种USB主机/设备直接连接的时序图。
具体实施方式
下面结合具体实施例和附图对本发明作进一步说明,但不应以此限制本发明的保护范围。
将多功能设备以USB组合设备的形式呈现给主机的方法包含两个部分:包处理方法和接入方法。包处理方法作用于包识别机构,其目的是要使得一个USB设备处理器能为多个USB功能设备进行包处理并实现与主机的会话,包处理方法可以由硬件方式实现,本发明实施例的装置部分就是包处理方法的硬件实现。接入方法作用于整个USB设备处理器,它模拟实现一个HUB并在接入主机时先将多功能设备以HUB的身份接入主机,然后再通过该HUB将应接入主机的各功能设备一一接入主机,从而将多功能设备以USB组合设备的形式呈现给主机,接入方法可以在USB栈中以软件的方式实现。
虽然HUB通常是以一个特殊的物理USB设备的形式出现的,但从USB规范的角度来看,它与其它USB设备是完全一样的。通过USB处理器去模拟实现一个使主机看不出差别的HUB属于已知的现有技术。以下将按照包处理方法、实现包处理方法的装置、接入方法、应用了本发明技术方案的USB设备处理器的智能设备的系统结构等几个部分介绍本发明的具体实施方式。
现有技术的USB设备处理器中的工作电路(图2中的205)与设备的USB地址无关,因此是独立于USB设备的。只要外部能准确地告诉它哪些带地址的包应该被处理并提供端口号,它就可以实现与主机的会话并在端口与主机之间传送数据。因此该工作电路具有为多个USB设备工作的潜力,只要外部能告诉它哪些带地址的包应该被处理并提供端口号。为多个设备识别一个带地址的包该不该被处理可以通过一张地址表来完成,地址表中含有相关USB设备的地址,如果一个包中的地址出现在地址表里,则该包应被处理,否则该包应被丢弃。对于端口号,情况会复杂一些。由于每个USB设备都必须使用端口号0,因此不同设备的端口号0会发生相互干扰。因此必须将不同设备的逻辑端口号0转换成不同的物理端口号以避免冲突。引入逻辑端口号至物理端口号转换的另一个收获是物理端口号的数量可以突破USB规范的16个端口号的限制从而使得一个多功能设备的USB处理器可以拥有多于16个物理端口号。
图4是本发明实施例的USB2设备处理器的模型。与现有技术相比拥有类似的结构,都包括包缓冲区240、一组物理端口206至208、包识别机构268、工作电路205等,只是包识别机构268的内部结构有所不同。
在图4所提供的模型中,包识别机构268含有多地址包识别器241和逻辑端口号至物理端口号转换器242。该多地址包识别器241还含有设备地址表245,设备地址表中含有相关功能设备的USB地址,通过比较包缓冲中的USB设备地址202与设备地址表245中的所有地址以确定包缓冲中的包是否与本多功能设备相关,识别结果一方面通过信号210提供给工作电路205,另一方面,如果发生了地址匹配,通过标识信号358向端口号转换器242报告是哪个地址表单元发生了地址匹配;逻辑端口号至物理端口号转换器242通过逻辑端口号与物理端口号关系表将各功能设备的逻辑端口号转换成对应的物理端口号。由于有了端口号转换,物理端口号不再受限于16个,因此信号209可以是d(d大于4)条线,d的具体数字在具体实施时确定,例如,当d为5时,最多可有32个物理端口号。
逻辑端口号与物理端口号关系表存有各功能设备的逻辑端口号与物理端口号的对应关系,以便通过功能设备及其逻辑端口号获得对应的物理端口号。USB设备的地址是由主机设定的,每个USB设备在接入主机时都首先使用临时地址0与主机通讯,这一过程叫枚举。枚举过程结束时主机将为该设备设定地址,因此设备地址表245在多功能设备刚接入主机时不能含有所有应接入主机的功能设备的地址。设备地址将被一个一个地加入,在刚接入主机时,地址表中只有一个0地址,用于模拟实现的HUB的枚举过程。当HUB接入主机后,将为其设置由主机设定的非0地址,再通过HUB将各功能设备一个一个地接入主机,每接入一个功能设备,地址表中就将增加一个设备的USB地址。在任何时刻,地址表中含有所有已接入主机的功能设备的地址和最多一个正在接入主机(处于枚举过程)的功能设备的地址(地址0)。
设备地址表和逻辑端口号与物理端口号关系表是由接入方法维护的,接入方法将多功能设备的各个功能以功能设备的形式一个一个地接入主机。在将一个功能设备接入主机时,接入方法要在包识别机构268中增加一个功能设备,为此,它先在地址表中分配一个单元,根据功能设备所需的端口的类型为该功能设备分配物理端口,为各物理端口号确定对应的逻辑端口号,逻辑端口号可以是0至15的任意值,但必须有一个控制类型的物理端口号对应于逻辑端口号0。接入方法将所确定的逻辑端口号与物理端口号的对应关系填入逻辑端口号与物理端口号关系表,表中含有的功能设备的信息不一定是该功能设备的USB地址,可以是该功能设备在设备地址表中的位移或其它可以代表设备地址表单元的信息,从而使得当所分配的地址表单元与包中地址发生匹配时,包中的逻辑端口号可以通过逻辑端口号与物理端口号关系表确定所对应的物理端口号。接入方法先为新接入主机的功能设备设置地址0以开始枚举过程,当主机为该功能设备设置地址时,接入方法将为该功能设备设置新地址以取代原地址0。
图5是本发明的包处理方法的流程图(参照图4的模型)。包处理方法作用于包识别机构268,它使用由接入方法维护的设备地址表和逻辑端口号与物理端口号关系表,在工作电路请求包识别机构对含地址的包进行识别时启动,包含如下步骤:
步骤501:收到含地址的包,信号217为有效;
步骤502:地址识别,将包缓冲区中的设备地址与设备地址表中的地址同时进行比较,以便立刻确定包中地址是否出现在地址表中,如果包中地址出现在地址表中,该包与本组合设备相关,转至步骤503,否则转至步骤504;
步骤503:端口号转换,将包中的逻辑端口号结合所匹配的地址表单元通过逻辑端口号与物理端口号关系表转换成物理端口号,将所得物理端口号作为信号209,识别结果作为信号210一并输出,转至步骤505;
步骤504:该包与本多功能设备无关,设置信号210为该包与本多功能设备无关;
步骤505:包处理方法结束。
由于包识别必须在很短的时间内完成,因此通常使用多个比较器同时比较的方式进行包识别,但对于简单的应用,如果功能设备的数量不大,也可以通过对地址表中地址进行顺序比较的方式进行包识别。
图6是本发明的USB3设备处理器的模型。该模型与图4的USB2的模型相似,包处理方法也类似,不同之处在于包识别机构268中多了一个用以获取设备地址及逻辑端口号的转换器243,该转换器243用于为发往主机的包提供设备地址及逻辑端口号。根据具体设计,转换器243可以是物理端口至设备地址及逻辑端口号转换器,也可以是物理端口号至设备地址及逻辑端口号转换器。如果为了充分利用系统资源从而允许将一个物理端口号的两个物理端口为两个功能设备所用,就不能由物理端口号唯一地确定对应的设备地址及逻辑端口号,这时就必须使用物理端口至设备地址及逻辑端口号转换器通过物理端口去确定对应的设备地址及逻辑端口号;如果在设计时规定一个物理端口号的两个物理端口只能为同一功能设备所用,这样可能造成一些浪费,但只要通过物理端口号就能唯一地确定对应的设备地址及逻辑端口号,可以使用物理端口号至设备地址及逻辑端口号转换器通过物理端口号去确定对应的设备地址及逻辑端口号。用物理端口去转换要比用物理端口号去转换复杂一倍。
该转换器243可以通过一物理端口与设备地址和逻辑端口号关系表,用于存放各物理端口与所属功能设备的设备地址及逻辑端口号的对应关系,实现自物理端口至设备地址及逻辑端口号的转换;也可以通过一物理端口号与设备地址及逻辑端口号关系表,用于存放各物理端口号与所属功能设备的设备地址及逻辑端口号的对应关系,实现自物理端口号至设备地址及逻辑端口号的转换;该转换器243还可以通过逻辑端口号至物理端口号转换器242中的逻辑端口号与物理端口号关系表实现自物理端口号至设备地址及逻辑端口号的转换。该转换器243在收到物理端口或物理端口号输入时(信号219,在用物理端口号转换时含d条线,在用物理端口转换时含d+1条线,这里用d+1表示包含端口号和端口数据方向两种信息),可以输出该物理端口所属功能设备的设备地址(信号218)和对应的逻辑端口号(信号229)。
图6中的工作电路205与现有技术的工作电路的不同之处主要在于,在生成发往主机的包时,图6中的工作电路205不直接从信号218读取设备地址用于填写包头,也不用物理端口号来填写包头,而是将物理端口或物理端口号输出,由转换器243将其转换成设备地址和逻辑端口号后,再用所获得的设备地址(信号218)及逻辑端口号(信号229)来填写包头。若转换器243中含有物理端口与设备地址和逻辑端口号关系表或物理端口号与设备地址及逻辑端口号关系表,该表也将由接入方法维护。该表与逻辑端口号至物理端口号转换器242中的逻辑端口号与物理端口号关系表含有相似的信息但作用不同,该表用于由物理端口或物理端口号获得设备地址及逻辑端口号,而后者则是由设备及逻辑端口号获得物理端口号。因此,接入方法可以同时维护这两张表。由于也可以用逻辑端口号与物理端口号关系表进行物理端口号至设备地址及逻辑端口号的转换,因此使用一张表就能支持两种转换操作,但使用两张表便于优化转换的实施。
由于USB3可以有多个USB会话控制器并发地工作,因此,可能会发生多个会话控制器同时生成发往主机的包的情况,但图6中的转换器243不能同时响应两个或更多个转换请求。这一问题可以通过将转换请求顺序化来解决。有两种方法可以将转换请求顺序化,第一种方法是让多个USB会话控制器并发地产生多个转换请求,通过一排队器将这些并发的转换请求顺序化;第二种方法是当会话控制器在生成发往主机的包时,并不立刻往包头中填写设备地址及逻辑端口号,而是将物理端口号暂时写入包头中的设备地址域。如果设备地址域不够存放物理端口号(物理端口号的数量>128),则可将物理端口号写入设备地址域+逻辑端口号域中,当顺序发送包时,如果该包是发往主机的,则在发送前将物理端口号和端口数据方向从包头中取出,通过转换器243获得设备地址及逻辑端口号,用所得设备地址及逻辑端口号更新包头后再将包发出。
前面介绍的包处理方法中的地址识别步骤将包中的设备地址与地址表中的每一个地址进行比较以确定该包是否与本多功能设备相关,这一方法适用于USB2,也适用于USB3。由于USB3的HUB最多只能有15个下行端口,当有多于15个功能设备需要同时接入主机时,就必须模拟实现多个HUB。多个HUB之间按层进行组织,最上层的HUB在多功能设备接入主机时第一个接入主机,其它HUB通过上一层HUB以类似于接入一个普通功能设备的方式接入主机。接入方法可以通过每个HUB向主机引入至多15个功能设备或下一级HUB。在使用上述地址识别方法时,HUB和功能设备的分层结构完全是逻辑上的,与地址表的组织没有任何关系,因而具有很大的灵活性。
在USB3时,还有一种利用包中路由信息(图6中231,230)对包中地址进行识别的方法,可以不必对地址表中每个地址进行比较。使用这种方法时地址表须按组进行组织,每组地址含3至16个地址,对应于一个HUB和它下挂的至多15个功能设备,每组的第一个地址单元(位移为0的地址单元)用于模拟实现一个拥有k-1(k为3至16是该组中所含的地址单元数)个下行端口的HUB,位移为i(i为1至k-1)的地址单元用于连接于该HUB下行端口i的功能设备。如果一个多功能设备需要同时接入主机的功能设备不超过15个,则只需用一个地址组,否则应使用多个地址组。有多个地址组时将分层对地址组进行组织,其中一组为最上层,其HUB将在多功能设备接入主机时第一个接入主机,其它组的HUB将通过上层组的HUB作为一个功能设备接入主机并占用上层组的一个地址单元(相当于占用上层HUB的一个下行端口),每个组中的其它功能设备将通过该组的HUB接入主机。当地址表(某一组)中一个地址单元用于一个功能设备(位移为0的那个HUB也被看作是一个功能设备)时,该地址单元存有该功能设备的USB地址;当地址表中一个地址单元用于连接下一级HUB时,该地址单元存放的不是USB地址而是用于确定所连接的下一级HUB所在地址单元组的信息。
图7是对于USB3的另一种地址识别方法的流程图,地址表中的地址单元存放扩展的USB地址,除USB设备地址外,还可以存放如该地址单元是否已分配,该地址单元是用于一功能设备或用于连接下一级HUB等信息,包含如下步骤:
步骤701:将第一个接入主机的HUB所属的地址单元组设定为当前地址单元组;
步骤702:以包缓冲区中的HUB深度(图6中231)为位移去读包缓冲区中的路由表(图6中230),再以从路由表读得的值为位移去读当前地址单元组;
步骤703:判断所读地址单元是否未被使用,若未被使用,转至步骤707;
步骤704:判断所读地址单元是否用于连接下一级HUB,如果所读地址单元用于连接下一级HUB,转至步骤708,否则所读地址单元含有USB地址;
步骤705:比较所读地址单元所含地址和包缓冲区中的地址(图6中202),若比较结果为不等,则转至步骤707;
步骤706:包缓冲区中的包与本多功能设备相关,输出识别结果之后转至步骤711
步骤707:该包与本多功能设备无关,输出识别结果之后转至步骤711;
步骤708:用由该地址单元所读得的信息确定下一级HUB所在地址单元组;将所确定的下一级HUB所在地址单元组设定为当前地址单元组;将包缓冲区中的HUB深度加1;
步骤709:如果加1后HUB深度大于或等于5,则转至步骤710,否则转至步骤702。
步骤710:该包与本多功能设备无关,输出识别结果;
步骤711:地址识别方法结束。
如果只有一个地址组,则所有地址单元都含有设备地址,不存在下一级HUB的情况,因此步骤704是一个确定步骤,判断可以省略,步骤708和709也可以省略。
关于如何确定一具体地址单元是用于一功能设备或用于连接下一级HUB,以及如何确定下一级地址单元组其用途是连接下一级HUB,除了可以象上述实施例一样使用扩展地址位及地址单元所存内容外,也可以在具体设计时就确定某些地址单元固定地用于连接下一级HUB并使用确定的下一级地址单元组,例如,有两个地址单元组,在设计时规定第一个地址单元组中的位移为1的地址单元只能用于连接下一级HUB,而下一级HUB则使用第二个地址单元组,这样,当第一个地址单元组为当前地址单元组时,如果从路由表中读出1,则已经可以确定应到第二个地址单元组的下一级HUB中去继续包识别,还可以将这两种方式结合起来用以确定一地址单元的用途及确定下一级地址单元组如果其用途是连接下一级HUB。
图8是本发明实施例的USB2设备处理器的一种实现,它以硬件方式实现了包处理方法。与现有技术的USB设备处理器相比,改动主要发生在包识别机构268内。包识别机构268主要包括两个部分:端口号转换器242和其余的地址识别电路(多地址包识别器)。地址识别电路含有多个地址识别单元419至420,可以有3至127个地址识别单元。每个地址识别单元包含地址寄存器404、地址比较器405以及使能控制电路403。地址寄存器404用于存放功能设备的USB地址,使能控制电路403包含可由程序读写的使能状态寄存器从而控制该地址识别单元的使能(enable)或不使能(disable)状态,至多可有一个地址识别单元不含使能控制电路而始终处于使能状态。地址比较器405在使能状态时并且当包识别机构268收到工作电路205的包识别请求信号217时才工作,用于比较地址寄存器404中的地址和包缓冲区240中的地址202。使能控制电路403的另一种实现方法是使用扩展地址寄存器并通过地址比较器起作用,例如使用8位的扩展地址寄存器,其最高位用作使能状态寄存器,0为使能,1为不使能,低7位仍为地址寄存器;地址比较器405也为8位,其比较输入的另一端的低7位仍与包缓冲中的地址域连接,而最高位则接在一个恒定值0上;这样,当该地址寄存器为使能时,地址比较器405的输出结果是地址的比较结果,而当该地址寄存器为不使能时,由于最高位不一样,不论扩展地址寄存器中的地址部分为何值,地址比较器405的输出都将为不等,因此不会对整个包识别机构268的识别结果产生影响,从而起到不使能的效果。
每个地址识别单元可以用于实现一个功能设备,因此地址识别单元的数量就是可同时接入主机的功能设备(包括HUB)的数量。所有地址识别单元的地址寄存器合起来构成了包处理方法所需的地址表,通过控制各地址识别单元的使能状态可以控制地址表的大小。所有地址识别单元的地址比较器的输出通过汇合电路311汇合成包识别机构268的识别输出信号210。该汇合电路311的功能是当至少有一个地址比较器(例如405)比较出地址寄存器(例如404)的内容等于包缓冲区240中的地址时,产生该包与本多功能设备相关的信号。例如,假设包与本设备相关的信号为逻辑1,当地址相等时地址比较器405的输出也为逻辑1,则该汇合电路311是逻辑或电路,用于将所有地址比较器405的输出通过逻辑或操作汇合成包识别输出信号。
每个地址识别单元419至420还对应地包括标识信号发生器385至386。标识信号发生器385、386含有标识信号寄存器360和开关361。当地址识别单元的地址寄存器404的内容与包中地址相等时,对应标识信号发生器输出标识信号358,用于标识是哪个地址识别单元发生了地址相等的情况,并参加端口号转换器242的操作。
端口号转换器242在地址识别电路识别出某个包与本多功能设备相关时工作,它的一个输入从标识信号358获得关于功能设备的信息,另一输入从包缓冲区240的逻辑端口号域203获得逻辑端口号,将它们转换成对应的物理端口号后由信号209提供给工作电路205。
端口号转换器242包括可由程序读写的存储器357。该存储器357的每个存储单元的地址代表一个功能设备的逻辑端口号,而存储单元所存的内容为该逻辑端口号所对应的物理端口号,将物理端口号从代表某个逻辑端口号的存储单元读出就实现了逻辑端口号至物理端口号的转换。
端口号转换器242还包括地址形成电路355,用于将地址识别电路所产生的地址识别单元的标识信号358和包中的逻辑端口号域203转换成相应的存储单元地址。图中376是一个参考点,用于表示端口号转换器242所产生的物理端口号。根据具体的设计,存储器357的地址与逻辑端口号的对应关系、地址形成电路355以及标识信号寄存器360的内容等可以有不同的配置,例如:
配置1,将存储器357的存储单元以固定的方式分配给各地址识别单元,各个地址识别单元拥有相同数量的存储单元(例如n个),则标识信号寄存器360的内容可以是对应地址识别单元的编号(例如记为i),地址形成电路355就是产生地址i*n+p的电路,这里p为包中的逻辑端口号域203的内容,这时,标识信号就是一个与地址寄存器相关的常数。
配置2,将存储器357的存储单元以固定的方式分配给各地址识别单元,各个地址识别单元拥有相同或不同数量的存储单元,则标识信号寄存器360的内容可以是一个常数(例如记为b),其数值为分配给对应地址识别单元的存储单元片的起始地址,地址形成电路355就是产生地址b+p的电路,这里p为包中的逻辑端口号域203的内容,这时,标识信号也是一个与地址寄存器相关的常数。
配置3,将存储器357的存储单元在启用一个地址识别单元时动态地分配给该地址识别单元,每次分配所需数量的存储单元,则标识信号寄存器360的内容为动态写入的所分配给对应地址识别单元的存储单元片的起始地址例如记为b,地址形成电路355就是产生地址b+p的电路,这里p为包中的逻辑端口号域203的内容,这时,标识信号就是一个动态设定的数值。动态地分配存储器357可以最大限度地减少所需存储单元的数量,当存储器中出现碎片而不能满足一个新功能设备时,可以通过移动已分配的存储器单元来获得足够大的连续地址以满足新功能设备的要求。大约有n+k个存储单元就够了,n为物理端口号的数量,k为设计时确定的用于移动已分配的存储器单元所需的单元数,例如k=16(还应考虑一个端口号的两个端口为不同功能设备使用的可能性)。
图8中的端口号转换器242中的存储器357可以在运行中被动态地设置,从而保证了逻辑端口号至物理端口号转换的灵活性及对物理端口使用的灵活性,但它需要在运行中进行维护,对于一些简单的应用,地址寄存器可以在设计时固定地分配给各功能设备(或可能的功能设备),物理端口也可以根据各功能设备(或可能的功能设备)的需要在设计时固定地分配给各功能设备(或可能的功能设备),因此,在逻辑端口号与物理端口号的对应关系中如果以可以标识地址寄存器的值,例如地址寄存器的编号,来表示功能设备,则逻辑端口号与物理端口号的对应关系是在设计时就确定并固定下来的,无须在运行中维护,这时端口号转换器242中的存储器357可以用一映射逻辑电路来取代,映射逻辑电路的输入为代表地址寄存器的信号,例如地址寄存器的编号,及逻辑端口号,其输出为对应的物理端口号,映射逻辑电路根据设计时确定的对应关系将由某一地址寄存器代表的功能设备的逻辑端口号转换为物理端口号,当输入的代表地址寄存器的信号及逻辑端口号超出设计时确定的范围时,映射逻辑电路可以报错。当使用映射逻辑电路时,标识信号358应为代表发生匹配的地址寄存器的值,例如它的编号。映射逻辑电路能简化端口号转换器。这里的映射逻辑电路包括用只读存储器(ROM)替代端口号转换器242中的存储器357的情形,因为使用ROM后没有了状态变化,端口号转换器242就是一个逻辑电路。
由于多功能设备将以组合设备的形式接入主机,每个功能设备只用于一个功能,相对比较简单,不需要使用16个逻辑端口号,因此根据具体设计可以将每个功能设备可能拥有的最多逻辑端口号的数量设定为一个小于16的数值,这样用于传输逻辑端口号的信号的线数也可以相应减少,例如,当限定每个功能设备最多能有8个端口号时,用于传输逻辑端口号的线数可以减为3。
图8的USB设备处理器的方案相对于现有技术的USB设备处理器的改动主要在包识别机构268里.对于其它部分的改动包括:
(1)根据具体设计的需要增加物理端口的数量。由于有了端口号转换,物理端口号的数量不再受最多16个的限制,可以设置更多物理端口号,特别要增加控制型端口的数量,并检查控制型端口是否与端口号0相关,如果是,则除去那些与端口号0的相关。
(2)根据新设物理端口号的数量,增加用于传输物理端口号信息的线数,检查并消除工作电路中其它关于端口号小于16的限制。
(3)检查并保证SPLIT将会被丢弃,接入方法将保证所有功能设备都拥有与HUB相同的速度,因此模拟实现的HUB不处理SPLIT包,也不应为该包所干扰。
图8所示的USB设备处理器的工作过程大致是这样的:当要在USB设备处理器里增加一个功能设备时,它先为该功能设备在包识别机构268里分配一个地址识别单元,然后根据功能设备的要求分配物理端口,其中包括一个控制型端口号的输入和输出两个端口,该物理端口号将被用于逻辑端口号0,为所分配的各物理端口号确定对应的逻辑端口号,除了必须有一个逻辑端口号0对应于一个控制型物理端口号外,其余的物理端口号可以在可能的范围内任意对应逻辑端口号。将所确定的逻辑端口号与物理端口号的对应关系写入端口号转换器242的存储器357。例如,假设对应于所分配的地址识别单元的存储单元片的起始地址为b,则将对应于逻辑端口号i的物理端口号写入地址为b+i的存储单元里。接入方法将在主机要求HUB对新功能设备进行重置(reset)后,将地址0写入所分配地址识别单元的地址寄存器404并使能该地址识别单元,当主机为该设备设定地址时将所设定地址写入地址寄存器以取代原先的地址0。当工作电路205在处理带地址的包时将通过信号217请求包识别机构268对包进行识别,这时包识别机构中的所有使能的地址识别单元将同时将所含的地址寄存器404中的地址与包缓冲区240中的地址进行比较,如果有一个比较结果为相等,则该包与所对应的功能设备(包括HUB)相关,对应的标识寄存器的内容将被读出,根据前面的假设,它是端口号转换存储器357对应的存储单元片地起始地址b,如果这时包缓冲区240中的逻辑端口号为i,则端口号转换存储器357的地址为b+i的单元将被读出作为物理端口号,并通过信号209与识别结果信号210一并返回给工作电路205。由于所有使能的地址识别单元对应于那些已经接入主机的功能设备(拥有由主机指定的非0地址)和至多一个正在接入主机的功能设备(拥有地址0),而主机所设的地址是唯一的,因此每次至多只可能有一个地址识别单元发生地址比较相等的情况,不会发生地址识别单元标识信号冲突的情况。
图8中的地址识别电路是通过将所有使能的地址寄存器404中的地址与包缓冲区240中的地址同时进行比较来进行识别的,这种地址识别方式既适用于USB2,也适用于USB3。图8中的端口号转换是通过存储器的一次映射来完成的,这种映射式的端口号转换也同时适用于USB2和USB3。本发明实施例的技术方案应用于USB3时的最大不同(相对于USB2)在于,拥有物理端口至设备地址和逻辑端口号转换器,以用于为生成发往主机的包提供设备地址和逻辑端口号。
USB含地址的包中所含的是端口的逻辑地址(设备地址/逻辑端口号/端口数据方向),现只依据设备地址对包进行识别,则对于逻辑端口号的正确性全依赖于主机的可靠性。对于这一点也有改进的可能,例如,可以给每个功能设备限定一个最大逻辑端口号数(例如8个),则逻辑端口号为3位二进制数,可将包缓冲区240中逻辑端口号域203的最高位接在检错器上,如为1,则报错。另外,在设置端口号转换器的存储器357时,将未被使用的逻辑端口号所对应的存储单元设为一个特殊的不对应任何物理端口号的值,当端口号转换时如转换出的物理端口号为该值则可报错。采用这种逻辑端口号检错方法后地址识别的最终输出也应与检错结果相关起来。
图9是本发明实施例的USB3设备处理器的一种实现。与USB2的实现类似,相对于现有技术的改动主要在包识别机构268内。这里的端口号转换器242与图8中的一样,这里的地址识别电路使用了内容可寻址存储器350来实现。这里的物理端口至设备地址和逻辑端口号转换器由另一使用存储器的映射式转换器完成。
内容可寻址存储器本质上是一种通过同时进行比较而完成识别的器件,因此这种地址识别电路同时适用于USB2和USB3。图9中的内容可寻址存储器350使用8位二进制的扩展USB地址作为其标识部分,最高位用于使能控制,例如1表示不使能,0表示使能。标识寻址输入的最高位351接在表示使能的恒定信号上,低7位352与包缓冲区240中的地址域202相连。这样,当一个存储单元的标识的最高位为不使能值时由于该最高位与标识寻址输入不同,该单元不会发生命中的情况,从而不论低7位的地址部分为何值都不会对地址识别产生影响。内容寻址命中输出356用于包识别机构268的识别输出;内容寻址输出353作为设备标识信号358参加端口号转换。根据具体设计,内容寻址输出可以是一个与命中单元相关的常数、发生命中的USB设备地址、或一个可由程序动态设置的数据。在用于USB3时,根据具体设计,内容可寻址存储器350还可以设一个标识数据的第二读取通道(图9中354),用于为物理端口至设备地址和逻辑端口号转换器读取设备地址,用于USB2时则不需该第二读取通道。
使用内容可寻址存储器实现的地址识别电路可以和使用地址比较器的地址识别单元结合起来使用,这样可以做到与现有USB设备处理器的兼容,就像图10将要讨论的方案那样。
图9中的物理端口至设备地址和逻辑端口号转换器使用一个拥有n个单元的存储器243,n为物理端口的数量,每个存储单元存有两部分内容:逻辑端口号和用于获得设备地址的信息。将物理端口从0开始编号,存储器243的地址为i的存储单元则存有对应于物理端口i的逻辑端口号和可获得其设备地址的信息。根据具体设计,可以有不同的获取设备地址的方法,例如:
方法1:存储器243中直接存放设备地址,读出后就可作为信号218提供给工作电路205。
方法2:存储器243中存有对应地址寄存器的地址,通过地址寄存器的第二读取通道获得设备地址(图9)。
方法3:使用第二地址寄存器另存一份设备地址,存储器243中存有对应设备在该第二地址寄存器中的地址,通过间接访问获得对应物理端口的设备地址。
图9中的物理端口至设备地址和逻辑端口号转换器中的存储器243是由接入方法在设置端口号转换器242中的存储器357时一起设置的。物理端口至设备地址和逻辑端口号转换器在信号219有效时工作,转换结果以信号218和229的形式返回工作电路205。
在USB3时,如果逻辑端口号至物理端口号转换器使用的是映射逻辑电路,则物理端口至设备地址和逻辑端口号转换器也可以使用一个映射逻辑电路,物理端口至设备地址和逻辑端口号转换器的映射逻辑电路也是根据设计时确定的地址寄存器及物理端口的分配方案确定的,其输入为物理端口,输出为可用于获得设备地址的值,例如地址寄存器的编号,和逻辑端口号,使用映射逻辑电路也使得物理端口至设备地址和逻辑端口号转换器无须在运行时进行维护。
本发明实施例在应用于USB3时对于现有技术的改动除包识别机构外,还包括如下改动(USB2时已经提到的改动没有列入):
(1)在工作电路205中设置可由程序读写的设备地址寄存器用于存放向主机发送设备报告包(DEV NOTIFICATION)时所需的设备地址,该包是以设备名义发往主机的,只含设备地址,不含端口信息。当向主机发送该设备报告包时,由该地址寄存器获得设备地址以用于填写包头。
(2)在工作电路205中增加一设备地址及端口号形成电路,它由设置在各生成发往主机的包的电路处的设备地址及端口号获取电路构成,用于当填写发往主机的包时获取填写包头所须的设备USB地址和逻辑端口号,各设备地址及端口号获取电路将现有的设备地址及端口号填写过程改为:由物理端口号和端口数据方向生成物理端口的编号;将物理端口编号通过信号219输出以请求转换成设备地址和逻辑端口号;用由信号218所得的设备地址和由信号229所得的逻辑端口号填写包头,如有多个生成发往主机的包的电路并发地工作,还应增加一排队电路用以将并发的对信号219的使用顺序化。
(3)在工作电路205填写发往主机的包时,如有多个生成发往主机的包的电路并发地工作,则还可以使用另一种设备地址及端口号形成电路,这种电路先将填写过程改为:各生成发往主机的包的电路只将物理端口号填入包头中设备地址域,如放不下,则填入包头中设备地址域+逻辑端口号域(照旧填写端口数据方向),不填写设备地址;然后在工作电路的另一处的包顺序发送电路里增加如下处理:当将要发送的包中含设备地址和端口信息时,从包头中的设备地址域(或设备地址+逻辑端口号域)获取物理端口号,结合包头中的端口数据方向生成物理端口的编号;将物理端口编号通过信号219输出以请求转换成设备地址和逻辑端口号;用由信号218所得的设备地址和由信号229所得的逻辑端口号更新包头后再将包发出。
如果限制每个物理物理端口号的两个物理端口必须用于同一个功能设备,则可使用物理端口号至设备地址及逻辑端口号转换器来取代物理端口至设备地址及逻辑端口号转换器,这样,转换器中的存储器的大小可以减少一半。物理端口号至设备地址及逻辑端口号转换器和逻辑端口号至物理端口号转换器还可以共同由一个内容可寻址存储器分别通过地址寻址及内容寻址来实现。可以有两种方案:
方案一,以地址寻址实现映射式逻辑端口号至物理端口号转换器,以内容寻址实现物理端口号至设备地址及逻辑端口号转换器。这时内容可寻址存储器的标识部分为物理端口号,数据部分为可用于获得设备地址的数据及逻辑端口号,内容可寻址存储器的地址和它的标识部分构成一个前面提到过的映射式逻辑端口号至物理端口号转换器;数据部分用于存放与标识部分的物理端口号相对应的可用于获得设备地址的数据及逻辑端口号,用物理端口号进行内容寻址,所得输出就可以用于获得相应的设备地址及逻辑端口号,未使用的存储单元的标识部分应使用一个不可能成为物理端口号的值加以填充,内容寻址部分构成物理端口号至设备地址及逻辑端口号转换器。
方案二,以地址寻址实现映射式物理端口号至设备地址及逻辑端口号转换器,以内容寻址实现逻辑端口号至物理端口号转换器。这时内容可寻址存储器含n个单元,n为物理端口号的数量,标识部分为既能表示设备地址寄存器又能用于获得设备地址的值例如地址寄存器的编号等及逻辑端口号,数据部分为标识部分所对应的物理端口号,这时多地址包识别器所产生的标识信号应为与发生匹配的地址寄存器相关的值例如地址寄存器的编号等。内容可寻址存储器的地址和它的标识部分构成一个映射式物理端口号至设备地址及逻辑端口号转换器;用标识信号提供的与发生匹配的地址寄存器相关的值及包缓冲中的逻辑端口号进行内容寻址,所得输出就是对应的物理端口号,因此内容寻址部分就构成了逻辑端口号至物理端口号转换器,这时,多地址包识别器的识别输出还应与内容可寻址存储器的命中输出关联起来,以便在检出错时(内容可寻址存储器不命中时)不继续并报错。
由于逻辑端口号至物理端口号的转换只对于逻辑端口号0是必须的,对于简单的应用可以简化端口号转换而只对逻辑端口号0进行转换,非0逻辑端口号不经转换直接使用(逻辑端口号=物理端口号)。
前面公开的两个本发明的实现方案尚未考虑兼容性问题,即现有应用程序和USB栈程序如何在含有本发明实施例的USB处理器上运行。下一个实现方案将处理兼容性问题。图10是本发明实施例的另一种用于USB2的实现,加上物理端口至设备地址和逻辑端口号转换器后可用于USB3。与前两种实现方案类似,本方案对于现有技术的改动主要在于包识别机构268。本方案保留了现有技术中的地址寄存器201和地址比较器204使其仍作为一个地址识别单元(它没有使能控制电路而总处于使能状态),当该地址识别单元发生地址匹配时,包缓冲区240中的逻辑端口号203通过开关375不经转换直接到达物理端口号参考点376(逻辑端口号=物理端口号),其它新增部分为多个地址识别和端口号转换器320至321。
每个地址识别和端口号转换器可以用于实现一个功能设备,它含有一个与图8结构中的地址识别单元419等一样的地址识别电路,包含地址寄存器404、地址比较器405和使能控制电路403。各新增地址比较器405等的比较结果经逻辑电路311汇合后再与现有技术中的地址比较器204的输出经另一逻辑电路214汇合而形成包识别输出信号210。端口号转换器仍可以是使用存储器的映射式转换器,但存储器被分为小块后分配给各地址识别和端口号转换器320等,小块的存储器409等由包缓冲区240中的逻辑端口号直接寻址,并在相应的地址比较器检出地址相等时工作,读出的物理端口号经参考点376输出。对应到图8的地址识别电路,这相当于产生的地址标识信号为地址比较器的输出。在上电时所有新增地址识别和端口号转换器320至321的使能状态都为不使能,因而对USB设备处理器不产生影响,整个USB设备处理器将像现有技术的USB设备处理器一样工作,这样,不知新增电路存在的原有USB栈程序和应用程序将可以照常工作从而保证了兼容性。
图11是本发明的一种使用USB3包头中路由信息进行地址识别的USB设备处理器的结构,与已经介绍的几种实现方案一样,相对于现有技术的USB设备处理器的改动主要在包识别机构268里。相对于图9的实现方案,端口号转换器242是一样的;物理端口至设备地址和逻辑端口号转换器243也是基本一样的,除了出于简化图形的目的,这里设备地址没有通过地址寄存器的第二读取通道获得,而是直接从转换器的存储单元获得,图中包识别机构268中除242和243以外的部分为地址识别电路;与图9的差别主要在于地址识别电路。图11中的包识别机构268中的包识别电路包括一个或多个设备地址识别组801至802,地址比较电路830以及控制电路821。每个地址识别组含3至16个地址寄存器的地址寄存器组811和对应的标识信号寄存器组812,每组地址寄存器用于实现一个拥有k-1个下行端口的HUB和连接在其下行端口上的功能设备,k为该组中地址寄存器的数量,每组地址寄存器中位移为0的地址寄存器用于实现HUB,若有多个地址寄存器组,则其它地址寄存器可用于实现功能设备或用于连接表示下一级HUB的其它地址寄存器组,若只有一个地址寄存器组,则所有其它地址寄存器都用于功能设备。地址识别电路中的地址寄存器被分成一组或多组视具体设计而定,当应同时接入主机的功能设备多于15时,应使用多个地址寄存器组,否则可使用一个地址寄存器组。
图11中的地址寄存器组811的每个地址寄存器可以采用9位二进制的扩展USB地址,其最高位用于表示该地址寄存器的使能状态,次高位用于表示该寄存器的用途,用于一功能设备或用于连接下一级HUB。若该地址寄存器组811用于一功能设备,则其低7位含设备地址,若该地址寄存器组811用于连接下一级HUB,则其低7位含寻址下一级HUB所在地址寄存器组的信息。标识信号寄存器组812用于存放对应地址寄存器组811的用于端口号转换的标识信号,标识信号与前面几个实施例一样,可以是设计时设定常数或运行时动态设置的值。控制电路821接收各方信息并产生各种控制信号,其中包括当拥有多个地址寄存器组时产生指定当前地址寄存器组的选择信号822至823,图11中特别将扩展地址的最高两位重复以信号834和835画出以示特别提示。比较电路830包括:地址暂存器831,用于暂存从地址寄存器组811读出的内容;地址比较器832,用于比较暂存器831中的地址和包缓冲区240中的设备地址202,其比较结果833将作为包识别机构的识别信号210。
图11中的地址识别电路的工作过程包含如下步骤:
(1)当包识别机构268收到工作电路205的包识别请求信号217时,控制电路821将当前地址寄存器组设置为含有第一个接入主机的HUB的组,例如801;
(2)读包缓冲区240中HUB深度域231,并以所读值为位移读包缓冲区240中路由表230,再以从路由表所读得的值840为位移读当前地址寄存器组,例如811,中的地址寄存器,将所读内容存入比较电路中的暂存器831;
(3)判断扩展地址的使能位以确定所读地址寄存器是否使能,若不使能,输出该包与本多功能设备无关并结束;
(4)若为使能,判断扩展地址用途位,若该地址寄存器用于功能设备,启动地址比较器832以比较所读地址和包缓冲区中的地址,若不等,则输出该包与本多功能设备无关并结束;若相等,则以从路由表所读得的值840为位移读当前地址寄存器组所在地址识别组中的标识信号寄存器组,例如812,将所读标识信号输出至端口号转换器参加端口号转换,将所得物理端口号和地址比较器输出一起返回工作电路205并结束。
(5)若该地址寄存器用于连接下级HUB,则通过所读地址信息确定下级HUB所在的地址寄存器组并将其设置为当前组,将包缓冲区240中HUB深度域231加1,若加1后大于或等于5,输出该包与本多功能设备无关并结束;否则转至步骤(2)。
图11的USB设备处理器可以有几种简单变化,第一种变化:当多功能设备需同时接入主机的功能设备的数量不超过15时,可以只是用一个地址寄存器组,这是一种简化的情形,扩展地址只需8位(无需地址寄存器用途位),识别过程也无需循环,一遍就够了。第二种变化:可以不用一个扩展地址位来标识一个地址寄存器的用途,而是在具体设计时固定某些地址寄存器可以用于连接下一级HUB,另一些可以用于功能设备,也就是说,通过地址寄存器在组中的位置可以判断其用途,这样,控制电路821只要通过当前地址寄存器组和由路由表所读得的值840就可以确定所读地址寄存器的用途;还可以在具体设计时确定某些地址寄存器在用于连接下一级HUB时固定使用确定的地址寄存器组,这样,控制电路821只要通过当前地址寄存器组和由路由表所读得的值840不但可以确定一地址寄存器的用途,而且当该地址寄存器在用于连接下一级HUB时还可以确定下一级HUB所在的地址寄存器组;当然还可以将上述几种方案结合起来使用。
图11中的扩展地址的最高位被用于该地址的使能控制,使能控制在这种利用USB3包头中路由信息进行包识别的方案中不是必须的,如果相信主机不会犯错,则可以不用使能控制,使用使能控制可以增强检错能力。
以上公开的几种USB设备处理器和它们的一些变形都可以为多个功能设备进行包处理和会话处理,条件是这些功能设备已经通过枚举过程获得主机设置的USB非0地址,至多可有一个功能设备在主机许可的情况下使用0地址正与主机处于枚举过程。但当多功能设备接入主机时,主机只能枚举出一个设备,主机不知道其它功能设备的存在因而不会和它们发生通讯,它们也不能被加入USB设备处理器因为它们还没有USB地址。为此需要有一个接入方法将多功能设备的各个功能设备一一接入主机。
将多个功能设备接入主机的方法包括:先模拟实现一个HUB并让多功能设备以HUB的身份接入主机,然后通过控制HUB的下行端口(downstream port)的状态(status)的变化,并在主机询问时报告给主机来模拟一个设备接入该下行端口的事件。主机在收到这样的事件后就会指令HUB对新接入的设备进行重置(reset),之后,主机就会通过USB地址0对新接入的设备发起枚举。这时,主机就已经在与新接入的设备在直接通讯了,因此可以将新接入的功能设备加入USB设备处理器从而让前面实施例中的技术方案发挥作用。在枚举结束后,主机会给新接入的功能设备设置一个非0的USB地址,用该非0地址替换该功能设备的地址寄存器中的0地址,接着,可以重复以上步骤去接入下一个功能设备直至所有应接入主机的功能设备都被接入主机。
图12是本发明的接入方法的流程图,该接入方法包含如下步骤:
步骤1201,多功能设备接入主机;
步骤1202,在将多功能设备接入主机时的枚举过程中,声明自己是一个HUB并按USB的规范实现一个虚拟HUB,特别是虚拟地实现出各下行端口的状态;
步骤1203,判断是否还有功能设备要接入主机,如果没有则转至步骤1207结束,如果有则转至步骤1204;
步骤1204,通过模拟产生所述虚拟HUB的一个下行端口的状态变化并在主机询问时报告给主机,从而模拟出一个新设备接入该下行端口的事件,以使主机启动对该新接入设备的枚举过程;
步骤1205,在主机指令所述虚拟HUB对所述模拟的新接入设备进行重置后,将所述新接入的功能设备加入USB设备处理器,以使USB设备处理器可以为该新接入的功能设备处理会话;
步骤1206,由主机对新接入的设备进行枚举直至主机为其设置USB地址;
之后重复步骤1203至1206直至将所有应接入主机的功能设备接入主机。
以上步骤1205中“将所述新接入的功能设备加入USB设备处理器”的操作进一步包含如下步骤:
(1)在设备地址表中分配一个单元,并将所分配的地址单元设为地址0;
(2)根据功能设备的要求分配物理端口;
(3)确定物理端口的物理端口号与逻辑端口号的对应关系,其中一个控制型物理端口号将对应逻辑端口号0;
(4)根据所确定的逻辑端口号与物理端口号的对应关系以及所分配的地址表单元设置逻辑端口号与物理端口号关系表,以保证当所分配的地址表单元中的设备地址与包中USB地址相等时,包缓冲区中的逻辑端口号能转换出对应的物理端口号;
(5)在USB3时,根据所确定的逻辑端口号与物理端口号的对应关系、物理端口的数据方向以及所分配的地址表单元设置物理端口至设备地址和逻辑端口号关系表,以保证通过物理端口可以获得对应的设备地址和逻辑端口号;
(6)当主机为所述新接入的功能设备设置USB地址时,将该地址写入步骤(1)所分配的地址表单元。
在具体实施中,如果规定一个物理端口号的两个端口只能为同一功能设备所使用,则步骤(2)应为分配物理端口号,步骤(5)也应为设置物理端口号至设备地址和逻辑端口号关系表以便通过物理端口号获得设备地址和逻辑端口号。
在步骤(3)确定物理端口号与逻辑端口号的对应关系时,可以为每个物理端口号任意设定0至15的对应逻辑端口号,唯一限制条件是必须有一个控制型物理端口号对应逻辑端口号0。
图12所示的接入方法使用的逻辑端口号与物理端口号关系表及物理端口至设备地址和逻辑端口号关系表都是可改变的表格,这保证了系统的灵活性及对物理端口的充分利用,但对于一些简单的应用,没有必要去维护这些表格,可以在设计时将它们确定并固定下来。这时,地址表单元被固定地分配给各所需实现的功能设备,物理端口也被,按各功能设备的需要,固定地分配给各所需实现的功能设备,各功能设备的逻辑端口号也被固定下来,因此,如果用能标识设备地址表单元的值,例如该单元在表中的位移,来表示功能设备,则逻辑端口号与物理端口号关系表就是一张确定的无须维护的不可变的表格。这样可以简化系统,但在运作时会更复杂些,例如,在为一功能设备分配地址单元时,不能只考虑地址单元是否可用,还应考虑该地址单元所对应的物理端口是否包含所有所需的物理端口。在USB3时,如果逻辑端口号与物理端口号关系表是一张不可变的表格,则用以通过物理端口获得设备地址和逻辑端口号的物理端口与设备地址和逻辑端口号关系表也将是一张无须维护的不可变的表格,并且在设计时就已确定,但从物理端口与设备地址和逻辑端口号关系表中只能直接获得可以获得设备地址的信息,例如地址表单元在表中的位移,必须通过进一步操作以获得设备地址。
接入方法可以在USB栈中以程序的方式实现。每个HUB的下行端口可以用于接入一个功能设备,因此所模拟的HUB应拥有足够多的下行端口用于同时接入所需个数的功能设备。
在USB2时,由于HUB没有最大下行端口数的限制,所有功能设备可由一个HUB接入主机,所述HUB应拥有k-1个下行端口,k为地址表的最大单元数,其中一个被用于所述HUB。
在USB3时,由于HUB最多只能拥有15个下行端口,当应同时接入主机的功能设备数超过15时,就必须使用二级(也可为更多级,但非必须)HUB来接入所有功能设备,方法是:由一个已接入主机的HUB将另一个HUB像接入一个功能设备一样接入主机作为下一级HUB,再由该下一级HUB将其它功能设备接入主机。
在USB3时,由于发往主机的包中含有设备的USB地址和相关的端口信息,而当工作电路生成发往主机的包时只拥有物理端口的信息,因此需要通过物理端口至设备地址和逻辑端口号关系表以获得与一物理端口相对应的设备地址和逻辑端口号,以用于填写发往主机的包头。接入方法在维护逻辑端口号与物理端口号关系表时拥有这些信息,因此接入方法可以同时维护这两张表。
在将上述接入方法应用于本发明的USB设备处理器时,“设备地址表”对应于地址寄存器集合,分配一个地址表单元意味着找到一个不使能的地址识别单元,并在主机指令对其所对应的功能设备重置后将其使能,由于USB设备处理器里至少有一个设备(例如最初接入主机的HUB),因此可有一个地址识别单元不受使能控制而总处于使能状态。
“逻辑端口号与物理端口号关系表”对应于逻辑端口号至物理端口号转换器242中的存储器357或一映射逻辑电路(当逻辑端口号与物理端口号关系表为不可变时)。USB3时的“物理端口至设备地址和逻辑端口号关系表”对应于物理端口至设备地址及逻辑端口号转换器的存储器243或另一映射逻辑电路。
由上述接入方法不难得出动态地将一个功能设备接入主机和将一个功能设备动态地从主机拔除的方法,从而做到功能设备的动态插拔。接入方法(图12)中步骤1204至1206可用于动态地将一个功能设备接入主机;而将一个功能设备动态地从主机拔除可以通过如下步骤实现:
(1)将待拔除的功能设备从USB设备处理器中删除,包括从地址表中删除(不使能对应的地址寄存器),从逻辑端口号与物理端口号关系表中删除(释放对应的存储单元);若是USB3,还要从物理端口至设备地址和逻辑端口号关系表中删除(释放对应的存储单元);之后释放所占用物理端口。
(2)改变HUB的对应下行端口的状态以模拟出设备拔除的事件并在主机询问时报告主机。
在将上述的拔除功能设备的方法应用于本发明实施例的USB设备处理器时,将设备"从地址表中删除"意味着将对应的地址识别单元不使能。
图12所示的接入方法的流程图还可以有一种变化但不产生实际影响,那就是在步骤1204向主机报告有新功能设备接入时不是模拟新功能设备一个一个地接入的过程,而是向主机报告有多个新功能设备同时接入,但主机仍然会一个一个顺序地指令HUB对新接入的功能设备进行重置并对被重置的功能设备发起枚举,接入过程仍将是一个功能设备一个功能设备顺序地进行。
图13是一种智能设备的系统结构。这种系统结构将智能设备主要分为两大模块:中央处理模块501和外部设备控制模块502。中央处理模块501包括功能强大的通用中央处理器(CPU),该CPU通过总线连接一个USB主机处理器(USB host handher)以及一些辅助电路,如时钟及定时电路、DMA控制电路、中断控制电路和一定数量的通用输入输出线(GPIO)等(未在图中标出)。
中央处理模块501用来运行通用操作系统(像Windows,Linux和Android等)。所有外部设备都将通过USB主机处理器接入。由于Windows和Linux都已有大多数设备的基于USB的驱动程序,让它们运行在一个如图13所示的中央处理模块501上是比较容易的。
外部设备控制模块502包括中央处理器(CPU)通过总线连接两个USB设备处理器(USB device handler)以及各种外部设备的适配器。这两个USB设备处理器都是任意一种可以将多功能设备以USB组合设备的形式呈现给主机的USB设备处理器,例如本发明上述实施例所公开的USB设备处理器,从而将外部设备控制模块502当作多功能设备以USB组合设备的形式呈现给USB主机并使每个由外部设备控制模块502管理的外部设备都可以以独立USB设备的形式接入USB主机并可以独立地插拔,此处USB主机包括中央处理模块中的USB主机及智能设备之外的USB主机。
外部设备控制模块502中的一个USB设备处理器用来与中央处理模块501中的USB主机处理器通过一条总线503连接,该总线是执行USB规范的,包括所有连接USB主机处理器和USB设备处理器所需的电路,包括使用和不使用USB收发器的情形,以便将外部设备控制模块502所管理的设备呈现给在中央处理模块501上运行的操作系统;另一个USB设备处理器经过UTMI/UPLI介面(或其它私有界面)与一个USB收发器(USB transceiver)连接后可以与外部主机通过USB线连接。
设备控制模块502与目前的手机芯片十分相似,可以管理的外部设备包括大容量存储器(SD flash),摄像头(Camera),键盘(Keyboard)以及无线通讯设备(GSM RF)等,图中其它设备(Other devices)代表了所有其它设备如WiFi,显示,蓝牙和近场无线连接NFC等。
虽然目前还没有显示卡是以USB界面提供给系统的,要通过USB进行显示还是不难做得到的。在Windows里有远程登录(remote login)的功能,它能使一台PC可以通过网络登录到另一台PC的Windows上,并像使用本地Windows一样使用远程的Windows。这说明Windows可以将显示通过网络输出到远程去,而USB网卡驱动程序却是现成的,因此可以将Windows的显示通过USB网卡驱动程序输出到设备控制模块502。接着,只要在设备控制模块上实现Windows的显示就行了。Linux的显示可以通过称为X的界面通过网络传给远程终端。因此,只要在设备控制模块502上实现X服务器(X server),再让X经由USB网卡驱动程序就可以将Linux的显示转移到外部设备控制模块。
中央处理模块501和设备控制模块502之间的USB连接电路503用于连接USB主机处理器和USB设备处理器,可以有多种选择,包括标准USB连接(使用收发器),芯片间USB(HSIC,使用收发器)、UTMI主机/设备桥接器(并行数据连接,无须收发器)、ULPI主机/设备桥接器(并行数据连接,无须收发器)等,它还可以是一个专门设计的USB主机/设备直接连接器(USB Host Device Direct Link UHDDL),从而实现无需收发器的USB主机/设备直接并行数据连接,这可以比UTMI和ULPI都大为简化因为它们是面向USB收发器设计的,以上所例举的可能选择不应理解为对本发明保护范围的限制。
一种可用于图13实施例的USB主机/设备直接连接器(UHDDL)是一条并行数据总线,包含:一条或多条,单向或双向的以字节为单位的并行数据线Data,为每条并行数据线配备的一条与对应并行数据线同方向的USB包指示线Packet,以及为每条并行数据线配备的一条与对应并行数据线同方向的同步线Strobe。当Packet线为0时,并行数据总线处于待机状态(Idle),没有数据传输;当Packet线为1时表示正在传输一个包,此时Strobe起到时钟的同步作用,它的每个周期将传输一组并行数据,在Strobe的上升沿数据被放入总线,在Strobe的下降沿数据被从总线上读出,当Packet线再落回0时,一个USB包的传输结束。并行数据线的条数及数据方向是由USB规范确定的,USB2时为1条双向并行数据线,双向并行数据线在某一时刻的数据方向是由USB规范确定的,USB3Superspeed时为2条单向并行数据线。如果并行数据线的宽度超过一个字节,还应配备相应的与并行数据线同方向的数据宽度指示线,用以指示每组传输数据的宽度,若并行数据线为16位,则数据宽度指示线需要1条线,当数据宽度指示线为0时,并行数据线上所传数据为8位,当数据宽度指示线为1时,并行数据线上所传数据为16位;若并行数据线为32位,则数据宽度指示线需要2条线,当数据宽度指示线为(0,0),(0,1),(1,0),(1,1)时分别表示并行数据线上所传数据为8位,16位,24位和32位。图15是上述并行数据总线的时序图。如果使用DDR技术(Double Data Rate数据倍速),则可以在Strobe的上升沿和下降沿都传输数据。在另一种实施例中,Strobe可由时钟信号替代,时钟可来自主机,设备或独立于主机和设备的机构。
出于简明的原因,图13中只使用了一条USB连接电路503来连接中央处理模块501和设备控制模块502。但在具体实施中可以根据数据流量的要求使用多条USB连接电路,即在中央处理模块501中设多个USB主机处理器,在设备控制模块502中设多个对应USB设备处理器,用多条USB连接电路分别连接各对USB主机/设备模块。
本发明所提出的智能设备的系统结构的特别之处就在于将外部设备的管理从主操作系统的运行环境中分离出来,用另外一个模块来实现,而使这一想法经济有效的关键是使用已被通用操作系统广泛支持的USB来连接这两个模块,这样可以省掉大量在主操作系统上的驱动程序的开发,而使USB可以担当此任的关键,就是要能将多功能设备以USB组合设备的形式呈现给主机。任何一种能将多功能设备以USB组合设备的形式呈现给主机的USB设备处理器技术,包括可能还没有发明出来的技术,在此都能起到同样的效果。因此,应用“将多功能设备以USB组合设备的形式呈现给主机”这一技术特征是本发明的要点,而如何实现这一技术特征则不是。因此,将任何一种具有技术特征“将多功能设备以USB组合设备的形式呈现给主机”的USB设备处理器技术应用于本发明提出的智能设备的系统结构都应认为属于本发明的范围。
本发明提出智能设备的系统结构的基本想法是要尽可能利用现有技术去构造中央处理和外设管理两个模块,并将这两个模块通过USB进行连接,以避开应用处理器(AP)的复杂性。现有技术中的有些通用CPU已经集成了显示卡和显示加速器,因此,在中央处理模块501中不必限制只拥有CPU和USB主机处理器,也可以拥有显示和显示加速模块。更一般地,任何与主操作系统密切相关并且集成在中央处理模块中可以显著提高系统整体性能的外设都可以被加入中央处理模块。更一般地,系统中也不限于只有一个设备控制模块502,在实施中可以根据具体的需要以及现有技术的可能设置多个设备控制模块,通过多条USB线分别与中央处理模块连接,但在多个设备控制模块的情形,同时只能有一个设备控制模块管理的外部设备可以和本智能设备以外的USB主机连接,如何选择不属于本发明的范围。
图13中的中央处理模块501和设备控制模块502可以被放在同一管芯(die)上,也可以处于不同管芯但封装在同一芯片(chip)里,还可以处于不同的芯片通过印刷线路板连接。
图13所示的智能设备的系统结构还有一个优点,那就是中央处理模块501和设备控制模块502可以分别独立地进行开发和测试,中央处理模块501可以使用通常的USB设备进行测试,而设备控制模块502则可以接入PC进行测试。
图14是本发明所提出的智能设备的另一种更为实用的实施方案,包括了适应于图13所提出的系统结构的USB OTG(On The Go)方案,中央处理模块501和设备控制模块502的内存共享,以及将显示处理(Display)及图形加速(DSP)移至中央处理模块501。与通常的OTG不同的是,USB的主机处理器和设备模块不在一起,它们分别处于中央处理模块501和设备控制模块502中。在中央处理模块501中增加了第二USB主机处理器606用于OTG的主机功能。
中央处理模块501中的第二USB主机处理器606和设备控制模块502中的第二USB设备处理器605通过双通电子开关604与USB收发器607以UTMI/ULPI界面(或其它非标准界面)连接。中央处理模块501通过第二USB主机处理器606实现USB主机的角色,而设备控制模块502则通过第二USB设备处理器605实现USB设备的角色。
当外部装置通过收发器接入时,在根据USB OTG的规范确定本系统所应扮演的角色后(确定过程可能有USB处理器参与),电子开关604将收发器连接到相应的处理模块。若应扮演主机的角色,则连接到中央处理模块的第二USB主机处理器606去;若应扮演设备的角色,则连接到设备控制模块的第二USB设备处理器605去。
图14所示的实施例还包含了中央处理模块501和设备控制模块502的内存共享的部分,中央处理模块501中的内存管理器610一方面与外接内存RAM连接,为中央处理模块501中的CPU及其它部分提供内存访问通道,另一方面,内存管理器610也为外部环境提供了访问内存的通道,在设备控制模块502中有一个对应的内存适配器611,内存管理器610和内存适配器611之间通过芯片间内存连接电路612连接,已经存在一些标准接口提供这一类的芯片间内存连接服务,例如,芯片间接口(Chip to Chip Interface,C2C)和MIPI联盟的低延迟接口(Low Latency Interface,LLI)等,也可以采用特别设计的芯片间内存共享方案来实现图14中的610,611和612。设备控制模块502中的CPU和其它部件可以通过内存适配器611共享连接在中央处理模块501的内存RAM,就象它是连接在设备控制模块502一样。
使设备控制模块502和中央处理模块501共享内存RAM为USB的进一步改进提供了需求,而这种改进可以大大提高系统的性能,例如,对于像U盘这类大数据量的设备,使用现行USB规范的读过程是:1.将数据由外设读到内存RAM,2.由内存RAM读到USB设备处理器,3.由USB设备处理器通过USB传至USB主机处理器,4.再由USB主机处理器将数据写到内存RAM以供应用程序使用。通过定义一个新的U盘子类,USB主机处理器可以指令USB设备处理器直接将数据读到内存RAM中指定的位置上以供应用程序使用,这就省去了现行读数据的过程中步骤2,3,4,从而使得读数据的过程和将U盘直接连接在中央处理模块501上的过程相近。这也说明,本发明提供的智能设备的系统结构可以达到与使用应用处理器AP时近似的性能。
由于本发明提出了一种只需对现有USB设备处理器作局部修改而使其能为多个USB设备工作的方案,其应用范围并不限于将多功能设备以组合设备的形式呈现给主机,任何一个USB设备处理器经改造后都可以成为一个组合设备而获得更强的功能。例如,HUB中的控制器(controller)就含有一个USB设备处理器,如果用本发明对其进行改造,可以使其成为逻辑上(在主机看来)为多个HUB串联而成的一个组合HUB,这样做的好处是使得主机对接在该HUB上的设备可以容忍更长的信号延迟从而可以使用超出规范长度的电缆或进行更长距离的无线通讯连接。由于经本发明改造后的USB设备处理器还可以与原设备处理器兼容,另一个应用的例子是给USB键盘增加一个HUB的转发器(repeater)及下行端口电路后为其增加一个HUB的下行端口,当该下行端口为空置时,键盘以一个USB设备的形式接入主机,当有设备插入该下行端口时,模拟一个拔出后再插入的操作,但重新接入时则是以组合设备的形式将键盘与新接入的设备一并呈现给主机。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明权利要求的精神和范围内,都可以做出可能的变动和修改,它们也应属于本发明的保护范围。
Claims (26)
1.一种将多功能设备以USB组合设备形式呈现给主机的方法,作用于所述多功能设备的USB设备处理器,其特征在于,所述USB设备处理器包括:
包缓冲区,用于暂存从USB线路收到的包所含的信息;
一组物理端口,用于作为与所述多功能设备的界面,并暂存由所述主机发来的或将要发往所述主机的数据;
包识别机构,用于判断所述包缓冲区中带地址的包是否与所述多功能设备相关,并提供与所述包相关的物理端口号,所述包识别机构使用设备地址表和逻辑端口号与物理端口号关系表,所述设备地址表用于存放所述多功能设备中各功能设备的USB地址,所述逻辑端口号与物理端口号关系表用于建立各功能设备的逻辑端口号与物理端口号之间的对应关系,在任何时刻,所述设备地址表含有所述多功能设备的已经接入所述主机的功能设备的USB地址和至多一个正在接入所述主机的功能设备的0地址;
工作电路,用于实现USB规范指定的包处理并完成与所述主机的会话,所述工作电路对所述包缓冲区中的包进行处理,当所述包中不含地址时,所述工作电路独立地完成对所述包的处理,当所述包中含有地址时,所述工作电路请求所述包识别机构对所述包进行判断,如果该包与本多功能设备无关,所述工作电路丢弃该包,如果该包与所述多功能设备相关,所述包识别机构将所述包中的逻辑端口号转换成物理端口号一并提供给所述工作电路,所述工作电路根据所提供的物理端口号以及该包中除所述逻辑端口号之外的其它信息确定物理端口并继续对该包进行处理,所述工作电路向所述主机发送应发送的包以实现与所述主机的会话,从而将所述主机发来的数据存入对应物理端口的缓冲区或将数据从对应物理端口的缓冲区发往所述主机;
所述方法包括接入方法和包处理方法,所述包处理方法作用于所述包识别机构,所述包处理方法包括:
使用所述设备地址表及所述逻辑端口号与物理端口号关系表实现对所述包的多地址识别,并将所述包中的逻辑端口号转换成物理端口号以提供给所述工作电路,使得所述USB设备处理器为多个USB设备工作;
所述接入方法作用于所述USB设备处理器,所述接入方法包含如下步骤:
步骤a,在将所述多功能设备接入所述主机时的枚举过程中,声明所述多功能设备是集线器,并按USB规范实现虚拟集线器,并虚拟地实现出各下行端口的状态;
步骤b,通过模拟产生所述虚拟集线器的一个或多个下行端口的状态变化并在所述主机询问时报告给所述主机,从而模拟出一个或多个新设备接入所述下行端口的事件,以使所述主机启动对所述新设备的枚举过程;
步骤c,在所述主机指令所述虚拟集线器对一个所述模拟的新接入设备进行重置后,将所述被重置的功能设备加入所述USB设备处理器,以使所述USB设备处理器可以为所述被重置的功能设备处理会话;
步骤d,由所述主机对所述被重置的新接入的功能设备进行枚举直至所述主机为其设置USB地址;
重复所述步骤b至d直至将所有应接入所述主机的功能设备接入主机。
2.根据权利要求1所述的方法,其特征在于,所述接入方法中将新接入的功能设备加入所述USB设备处理器进一步包含如下步骤:
步骤a1,在所述设备地址表中分配地址单元,并将所分配的地址单元设为地址0;
步骤b1,根据功能设备的要求分配物理端口;
步骤c1,确定所述物理端口的端口号与逻辑端口号的对应关系,其中一个控制型物理端口号对应逻辑端口号0;
步骤d1,根据所确定的逻辑端口号与物理端口号的对应关系以及所分配的地址单元设置所述逻辑端口号与物理端口号关系表,以保证当所分配的地址单元中的设备地址与所述包缓冲区中USB地址相等时,所述包缓冲区中的逻辑端口号能转换出对应的物理端口号;
步骤e1,当所述主机为所述正在枚举的功能设备设置USB地址时,将该USB地址写入所述步骤a1所分配的地址单元;
所述包处理方法在所述工作电路请求所述包识别机构对所述包缓冲区中的含地址的包进行识别时启动,包含如下步骤:
步骤a2,地址识别,将所述包缓冲区中的设备地址与所述设备地址表中的所有地址进行比较,以便确定所述包缓冲区中的设备地址是否出现在所述设备地址表中,如果所述包缓冲区中的设备地址不在所述设备地址表中,则转至步骤c2,否则该包与本组合设备相关,转至步骤b2;
步骤b2,端口号转换,将所述包缓冲区中的逻辑端口号根据所匹配的地址单元通过所述逻辑端口号与物理端口号关系表转换成物理端口号,将所得的物理端口号和识别结果一并作为所述包识别机构的输出并结束;
步骤c2,该包与本多功能设备无关,使所述包识别机构输出该包与本多功能设备无关的结果并结束。
3.根据权利要求1所述的方法,其特征在于,在应用于USB3 SuperSpeed时,所述方法还包括使用物理端口与设备地址和逻辑端口号关系表,用于建立物理端口与所述功能设备的设备地址和逻辑端口号的对应关系,以便通过物理端口获得对应的设备地址和对应的逻辑端口号;所述方法还包括发送包处理方法,为发往所述主机的包获取设备地址及逻辑端口号,所述发送包处理方法在为发往主机的包填写设备地址及端口号时作用于所述工作电路;
所述接入方法中将新接入的功能设备加入所述USB设备处理器的步骤进一步包含如下步骤:
步骤a3,在所述设备地址表中分配地址单元,并将所分配的地址单元设为地址0;
步骤b3,根据功能设备的要求分配物理端口;
步骤c3,确定所述物理端口的端口号与逻辑端口号的对应关系,其中一个控制型物理端口号对应逻辑端口号0;
步骤d3,根据所确定的逻辑端口号与物理端口号的对应关系以及所分配的地址单元设置所述逻辑端口号与物理端口号关系表,以保证当所分配的地址单元中的设备地址与所述包缓冲区中USB地址相等时,所述包缓冲区中的逻辑端口号能转换出对应的物理端口号;
步骤e3,根据所确定的物理端口号与逻辑端口号的对应关系、物理端口的数据方向以及所分配的地址表单元设置所述物理端口与设备地址和逻辑端口号关系表,以便通过所述物理端口能从该物理端口与设备地址和逻辑端口号关系表中获得对应的设备地址和逻辑端口号;
步骤f3,当所述主机为所述正在枚举的功能设备设置USB地址时,将该USB地址写入所述步骤a3所分配的地址单元;
所述发送包处理方法在所述工作电路生成发往主机的包时启动,取自下列两种情形之一:
发送包处理方法之一,作用于所述工作电路各发往主机的包的生成点,包含如下步骤:
步骤a4,将用于填写发往主机的包的物理端口号与端口数据方向合并形成物理端口;
步骤b4,用所得物理端口通过所述物理端口与设备地址和逻辑端口号关系表获取与该物理端口对应的设备地址及逻辑端口号;
步骤c4,用所获得的设备地址和逻辑端口号填写所述发往主机的包;
发送包处理方法之二,作用于所述工作电路各发往主机的包的生成点及顺序发送包处,包含如下步骤:
步骤a5,在所述各发往主机的包的生成点将物理端口号及端口数据方向填写在所述包头中,不在所述包头中填写设备地址和逻辑端口号;
步骤b5,在所述顺序发送包处并在发送发往主机的包之前,从所述包头中获取物理端口号及端口数据方向以形成物理端口;
步骤c5,用所得物理端口通过所述物理端口与设备地址和逻辑端口号关系表获取与该物理端口对应的设备地址及逻辑端口号;
步骤d5,用所获得的设备地址及逻辑端口号填写所述发往主机的包。
4.根据权利要求1所述的方法,其特征在于,在应用于USB3 SuperSpeed时,所述方法还包括使用物理端口号与设备地址和逻辑端口号关系表,用于建立物理端口号与所述功能设备的设备地址和逻辑端口号的对应关系,以便通过物理端口号获得对应的设备地址和对应的逻辑端口号;所述方法还包括发送包处理方法,为发往所述主机的包获取设备地址及逻辑端口号,所述发送包处理方法在为发往主机的包填写设备地址及端口号时作用于所述工作电路;
所述接入方法中将新接入的功能设备加入所述USB设备处理器的步骤进一步包含如下步骤:
步骤a6,在所述设备地址表中分配地址单元,并将所分配的地址单元设为地址0;
步骤b6,根据功能设备的要求分配物理端口号;
步骤c6,确定所述物理端口号与逻辑端口号的对应关系,其中一个控制型物理端口号对应逻辑端口号0;
步骤d6,根据所确定的逻辑端口号与物理端口号的对应关系以及所分配的地址单元设置所述逻辑端口号与物理端口号关系表,以保证当所分配的地址单元中的设备地址与所述包缓冲区中USB地址相等时,所述包缓冲区中的逻辑端口号能转换出对应的物理端口号;
步骤e6,根据所确定的物理端口号与逻辑端口号的对应关系以及所分配的地址表单元设置所述物理端口号与设备地址和逻辑端口号关系表,以便通过所述物理端口号能从该物理端口号与设备地址和逻辑端口号关系表中获得对应的设备地址和逻辑端口号;
步骤f6,当所述主机为所述正在枚举的功能设备设置USB地址时,将该USB地址写入所述步骤a6所分配的地址单元;
所述发送包处理方法在所述工作电路生成发往主机的包时启动,取自下列两种情形之一:
发送包处理方法之一,作用于所述工作电路各发往主机包的生成点,包含如下步骤:
步骤a7,将用于填写发往主机的包的物理端口号通过所述物理端口号与设备地址和逻辑端口号关系表获取与该物理端口号对应的设备地址及逻辑端口号;
步骤b7,用所获得的设备地址及逻辑端口号填写所述发往主机的包;
发送包处理方法之二,作用于所述工作电路各发往主机的包的生成点及顺序发送包处,包含如下步骤:
步骤a8,在所述各发往主机包的生成点将物理端口号及端口数据方向填写在所述包头中,不在所述包头中填写设备地址和逻辑端口号;
步骤b8,在所述顺序发送包处并在发送发往主机的包之前,从所述包头中获取物理端口号;
步骤c8,用所得物理端口号通过所述物理端口号与设备地址和逻辑端口号关系表获取与该物理端口号对应的设备地址及逻辑端口号;
步骤d8,用所获得的设备地址及逻辑端口号填写所述发往主机的包。
5.根据权利要求1所述的方法,其特征在于,在应用于USB3 SuperSpeed时,所述方法还包括发送包处理方法,为发往所述主机的包获取设备地址及逻辑端口号,所述发送包处理方法在为发往主机的包填写设备地址及端口号时作用于所述工作电路;
所述接入方法中将新接入的功能设备加入所述USB设备处理器的步骤进一步包含如下步骤:
步骤a9,在所述设备地址表中分配地址单元,并将所分配的地址单元设为地址0;
步骤b9,根据功能设备的要求分配物理端口号;
步骤c9,确定所述物理端口号与逻辑端口号的对应关系,其中一个控制型物理端口号对应逻辑端口号0;
步骤d9,根据所确定的逻辑端口号与物理端口号的对应关系以及所分配的地址单元设置所述逻辑端口号与物理端口号关系表,以保证当所分配的地址单元中的设备地址与所述包缓冲区中USB地址相等时,所述包缓冲区中的逻辑端口号能转换出对应的物理端口号;并且使用物理端口号也能通过所述逻辑端口号与物理端口号关系表转换出对应的设备地址表单元进而获得设备地址及对应的逻辑端口号;
步骤e9,当所述主机为所述正在枚举的功能设备设置USB地址时,将该USB地址写入所述步骤a9所分配的地址单元;
所述发送包处理方法在所述工作电路生成发往主机的包时启动,取自下列两种情形之一:
发送包处理方法之一,作用于所述工作电路各发往主机包的生成点,包含如下步骤:
步骤a10,将用于填写发往主机的包的物理端口号通过所述逻辑端口号与物理端口号关系表获取与该物理端口号对应的设备地址及逻辑端口号;
步骤b10,用所获得的设备地址和逻辑端口号填写所述发往主机的包;
发送包处理方法之二,作用于所述工作电路各发往主机包的生成点及顺序发送包处,包含如下步骤:
步骤a11,在所述各发往主机包的生成点将物理端口号及端口数据方向填写在所述包头中,不在所述包头中填写设备地址和逻辑端口号;
步骤b11,在所述顺序发送包处并在发送发往主机的包之前,从所述包头中获取物理端口号;
步骤c11,用所得物理端口号通过所述逻辑端口号与物理端口号关系表获取与该物理端口号对应的设备地址及逻辑端口号;
步骤d11,用所获得的设备地址及逻辑端口号填写所述发往主机的包。
6.根据权利要求1所述的方法,其特征在于,所述物理端口在设计时固定地分配给各所述设备地址表单元,所述逻辑端口号与物理端口号关系表是在设计时确定并固定下来的,所述逻辑端口号与物理端口号关系表中的功能设备部分由标识所述设备地址表单元的值表示;
所述接入方法中将新接入的功能设备加入所述USB设备处理器的步骤进一步包含如下步骤:
步骤a12,根据功能设备对物理端口的要求以及设计时确定的物理端口与设备地址表单元的对应关系分配地址单元及物理端口,并将所分配的地址单元设为地址0;
步骤b12,当所述主机为所述正在枚举的功能设备设置USB地址时,将该USB地址写入所述步骤a12.所分配的地址单元;
在应用于USB3 SuperSpeed时,所述方法还包括使用物理端口与设备地址和逻辑端口号关系表,用于建立物理端口与所述功能设备的设备地址和逻辑端口号的对应关系,所述物理端口与设备地址和逻辑端口号关系表也是在设计时确定并固定下来的,以便通过物理端口获得对应的设备地址和对应的逻辑端口号;所述方法还进一步包括发送包处理方法,为发往所述主机的包获取设备地址及逻辑端口号,所述发送包处理方法在为发往主机的包填写设备地址及端口号时作用于所述工作电路,所述发送包处理方法在所述工作电路生成发往主机的包时启动,取自下列两种情形之一:
发送包处理方法之一,作用于所述工作电路各发往主机包的生成点,包含如下步骤:
步骤a13,将用于填写发往主机的包的物理端口号及端口数据方向合并成物理端口,通过所述物理端口与设备地址和逻辑端口号关系表获取与该物理端口对应的设备地址及逻辑端口号;
步骤b13,用所获得的设备地址和逻辑端口号填写所述发往主机的包;
发送包处理方法之二,作用于所述工作电路各发往主机包的生成点及顺序发送包处,包含如下步骤:
步骤a14,在所述各发往主机包的生成点将物理端口号及端口数据方向填写在所述包头中,不在所述包头中填写设备地址和逻辑端口号;
步骤b14,在所述顺序发送包处并在发送发往主机的包之前,从所述包头中获取物理端口号及端口数据方向以合并成物理端口;
步骤c14,用所得物理端口通过所述物理端口与设备地址和逻辑端口号关系表获取与该物理端口对应的设备地址及逻辑端口号;
步骤d14,用所获得的设备地址及逻辑端口号填写所述发往主机的包。
7.根据权利要求3至6任意一项所述的方法,其特征在于,所述包处理方法在所述工作电路请求所述包识别机构对所述包缓冲区中的含地址的包进行识别时启动,包含如下步骤:
步骤a15,地址识别,将所述包缓冲区中的设备地址与所述设备地址表中的所有地址进行比较,以便确定所述包缓冲区中的设备地址是否出现在所述设备地址表中,如果所述包缓冲区中的设备地址出现在所述设备地址表中,该包与本组合设备相关,转至步骤b15,否则转至步骤c15;
步骤b15,端口号转换,将所述包缓冲区中的逻辑端口号根据所匹配的地址单元通过所述逻辑端口号与物理端口号关系表转换成物理端口号,将所得的物理端口号和识别结果一并作为所述包识别机构的输出并结束;
步骤c15,该包与本多功能设备无关,使所述包识别机构输出该包与本多功能设备无关的结果并结束。
8.根据权利要求3至6任意一项所述的方法,其特征在于,在应用于USB3SuperSpeed时,所述设备地址表按组进行组织,每组含3至16个地址单元,每组中位移为0的单元用于拥有k-1个下行端口的集线器,其中k为该组所含地址单元的数量,位移为i的地址单元用于逻辑上连接于该集线器下行端口i的功能设备或用于连接下一级集线器,其中i为1至k-1;当所述设备地址表中一个地址单元用于一个功能设备时,该地址单元存有该功能设备的USB地址;所述设备地址表拥有一个或多个所述地址单元组;
所述包处理方法在所述工作电路请求所述包识别机构对所述包缓冲区中的含地址的包进行识别时启动,包含如下步骤:
步骤a16,地址识别,判断所述包缓冲区中的设备地址是否出现在所述设备地址表中,如果所述包中的地址出现在所述设备地址表中,该包与本组合设备相关,转至步骤b16,否则转至步骤c16;
步骤b16,端口号转换,将所述包缓冲区中的逻辑端口号根据所匹配的地址单元通过所述逻辑端口号与物理端口号关系表转换成物理端口号,将所得的物理端口号和识别结果一并作为所述包识别机构的输出并结束;
步骤c16,该包与本多功能设备无关,使所述包识别机构输出该包与本多功能设备无关的结果并结束;
所述步骤a16进一步包含如下步骤:
步骤a17,将第一个接入主机的集线器所属的地址单元组设定为当前地址单元组;
步骤b17,以所述包缓冲区中的集线器深度为位移读取所述包缓冲区中的路由表,设所读得的值为C;
步骤c17,判断当前地址单元组中位移为C的地址单元是用于一功能设备或用于连接下一级集线器;
步骤d17,如果所述位移为C的地址单元用于连接下一级集线器,转至步骤f17,否则所述位移为C的地址单元含有USB地址;
步骤e17,将所述位移为C的地址单元的USB地址与所述包缓冲区中的设备地址进行比较,若比较结果为不等,则该包与本多功能设备无关,转至步骤g17,若地址比较结果为相等,则该包与本多功能设备相关,转至步骤g17;
步骤f17,确定下一级集线器所在地址单元组,将所确定的下一级集线器所在地址单元组设定为当前地址单元组,将所述包缓冲区中的集线器深度加1,转至所述步骤b17;
步骤g17,地址识别结束。
9.一种用于多功能设备的USB设备处理器,其特征在于,所述USB设备处理器能为多个USB设备实现与主机的会话,所述USB设备处理器包括:
包缓冲区,用于暂存从USB线路收到的包所含的信息;
一组物理端口,用于作为与所述多功能设备的界面,并暂存由所述主机发来的或将要发往所述主机的数据;
包识别机构,用于判断所述包缓冲区中带地址的包是否与所述多功能设备相关,并提供与所述包相关的物理端口号;
工作电路,用于实现USB规范指定的包处理并完成与所述主机的会话,所述工作电路对所述包缓冲区中的包进行处理,当所述包中不含地址时,所述工作电路独立地完成对所述包的处理,当所述包中含有地址时,所述工作电路请求所述包识别机构对所述包进行判断,如果该包与本多功能设备无关,所述工作电路丢弃该包,如果该包与本多功能设备相关,所述包识别机构还将所述包中的逻辑端口号转换成物理端口号一并提供给所述工作电路,所述工作电路根据所提供的物理端口号以及该包中除所述逻辑端口号之外的其它信息确定物理端口并继续对该包进行处理,所述工作电路还向所述主机发送应发送的包以实现与主机的会话,从而将所述主机发来的数据存入对应物理端口的缓冲区或将数据从对应物理端口的缓冲区发往所述主机;所述包识别机构进一步包括:
多地址包识别器,所述多地址包识别器含有3至127个USB设备地址寄存器,所述USB设备地址寄存器用于存放本多功能设备的各USB功能设备的USB地址,在收到所述工作电路的识别请求时,将所述包缓冲区中的设备地址与所述多个地址寄存器中所存的设备地址进行比较,以确定所述包缓冲区中的包是否与本多功能设备相关;
逻辑端口号至物理端口号转换器,所述逻辑端口号至物理端口号转换器含有存储器或映射逻辑电路,所述存储器或所述映射逻辑电路用于建立各功能设备的逻辑端口号与物理端口号之间的对应关系,当所述多地址包识别器识别出与本多功能设备相关的包时,将所述包缓冲区中的逻辑端口号通过所建立的逻辑端口号与物理端口号的对应关系转换成物理端口号,并将所得物理端口号提供给所述工作电路。
10.根据权利要求9所述的USB设备处理器,其特征在于,所述包识别机构的多地址包识别器还进一步包含:
多个地址比较器,分别连接于每个所述地址寄存器与所述包缓冲区中的地址域之间,以在收到所述工作电路的包识别请求时,将所述包缓冲区中的地址与所有地址寄存器中的地址同时进行比较;
汇合电路,用于将所述地址比较器的比较输出汇合成一个信号作为所述包识别机构的识别输出,当至少有一个所述地址比较器的比较输出为相等时,所述识别输出为该包与本多功能设备相关,否则所述识别输出为该包与本多功能设备不相关;
使能控制电路,通过使能状态寄存器动态地控制各地址寄存器参加或不参加包识别过程,当一地址寄存器对应的使能状态为不使能时,所对应的地址比较器不工作或其输出对所述汇合电路的输出不产生影响,从而使对应的地址寄存器不参加包识别过程;
地址寄存器标识信号发生器,在一地址比较器发生相等时产生标识信号以指示是哪个地址寄存器发生了地址匹配。
11.根据权利要求10所述的的USB设备处理器,其特征在于,所述使能状态寄存器选自下列形式之一:
所述使能状态寄存器是物理寄存器或分布于多个物理寄存器中的一个或多个位的总和;
所述使能状态寄存器是分布于对应的地址寄存器中的一个或多个扩展位的总和,通过对应的地址比较器发生作用。
12.根据权利要求10所述的的USB设备处理器,其特征在于,所述标识信号为所述发生地址匹配的地址比较器的输出、在设计时确定的与所述发生地址匹配的地址寄存器相关的常数、或动态设定的数值。
13.根据权利要求9所述的USB设备处理器,其特征在于,所述包识别机构的多地址包识别器中的一个或多个所述地址寄存器通过内容可寻址存储器实现,所述内容可寻址存储器的标识部分存放含扩展位的设备地址,所述扩展位用以控制所在存储单元是否对所述确定包缓冲区中的包是否与本多功能设备相关的过程产生影响,所述内容可寻址存储器的数据部分存放标识信号用以指示是哪个地址寄存器发生了地址匹配。
14.根据权利要求9所述的USB设备处理器,其特征在于,在用于USB3SuperSpeed时,所述包识别机构的多地址包识别器中所述多个USB设备地址寄存器按组进行组织,每组含3至16个地址寄存器,拥有一个或多个地址寄存器组;若将一组地址寄存器中的USB设备地址寄存器以0至k-1进行编址,k为该组所含地址寄存器的数量,则地址为0的地址寄存器用于实现拥有k-1个下行端口的集线器,地址为i,i为1至k-1,的地址寄存器用于连接于该集线器第i个下行端口的功能设备或用于连接下一级集线器,当所述地址寄存器用于一个功能设备时,该地址寄存器存有所述功能设备的USB地址;
所述多地址包识别器通过如下步骤判断所述包缓冲区中的包是否与本多功能设备相关并产生包识别信号:
步骤a18,将第一个用于接入主机的地址寄存器所在的所述地址寄存器组设为当前地址寄存器组;
步骤b18,读取所述包缓冲区中的集线器深度域的内容;
步骤c18,以所述步骤b18所读内容为位移去读所述包缓冲区中的路由表,设所读值为A;
步骤d18,判断所述当前地址寄存器组中地址为A的地址寄存器是用于连接下一级集线器还是用于一功能设备,如果所述地址为A的地址寄存器为用于连接下一级集线器则转至步骤e18,如果所述地址为A的地址寄存器是用于一功能设备,则将该地址寄存器的内容与所述包缓冲区中的USB地址进行比较,如果比较结果为相等,则所述包缓冲区中的包与本多功能设备相关,识别过程结束;如果比较结果为不相等,则所述包缓冲区中的包与本多功能设备不相关,识别过程结束;
步骤e18,确定所述当前地址寄存器组中地址为A的地址寄存器所对应的下一级集线器所在的地址寄存器组并将其设为当前地址寄存器组,将所述包缓冲区中集线器深度域的内容加1,转至所述步骤b18;
所述包识别机构的多地址包识别器还进一步包含标识信号发生器,用于当识别出所述包缓冲区中带地址的包与本多功能设备相关时产生标识信号以指示是哪一个地址寄存器的内容与所述包缓冲区中的USB地址相等。
15.根据权利要求14所述的USB设备处理器,其特征在于,所述标识信号发生器是一组与所述地址寄存器相关联的信号发生器,其中每个信号发生器产生用以指认所对应的地址寄存器的标识信号,当一个地址寄存器的内容被读出并与所述包缓冲区中的USB地址相等时,将所述与该地址寄存器相对应的信号发生器产生的标识信号作为所述标识信号发生器的输出,所述标识信号为在设计时确定的与所述对应地址寄存器相关的常数、或动态设定的数值。
16.根据权利要求9所述的USB设备处理器,其特征在于,所述包识别机构的含存储器的逻辑端口号至物理端口号转换器是使用存储器的映射式端口号转换器,所述存储器的地址代表功能设备及逻辑端口号,所述存储器的存储单元所存的内容代表与该存储单元地址所代表的逻辑端口号所对应的物理端口号,将数据从代表功能设备D及逻辑端口号L的地址单元读出,如果该数据代表物理端口号P,就实现了从功能设备D的逻辑端口号L到物理端口号P的转换。
17.根据权利要求16所述的USB设备处理器,其特征在于,所述存储器的地址与其所代表的功能设备及逻辑端口号的关系是下列情形之一:
所述存储器的地址按组划分,每组含1至16个存储单元,每一组对应一个地址寄存器,所述地址寄存器用于一个功能设备,而所述存储器组中的位移i代表对应地址寄存器所用于的功能设备的逻辑端口号i,其中i为0至k-1,k为该组中存储单元的数量;
每个地址寄存器对应一个基地址B,地址B+i代表基地址B所对应地址寄存器所用于的功能设备的逻辑端口号i,其中i为0至15;
在使能一个地址寄存器时动态地赋予该地址寄存器一个基地址B,地址B+i代表基地址B所对应地址寄存器所用于的功能设备的逻辑端口号i,其中i为0至15。
18.根据权利要求9至17任意一项所述的USB设备处理器,其特征在于,在用于USB3SuperSpeed并且当所述包识别机构拥有含存储器的逻辑端口号至物理端口号转换器时,还包含物理端口至设备地址和逻辑端口号转换器,用于通过物理端口获取对应的设备地址及逻辑端口号;以及发往主机包的设备地址及逻辑端口号形成电路,用以形成填写发往主机的包所需的设备地址及逻辑端口号;所述物理端口至设备地址和逻辑端口号转换器包括:
具有n个单元的存储器,其中n为所述USB设备处理器所拥有的物理端口的数量,所述存储器的地址代表物理端口,所述存储器的存储单元所存内容为用于获得该存储单元的地址所代表的物理端口所属的功能设备的USB地址的信息和该物理端口所对应的逻辑端口号;
所述发往主机包的设备地址及端口号形成电路为下列两种结构之一:
结构之一,在所述工作电路中每个生成发往主机的包的电路处配置设备地址及端口号获取电路,用以将用于填写包头的物理端口号及端口数据方向合并成物理端口,通过所述物理端口至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,再用所获得的设备地址及逻辑端口号填写包头;当有多个所述生成发往主机的包的电路并发地工作时,还包括排队电路用以将各所述设备地址及逻辑端口号获取电路并发产生的对所述物理端口至设备地址和逻辑端口号转换器的访问顺序化;
结构之二,所述设备地址及端口号形成电路包括并行工作部分和串行工作部分,所述设备地址及端口号形成电路包括一个或多个所述并行工作部分和一个所述串行工作部分,所述并行工作部分在各所述生成发往主机的包的电路生成发往主机的包时将物理端口号及端口数据方向填入待发送包的包头,而不填写设备地址;所述串行工作部分在所述工作电路顺序发送包时将发往主机的包的包头中的物理端口号及端口数据方向取出以形成物理端口,再通过所述物理端口至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,用所获得的设备地址及逻辑端口号更新包头。
19.根据权利要求9至17任意一项所述的USB设备处理器,其特征在于,在用于USB3SuperSpeed并且当所述包识别机构拥有含存储器的逻辑端口号至物理端口号转换器时,还包含物理端口号至设备地址和逻辑端口号转换器,用于通过物理端口号获取对应的设备地址及逻辑端口号;以及发往主机包的设备地址及逻辑端口号形成电路,用以形成填写发往主机的包所需的设备地址及逻辑端口号;所述物理端口号至设备地址和逻辑端口号转换器包括:
具有n个单元的存储器,其中n为所述USB设备处理器所拥有的物理端口号的数量,所述存储器的地址代表物理端口号,所述存储器的存储单元所存内容为用于获得该存储单元的地址所代表的物理端口号所属的功能设备的USB地址的信息和该物理端口号所对应的逻辑端口号;
所述发往主机包的设备地址及端口号形成电路为下列两种结构之一:
结构之一,在所述工作电路中每个生成发往主机的包的电路处配置设备地址及端口号获取电路,用以将用于填写包头的物理端口号通过所述物理端口号至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,再用所获得的设备地址及逻辑端口号填写包头;当有多个所述生成发往主机的包的电路并发地工作时,还包括排队电路用以将各所述设备地址及逻辑端口号获取电路并发产生的对所述物理端口号至设备地址和逻辑端口号转换器的访问顺序化;
结构之二,所述设备地址及端口号形成电路包括并行工作部分和串行工作部分,所述设备地址及端口号形成电路包括一个或多个所述并行工作部分,和一个所述串行工作部分路,所述并行工作部分在各所述生成发往主机的包的电路生成发往主机的包时将物理端口号及端口数据方向填入待发送包的包头,而不填写设备地址;所述串行工作部分在所述工作电路顺序发送包时将发往主机的包的包头中的物理端口号取出,再通过所述物理端口号至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,用所获得的设备地址及逻辑端口号更新包头。
20.根据权利要求9至15任意一项所述的USB设备处理器,其特征在于,在用于USB3SuperSpeed并且当所述包识别机构拥有含存储器的逻辑端口号至物理端口号转换器时,还包含物理端口号至设备地址及逻辑端口号转换器,用于通过物理端口号获取对应的设备地址及逻辑端口号,所述包识别机构的逻辑端口号至物理端口号转换器以及所述物理端口号至设备地址及逻辑端口号转换器共同由一个内容可寻址存储器分别通过地址寻址及内容寻址来实现;所述工作电路还进一步包含发往主机包的设备地址及逻辑端口号形成电路,用以形成填写发往主机的包所需的设备地址及逻辑端口号;
所述发往主机包的设备地址及端口号形成电路为下列两种结构之一:
结构之一,在所述工作电路中每个生成发往主机的包的电路处配置设备地址及端口号获取电路,用以将用于填写包头的物理端口号通过所述物理端口号至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,再用所获得的设备地址及逻辑端口号填写包头;当有多个所述生成发往主机的包的电路并发地工作时,还包括排队电路用以将各所述设备地址及逻辑端口号获取电路并发产生的对所述物理端口号至设备地址和逻辑端口号转换器的访问顺序化;
结构之二,所述设备地址及端口号形成电路包括并行工作部分和串行工作部分,所述设备地址及端口号形成电路包括一个或多个所述并行工作部分和一个所述串行工作部分,所述并行工作部分在各所述生成发往主机的包的电路生成发往主机的包时将物理端口号及端口数据方向填入待发送包的包头,而不填写设备地址;所述串行工作部分在所述工作电路顺序发送包时将发往主机的包的包头中的物理端口号取出,再通过所述物理端口号至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,用所获得的设备地址及逻辑端口号更新包头。
21.根据权利要求9至15任意一项所述的USB设备处理器,其特征在于,在用于USB3SuperSpeed并且当所述包识别机构拥有含映射逻辑电路的逻辑端口号至物理端口号转换器时,还包含物理端口至设备地址及逻辑端口号转换器,用于通过物理端口获取对应的设备地址及逻辑端口号,所述物理端口至设备地址及逻辑端口号转换器包含另一个映射逻辑电路,记为B,所述映射逻辑电路B建立各物理端口与表示功能设备的用于标识地址寄存器的值及逻辑端口号之间的对应关系,以便通过物理端口获得对应的设备地址及逻辑端口号;所述工作电路还进一步包含发往主机包的设备地址及逻辑端口号形成电路,用以形成填写发往主机的包所需的设备地址及逻辑端口号;
所述发往主机包的设备地址及端口号形成电路为下列两种结构之一:
结构之一,在所述工作电路中每个生成发往主机的包的电路处配置设备地址及端口号获取电路,用以将用于填写包头的物理端口通过所述物理端口至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,再用所获得的设备地址及逻辑端口号填写包头;当有多个所述生成发往主机的包的电路并发地工作时,还包括排队电路用以将各所述设备地址及逻辑端口号获取电路并发产生的对所述物理端口至设备地址和逻辑端口号转换器的访问顺序化;
结构之二,所述设备地址及端口号形成电路包括并行工作部分和串行工作部分,所述设备地址及端口号形成电路包括一个或多个所述并行工作部分和一个所述串行工作部分,所述并行工作部分在各所述生成发往主机的包的电路生成发往主机的包时将物理端口号及端口数据方向填入待发送包的包头,而不填写设备地址;所述串行工作部分在所述工作电路顺序发送包时将发往主机的包的包头中的物理端口号及端口数据方向取出以形成物理端口,再通过所述物理端口至设备地址和逻辑端口号转换器获得对应的设备地址及逻辑端口号,用所获得的设备地址及逻辑端口号更新包头。
22.一种智能设备,其特征在于,包括:中央处理模块,用于运行主操作系统和应用程序;一个或多个设备控制模块,用于连接外部设备;以及连接所述中央处理模块和所述设备控制模块的总线;
所述中央处理模块包含第一CPU和一个或多个USB主机处理器,所述USB主机处理器以USB主机的身份连接外部的USB设备并将它们呈现给运行在所述第一CPU上的操作系统;
所述设备控制模块包含第二CPU,一个或多个USB设备处理器以及外部设备适配器,所述外部设备适配器连接外部设备并将它们引入所述设备控制模块,所述USB设备处理器与USB主机连接并在所述第二CPU的控制下将由所述外部设备适配器引入的外部设备呈现给所述USB主机,所述USB主机包括所述中央处理模块中的USB主机和智能设备以外的USB主机;
所述连接所述中央处理模块和所述设备控制模块的总线是一条或多条连接所述中央处理模块中的USB主机处理器和所述设备控制模块中的USB设备处理器的执行USB规范的连接电路,包括标准USB连接,芯片间USB,UTMI主机/设备桥接器,ULPI主机/设备桥接器,或专门设计的USB主机/设备直接连接器,所述设备控制模块被当作一个或多个多功能设备通过USB接入所述中央处理模块;
所述设备控制模块中的USB设备处理器是任意一种能将多功能设备以USB组合设备形式呈现给主机的USB设备处理器,包括权利要求9至21中任一项所述的USB设备处理器,以使所有连接于所述设备控制模块的外部设备可以以独立USB设备的形式连接到运行于所述中央处理模块的第一CPU上的系统上,并且独立地进行插拔。
23.根据权利要求22所述的智能设备,其特征是所述中央处理模块还包含图形处理加速器和显示模块。
24.根据权利要求22所述的智能设备,其特征在于,还包括USB OTG结构,
所述USB OTG结构的USB主机处理器位于所述中央处理模块内;
所述USB OTG结构的USB设备处理器位于所述设备控制模块内;
所述USB OTG结构的USB主机处理器和所述USB OTG结构的USB设备处理器通过一双向开关与外部接口连接,当通过USB接口与外部装置连接时,在确定本智能设备在本次连接中所应扮演的USB主机或USB设备的角色后,所述双向开关将所述外部接口连接至所述USB主机处理器或USB设备处理器以实现本次连接所应扮演的角色。
25.根据权利要求22所述的智能设备,其特征在于,所述连接所述中央处理模块中的USB主机处理器和所述设备控制模块中的USB设备处理器的执行USB规范的连接电路是一条直接连接所述USB主机处理器和所述USB设备处理器的并行数据总线;
所述直接连接所述USB主机处理器和所述USB设备处理器的并行数据总线包括:
一条或多条宽度以8为倍数的单向或双向的并行数据线;
每条所述并行数据线配有一条与所述并行数据线同方向的USB包指示线,用以界定在所对应的所述并行数据线上传输的数据的包结构;
当所述并行数据线的宽度大于8时,每条所述宽度大于8的并行数据线还配有与所述并行数据线同方向的数据宽度指示线,用以指示每次在所述并行数据线上传输的数据的实际宽度。
26.根据权利要求22所述的智能设备,其特征在于,所述中央处理模块还包含内存管理器,用以管理连接于所述中央处理模块的内存并对所述中央处理模块以外的其它模块提供对所述内存的访问通道;所述设备控制模块还包含内存适配器,用以连接由外部其它模块提供的内存访问通道;所述的智能设备还包含连接所述中央处理模块所提供的所述内存访问通道和所述设备控制模块的所述内存适配器的内存连接电路,以使所述设备控制模块共享连接于所述中央处理模块的内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210214408.XA CN103514119B (zh) | 2012-06-26 | 2012-06-26 | 将多功能设备以usb组合设备呈现给主机的方法、装置及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210214408.XA CN103514119B (zh) | 2012-06-26 | 2012-06-26 | 将多功能设备以usb组合设备呈现给主机的方法、装置及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103514119A CN103514119A (zh) | 2014-01-15 |
CN103514119B true CN103514119B (zh) | 2017-03-01 |
Family
ID=49896868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210214408.XA Expired - Fee Related CN103514119B (zh) | 2012-06-26 | 2012-06-26 | 将多功能设备以usb组合设备呈现给主机的方法、装置及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103514119B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095118B (zh) * | 2014-05-19 | 2019-08-30 | 小米科技有限责任公司 | 设备的使用方法及装置 |
CN104035905B (zh) * | 2014-07-03 | 2017-07-21 | 英特尔公司 | 通用串行总线装置及通用串行总线装置处理数据的方法 |
CN104922795A (zh) * | 2015-05-27 | 2015-09-23 | 上海诺之嘉医疗器械有限公司 | 基于安卓系统的失眠治疗方法 |
CN105208267B (zh) * | 2015-08-25 | 2018-12-11 | 豪威科技(上海)有限公司 | Usb摄像头及usb摄像头的识别方法和系统 |
CN107438035B (zh) * | 2016-05-25 | 2021-11-12 | 中兴通讯股份有限公司 | 一种网络处理器、网络处理方法和系统、单板 |
CN108076114A (zh) * | 2016-11-15 | 2018-05-25 | 天津慧康溢德科技发展有限公司 | 一种技术服务用数据转换器 |
CN109324151A (zh) * | 2018-09-17 | 2019-02-12 | 沈阳大学 | 一种菜单式可柔性功能配置的室内空气质量无线监测终端 |
CN112612423A (zh) * | 2020-12-29 | 2021-04-06 | 芯启源电子科技有限公司 | 一种usb共享存储装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101444608A (zh) * | 2007-11-26 | 2009-06-03 | 刘永生 | 一种冻疮药液 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2367645B (en) * | 2000-10-03 | 2002-11-20 | Sun Microsystems Inc | Memory access control |
-
2012
- 2012-06-26 CN CN201210214408.XA patent/CN103514119B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101444608A (zh) * | 2007-11-26 | 2009-06-03 | 刘永生 | 一种冻疮药液 |
Also Published As
Publication number | Publication date |
---|---|
CN103514119A (zh) | 2014-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103514119B (zh) | 将多功能设备以usb组合设备呈现给主机的方法、装置及应用 | |
CN105760335B (zh) | 一种航天器通用接口控制器 | |
CN1307570C (zh) | 控制数据处理系统间经由存储器的数据流的方法和装置 | |
CN105302612B (zh) | 快速升级电子系统机箱内单片机软件程序的方法 | |
US7155554B2 (en) | Methods and apparatuses for generating a single request for block transactions over a communication fabric | |
CN105959288A (zh) | 一种电力电网系统中的网络协议转换及其相互通讯方法 | |
CN102984123A (zh) | 使用多个消息组的计算机系统中的代理之间的通信消息请求事务类型 | |
CN106951388A (zh) | 一种基于PCIe的DMA数据传输方法及系统 | |
CN105357147B (zh) | 一种高速高可靠的片上网络适配单元 | |
CN101937406B (zh) | 一种VxWorks操作系统中实现驱动1394设备的方法和系统 | |
CN103221934A (zh) | 用于处理集群的控制节点 | |
CN102012872A (zh) | 一种用于嵌入式系统的二级缓存控制方法及装置 | |
US7277975B2 (en) | Methods and apparatuses for decoupling a request from one or more solicited responses | |
CN106294239A (zh) | 一种外围总线apb总线桥 | |
CN104123262A (zh) | 在PCIExpress上启用基于ID的流的方法和装置 | |
CN209149287U (zh) | 大数据运算加速系统 | |
CN101282224A (zh) | 通信适配器及通信适配器的数据传输方法 | |
CN104572384B (zh) | 一种芯片多fpga验证方法 | |
CN112861468B (zh) | 一种软硬件协同仿真验证的方法、装置和介质 | |
CN101150486A (zh) | 一种零拷贝缓冲区队列网络数据接收的管理方法 | |
CN105993148B (zh) | 网络接口 | |
CN1819554B (zh) | 数据处理系统及其数据接口连接方法 | |
CN105630727B (zh) | 多SoC节点之间的访问方法、装置和系统 | |
CN106708764A (zh) | 一种机载航电系统通用io处理系统 | |
CN104866405A (zh) | 一种基于ZedBoard的远程监控FPGA中电路运行的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170301 Termination date: 20210626 |
|
CF01 | Termination of patent right due to non-payment of annual fee |