具有经由控制器集成的多功能的闪存驱动器的制造方法_3

文档序号:9616223阅读:来源:国知局
]在稍后的时间点,用户105插入闪存驱动器400的连接器,例如,凸形闪电连接器,到NCD 510的兼容连接器,例如,凹形闪电连接器。被插入后,闪存驱动器400通电并经过一个复位序列;在其中它被初始化并置于就绪状态。一旦闪存驱动器400处于就绪状态,闪存驱动器400或NCD510可以启动两个设备之间的通信。响应于被插入NCD 510的闪电连接器和有效地“引导”到准备状态,闪存驱动器400可以决定使用协议将消息发送到NCD 510以发起设备之间的通信(步骤526)。例如,闪存驱动器400可以基于被插入闪电连接器,判断发送外设协议命令或消息至NCD 510以启动通信(步骤528)。响应于接收到的所述外设协议命令或消息,NCD 510可以发送外设协议消息来认证闪存驱动器400 (步骤538)。
[0073]在接收到该外设协议消息后,闪存驱动器400确定设备认证已启动(步骤530)。外设协议消息被USB/PP/SIC控制器415接收,其中该外设协议命令被解释。USB/PP/SIC控制器415确定认证已被启动(步骤530),以及USB/PP/SIC控制器415将消息发送至安全1C 225,以获得认证数据。安全1C 225发送认证数据到USB/PP/SIC控制器415,该认证数据转发至NCD 510 (步骤532),以认证闪存驱动器400,以使数据在闪存驱动器400和NCD510之间传送。在一些实施例中,在将变换后的数据发送到NCD 510以授权闪存驱动器400之前,USB/PP/SIC控制器415处理授权数据。在接收到授权数据(或者,在一些实施例中,变换后的数据)后,NCD 510使用认证数据来验证闪存驱动器400是授权的设备。一旦授权,NCD 510发送一个响应,建立与闪存驱动器400 (步骤540)通信。
[0074]在稍后的时间点,用户105指示他要从闪存驱动器400复制或流传输电影到I⑶510。例如,用户105利用在I⑶510上运行的1S的用户界面,例如智能手机120,以指示从闪存驱动器400复制或流传输电影到ICD 510 (步骤542)。响应于该指示来复制或流传输电影,ICD 510通过发送,例如,请求电影数据的USB命令到闪存驱动器400来发送电影的请求到闪存驱动器400 (步骤544),其中命令被指向USB/PP/SIC控制器415,其中USB命令将被解释。基于接收的USB命令,USB/PP/SIC控制器415确定从闪存240读取电影数据(步骤534),并转发读取请求到闪存接口控制器405,其管理从闪存240的电影的数据的读取。在从闪存240读取电影数据之后,闪存接口控制器405发送或传流输电影数据到USB/PP/SIC控制器415,其发送或流传输数据到I⑶510 (步骤536),数据在那里被接收(步骤546)。
[0075]在一些实施方案中,其中存储控制器435被配置成,通过存储控制器435执行的软件,集成由图2的1S接口控制器230和存储控制器235上实现的各种功能。一些问题使得成功集成成为挑战。例如,存储控制器435可以与存储控制器235是相同的或具有与存储控制器235相同的功能,其没有被用来(在图2的实施例中)处理外设协议通信,也不能处理与安全IC225的通信。此外,当在软件中的数据传输应用层处理数据传输时,数据传输应用可能不被通知在较低层作出的错误检测,诸如通过USB层的命令,和/或错误检测可能不可见于数据传输应用。其结果是,通过软件实现这些由存储控制器435执行的功能可能是相当有挑战性的。例如,存储控制器435可以不具有处理将电影流传输至计算设备以用于显示所需的性能容量,或可能不能够适当地处理数据传输过程中发生的错误。
[0076]为了克服性能限制,在一些实施方案中,连接的外设设备(CP)通道可以在逻辑上被创建,以便能够使用小型计算机系统接口(SCSI)命令。CP通道是两个组件之间的通信通道,其使这两个组件使用外设协议以外的协议和/或命令进行通信。例如,为了克服使用不旨在实现外设协议的模块,例如存储控制器435,的性能限制,CP通道可以被实现以使小型计算机系统接口(SCSI)命令被使用。存储控制器435,被设计用于数据存储应用,支持SCSI命令,其不支持外设协议。通过建立CP通道,相比于仅仅使用外设协议的协议和/或命令来执行的数据传送而言,这些更高性能的SCSI命令可用于加快多达一个数量级的数据传送。
[0077]为了实现CP通道,存储控制器435可以被配置为创建两个USB端点以用在CP通道上,一个逻辑上地处于闪存驱动器400处以及第二个处于I⑶510处。一旦被建立,CP通道可以被用于利用除USB命令之外的其他命令发送数据。例如,存储控制器235可以为存储应用被设计和优化,并可能支持高性能的数据传输的命令,如SCSI命令。CP通道可用于使用SCSI命令将电影数据从闪存驱动器400传输到I⑶510,和/或从I⑶510到闪存驱动器400。通过利用SCSI命令,数据传输速率可以增加一个数量级的幅度或甚至更多。
[0078]为了克服由处理去往/来自闪存驱动器400的数据传输没有被通知传输错误,或传输错误不可见于数据传输应用的数据传输应用引起的问题,这些错误可以在数据传输应用层被检测。例如,USB协议可以包括循环冗余校验(CRC),它可以在USB协议层进行检查。如果通过CRC校验检测到错误,因为这个错误在比数据传输应用层低的层被检测到,数据传输应用可以不被通知该错误,和/或错误可能不可见于数据传输应用。其他标准USB错误检测机制的例子包括检测无效的产品ID(PID)的序列,漏填充的检测,或检测到令牌分组但在总线事务超时周期内没有相应检测到具有令牌分组的数据分组,等等。其他标准的USB错误检测机制可以是那些由USB规范,如USB 1.0,1.1,2.0,3.0,3.1,等等版本的USB规范调用的机制。
[0079]为了解决这个问题,在一些实施例中,进行检查以检测将通过标准的USB错误检测机制来检测的错误可以在数据传输应用层来实现,以及该错误可以在被由标准USB错误检测机制检查到之前被检测和解决。通过这样做,将通过其他方式被由较低层的USB错误检测机制,如CRC校验,来检测到的错误,能够在数据传输应用层被检测并处理。此外,通过在USB错误检测机制被用于检测错误之前处理数据,数据传输应用可以确保不存在错误,其将以其他方式由USB错误检测机制来检测,并且在与在较低层被检测的错误有关的问题可以被绕过。
[0080]作为错误问题的一例,当被插入连接器时,如闪电连接器,1S可能不允许存储设备,诸如闪存驱动器400被识别为存储设备。当闪存驱动器400插入,例如,运行Android操作系统(0S)计算设备时,闪存驱动器400可以被Android操作系统识别为存储设备。其结果是,大部分的数据传输可以由Android操作系统的文件系统进行处理。在这种情况下,当文件传输过程中遇到一个CRC错误,该文件系统的较低部分可以适当地处理该错误。然而,当1S不允许闪存驱动器400被识别为存储设备时,1S的件系统不能被用来处理数据传输。其结果是,当在文件传输过程中遇到的一个CRC错误的错误时,且文件系统不可用时,有可能没有其他软件可用于适当地处理错误。
[0081]这个问题可以通过实施一个文件系统,和包括具有数据传输应用的文件系统来解决。当ICD 510的1S不允许闪存驱动器400被识别为存储设备时,数据传输应用可以利用它自己的文件系统来传送数据。如那些将被1S的文件系统检测并处理的错误(在某些情况下,结合1S)可以,替代地,被由数据传输应用的文件系统检测和处理(在某些情况下,结合数据传输应用)。数据传输应用软件,以及相关的文件系统软件,可以被存储在闪存240中。闪存驱动器400可以从闪存240读取数据传输和文件系统软件,发送软件到ICD510,并引起软件由I⑶510来执行。
[0082]如果没有某种形式的保护,当第一连接器205和第二连接器210被连接到计算设备时,闪存驱动器400可能损坏。例如,连接到两个连接器的计算设备可以尝试冲突写入。这可能导致闪存240中的数据损坏,或甚至是闪存驱动器400的物理损坏。为了防止这种情况,在一些实施例中,闪驱动器400包括保护电路,以检测何时两个接口都被连接。这个保护电路防止由两个接口试图同时访问闪存所导致的任何损坏或故障。可替代地,闪存驱动器400可具有防止两个连接器被同时连接到计算设备的物理机制。
[0083]作为第二个例子,连接到第一连接器205的第一计算设备的第一电源,和连接到第二连接器210的第二计算设备的第二电源可以,例如,通过短路进行交互,并且该交互可能会损坏连接到第一或第二电源的部件。在一些实施例中,闪存驱动器400包括保护电路,防止第一电源和第二电源电交互以破坏耦合到第一或第二电源的任何组件,以防止当闪存驱动器的每个连接器被连接到不同的计算设备时的损坏。
[0084]在一些实施方案中,当第一连接器205和第二连接器210同时连接到计算设备时,存储控制器435可进一步被配置为区分逻辑上在NCD 505的第一 USB主机和逻辑上在ICD510的第二 USB主机。例如,存储控制器435可以根据在锁存器220中的值存储来区分主机,或基于从闪存驱动器400被连接至的计算设备接收到的数据来区分主机。被接收的数据可以是,例如,描述符,以及存储控制器435可以基于描述符来区分主机。
[0085]此外,闪存驱动器400可确定与两个连接的计算设备中的哪个进行通信的设备。例如,基于两个设备被连接到闪存驱动器400的各自相兼容的连接器的顺序,基于在闪存驱动器200和两个计算设备中的每一个之间发生通信的顺序,基于指示与该特定的计算设备进行通信的两个计算设备中的哪一个设备是更高的优先级等,闪存驱动器400可与该两个连接的计算设备中的哪个进行通信的设备。
[0086]图6是示出了具有两个控制器模块的闪存驱动器的一个例子的框图,其能使电流从源设备传送到移动设备,与各种实施例一致。闪存驱动器600包括第一连接器205、第二连接器210、闪存240、接口控制器630、存储控制器635、电源开关650和655、保险丝660、瞬态电压抑制器(TVS)665、USB开关670、主机检测逻辑675、和电阻器680和685。闪存驱动器600还可以包括附加的组件。接口控制器630可以是图2的1S接口控制器230,以及其它实现。存储控制器635可以是存储控制器235,以及其它实现。USB开关670可以是多路复用器215,以及其它实现。主机检测逻辑675,它可以是逻辑模块,可以是锁存器220,以及其它实现。在一些实施例中,闪存驱动器600包括安全1C 225,其耦合到接口控制器635。
[0087]存储控制器635被用于第一组功能,包括:处理USB协议和管理与闪存240的通信。在其它实施例中,存储控制器635处理用于与其他设备进行通信的其他协议,例如外设协议。接口控制器630被用于第二组功能,包括:接口外部计算设备,如Apple 1S设备,运行一个版本的Windows操作系统的计算机,运行一个版本的AndroidTM操作系统的移动设备等。在一些实施例中,接口控制器630被进一步用于与一个安全1C或模块,诸如安全1C225,进彳丁通{目。
[0088]图6的实施例中,第一连接器205、第二连接器210、闪存240、接口控制器630、存储控制器635、电源开关650和655、保险丝660、TVS 665、USB开关670、主机检测逻辑675以及电阻680和685,其每个都是连接到PCB(未示出)的单独的组件,以及PCB电连接至各组件的引脚,以使组件彼此通信。在各种实施方案中,任何的闪存240、接口控制器630、存储控制器635、电源开关650和655,保险丝660、TVS 665、USB开关670、主机检测逻辑675,或电阻器680和685可以被集成以创建一个或多个组件,其集成这些组件的功能,或者可以被细分以创建多个组件,其被组合,包括一个或多个这些组件的功能。此外,这些组件可以连接至多个PCB,多个PCB经由导线或由另一个能使组件彼此通信的机制被耦合在一起。
[0089]返回到图1的例子,闪存驱动器600可以是闪存驱动器110,闪电连接器130可以是第一连接器205,以及USB连接器125可以是第二连接器210。使用图1的例子,用户105可以将第二连接器210插入笔记本电脑115的USB端口。一旦连接,第二连接器210的电源引脚电连接到笔记本电脑115的5.5V电源,电源引脚发送5.5V到主机检测逻辑675。
[0090]在这一点上,没有设备连接到第一连接器205,以及第一连接器205的电源引脚未连接。主机检测逻辑675确定连接到闪存驱动器600的哪个设备,通过第一连接器205或第二连接器210,是闪存驱动器600与之通信的主机设备。在一些实施例中,主机设备是USB主机,以及闪存驱动器600向主机设备发送消息或信号以建立主机设备作为USB主机。在主机设备和闪存驱动器600之间的后续通信可以基于被确立为USB主机的闪存驱动器600。
[0091]主机检测逻辑675的输出控制USB开关670,这是一个数据交换机,以使主机设备通过配置USB开关670与接口控制器630进行通信,以允许数据经过接口控制器630和第二连接器210之间传递。主机检测逻辑675的另一个输出,确定哪一个设备是主机以及是否有一个或两个设备连接到闪存驱动器600,被耦合至接口控制器630和存储控制器635。
[0092]当多个装置连接到闪存驱动器600,主机检测逻辑675可以使用任何的各种算法/机制以确定哪个设备是主机。在一些实施例中,基于哪个设备首先被连接到闪存驱动器600且为其供电,主机检测逻辑675确定哪个设备是主机设备。在其他实施方案中,当两个设备被连接到闪存驱动器600时,主机检测逻辑675设置主机为连接到优先的连接器的设备。例如,当第一和第二连接器205和210连接到设备时,主机检测逻辑675可确定连接到第二连接器210的设备是主机,即使闪存驱动器600经由第一连接器205最初被连接到设备,并且设备被初始设置为主机。
[0093]在图6的例子中,主机检测逻辑675基于连接器的优先级确定主机,其中当设备被连接到第一和第二连接器205和210时,连接于第一连接器205的设备被确定为主机。主机检测逻辑675检测到从第二连接器210的5.5V电源引脚是活跃的,以及从第一连接器205的3.3V电源引脚是不活跃的,并且确定连接到第二连接器210的设备,其是笔记本电脑115,是主机。主机检测逻辑675进一步确定只有一个设备连接到闪存驱动器600。控制USB开关670的主机检测逻辑675的输被设定为第二值,以指示连接到第二连接器210的设备是主机。主机检测逻辑675的输出被电连接到的USB开关电路670的选择输入。主机检测逻辑675的第二输出被电连接到接口控制器630和存储控制器635,并且被设置为一个值,其表示连接到第二连接器210的设备是主机,以及闪存驱动器600被连接到一个设备。
[0094]当USB开关670的选择输入被设定为第二值时,USB开关670使第二连接器210的数据引脚被耦合到接口控制器630,使得数据可以在笔记本电脑115和接口控制器630之间往复发送。主机检测逻辑675的第二输出,它连接到接口控制器630和存储控制器635,可通过接口控制器630和存储控制器635进行采样,以确定连接到第二连接器210的设备是主机,以及闪存驱动器600被连接到一个设备。
[0095]闪存驱动器600的各种组件可以通过适当的电源引脚供电。在闪存驱动器600被连接到任何设备之前,电阻680和685被连接至的三个节点的电压都是相同的,所以这两个电阻器之间的节点的电压和电阻685连接到的接地节点的电压是相同的。因为第二连接器210连接到笔记本电脑115,第二连接器210的5.5V输出端被上电,以及电流流过电阻器680和685到地,导致两个电阻器之间的节点的电压相对于接地节点增加。两个电阻之间的节点被连接到电源开关650,并设置开关到适当的状态。
[0096]当5.5V电源可用时,两个电阻之间的节点的电压增加,禁用开关650且防止3.3V电源从第一连接器205流动到接口控制器630、存储控制器635或闪存240。接口控制器630包括功率转换器,其从5.5V电源生成3.3V。当5.5V电源可用时,接口控制器630供给3.3V电源到存储控制器635和闪存240。当第二连接器210的5.5V电源不可用,这两个电阻器之间的节点的电压是接地,从而启动电源开关650并使3.3V电源从第一连接器205流动到接口控制器630、存储控制器635和闪存240。
[0097]一旦闪存驱动器600通电,该组件通过复位序列,其初始化该组件,并开始执行应用程序,该应用程序存储在闪存240以有效地“引导”闪存驱动器进入就绪状态。相关于“引导”过程,枚举过程被启动,其中闪存驱动器600和笔记本电脑115通信以识别设备类型。在一些实施方案中,在枚举过程中,闪存驱动器600和笔记本电脑115通信以确定从笔记本电脑115的USB端口提取的闪存驱动器600的功率的允许量,以及闪存驱动器600相应地限制了它的功耗。限制了它的功率提取也可以包括闪存驱动器600限制连接到该闪存驱动器的第二设备的功率消耗,以及可以从闪存驱动器600提取的功率。
[0098]在闪存驱动器600处于就绪状态后的某点,笔记本电脑115发送USB协议消息到闪存驱动器600以启动通信。USB协议消息通过USB开关670传送
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1