多协议可移动存储设备
背景
通用串行总线(USB)大容量存储类(MSC)是由USB设备论坛定义的一组计算通信协议。该标准提供了对各种存储设备的接口。连接到主计算机并包括该标准的典型存储设备包括外部磁硬盘驱动器、包括CD和DVD读取器和刻录机驱动器的外部光盘驱动器、包括USB闪存设备的便携式闪存设备、桥接标准闪存卡和USB连接的适配器、数码照相机、诸如MP3播放器等的数字音频播放器、以及用于音乐、视频和图片的高端数字媒体播放器。
这一USB大容量存储类并不指定在使用它的设备上应使用哪个文件***;相反,它主要提供读出任何硬盘设备上的扇区的方法。操作***可自由地用诸如文件分配表(FAT)文件***等的对存储区域可用的任何文件***来格式化该存储区域。使用MSC的一个不利方面是它阻止可附连USB的设备容易地经过USB接口呈现其实际功能行为。
媒体传输协议(MTP)是一种新的协议,并且附带了由华盛顿州雷蒙德市的微软公司开发的驱动程序集以将便携式设备连接到Windows
XP个人计算机(PC)并且在那些设备和PC之间同步数字媒体内容。MTP适于具有硬盘驱动器的便携式设备。以下是MTP的好处。所有兼容MTP的设备使用随Windows Media Player
TM版本10(MP10)及以上一起出厂的驱动程序,并且用户将能够从播放器控制软件中执行所有传输和同步功能。所有兼容MTP的设备支持被称为AutoSync(自动同步)的特征,该特征让用户将MP10配置为只要将设备连接到支持的PC就自动地将新获取或抓取的内容传输到该设备。兼容MTP的设备具有允许在设备断开连接并然后重新连接时将对该设备上的文件属性(诸如用户评级等)所做出的改变传播回PC的文件属性同步。
因此,媒体传输协议(MTP)设备提供超出USB大容量存储类(MSC)设备的额外的功能。然而,MTP协议并没有在和MSC协议一样多的主机设备上得到支持。运行MP10的主机设备支持MTP,而没有MP10或诸如Linux、MacOS、或Windows 95、Windows ME、或Windows CE等的操作***的设备不支持MTP。所有这些操作***及更多操作***支持MSC。支持旧MSC的PC上的MTP设备的可操作性是有问题的,除非存在某一种协议灵活性。其他协议也存在类似的问题。该问题并不限于MTP和MSC。
特定于MTP和MSC的一个问题是MTP设备维护对存储中的所有对象/文件的数据库索引的这一事实,该数据库索引允许在诸如(但不限于)专辑、作者、风格等的许多属性上进行快速浏览、排序、以及访问。MSC并不维护对于所有对象的数据库索引。结果,当使用MSC来访问可移动存储设备时,MTP使用的数据库索引将变得不与对象同步。
此外,当前不存在检测是否已经以导致MTP数据库不同步的方式使用了MSC的标准方法。结果,主机或设备将不得不假设数据库没有同步并在每次连接或重新连接时修复或重新创建MTP数据库。该操作增加了显著的延迟。一种合乎需要的特征将会是取决于主PC所支持的协议选择任一协议以及在该协议中容纳升级的改变的能力。
概述
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定要求保护的主题的范围。
在本发明的一方面中,一种可移动存储设备能够维护用于可以支持一个或多个协议的主计算机的确定优先顺序的协议的列表。在一个实施例中,一个协议可以是MTP协议,而另一个协议可以是MSC协议。MTP协议可被认为是优先的协议。存储设备按照优先级次序来尝试各协议。如果主机成功地检测到并支持该协议,则操作如同该设备只用该协议来运行一样继续。如果主机没有检测到或不支持该协议,则该设备仿真一断开连接事件并且用该列表中的下一个协议来重新连接。
如果该设备用MSC协议来连接,则该设备对每个存储区域启用写入检测器。对于由主机向存储区域的每次写入,设备将索引标志设为真。如果设备根据MTP来连接,则该设备检查每个存储区域的索引标志。如果区域的索引标志为真,则该设备修复对应于该区域的数据库索引并且将该索引标志清除为假。更新的索引允许在即使该数字媒体是使用不支持索引的MSC协议来存储在该设备上的的情况下也能使用MTP协议的能力来对存储在设备上的数字媒体进行分类和搜索。
附图简述
在附图中:图1是示出具有本发明的各方面的示例媒体存储设备的图;图2是展示了本发明的各方面的示例流程图;以及图3是示出示例主机计算环境的框图。
详细描述
示例性实施例
可***存储媒体的一个问题是所使用的接口和协议。在可以使用两个操作协议的情况下,用户可能不知道要使用的协议。例如,兼容通用串行总线(USB)的设备的用户可能不知道该设备或者诸如个人计算机等的主计算机支持哪个协议。一种解决方案是使兼容USB的设备配备在各可选协议之间转换的能力以使得用户无需连接和断开兼容USB的设备,也无需做出选择一个协议而不是另一个的手动转换。注意,任何协议集都可以结合本发明来使用,并且以下所呈现的各具体实施例并非限制。
图1描绘了用于能够运用多个协议而无需主PC或者用户干涉的兼容USB的存储设备的体系结构。图1描绘了在其中与至少两个协议兼容的媒体存储设备120可连接到第一、第二、或第三主机中的任一个的***。如果连接到第一主机105,则所支持的协议可以是较新的MTP协议或者常见的MSC协议中的任一个。如果连接到第二主机110,则所支持的协议是MSC协议。如果连接到第三主机115,则所支持的协议是MTP协议。
媒体存储设备120包括物理接口130,该接口包括典型接口的电学和硬件方面。该接口可以是USB接口、火线接口、WiFi接口、以太网、光学(同步光纤网(Sonet))接口、或其他通常可用的PC接口中的任一种。设备120功能上还包含能够检测对PC或其他计算设备的工作接口的存在的***和移除检测模块125。***和移除检测块确定存储设备120与PC或其他外部主机相连接还是断开与其连接。
设备120的协议失败检测功能135可以存储该设备内可用的协议的各方面以便能够在用所支持的协议中的一个来操作或试图操作时检测到错误。连接和断开连接仿真器140允许设备在设备120有从一个协议改变到另一个的原因时仿真断开连接和重新连接。协议失败检测功能135与连接/断开连接仿真器140的组合使设备120能够用不止一种协议来操作。如果尝试了第一种协议并且失败了,则协议失败功能135检测到该失败并且,如果合适,可以用作激活连接/断开连接仿真器140的触发器。在协议失败时,在内部逻辑170的控制下,仿真器140能够仿真设备120从主机的断开连接。然后,仿真器140能够提供该设备到主计算机的逻辑连接因此允许尝试第二种协议。仿真器140能够以逻辑控制170所允许的频率来向设备120提供断开连接和连接服务。
在本发明的一方面中,内部逻辑控制可被实现为逻辑状态机或可编程控制器。可编程控制器可以通过到媒体存储设备120的接口使用从诸如CD、软盘等的计算机可读介质下载的程序来进行编程。可编程介质可包含用于在设备120上执行操作的指令。设备120的电源可以从总线接口中得到,诸如在设备是兼容USB的情况下。或者,或作为结合,设备120可包括提供用于维护和/或工作电力的所需的偏压的电池。
设备120支持MTP协议。因此,提供数据库165以使得设备120可以对存储在该设备中的文件的各方面进行存储和分类。例如,如果该设备是数字音乐设备,则每个特定的文件可具有包括文件名、大小、艺术家、专辑、风格、标题、以及其他标签或属性的各方面。这些属性和信息可被存储在数据库165中。MTP协议还允许用户排序或搜索用于歌曲的设备的内容。实现搜索的一种方法是用能够指向可访问歌曲的存储中的位置的数据库上的索引。因此,MTP支持在数据库信息上的索引。索引行列可被存储在数据库165中。在一个实施例中,可由小型磁盘驱动器或半导体存储器来支持MTP数据库。
图1描绘了存储区域1到N、160a和160b。设备数据库165可用作诸如数字音乐等的媒体的存储。因此,在该具体示例中,诸如160a和160b等的存储区域的指示可用于将存储在数据库165上的音乐文件或音乐文件组相关联。每个存储区域都具有相关联的索引标志和写入检测元件。索引标志145a和145b分别与存储区域160a和160b相关联,写入检测模块150a和150b分别与存储区域指示符160a和160b相关联。
在本发明的一方面中,设备120可以与兼容MSC的主PC以及兼容MTP的主PC一起使用。如果兼容MTP的主机连接到该设备,则用户可以根据搜索准则使用索引来检索歌曲。如果添加了新歌曲,则可以更新索引。然而,如果使用MSC协议来添加数字音乐内容,则将添加该文件,但不会更新索引,因为MSC协议不支持文件的索引。在本发明的一方面中,如果设备被连接到不支持索引搜索的使用的MSC主机,则歌曲将被放置于存储器中诸如存储区域160a等的存储区域中。如果发生这一情况,则写入检测模块150a检测到对存储区域160a的写入已经在MSC操作模式中发生并且设置索引标志145a。
随后,如果在后续会话期间使用MTP协议,则设备120能够检测到该索引标志并且指示已经添加了数字内容但没有被索引。设备120然后允许索引新添加的数字内容以使得MTP协议能够允许使用索引来搜索新的数字音乐内容。
在本发明的另一方面中,当新的数字音乐被加载到设备中,更新对应于该新添加的数字音乐的索引。作为添加的结果,可以更新多个索引。更新索引的一种方法是每次进行MTP连接时更新整个存储区域。然而,因为设备可能保持有10,000以上的可单独索引的数字内容项,所以这可能花费大量的时间。通过使用按照每个存储部分划分的索引标志,只需要更新对于由被激活的索引标志指示的存储部分的索引。因此,整个索引的重建变得没有必要,并且可以在更少的时间内实现更新。因此,设备120变得更快对用户可用。本发明的该方面避免了设备存储器的数据库索引的重建。在该设备上使用的存储器可以是诸如非易失性或易失性存储器等的磁盘或半导体存储器。
在本发明的另一方面中,如果该设备在MTP协议下操作并且察觉到部分文件,则可如在任何其他数据库中那样回退(roll back)数据库以便移除该部分文件。部分文件可能是用户在写入操作期间移除设备的结果,或者可能是以其他方式损坏的文件。因此,本发明允许恢复和回退其文件因设备电源丢失而不完整的数据库。
图2是利用本发明的各方面的一个可能的实施方法200。方法200假设类似于图1的设备120的媒体存储设备可由用户物理地连接到支持MTP协议或者MSC协议中的任一个,或两者都支持的主机。作为过程200的开始,设备等待被物理连接到主机(步骤210)。在物理连接之后,检查成功标志以查看该设备是否上一次成功地连接到兼容MTP的主机或是否已过了可配置时间段(计数)。在一个实施例中,该设备最初可被设为使得设置在步骤215处的成功标志以指示上一次尝试连接时的成功的MTP初始化,即使先前从未连接过该设备。可设置该偏好,以使得该设备最初选择尝试用最先进的协议:MTP来连接。
假设设置成功标志以指示成功的上一次MTP尝试,该过程再次移至连接到兼容MTP的主机(步骤220)。或者,如果超出了计数,则做出初始化MTP协议的尝试(步骤220)。超出计数可以是诸如超出可配置时钟计数或成功连接计数等的计数器事件。时钟计数可以是诸如24小时时间段等的设备附连之间的时间量,该时间量用作在其后引导该媒体设备在下一个附连事件时重新尝试MTP协议的超时时间段。或者,超出计数可以是由该设备做出的成功的MTP或MSC连接的特定(可配置)数量。在做出多次连接之后,可引导该设备尝试高优先级MTP协议。假设做出MTP尝试(步骤220),如果连接是成功的(步骤225),则设置成功标志以记住上一次成功的尝试是与兼容MTP的主机进行的(步骤230)。在步骤230处,可以启动上述的诸如时钟计数或成功连接计数等的计数。接着,检查索引标志以查看该索引标志是否已设置(步骤245)。如果设置了该索引标志(真),则指示发生了先前的MSC会话并且存在还未被正确索引的媒体存储数据。如果在步骤245中索引标志被检测到为真,则修复该索引并且清除该索引标志(步骤260)。然后可做出作为MTP设备的最终连接(步骤275)。该媒体存储设备然后可以等待断开连接(步骤280)。如果断开该设备,则该过程回到等待下一次连接(步骤210)。
回到步骤225处的过程200,如果启动MTP协议的尝试不成功,则做出MSC协议的尝试(步骤235)。在本发明的一个实际方面中,替换协议的尝试可调用断开连接后跟连接的仿真。如果与MTP主机相连接的最初尝试是成功的(步骤240),则该媒体存储设备记住上一次成功的协议初始化为MSC协议连接(步骤250)。最后,调用完整的协议并且使用MSC协议来将媒体存储设备连接到主机设备(步骤265)。该媒体存储设备然后在其等待断开连接指示(步骤280)之后等待重新连接(步骤210)时支持MSC协议的操作。
如果该媒体存储设备随后被附连到MSC设备,则过程200允许快速地连接该设备。将进行设备附连(步骤210),并且上一次成功将指示在其中该存储设备将在MSC协议下启动与该主机的连接的MSC连接(步骤215)。与MSC协议主PC的初始化连接将会是成功的,并且方法200进入上述的步骤250和265。
如果该媒体存储设备随后被连接到只支持MTP的主机,则该设备将在等待(步骤210)之后进入连接状态并且将检查成功标志。因为该设备先前已经有了MSC成功作为上一次连接协议,所以该过程将从步骤215遍历到步骤235并且将发生MSC协议启动。然而,因为该设备被连接到只支持MTP的主机,所以MSC尝试将会失败(步骤240)。过程然后询问在当前会话期间是否已有过MTP协议尝试(步骤255)。在这一情况下,不存在先前的MTP尝试。所以,该过程从步骤255遍历到在其中做出MTP协议尝试的步骤220。当成功连接时(步骤225),设置成功标志以指示MTP成功,所以任何随后到主机的连接将首先尝试兼容MTP的协议(步骤230)。再一次,在成功的MTP初始化之后,测试索引标志(步骤245)。如果设置了该索引标志,则在用MTP协议来完全连接之前修复该索引(步骤275)。
回到在其中MSC连接尝试失败的步骤255,如果先前已尝试了MTP协议并且失败了,则过程200得出该媒体存储设备无法使用MSC协议或用MTP来连接的结论(步骤270)并因此遍历到等待另一次重新连接(步骤210)。
方法200示出了本发明的灵活性。一旦设备已用一种协议来连接,它就会记住那次成功,并且当被重新连接到主机时,尝试使用该相同的成功的协议。然而,如果该存储媒体设备被连接到支持不同协议的主机,则该设备首先尝试上次成功的协议,并且如果失败了,则该存储设备尝试替换协议。如果两个协议都失败了,则该设备等待随后的重新连接。因此,媒体存储设备可被连接到支持MTP协议、MSC协议中的任一种的主机,以及支持其中一种协议的主机。该设备可从一个主机移至另一个主机,并且如果该主机支持该设备支持的协议中的任一种则该设备将成功连接。如果在MSC设备上使用该设备,并且该设备随后被连接到MTP设备,则进行自动索引修复以使得即使数字内容是使用MSC协议下载的也可以使用完整的MTP协议功能。
在本发明的一个实施例中,主机计算机可以支持MSC或者MTP协议。因此,如果该设备先前是结合只支持MSC的主机来使用的,则该存储设备会记住那次成功的连接并且始终尝试使用MSC协议来连接。所以,如果该媒体存储设备被连接到支持MSC和MTP协议两者的主机,则由于MSC设置了成功标志,将更偏爱MSC协议。在一个实施例中,如果上一次成功标志被设置为尝试MSC,则将在预定的计数数量之后尝试MTP协议。计数可以是由时钟提供的定时计数,或可以是指示该媒体存储设备被连接到主计算机的次数的计数器。时钟、累加器、标志、或寄存器可以包括在控制逻辑170内。例如,如果成功标志被设置为偏爱MSC协议尝试,则在每个预定的重新连接次数(例如,到主机的三次或四次连接)之后,该存储设备将转为偏爱初始MTP协议尝试。这将允许该设备变得向上兼容高级的MTP协议并且适应存储设备的用户可能将该设备连接到兼容MTP或MSC的主机的可能性。在一个实施例中,超出的预定计数会将成功标志设置到优选的MTP协议。在另一个实施例中,超出的预定计数将简单地覆盖成功标志并且使用优选的MTP协议作为初始尝试协议。
尽管用对结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
示例性计算设备
图3和以下讨论旨在提供适于与媒体存储设备进行交互的主计算机的简要概括描述。虽然以下描述了通用计算机,但这仅是单个处理器示例,并且具有多个处理器的主计算机的各实施例可以用诸如具有网络/总线互操作性和交互的客户机等的其他计算设备来实现。
参考图3,用于实现示例主计算机的一个示例性***包括计算机***310形式的通用计算设备。计算机***310的组件可以包括,但不限于,处理单元320、***存储器330和将包括***存储器在内的各种***组件耦合至处理单元320的***总线321。***总线321可以是若干种总线结构中的任一种,包括存储器总线或存储器控制器、***总线以及使用各类总线体系结构中的任一种的局部总线。
计算机***310通常包括各种计算机可读介质。计算机可读介质可以是能由计算机***310访问的任何可用介质,而且包含易失性/非易失性介质以及可移动/不可移动介质。作为示例,而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁性存储设备、或可用于存储所需信息并可由计算机***310访问的任何其它介质。
***存储器330包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)331和随机存取存储器(RAM)332。基本输入/输出***333(BIOS)包含有助于诸如启动时在计算机***310中的元件之间传递信息的基本例程,它通常存储在ROM 331中。RAM 332通常包含处理单元320可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例,而非限制,图3示出了操作***333、应用程序335、其它程序模块336和程序数据337。
计算机***310也可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图3示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器331,从可移动、非易失性磁盘352中读取或向其写入的磁盘驱动器351,以及从诸如CD ROM或其它光学介质等可移动、非易失性光盘356中读取或向其写入的光盘驱动器355。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器341通常由不可移动存储器接口,诸如接口340连接至***总线321,磁盘驱动器351和光盘驱动器355通常由可移动存储器接口,诸如接口350连接至***总线321。到***总线321的其他连接包括向串行接口设备358提供电源和数据连接服务的串行接口连接357。串行连接357的示例包括火线、USB、以及光学接口。串行接口设备的示例包括闪存设备、媒体设备、以及诸如扫描仪和组合设备等的其他***设备。
上文讨论并在图3中示出的驱动器及其关联的计算机存储介质为计算机***310提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图3中,硬盘驱动器341被示为存储操作***344、应用程序345、其它程序模块346和程序数据347。注意,这些组件可以与操作***344、应用程序345、其它程序模块346和程序数据347相同或不同。操作***344、应用程序345、其它程序模块346和程序数据347在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,如键盘362和定点设备361(通常指鼠标、跟踪球或触摸板)向计算机***310输入命令和信息。其它输入设备(未示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至***总线320的用户输入接口360连接到处理单元321,但是也可由诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口和总线结构连接。监视器391或其它类型的显示设备也经由可以进而与视频存储器(未示出)进行通信的接口,诸如视频接口390连接至***总线321。除监视器391以外,计算机***也可以包括其它***输出设备,诸如扬声器397和打印机396,它们可以通过输出***接口395连接。
计算机***310可使用至一个或多个远程计算机,诸如远程计算机380的逻辑连接在联网或分布式环境中操作。远程计算机380可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,且通常包括上文相对于计算机***310描述的许多或所有元件,尽管在图3中只示出存储器存储设备381。图3中所示的逻辑连接包括局域网(LAN)371和广域网(WAN)373,但也可以包括其它网络/总线。这样的联网环境在家庭、办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN网络环境中使用时,计算机***310通过网络接口或适配器370连接至LAN 371。当在WAN网络环境中使用时,计算机***310通常包括调制解调器372,或用于通过WAN 373,如因特网建立通信的其它装置。调制解调器372可以是内置或外置的,它可以通过用户输入接口360或其它合适的机制连接至***总线321。在联网环境中,相对于计算机***310所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例,而非限制,图3示出了远程应用程序385驻留在存储器设备381上。可以理解,示出的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它手段。
此处所述的各种技术可结合硬件或软件,或在适当时以其组合来实现。因此,本发明的方法和装置或其某些方面或部分,可以采用包含在有形介质中的程序代码(即,指令)的形式,有形介质诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本发明的装置。
尽管已结合各个附图的优选实施例对本发明的各方面进行了描述,但是可以理解,可以使用其它类似的实施例,并且可以对所述实施例进行修改或添加,来实现本发明的相同功能而不背离本发明。此外,应当强调,可构想包括手持式设备操作***以及其他专用操作***的各种计算机平台,尤其当无线联网设备的数量继续增长时。因此,所要求保护的发明不应限于任何单个实施例,而是应该根据所附权利要求书的宽度和范围来解释。