具有命令传递机制的媒体卡的制作方法

文档序号:6569902阅读:182来源:国知局

专利名称::具有命令传递机制的媒体卡的制作方法
技术领域
:本发明大体来说涉及可移除式电子电路卡的使用和结构,且更具体来说涉及允许个人计算机或其它主机通过不支持媒体特定卡命令的读取器和/或主机软件来使用这些命令。
背景技术
:近来,例如紧密快闪卡(CompactFlashCard)、安全数字(SD)卡、多媒体卡(MMC)、xD和索尼存储棒/高速存储棒(MemoryStickPro)的小型快闪存储卡已得到消费者的广泛接受。这些装置主要经设计用于例如数码相机和快闪存储器音乐播放器的消费者电子装置。然而,需要其还具有到个人计算机的方便连接以供上载和下载数据。不同卡具有不同电接口且通常具有可由用于卡的主机使用的专用于媒体的命令。另外,由于这些卡经启动以过载有在卡与卡之间可能不同的额外功能,所以卡协议可不仅在卡形状因数之间不同,而且在相同形状因数的各种卡之间也不同。所述命令通常具有例如特定输入-输出(I/O)和安全操作的独特功能。因为这些卡的使用变得更加多样且其不断用于更多类型的应用,所以这些新应用通常将涉及现有协议中所缺乏的功能或命令。具有不同机械和/或电接口的市售非易失性存储卡的实例包括可从Sunnyvale,California的SanDisk公司(本申请案的受让人)购得的相关多媒体卡("MMC")和安全数字("SD")存储卡。存在着符合国际标准化组织("ISO")和国际电工技术委员会("IEC")的标准的其它卡,经广泛实施的实例称为ISO/IEC7816标准。在由Cupertino,California的多媒体卡协会(MultiMediaCardAssociation,"MMCA")不断更新和公开的"多媒体卡系统规格(TheMultiMediaCardSystemSpecification)"中给出MMC的物理和电气规格。日期分别为1999年6月、2000年1月、2001年6月和2004年2月的所述规格的版本2.11、2.2、3.1和4.0以引用的方式明确地并入本文中。在单一卡中具有达128兆字节的变化的存储容量的MMC产品当前可从SanDisk公司购得。在由SanDisk公司公开的日期为2000年4月的"多媒体产品手册(MultiMediaCardProductManual)"修订版2中描述了这些产品,所述手册以引用的方式明确地并入本文中。第6,279,144号美国专利和在1998年11月4日申请的第09/186,064号申请案中也描述了MMC产品的电操作的某些方面。在第6,040,622号美国专利中描述了物理卡结构及其制造方法。让渡给SanDisk公司的这些申请案和专利以引用的方式明确地并入本文中。较新的S—D卡类似于MMC卡Z除容纳额外存储器芯片的增加的厚度之外,其具有相同大小。其之间的主要不同之处在于SD卡包括额外数据接点以使得能够在卡与主机之间更快地传送数据。(具有额外数据接点的MMC卡的版本也可用一一见上文阐述的MMC规格的4.0版)。SD卡的其它接点与MMC卡的那些接点相同,从而使得经设计以接受SD卡的插槽也将接受MMC卡。如以引用的方式并入本文中的第6,820,148号美国专利中所描述,以经设计以接受SD卡的插槽也可经制造以接受MMC卡的方式进一步制造与SD卡的电接口和功能接口。在2000年8月17日申请的第09/64〗,023号美国专利申请案中描述SD卡的某些方面,所述申请案以引用的方式并入本文中。(SD卡的规格可用于SD协会(SDA)的成员公司)。根据ISO/IEC7816标准而制造的卡具有不同形状,其具有在不同位置中的表面接点,和不同于MMC和SD卡的电接口。ISO/IEC7816标准具有总标题"识别卡-具有接点的集成电路(Identificationcards-IntegratedCircuit(s)CardswithContacts",且由具有从1994年到2000年的个别日期的第1部分到第10部分组成。此标准(其副本可从Geneva,Switzerland,的ISO/正C获得)以引用的方式明确地并入本文中。ISO/IEC7816的卡尤其适用于其中必须以安全方式(其使数据极难或不可能以未经授权的方式被读取)来存储数据的应用。小型ISO/IEC7816卡通常用于蜂窝式电话以及其它应用中。如上文所提及,当将这些存储卡用于新应用中时,其可能需要在协议的现有版本中没有的功能或命令。可参看图1说明此情况。如图1的上部分所示,目标为在主机侧与卡侧上的特定应用(例如在安全数据传送或电子商务应用中)之间交换命令和数据。为了实施此目标,将需要在主机与卡之间传输所述命令,其中图1的下部分展示了主机侧上的某些软件层和卡侧十.的某些固件层。来自主机的应用层的指令将被传递通过操作系统、文件层和装置(卡)驱动程序,终止于可借以将其传输到卡的协议中。在卡内,指令将接着由装置层固件(其处理标准卡操作)加以处理并被传递到固件的应用层。视正使用的配置而定,传输协议中的指令将从主机直接地交换到卡或经由所配接的读取器或硬件交换到卡,所述读取器或硬件可具有其自身的用于从一种协议转译到另一协议的软件/固件层。可出现问题之处为在哮些层之间的转译中的某一阶段,应用的预期指令可能缺少在沿所述路径的某点处的相应命令。作为一个实例,卡通常通过使用接受来自主机系统的命令的(例如,用于USB的)硬件适配器而与PC主机连接。然而,在主机与硬件适配器借以通信的协议中无法使用许多媒体特定命令,即使PC主机的主机应用希望将这些命令传输到卡应用时也如此。图2展示第一主机和一卡的系统,其中卡101可直接地(例如,通过插入到槽153中)或经由某种适配器而连接到主机151。卡面件由PWI05指示。(参看图3中的卡固件105和读取器固件335将了解,更一般来说可将这些功能实施于硬件、软件或这些硬件和软件的某-组合中)。此主机151的实例可为数码相机或电话。若干类型的此类卡当前正在使用中且正在开发中。卡和主机可经由若干特定协议而通信,许多所述特定协议专用于特定媒体且其可包括各种媒体特定命令。由于许多所述命令可为媒体专用的,所以可出现以下状况当将在主机与媒体之间交换此命令时,沿线的某处所述命令将需要被转译成可能不支持媒体特定命令的另一协议。如果此另一协议不具有相应命令,那么主机将不能够成功地发出所述命令。举例来说,除其用于主机之外,其还通常供用户存取个人计算机上的卡。举例来说,其通常用于一已用于(例如)数码相机的卡且希望存取存储在个人计算机上的卡中的相片。由图3的框图展示此情况。卡101通常经由具有用于卡101的插座333的卡读取器331而与个人计算机PC351通信,但在其它状况下所述卡可直接附着到PC351。读取器331与PC351通常将经由协议而通信,所述协议至少在某种程度上不同于由卡101用以与主机151通信的协议。读取器331基于固件335(或硬件、软件或这些硬件和软件的某一组合)而将来自PC351的命令转译为适用于卡101的形式,其中通常应了解,可视实施方案而定而由软件与硬件的任何组合来执行此功能。图4中示意性地展示此过程。为了给出具体实例,在图4中,将读取器331视为使用SCSI命令集与PC351通信的USB装置且将卡101视为SD卡。因为PC351和读取器331使用SCSI协议,所以当主机希望经由读取器而向卡发出命令时,其发出SCSI命令集中的命令401。为了将命令401传送到读取器,将命令401放置于USB包装403中、沿USB连接而传输到读取器,且在那里去除USB包装。卡读取器331将接着将来自SCSI命令集的命令401转译成SD集中的相应命令(一或多个)405,从而允许将其传递到卡101;然而,为了使读取器在SCSI命令集与SD命令集之间转译给定命令,需要在两个集中存在均等命令。因此,如果主机希望通过发出SD协议中的安全读取命令而执行(例如)对SD卡中的安全区域的读取,那么因为不存在此SCSI均等命令,因此读取器因为未在SCSI命令集中找到所述命令而无法对此进行转译,且读取请求将被视为其中用户无足够存取权限的区域。对于各种卡类型的其它媒体特定命令,将出现相同情况,其中不存在主机在读取器所理解的协议中发送到所述读取器的均等SCSI命令(一或多个)。因此,在不改变适配器或读取器的固件的情况下,不能够将此媒体卡特定命令从主机传递到卡,适配器或读取器的固件控制(host)媒体卡引入针对其用于与主机通信的协议的相应命令。无论何对沿—通信路径的某处需要协议变化时或当主机的操作系统不了解卡特征时,即使在无独立卡读取器的情况下,还可出现类似情况。在现有技术中,此问题的方法将为改变适配器固件以支持用于经由适配器而传送这些指令的特定命令或在读取器-主机协议中建立新命令,其每一者均经定制以适于特定媒体命令,例如对应于(例如)SD卡的协议中的发送询问命令、接收响应命令等的那些特定媒体命令。这些方法由于许多原因而倾向于不切实际。举例来说,所述协议通常基于一标准,其为了成为有用的标准而需要被广泛接受且通常倾向于偏好较不复杂的命令集;因此,当引入新媒体且现有媒体发展时难以将各种新的媒体特定命令引入到命令集中。如果替代地,改变适配器的固件以允许特定命令传递固件自身并不支持的那些媒体特定命令,那么这些适配器的每一卖主的软件将需要接受并进行适当固件变化。因此,引入个人计算机可利用各种媒体特定命令而不必改变读取器的固件或主机-读取器协议所使用的方法将具有极大益处。更一般来说,即使当卡直接与主机连接时,因为引入了新的应用特定命令,所以协议将需要被更新。即使可对现有协议进行扩展和标准化以并入有新功能,这仍引入了与旧版本或那些其它卖主的问题的兼容性,从而极大地破坏了标准化协议的效用。另外,尽管所述协议可适于新应用,但因为出现日益增加的应用来扩展卡的使用-,所以这可能仅是临时解决方案。因此,类似地需要适应其中主机的操作系统不支持媒体特定命令的状况。
发明内容因此,简单来说且一般来说,本发明提供装置(例如,存储卡或其它集成电路卡)可与主机交换应用或媒体特定命令所使用的方法和技术。主机与卡可直接地或经由读取器或硬件适配器而通信,从而经由不具有媒体特定命令的均等命令的协议而传输应用特定命令。举例来说,在一个实施例中,即使卡读取器不支持此命令,PC也可经由卡读取器而读取SD(安全数字)存储卡的安全数据区域。更具体来说,主机形成具有在沿主机与卡之间的通信路径而支持的协议中的命令的指令,同时实际媒体特定命令或应用特定命令内嵌于所述指令中。在例示性实施例中,媒体特定命令内嵌于指令的数据部分中。接着卡接收协议(所述卡经由所述协议而与主机通信)中的指令并将其转译为应用的协议。内嵌命令以透明方式传递;例如,当传输协议实际上可含有媒体特定命令时,所述传输协议正好传递到卡上其认为是数据之处。一旦在卡中,其便识别出实际命令内嵌于指令中且继续提取所述指令。这通过确定命令的数据部分含有一签名而进行如果发现签名,那么提取并执行内嵌命令;如果未发现签名,那么执行传输协议的命令。在例示性实施例中,签名和内嵌命令放置于数据部分的第一区段中。在装置侧实施转换,其中提取实际命令,且在主机侧中,在装置驱动程序层级或文件系统层级内嵌命令。装置驱动程序层级实施方案将命令寻址到特定逻辑块地址,而在文件层级处可使用任何逻辑块地址。尽管装置驱动程序层级实施方案需要较少额外开销,但在许多操作系统中其可能需要用户所缺乏的存取特权。本发明的各种方面不仅仅限于卡协议具有在主机与硬件卡读取器之间所使用的协议中无均等命令的命令的状况,而且适用于其中中间协议需要载运其所缺乏的命令的其它状况。第一组实施例考虑其中卡可以其自身协议直接与主机通信的状况,但卡(或其它装置)具有一具有需要使用额外命令集的额外特征集的应用。这些命令并非由主机与卡进行通信所使用的标准协议的一部分,或并不由主机上的标准操作系统加以支持。因此,需要特殊构件以在卡上的应用(可在固件层级实施)与主机上的应用(可在软件层级实施)之间来回地传递这些命令。在本发明的原理方面,应用命令内嵌于中间协议中的指令的数据部分中,在此状况下所述中间协议为卡协议。在本发明的另一方面,这通过具有与开启、关闭和管理从主机应用到装置的路径相关的命令集来实现。第二例示性实施例实施于装置(卡)驱动程序层级且使用一指令,所述指令指定特定逻辑块地址(LBA)、卡传递(CPT)模式LBA,其中数据区段中的特殊签名用以通知所述卡一特殊命令内嵌于区段中。这可被实施为卡固件的变化,以使得其支持CPT模式。这消除了根据每一媒体特定命令而改变适配器的固件的需要,使得卡可在任何(例如)USB读取器或适配器处执行而不必进行媒体特定调适(或改变主机的操作系统(OS),使得卡可在任何OS下使用)。卡固件继续执行(honor)正常读取命令/写入命令。在到特定LBA的读取/写入命令偏移的情况下,检查一签名以确定数据是否含有内嵌媒体卡特定命令。协议可实施于任何媒体卡的固件中。因此,在不改变读取器固件的情况下,不需要对适配器或USB或其它读取器或主机OS的固件改变。第三组例示性实施例实施于主机侧的文件层级处。媒体特定命令再次内嵌于中间协议中,但不是依赖于硬件详细说明和参考特定协议,而是将内嵌的命令和任何随附数据全部放置于文件的数据部分中,接着将所述文件传送到媒体,在所述媒体中固件再次提取实际命令。在这些实施例中,主机仅告知文件系统将文件写入到存储器装置,其中装置特定命令再次内嵌于数据部分中。在使用到任何LBA的读取命令/写入命令的情况下,与特定逻辑地址相反,装置检査一签名以确定数据是否含有内嵌的媒体卡特定命令。例示性实施例将此签名放置于与写入命令相关联的任何文件中的第一数据区段中。如果发现适当签名,那么提取内嵌命令:如果未发现签名,那么将所述命令解释为中间协议的标准命令。以此方式,本发明的文件层级实施例允许绕过在装置层级应用中使用特定逻辑地址而出现的特权问题,因为在操作系统中通常允许将文件写入到装置。在所有例示性实施例中,将内嵌命令放置于中间协议中的写入命令的数据部分中。举例来说,装覃特定协议或应用特定协议中的(例如)N个区段的写入命令将由具有(N+)个数据区段的中间协议中的写入命令组成,第一区段含有实际的内嵌写入命令且剩余N个区段含有待写入的实际数据。更一般来说,可将命令(和签名)连同待由内嵌命令传送到装置的任何数据一起放置于接受相关联数据部分的任何命令中。为了实施装置特定协议或应用特定协议中需要将数据从装置传送到主机的读取命令或其它命令,例示性实施例使用一对命令第一命令将再次为具有一个数据区段的中间协议中的写入命令,其对应于内嵌的读取命令(且不具有与内嵌读取相关联的实数据);从装置到主机的实际数据传送接着由第二命令(寻址到与第一命令相同的逻辑地址的主机读取)实现。本发明的额外细节、特征和优点从以下描述将变得显而易见,以下描述应结合附图来考虑。图1是主机-卡系统的层的示意性表示。图2是主机-卡系统的框图。图3是其中卡使用读取器或硬件适配器而与另一主机通信的系统的框图。图4是在图3的系统中传送数据和命令的现有技术的示意性表示。图5展示可如何根据本发明的例示性实施例内嵌应用特定命令。图6是展示固件层的关系的例示性结构的框图。图7是装置驱动程序层的示意性表示。图8展示响应于隔区状态命令而含有的信息。图9展示自变量数据区段的例示性格式。图IOA、10B-1和10B-2展示主机侧通信流程。图IIA到11C说明主机应用-装置应用协议。图12是隐藏的隔区应用的命令的状态机图。图13A到13D展示在隐藏的隔区协议中的一组命令的处理流程。图14是图4的简化版本。图15是根据本发明的各方面用于在图3的系统中传送数据和命令的技术的示意性表示。图16提供根据特定实施例的图15的细节。图17A到17L给出对于若干命令的图16的实施例的结构的详细说明。图18A到18H类似于文件层级实施例的图17A到17L。具体实施方式在一主要方面,本发明允许在主机上的应用(通常为使用卡上的应用的软件)与卡上的应用(通常为将这些额外特征实施为卡上的特定应用的卡的固件)之间来回地传递并非标准卡协议的一部分(或不由主机上的标准OS支持)的命令。例示性实施例通过将特定命令内嵌于任何主机所支持的标准命令(例如写入)中而实现此操作。这允许例如[
背景技术
]部分中所描述的存储卡在所有标准主机装置和PC上被识别、介接和使用,同时允许未经支持的额外非标准特征作为一标准而并入于系统中。作为一具体实例,参考参看图2到图4在
背景技术
中所论述的特定状况,这些方法允许专用于SD卡的命令(例如安全读取)经由缺乏均等命令的USB协议而传输。一般来说,这通过形成由存在于传输协议中的命令部分和一其中内嵌有媒体特定命令的数据部分组成的指令而实现。举例来说,因为写入命令对于任何存储卡系统为基本命令,所以其将存在于传输协议中且具有相关联的数据部分。将实际应用特定命令与签名一起放置于数据部分中以指示将执行媒体特定命令。还将与待传送到装置的实际内嵌媒体特定命令相关联的任何数据放置于传输协议的命令的数据部分中。对于SD/USB实例,为了在USB协议中将十个区段的写入读取发送到SD卡,在包含--命令和十一个数据区段的USB协议中发出一指令第一数据区段含有实际SD安全写入命令以及一签名和相关信息,且随后为待写入的数据的十个区段。当在卡中被接收时,固件提取实际安全写入命令、检査签名并执行数据的读取。对于读取(和将数据从装置传送到主机的其它命令),中间协议中的写入命令可再次用于载运内嵌读取命令,但因为这不提供待传送回到主机的数据,所以现其与中间协议中的第二读取命令成对。更具体来说,所述对中的第一命令将为来自主机的具有到逻辑块地址LBA-XYZ的内嵌读取命令的写入(在中间协议中)。在装置驱动程序层级的实施方案中,逻辑块地址LBA-XYZ将为特定地址,而对于文件层级实施方案,此可为任何地址。接着所述对中的第二命令为到此同一地址LBA-XYZ的标准主机读取。接着将特定数据传送到主机。更一般来说,本发明允许通过将所要命令与任何随附数据一起内嵌于可由系统使用的中间或传输协议的指令中而在主机与卡之间交换应用特定指令或媒体特定指令。在一侧在主机上运行的特定应用与另一侧在特定卡上的相应应用之间解析(resolve)特定命令。在沿传输路径的中间点处,指令呈现为具有中间协议的正常命令,即以透明方式传递的实际应用特定命令。在例示性实施例中,这通过使用接受数据部分的传输协议中的命令(例如写入命令)并将实际应用特定命令或媒体特定命令内嵌于此数据部分中而进行。(在某些方面,这是在2002年9月26日申请的共同待决共同让渡的第10/256,689号美国专利申请案中所描述的本发明的扩展,所述专利申请案以引用的方式并入本文中。)当指令(传输协议中)到达卡时,检查数据部分以察看其是否含有适当签名,且如果含有适当签名,那么提取内嵌命令。图5中对此进行了示意性展示。图5是根据本发明的一特定实施例如何将应用特定命令内嵌于所使用的协议中的示意性表示,其将协议从主机应用传递到应用的卡侧。考虑其中应用特定指令或媒体特定指令具有命令部分、CMD和某一相应数据的状况。举例来说,CMD可为应用特定写入。为了传输此指令,主机侧将采用传输协议中的命令,称其为CMD',例如写入命令,其具有相应数据部分。任何放置于此指令的数据部分中的命令将简单地传递;因此,如果将实际的预期应用特定命令CMD(连同其相应数据一起)内嵌于此数据部分中,那么即使在传输协议中未识别出命令CMD也将其传输到卡。一旦在卡中,命令CMD将需要从数据部分中提取。这还通过将卡传递签名(CPT签名)放置于数据部分中而进行当传入的指令到达卡上时,检査数据部分中的签名,且如果发现签名,那么接着提取实际命令。在图5中,在510处展示含有内嵌命令的传输协议中的指令。命令部分511具有命令CMD'且可将其视为实际上将不被执行而是用来将数据部分513传送到卡侧的一种"虚设"命令。可将数据部分513分成具有签名和实际命令CMD的第一部分513a和对应于CMD的任何数据的第二部分5Db。举例来说,如果CMD是--类型的写入命令,那么513b将是待写入的数据,而如果其是(例如)状态检查,那么将无513b。(如下文进一步描述,较可能为内嵌读取命令,因为(在此实施例中)其涉及发送传输协议的区段5U中的写入命令CMD'以及数据部分的区段513a中的内嵌读取命令CMD,而无实数据部分513b。)在卡侧,接着检査513a的签名且如果未发现签名,那么将命令CMD'与513的全部作为数据加以执行。如果发现签名,那么提取具有包含命令CMD的命令部分531和具有数据部分533中的任何相应数据的实际指令530。(在命令部分511中具有足够空间的例如SCSI协议的协议中,还可将CPT签名、命令CMD或其两者内嵌于传输协议的命令部分中而非数据部分中。)返回图i和本发明时更抽象描述,本发明允许应用的主机侧与卡恻通信,即使其需要在沿路径的某处使用不适用于所述应用的协议来彼此通信。这可以是当适配器不了解卡特征(如
背景技术
中所描述)而且主机操作系统不了解卡特征时的状况。这解决了具有或不具有驻存于主机与卡之间的主机适配器的系统的媒体特定命令或应用特定命令的发出。另外,其允许其中卡协议可不仅在卡形状因数之间不同而且在相同形状因数的各种卡之间不同的状况,因为由于这些卡正变得过载有在卡与卡之间可能不同的额外功能。所提出的配置实现其中卡适配器和主机OS对特定卡协议不关注的系统,其中在一侧在主机上运行的特定应用与另一侧在特定卡上运行的特定应用之间解析特定命令。在主机侧,本发明可实施于文件系统层级(其中在文件模式中,应用正使用主机文件系统并写入到文件)或可实施于装置驱动程序层级(在使用装置驱动程序的模式中)。下文给出两种版本的特定实例。哪一类型的实施例是优选的通常将取决于例如特定应用的详细说明和操作系统的细节。举例来说,在装置驱动程序层级的实施方案通常较简单且需要较少软件/固件额外开销,而是使用到逻辑地址的直接写入;然而,此直接写入需要用户将缺乏的管理员特权。通过改为使用在文件系统层级的实施方案可避免这些复杂性,但以附加的额外开销为代价。将通过三个特定实施例的更详细描述来说明本发明。所有这些实施例允许在不改变主机卡协议以支持新特征的情况下或通过不支持额外协议的中间软件/硬件而使用所述主机卡协议的同时,待实施于卡中的特殊非标准特征用于主机上。第二和第三组实施例描述实施于主机侧(分别在装置驱动程序层级和文件系统层级)的两种方法,而第一实施例描述卡侧实施方案。此第一实施例补充第二和第三实施例并描述卡侧如何操作且还将用于提供所有实施例的更一般的细节。如下文中更多描述的,这使用标准可用命令以包封(envelop)非标准命令而进行。对于这些状况中的每一者,例示性实施例选择各处均支持的标准读取写入。应注意,在这些特定实施例中,卡无需识别文件的概念,因为在所有这些实施例中卡了解到特定逻辑块地址(LBA)的写入。此LBA可为此目的而被具体地分配(或再分配)(如在装置驱动程序模式中),或可为任何地址(在文件驱动程序模式中)。主要不同之处在于在主机侧(其中在文件模式中),应用正使用主机文件系统并写入到文件,而在第一模式中,其正使用装置驱动程序且直接写入到LBA。在下文中,在若干特定实施例的实例中提出本发明的各种方面。举例来说,所述实施例已将媒体特定命令内嵌于写入命令的数据部分中;更-般来说,可将媒体特定命令或应用特定命令内嵌于其它命令中。同样,[
背景技术
]中的论述基于具有特定协议域的特定硬件配置;即,其中PC/主机使用在主机与读取器之间的一个协议和在读取器与卡之间的第二协议而经由硬件读取器与卡进行通信。这些实施例均可以若干方式来一般化和扩展。[
背景技术
]的论述集中于其中卡与PC经由读取器而通信的实例。更一般来说,本发明的各种方面当(在主机(例如,PC)与最终目的地之间的路径中的某处)使用不具有需要传输的一个或一个以上命令的均等命令的协议时适用。如所提及,除当硬件卡读取器以在卡协议中不具有主机希望发送到卡的媒体特定命令的均等命令(例如,SD卡中的安全读取)的协议(例如,USB/SCSI)与主机通信时出现的问题之外,当卡接着直接地附着到主机时还可出现问题。在更复杂的状况下,可存在若干中间协议,在所述状况下可使用若干内嵌层,如在第二实例中将看到的。作为当不需要存在单独卡读取器时的一个特定实例,存在具有两组接点的卡,一组供USB端口使用且另一组供一标准组(MMC、SD、CF等)的卡接点使用。(在均于2004年4月16日申请的第29/203,693、US10/826,801和US10/826,796号美国专利申请案中描述此类双接点卡的实例,所述专利申请案均以引用的方式并入本文中。)在使用"正常"卡接点的情况下,卡可以允许媒体特定命令的卡特定协议与第一主机通信。在使用第二组接点(此处,USB)的情况下,卡可以缺乏媒体特定命令的均等命令的另一不同协议与例如PC的另一主机通信。在此状况下,第二主机以其中根据本发明而内嵌媒体特定命令的其它协议与卡通信例如,使用USB接点,卡可在USB端口处直接连接到PC,在使用内嵌于如上所述的SCSI协议中的任何SD特定命令的情况下,其借助所述USB端口以SCSI协议进行通信。如所提及,在尤其有关的一组实施例中,主机与卡以卡的协议进行通信,但主机应用可希望与卡上的应用交换命令和数据,其中在所述卡的一层中不了解卡的"通常"存储器功能。举例来说,SD存储卡可以是对于SD特定固件层隐藏的装置应用层隔区。主机与卡将使用标准SD协议进行通信,但隐藏的装置应用可通过将应用特定命令内嵌于SD协议内而与相应主机应用进行通信。第一例示性实施例为此类型。例示性实施例将媒体特定(或应用特定)命令内嵌于写入命令内。写入命令用作将命令内嵌于中间协议的数据部分内的实例,且写入命令固有地具有数据部分。更一般来说,不仅可类似地利用写入命令而且可类似地利用接受数据部分的任何命令。由于写入是协议中用以传送数据的基本指令,所以下文的例示性实施例将继续根据写入进行描述。此外,尽管为了简单起见在所有实例中媒体特定命令或应用特定命令内嵌于数据部分的开始处,但更一般来说,其可放置于数据部分中的其它处且由签名来识别。(如上文所提及,更一般来说,签名、应用命令或其两者也可内嵌于协议(在其命令部分中具有足够空间)中的传输协议(例如'SCSI协议)的命令部分中。)本发明涉及的问题可以更抽象的层级来呈现。考虑其中主机应用需要以一具有命令集(a、(3、Y、...)的协议与装置应用进行通信,但在通信路径中的某处需要使用具有命令集(A、B、...)的另一协议。在[
背景技术
]的实例中,(a、P、y、...)将是SD协议且中间命令集(A、B、…)将是SCSI协议。在下文的论述中,(a、p、y、...)将是用于特定应用(例如隐藏隔区)的命令集且(A、B、...)将替代地为卡命令集。只要存在对应关系A^a、B"(3等,便不存在问题。当存在不具有中间协议中的均等命令?—Y的媒体特定命令或应用特定命令Y(例如,SD协议中的安全读取)时,出现困难。在现有技术下,将需要对于每一此y引入均等于Y的新命令(例如,C^y)。事实上,根据本发明,将媒体特定命令内嵌于中间协议中的现有命令中(A(Y)^y,其中A(Y)表示写入(例如)内嵌有y的命令),而非引入新命令。一般来说,将一命令(称其为F)引入到(a、(3、y、...)协议中以开启供应用的主机侧与装置侧通信的管线。一旦所述管线开启,便可接着发送媒体特定命令或应用特定命令。这可表示为A[F(Y)]—Y。将在第一实例中逐步阐明此技术。这允许处理命令失败和其它细微之处。命令失败的问题在于由于据中间协议所知,其正发送一简单写入命令,所以中间协议不了解内嵌命令的性质。如果内嵌命令为(例如)读取,那么PC将不会知道在读取失败的情况下已发生什么。在中间协议中,将其视为写入失败且不将其解释为内嵌读取的失败;因此,主机将不会理解待执行的适当复原步骤。通过开启在应用的主机侧与卡侧之间的管线,可更易于追踪并处理这些困难。第一例示性实施例第一例示性实施例实施于主机侧的文件层级且将用于说明本发明的各种方面;不管主机侧是实施于文件层级还是实施于装置驱动程序层级,在卡侧,实施方案很大程度上是相同的。当参考此实施例的特定应用时,其将在存储卡上的隐藏隔区的上下文中给出,其中存储器分成可公共存取部分和专用(或"隐藏")部分。在2004年12月21日申请的美国临时专利申请案60/638,804(所述专利申请案以引用的方式并入本文中)中描述此配置,但多数细节并不限于此。首先将描述主机侧部分(明确地说,装置驱动程序),随后描述卡细节。在以下专利申请案中描述隐藏隔区的使用的其它实例,所述专利申请案全部以引用的方式并入本文中2005年2月25日申请的11/067,298;2003年11月10日申请的1(F703,471;2004年7月26日申请的10/899,260;和2005年2月2日申请的11/050,013。图6是展示装置侧的例示性结构的示意性框图。在卡1001顶ij,装置应用(一或多个)1023每一者提供甩于主机侧1051的主机应用(一或多个)—1053到非标准(对于此特定形状因数)卡特征(此处为隐藏隔区)的网关或"管线"。下文在图7中更多地描述主机侧层。在卡侧,装置应用1023供应隔区存取(读取和写入)、状态和其它装置应用信息。装置应用1023可经由下文所描述的例示性协议而与主机应用1053通信,且经由媒体层1025而使用卡的系统和存储器资源。存储器本身指示于存储器1011处且通常将是NOR或NAND种类的快闪存储器,但其也可以是其它非易失性存储器,包括2004年5月7日的美国专利申请案10/841,379(所述专利申请案以引用的方式并入本文中)中所描述的那些存储器。FE(前端)层1021为固件层,其处理来自主机侧的命令(在例如CF、SD、MMC等协议的卡类型接口中)。BE("后端")层1027为固件层',其处理对存储器1011的管理,包括对存储器的读取和写入。媒体层1025将装置应用固件1023与BE层1027相连接,且还将使应用固件与控制器的RAM资源介接,所述控制器未在此图中具体展示。当从主机1051发送指令时,最初在装置1001上在前端(FE)层1021处接收所述指令。所述命令将在主机与装置之间所使用的中间协议(例如,SD协议)中。当命令到达FE层1021时,检査命令传递签名如果未发现签名,那么将所述指令视为来自中间协议的标准指令且所述指令可存取存储器或以标准方式来另外执行所述指令;如果发现签名,那么提取内嵌应用特定命令且将其传递到适当装置应用1023以供执行。当实施于装置驱动程序层级(主机侧)(如在下文的第二例示性实施例中)时,命令将被寻址到特定逻辑地址,而当实施于文件层级(如在此实例和下文的第三实例中)时,可将命令寻址到任何逻辑地址;如从装置侧所了解,两个实施方案在很大程度上是相同的。一旦发现签名且提取内嵌命令,将使隐藏隔区(在此实例中)经由驻存于卡1001上的相应装置应用1023而可用于主机应用1053。主机与装置应用将使用将覆盖主机侧与卡侧之间的读取和写入的协议以及报告隔区状态而进行通信。在此例示性实施例中,装置控制对应用的权限。当装置确认主机应用的凭证(credential)时给予所述权限(读取、写入),且一经核准,装置应用将经由主机/装置协议而向隔区授予读取和写入特权。一旦已验证主机应用,便接着假定装置正在信任环境中操作。如所提及,第一例示性实施例将实施于文件层级,其中内嵌命令放置于写入文件的第一数据区段中。所述实施方案并不依赖于对任何特定逻辑地址的参考,而是依赖于检查第一数据区段的特定图案或签名。隔区中的文件由主机管理,其意味着在隐藏隔区实例中,主机应用是隐藏隔区中的文件系统的所有者。一旦主机应用获得对应用的权限,其便完全控制内容。由于归因于操作系统(OS)的存取特权问题而通常不能够读取隐藏隔区的FAT,所以主机应用1053将实施文件系统层。与对隐藏隔区的任何存取一样,仅在到应用的管线开启之后FAT才为可用的。(下文将界定和阐述由主机应用进行的命令传送。)由大容量存储装置或可移除式驱动程序层级的OS所了解,主机应用将驻存于卡的非隐藏或公共隔区上。若干此类主机应用可驻存于此区域中且用户将知道执行哪一个主机应用、将在主机侧执行哪一个主机应用。参看图7更详细地描述主机侧软件层。装置驱动程序1055具有两个。其充当总线驱动程序并执行用于由(中间)协议和文件系统1057支持的标准客户端应用的IO操作。此外,其还实施应用和装置特定协议或应用特定协议。标准IOAPI和实施方案可对于卡系列的全部为共同的(例如,标准SD卡操作)。应用或装置特定API和实施方案本质上为协议特定的。图7展示阶层式结构的实例,所述阶层式结构实现共同部分的代码共享和不同应用特定协议之间的简单可移植性。除主机应用层1053和文件系统层1057之外,主机结构现还并入有特定针对装置应用的层1059。对于"标准"装置操作(未并入有应用特定操作),不使用层1059且层1053、1057和1055将很大程度上如现有技术中一般而操作。当将使用应用特定指令时,装置应用层1059将被插入于文件系统1057与主机层1053之间,以格式化和内嵌应用特定命令。装置驱动程序1055可包括接口和管线子层以提供普通功能性,且可在最小变化的情况下与所有应用特定协议一起使用。主机的应用应根据特定应用而与协议层匹配。接口子层将呈现一组标准装置功能。举例来说,这些功能将包括硬件初始化和配置;驱动程序开启和关闭例行程序;读取和写入操作;和擦除。其还将包括用于进行适当通信方法并相应地初始化管线的功能。当传输例如图5的510的指令时,在某些状况下,操作系统(OS)可将其分成若干片,可能甚至插入其它指令的片。在这些状况下,文件系统1057和装置驱动程序1055可分解指令510,使得命令部分511处于不附着到任何数据部分513直到附着到所有数据部分513中的任一情况下,剩余数据部分之后在一个或一个以上后续传送中被传送。在这些状况下,对剩余数据部分的后续传送将缺少区段513a的签名部分并呈现为标准命令。对于在读取操作中从卡传送到主机的数据,也可发生此划分。在已知OS将不分裂指令或OS可受到足够控制以使得其可经指示以不进行此操作的状况下,可简化程序。宵先参看图10A的流程和图12的相应状态机图对此进行论述。随后将参看图10B论述更一般的状况。此外,为了论述的简单起见,参看图IOA的论述很大程度上将基于仅单一应用的状况,但通常将存在若干不同的此类应用在作甩中。图10B的更一般状况将使此更明确。对于第一例示性实施例,将简单的隐藏隔区协议用于说明。将存储器1011分成两个隔区。第一隔区是产品标准隔区。标准主机仅了解此隔区。第二隔区是仅可经由应用特定命令存取的隐藏隔区。标准主机不了解此隔区且没有办法存取所述隔区。所述实例的隐藏隔区协议界定了装置与应用进行通信所借助的五个功能1.开启隐藏隔区用于鉴认用户并启用读取和写入操作。2.关闭隐藏隔区停用读取和写入操作。3.获得隐藏隔区状态传回图8中所示的数据。4.隐藏隔区读取如果隔区开启,那么从隐藏隔区进行读取。如果隔区关闭,那么传回错误。5.隐藏隔区写入-如果隔区开启,那么写入到隐藏隔区。如果隔区关闭,那么传回错误。协议层提供实施安全协议所需的额外API。在隐藏隔区的特定实例中,除读取和写入之外,协议还需要三个服务开启隔区、关闭隔区、获得隔区状态。下文在表l中展示这些命令,其中结合图8对其进行进一步论述。管线子层负责根据媒体命令传递原理而与卡进行的通信。如先前所描述,媒体命令传递协议中的主要思想是将特定命令(并非标准产品规格的一部分的命令)内嵌于标准读取和写入操作内。将所述命令内嵌于标准读取和写入操作中使得能够与标准主机和驱动程序一起工作。在例示性实施例中,所有命令将通过将写入命令发送到媒体卡的某一LBA而初始化。应用特定写入命令将包括多个区段传送,其中第一区段保存命令的自变量且剩余数据块保持相关数据(如果存在)。将在两个部分中执行读取命令-1.通过首先将写入命令发送到选定LBA而初始化所述读取命令,其中适当数据描述读取命令的性质。2.在写入命令将卡应用设定于正确传送状态之后,将发送从写入命令到选定LBA的读取命令以执行从卡到主机的实际数据传送。所有命令首先发送具有图9所示的区段格式的写入命令。当主机应用决定发送写入命令时,所传送的第一区段将具有上述格式。从主机发送的下一数据块将具有卡的实际数据。如果主机应用选择初始化读取命令,那么其首先将写入命令发送到具有上述单一区段格式的选定LBA(LBA=LBA—XYZ)并接着将读取发送到同一LBA。在下文进一步论述的图10A和图10B的流程图中对此进行展示。若干可能的实施方案可用于媒体命令传递协议。此部分的实例使用文件系统,例如Windows文件系统操作。下一部分的实例在装置驱动程序层级直接与装置通信且不具有文件系统额外开销。另一实施方案可用于袖珍型PC(PPC)。在此最后状况下,读取和写入操作可直接存取PPC存储驱动程序。由于此时不存在用于袖珍型PC装置的标准存储装置驱动程序,所以不保证此方法将适用于所有PPC装置。客户端应用卖主应使用其希望与之一起工作的PPC装置组对此方法进行测试。返回本实例的文件系统实施方案,对于OS将在单一传送中传送完整指令的状况,管线子层通过(如图10A中的LBA一XYZ所指示的)从相同文件位置进行读取和写入到所述相同文件位置而初始化对命令传递LBA的读取和写入操作。这无需与下一部分的实例中一样为预定地址,而是可为任何逻辑块地址。对于此实例,实施方案使用Windows的标准文件系统API-CreateHle、ReadFile、WriteFile和SetFilePointer。可将实施方案组分成四个或五个部分预先的要求;通信管线的建置;文件长度的验证;应用写入命令;和如果将读取数据或将其它信息传回到主机,那么为读取命令。在文件层级实施方案中,文件系统用于在不知情的情况下传输内嵌的应用特定命令。由于实际内嵌命令的性质可不同于文件系统认为其正发送的中间协议中的命令的性质,所以如果不采取适当措施就可能出现冲突。举例来说,如果出现错误,那么错误复原可能较复杂,因为当实际错误可与内嵌命令(例如,读取)在一起时,文件系统会将此视为中间协议中的载运命令(写入)中的错误。类似地,如果文件系统采用高速缓存就可能导致不一致。另一问题可由于文件分段而产生因为例示性实施方案依赖于从相同文件位置(图10A的LBA—XYZ)进行读取和写入到所述相同文件位置,所以应将整个文件存储到存储器中一组连续区段。如果待在LBA—XYZ处开始存储的数据大于可用片段(segment),那么文件系统将会将其分开。因此,应用特定命令的最大数据长度应不大于最小OS文件分配单位(丛集),使得所使用的逻辑地址(LBA一XYZ)与具有足够空间的逻辑块地址相关联。在Windows实例中,文件系统实施方案的预先的要求需要含有至少128个连续区段的标准文件。为了确保此文件的存在,将其建立于经格式化的磁盘上。因此,如果主机应用卖主选择此方法,那么其应布署具有所述应用的通信文件。在此实例中,设计假定命名为"FilePipe"的文件(具有下文指定的某些属性)存在于装置用户区域中。如果此文件不存在,那么驱动程序将试图建立所述文件。如果其失败,那么应用可要求用户对磁盘格式化并在经格式化的磁盘上重新安装所述应用。为了建置通信管线,装置驱动程序1055优选开启具有以下属性的通信文件未共享无缓冲隐藏未共享状态确保仅主机应用可存取文件,以防止其它应用存取命令传递LBA。无缓冲状态指示系统在无中间缓冲或高速缓存的情况下开启文件。因此,到/自此文件的任何写入或读取导致不同于高速缓存版本的到/自卡的读取命令/写入命令。(在某些状况下,为了确保文件将被刷新到卡,可能有必要设定"无缓冲"旗标与"直写(writethrough)"旗标两者。)由于实际应用特定命令或媒体特定命令内嵌于另一协议的命令中,所以当存在(例如)写入错误时,主机将此解译为与中间协议中的写入命令有关的错误而非与内嵌命令有关的错误。无缓冲状态保持数据传送与预期的内嵌命令相关。隐藏状态暗示最终用户将此视为系统文件。下一实施步骤是检验文件含有至少128个连续区段。对于应用的写入命令(隐藏隔区实例中的安全写入),遵循上文所描述的途径预备写入缓冲器。接着重设文件指针以确保读取和写入操作针对相同LBA(-LBA一XYZ)。接着通过调用具有"FilePipe"名称的"WriteFile"命令而将缓冲器发送到装置。对于应用的读取命令(隐藏隔区实例中的安全读取),首先重设文件指针,接着执行"WriteFile"命令以发送命令缓冲器。接着再次重设文件指针以确保对相同LBA执行写入和读取操作。接着执行"ReadFile"以从装置处获得安全数据。返回到卡侧,装置应用1023将管理隐藏隔区(在此实例中),从而允许主机应用验证时待决的读取和写入。对于隐藏隔区阶段,资源和存储器存取经由媒体层1025而进行。媒体层1025将把所有装置应用数据传送导引到存储器1011上的隐藏隔区。如上所述,装置应用1023经由常规卡协议读取/写入命令而从主机应用1053接收其特定命令。举例来说,在将SD卡协议视为例示性实施例的情况下,经由SD写入命令而在命令区段中传递每一命令索引和自变量。当期待来自装置应用的读取命令时,接着主机应用首先将发送写入命令(经由SD写入命令),接着发送实际读取命令(SD读取命令)。在传递命令区段的写入命令期间,将读取命令上下文保存于(例如)专用于装置应用的RAM空间中。当接着为读取命令时,装置应用将接着载入所保存的读取上下文并传送所请求的数据。所保存的读取上下文将继续保持原状直到其被另一读取上下文替代为止。这将使主机能够执行读取重试而不发送另一写入命令+命令区段。因为多数协议命令充当读取/写入命令,所以可能通过读取和写入到某些LBA而传送应用特定的新命令。在例示性实施例中,所有命令将通过将写入命令发送到媒体卡的某一LBA而初始化。应用特定写入命令将包括多个区段传送,其中第-区段保持命令的自变量且剩余数据块保持相关数据(如果存在)。如所提及,在两个部分中执行读取命令-1.通过首先将写入命令发送到选定LBA而起始读取命令,其中适当数据描述读取命令的性质。2.在写入命令将卡应用设定于正确传送状态之后,将发送从写入命令到选定LBA的读取命令以执行从卡到主机的实际数据传送。返回到图9,所有命令必须首先发送写入命令,其中图9展示此处自变量数据区段的例示性格式。如图9中所示,字节0到31保持应用传递签名(例如,"支持传递模式"),字节32保存应用的ID,字节33保存内嵌命令的应用命令操作码索引且以应用命令自变量数据来填充区段的剩余部分。当在此实施例中主机应用1053决定发送写入命令时,所传送的第一区段将具有图9的格式。从主机1051发送的接下来的数据块将具有用于卡的内嵌命令的实际数据。如果主机应用选择初始化读取命令,那么其首先将写入命令发送到具有上述单一区段格式的选定LBA且接着将读取发送到相同LBA以实现所述读取。主机应用1053负责根据从装置处所见的通信流程(如图10A中所示)而初始化所描述的命令。为了进行此操作,主机应用控制卡协议的读取和写入操作的目标LBA,其将载运如上所述的内嵌命令。尽管仅针对单一LBA处的单一命令进行描述,但对于多个LBA可发生图IOA(和图IIA到IIC、图12等)中所展示的过程,因为所述多个LBA可均依赖于传递模式签名。(下文参看图IOB更详细地描述此状况,其中各个LBA以下标加以指示,LBA。。因为装置能够同时处理多个文件,所以特定LBA仅由装置的状态机依赖(如下文参看图12所论述)。所述过程开始于步骤1101,此时接收到达选定LBA的写入,此处认为LBA=LBA—XYZ。接着检查(1103)签名以察看其是否为应用传递签名如果并非应用传递签名,那么卡进行标准IO操作(1105);如果是应用传递签名,那么进入CMD传递模式。步骤1109确定命令方向(如从装置处所见)是否为出(OUT)。如果方向为出(例如,到装置的存储器的写入),那么执行(1111)所述命令。如果命令方向不为出,那么在1113处,存储器装置等待读取对的第二命令(应用读取请求)。如果替代地,写入到达(1121),那么在返回等待状态(1113)之前转到标准IO操作(U23')。如果接收到读取命令,那么检査(1117)LfiA,且如果其是到达选定的LBA,那么其是读取对的第二命令且执行(1119)所述读取;如果LBA不匹配,那么替代地,转到1123。存在一个以上可能的实施方式且实施细节根据目标平台而改变。一种普通方式(其应用于基于WindowsNT的台式计算机且上文针对主机侧描述)是使用虚拟文件和标准Windows文件系统API。另一方式是使用WindowsSCSI传递API来直接初始化卡协议的(例如,SD)读取和写入操作,如下一实例中所描述。此方式也应用于基于WindowsNT的台式计算机,但其需要如上文针对卡驱动程序层级处的实施方案所论述的管理权限。关于卡固件与应用固件之间的命令接口,在第一步骤中,卡FW接收应用特定命令。在检验"支持卡传递模式"签名之后,卡的FE层1021将解析与到用于应用ID和命令操作码(OP-Code)的选定LBA的写入命令一起的自变量数据区段。应用特定命令解译器将调用具有指向主机数据缓冲器的指针的应用接口例行程序。在第二步骤中,当开始应用特定命令序列时,应用FW必须设定其自身状态机以处理应用命令序列且还设定旗标以指示到选定LBA的下一读取命令/写入命令既定用于应用FW。每当将读取命令发送到卡(到选定LBA)时,卡的FW将首先检査此旗标以区分此应用特定读取命令与到达此LBA的常规读取命令。现将描述隐藏隔区应用的协议的实例。图IIA到IIC说明与图IOA相同的某些过程,但根据主机与装置之间的系统总线上的活动进行说明。图IIA中展示鉴认和安全隔区FAT读取的过程。首先,主机将用户名称+密码发送到卡以供鉴认。一经鉴认,卡便使应用能够从安全和隐藏隔区读取FAT。隔区保持开启直到主机终止会话或装置经历功率循环为止。只要隔区开启,便允许由主机应用读取和写入到隐藏隔区。图IIB说明安全隔区中的文件的主机读取。如上文所描述,应用特定读取命令出现于两个卡协议命令内指定读取命令的性质和自变量的写入命令;和接着的实际读取命令。图IIC说明到隐藏隔区的主机写入。在通过鉴认的情况下,主机可存取隔区的FAT且现具有将新文件传送到主机的权限。主机将写入命令发送到具有写入开始地址和区段计数的安全隔区。图8展示上文介绍的装置应用状态以及隐藏隔区实例的例示性值的实施例。因为可允许若千不同隔区,所以在实例中装置应用隔区ID中的字节1给定为"1"。接下来四个字节给出隔区大小,此处展示为区段的十兆字节值。字节5指示隔区当前是否为开启的且给定接下来的四个字节以指示装置应用的版本。字节IO提供操作状态。字节10到511以零进行填充从而形成一区段。在一种变化形式中,字节11可用于记录在最后交易中写入的区段的数目。表1描述发送到隐藏隔区实例的装置应用的应用协议命令的实例。CMD索引放置于命令区段的字节33中,且命令自变量从字节34开始放置并以表中所编写的指定次序而继续放置。<table>tableseeoriginaldocumentpage31</column></row><table>表1当通过装置的写入协议(例如SD协议)而传送内嵌的隐藏隔区命令时,在确定写入或读取命令实际意图用于隔区的装置应用且并非用于SD常规操作之后将通过(例如)SD命令解译器来调用隔区的命令解译器。在解析命令区段之后,命令解译器将调用适当例行程序。在'.特定实施例巾,应用的命令可具有作为第一自变量的参数,其指示MD命令是读取命令还是写入命令。第二参数可将指针传递到所分配的RAM中放置有命令区段的位置。由于隔区的装置应用的相关信息开始于区段的所述点处,所以所述指针将指向字节33(命令操作码索引)。可在第三参数中指定由此第二参数指向的缓冲器大小。如已提及的,因为在解析命令区段之后立即以与卡协议的那些序列相同的序列来执行装置应用的写入命令,所以所述写入命令较简单。举例来说,在SD状况下1.接收St)写入命令(l或l个以上区段)在例示性实施例中第一区段始终是命令区段。2.卡层解析第一区段的前32个字节并识别命令区段的签名。以指向命令区段的指针调用装置应用命令解析器(解译器)。3.在执行命令解译器以识别内嵌应用命令之后,命令解译器调用将执行内嵌命令并开始应用的命令过程的相应例行程序。4.执行隐藏隔区的应用的命令过程且将状态传回到卡层,在卡层处序列将如SD写入命令过程将结束那样结束。SD卡转到闲置(IDLE)状态。同样如已提及的,隐藏隔区的应用协议中的读取命令为两步骤过程,其包含(再次在SD实施例中)SD写入命令,随后为SD读取命令。第一步骤是SD写入命令1.由主机发送的具有一个数据块(512字节)的SD写入命令在例示性实施例中第一区段始终是命令区段。2.卡层解析第一区段的前32个字节并识别命令区段的签名。以指向命令区段的指针调用装置应用的命令解析器(解译器)。3.在执行命令解译器以识别内嵌应用命令之后,命令解译器识别将(在下一SD读取命令中)被执行的内嵌读取命令,保存此命令识别符。接着命令解译器设定卡层读取命令旗标。4.执行应用的命令过程且将状态传回到卡层,在卡层处序列将如SD写入命令过程将结束那样结束。SD卡转到闲置状态。第二步骤是SD读取命令1.SD读取命令。2.SD卡层检査应用卡层读取命令旗标并发现其被设定其调用具有读取命令指示的装置应用命令解译器而非调用常规SD读取命令。3.装置应用命令解译器识别隔区读取命令旗标并重新调用保存于先前写入命令中的隔区读取命令识别符。所述识别符指向相应隔区读取例行程序并初始化隔区读取序列。4.执行隔区读取序列并将传回状态传递到卡层。5.卡层结束SD读取过程且卡进入闲置状态。通过图12中针对基于SD的实施例所示的卡侧应用的命令状态机而说明读取和写入过程。由于这些内嵌命令通过SD写入命令而传递,且当需要执行隐藏隔区读取命令时主机不能够传递SD读取命令上的命令区段,所以装置应用(1023)的命令解译器需要保持将管瑝和了解啷一读取命令芷由主机应用1053执行的状态机。在此图中,圆圈指执行于装置应用层(图6,1023)处的装置特定应用命令,而附加注释指如在FE层(图6,1021)处所见的在中间(此处,SD)协议中的命令。图12的右侧(A路径)是写入处理的过程,其中将数据传送到装置或无数据被传送的任何过程将遵循类似的流程。图12的左侧对应于其中将数据从装置传送到主机的读取或其它过程。读取流程由读取所需的所述对的第一命令的B路径和所述对的第二命令的C路径组成。写入流程与读取流程以相同的方式开始,接收SD写入命令,在检测到签名之后从所述SD写入命令而解析内嵌命令。对于写入流程,写入旗标保持为开(on)且执行写入过程。然而,对于读取流程的第一阶段,将设定读取旗标。当检测到来自主机的读取过程时,通过装置应用(1023)而设定此卡层(SD)读取过程旗标。所述旗标向卡层指示来G主机(在SD总线上)的下一读取命令并非常规卡读取且应将其导引到装置应用(1023)以供处理。这发生在读取流程的第2阶段,其中响应于所述对的第二命令而从装置传送数据。当卡层初始化时旗标获得重设。参看表1中所列的命令,OPEN—PARTITION命令(操作码0x01)接受用户名和密码并对其进行验证。如果其与装置应用的所存储名称和密码相匹配,那么开启隔区以用于主机存取(读取、写入)。此时,将存在将被发送并对照装置应用的代码中的短语而被验证的一个鉴认短语。图13A中展示此过程。隔区将保持开启直到CLOSE—PARTITION将其关闭为止或直到下--功率循环为止。CLOSE—PARTITION命令(操作码0x02)的使用希望关闭应用工作会话且不让隔区开启。图13B中展示一实施例。图13C中展示READ—PARTITION命令(操作码0x03)的使用。如果隔区开启(从1633到1635为是(yes)路径),那么此命令将使主机应用能够读取存储于隔区中的数据(1639、1641)。在例示性实施例中,此例行程序将调用"FlashRead"API例行程序,其将把数据传送导引到隐藏隔区空间。WRITE—PARTITION命令(操作码0x04)将数据从主机导引到卡上的隐藏隔区。如图13D中所示,仅当设定(SET)隔区旗标(1653)时,此命令才由装置应用执行。此例行程序将调用"FlashWrite"(1659、1661)API例行程序,其将把数据传送导引到隐藏隔区空间。READ—PARTITION—STATUS命令(操作码0x05)供应图8中所示的信息。这是具有上文参看图8所论述的结构的应用读取命令。当命令进入时,例行程序将聚集所有信息且将其放置于上述结构中并将其发送到主机。如上文所提及,某些操作系统将不时地将一指令分开,使得并非所有数据部分将附着到其相应命令部分。在此状况下,写入指令的数据的一部分将在无卡传递签名的情况下显露于卡处;因此,表现为不具有附着签名的传输协议中的标准命令的命令可实际上为应用特定命令的剩余部分。作为具体实例,考虑图5的指令510的状况,指令510具有(例如)十个块的数据部分513。在将此指令传输到卡时,主机的操作系统可能仅发送附着到所述指令的数据部分的前五个块,稍后传输剩余五个块。当发送此最后组的数据块时,其将缺乏含有应用协议的签名和实际命令的初始数据块513a,且表现为来自传输协议的标准命令的-部分。此分段还可在内嵌应用特定命令为读取型命令时发生,使得以部分的方式将数据从卡发送到主机。图IOB通过以用于读取和写入过程的逻辑地址LBAw和LBAwi替代单一逻辑块地址LBA-LBA—XYZ来扩展图10A的流程从而说明在应用特定读取与写入命令中的此分段。通过界定LBARi读取以及用于写入的LBAwi,装置可处理在任一方向上的应用数据传送的中断。下标i用以虑及来自多个应用和多用户主机装置的多个应用特定命令的同时实施。图10B的过程再次基于将SD协议用作传输协议的SD卡的实例并以处于SD闲置状态且在1201处接受命令的装置而开始。其接着确定所接收的指令是否为SD写入(1203),且如果并非SD写入,那么确定其是否为SD读取(1205)。如果其既非SD写入也非SD读取,那么执行SD命令(1207)且装置返回到闲置状态(1209)。如果在步骤1203处所接收的指令为SD写入,那么接着检查传递签名(1214)。如果在1214处发现签名,那么此指示新内嵌命令的开始,所述新内嵌命令可接着被提取。在1231处,对于所有读取和写入逻辑块地址LBARi;Wi,如果传入命令的逻辑块地址LBAcmd与指派给当前写入过程的逻辑块地址相同(LBAcMD-LBAwi),那么清除相应LBARi;Wi。通常,所指派的LBAcMD应未被使用,但在其已被指派给另一过程的状况下,此会将其异常中止且清除地址。接着确定应用特定命令的数据方向(1233〉。如果不涉及数据传送,那么接着执行应用特定命令(1245)且装置返回到闲置状态(1249)。如果应用的命令为写入,那么将相应逻辑地址设定为LBAWi=LBACMD+数据块计数(1251)且写入应用数据(1253)。如上文所论述,主机的OS可将指令分开,使得命令不随附有所有相应数据。当提取和解析内嵌命令时,卡将了解所述命令应包括多少数据块。在1255处,进行检査以察看是否包括并写入所有数据。如果如此,那么可清除LBAwi(1257);否则,其不被清除,因为剩余数据将(除非由错误或停机而中断)最终跟随且将看似为到作为上文所计算的地址的连续(相对于此命令)卡地址的标准SD写入命令。装宣接着将返回到闲置状态(1259)以等待另外的命令。返回1231,如果应用命令为读取,那么装置设定LBAR,=LBACMD并设定数据类型rf数据类型CMD(1235)从而为在1263处在第二读取阶段中的后续数据传送作准备。装置接着转到SD闲置模式以等待读取过程的第二阶段。对此解决方案的不同的变化形式将不使用LBAcMD而是使用在写入命令的参数中明确界定的不同地址LBAREAD。此方法将围绕OS的高速缓存机制而工作。在若干系统中,主机OS将不会试图往回读取刚刚被写入的卡地址。事实上,其将会将数据缓冲器返回到主机应用而到达主机高速缓冲存储器,假定此数据为卡所具有的数据,因为其刚刚被写入到所述卡。在此状况下,数据缓冲器将包括应用特定命令而非卡响应。返回到1214,如果命令(在传输协议中)为写入(从1203为是(yes)路径),但缺乏签名(从1214为否(no)路径),那么所述命令实际上可为传输(此处为SD)协议中的写入命令,或可为用于应用协议中的写入的额外数据。在1215处对此进行确定如果对于LBAWi中任一者,LBACMD#LBAwi,那么其为接着被执行于1217处的标准SD写入,其后卡转到SD闲置状态(1219)。如果LBAcmd与LBAwi中的一者匹配,那么命令实际上为相应应用命令的更多数据部分且流程转到1251以写入此额外应用数据。返回到步骤1205,如果命令为SD读取,那么确定其实际上为SD读取或为应用读取的第二阶段。在1226处通过比较LBAcMD与LBARi而对此进行确定如果对于LBARi中任一者,LBACMD#LBARi,那么其为接着被执行于1227处的标准SD读取,其后卡转到SD闲置状态(1229)。如果替代地,对于LBARi中任一者,LBACMD与LBARi中的一者匹配,那么其为应用读取的第二阶段。当LBAcMD-LBARi时,将相应逻辑地址设定为LBARi-LBAcMD+数据i央计数(1261)且读出应用数据(1263)。装置接着转入SD闲置状态(1269)。对于应用读取过程,例示性流程缺乏应用写入侧的步骤1255和1257的均等步骤。即使己存取所有相应数据,也继续设定相应读取旗标。通过保持LBAKi开启,可在错误状况下重新读取数据。在此配置下,对于一个实例,例如在步骤1231中,如果为另一目的而重新指派地址,那么仅清除LBARi。图IOA的相对于图10B的这些添加允许在应用数据的传送中存在中断。其还消除了对读取和写入到相同逻辑地址的需要。这些允许所述技术用于可能不存在对操作系统的足够控制的状况下,因为图IOA的实施例所需的控制的种类可能需要己知可控平台。同样,应再次注意图10B更明确地体现可存在多个主机应用,其每一者与卡进行独立通信,且数据传送中的中断可在来自另一协议的指令的若干部分之间插入来自一个协议的指令的一部分。另外,读取过程与写入过程的独立LBA允许绕过装置驱动程序层中的任何读取或写入高速缓存。第二例示性实施例第一实例实施于文件层级。本发明的各种方面还可实施于装置驱动程序层级,从而通过将请求发送到装置驱动程序而初始化读取和写入操作,例如在主机使用Windows操作系统时所述装置驱动程序为Windows标准存储驱动程序。命令传递方法的此实施方案直接与装置通信且不具有文件系统额外开销。然而,此方法可能需要管理权限。主机的应用可尝试此方法并将此方法用作第一选择,且如果其失败那么转移到文件系统操作。接口功能可用于在所述方法之间进行选择并相应地初始化通信管线。在任何其它操作之前,客户端应用将调用此命令。如果应用缺乏适当管理员权限,那么以此方法工作将导致异常,所述异常可根据异常处理码而被处理。此实例基于对上文[
背景技术
]部分中的问题的论述。尽管[
背景技术
]的论述提出在存储卡经由硬件卡读取器而连接到PC的情形中的问题,但将在下文中看到(与此处给出的其它实例一样),情况更为一般。存储器装置可具有此协议转译,或更精确来说,即使当其直接连接到第二主机时也无转译问题。当存储器装置连接到具有(如从存储器装置所看到的)不完整协议的主机时,可导致此情况。可出现此情形的一种状况是卡具有两组接点,一组供USB端口使用且另一组供一组标准卡接点使用。(在均于2004年4月16日申请的第29/203,693、US10/826,801和US10/826,796号美国专利申请案中描述此类双接点卡的实例。)如关于第三组实施例所论述,协议转译可完全包含于存储器装置本身内,不为主机所知。此外,在下文中,尽管关于可拆卸存储卡而描述实施例,但所述论述也适用于内嵌存储器装置。在第二例示性实施例的第一组实施例中,为了允许媒体卡特定命令从主机传递到卡而不改变控制媒体卡的适配器或读取器的固件,本发明使用指定的逻辑块地址(LBA)(卡传递模式LBA),其具有在数据区段中的特殊签名以通知卡特殊命令内嵌于区段中。这可通过固件变化来实施以支持命令传递(CPT)模式。因为这不需要适配器的固件变化,所以所述卡可在任何USB读取器或适配器处运行。如在[
背景技术
]部分中所论述,各种小型快闪存储卡(紧密快闪卡、安全数字(SD)卡、多媒体卡(MMC)、xD和索尼存储棒/高速存储棒等)具有不同电接口和通常供主机(数码相机、快闪存储器音乐播放器)使用的媒体特定命令,所述媒体特定命令未在PC与允许PC读取卡的硬件适配器之间所使用的命令集中发现。在一主要方面,本发明使用卡固件变化以执行正常读取/写入命令。然而,当到特定LBA的读取/写入命令偏移时,检查签名以确定命令的数据部分是否含有内嵌媒体卡特定命令。可将协议实施于任何媒体卡的固件中。因此,不需要对适配器、USB读取器或由PC(或不可存取完全媒体特定命令集的其它主机)使用的其它读取器的任何固件变化。实际上,对于卡制造商来说,这比针对所有读取器卖主中的所有卡命令实施读取器固件变化简单。尽管通常将根据特定卡(例如安全数字(SD)或紧密快闪(CF))和特定协议(例如SCSI或ATA)而描述本发明的各种方面,但当论述实例时,将了解,各种方面适用于其它各种存储卡和系统。在整个此文献中以引用的方式并入的以下专利和申请案中进一步描述关于卡结构和操作的各种细节。图14展示卡与个人计算机(或更一般来说,需要硬件适配器以读取所述卡的任何主机)使用读取器进行通信所用的过程。图14除忽略对在某些状况下的USB包装或类似结构的明确介绍(其在以下论述中也将被取消)之外,类似于图4。如[
背景技术
]中所提及,卡与读取器使用来自卡协议的命令集的(例如201处所指示的)指令而通信。主机与读取器通常使用来自另一命令集的(例如203处所指示的)指令而通信。读取器用于使用其固件而在两个命令集之间转译。(尽管此处和下文中提及固件,但更一般来说此可实施于硬件、软件或这些硬件与软件的某一组合中。)困难在于当命令201是来自在由PC用以与读取器通信的协议中不具有均等命令的卡的命令集的命令时。在此状况下,因为不存在此均等指令203,所以读取器不能够将201转译成相应命令203,且对于相反方向是类似的。因此,如果主机希望使用卡的媒体特定指令中的一者,那么在现有技术中没有办法在不改变PC-硬件适配器协议的命令集的情况下经由读取器传递所述指令。此特定实例将使用从主机到读取器的SCSI协议、从读取器到卡的SD协议和不会作为内嵌命令存在于SCSI协议中的SD命令(例如,安全写入)的实例。所以尽管此命令可直接在SD卡中传输,但其需要使用应用的主机侧的本发明方面以能够传输载运主机与读取器之间的命令的中间SCSI协议中的指令。在读取器处,虚设命令在每一协议中具有一版本且可在所述协议之间被转译,其中将实际内嵌命令视为数据。举例来说,虚设命令再次被视为写入。因此,在主机与适配器之间,其将表现为SCSI写入命令且在适配器与卡之间其将表现为SD命令,同时在所述两种状况下,实际命令内嵌于数据部分屮。所以尽管在此实例中内嵌命令现存在于第二协议中,但其仍为内嵌的,丙为在沿路径的某一点处,其传递缺乏此应用特定命令的协议。因此,这导致第一协议的命令内嵌于相同协议的命令中,从而允许在其与缺乏内嵌命令的均等命令的另一第二协议之间进行转译。图15—中对此进行了展示。尽管此论述主要根据SCSI和SD实施例而论述,但将了解,更一般来说其适用于其它协议。图15是当来自不具有PC-读取器命令集中的均等命令的卡命令集的命令内嵌于具有在两个命令集中的表示形式的PC-读取器协议的指令203中时,本发明的原理方面的示意性表示。在例示性实施例中,媒体特定命令再次内嵌于PC-读取器协议的数据部分中。PC和读取器可接着交换命令203,其中读取器可将所述命令203转译为相应命令201。然而,在此命令内内嵌有另一媒体特定命令601。读取器接着传递此命令并以对其操作透明的方式转译所述命令。例示性实施例的机制是具有在两个命令集中的表示形式的指令201/203可存取卡的存储器中的预定逻辑地址。当(例如)卡接收到达指定逻辑地址的读取命令时,警告所述卡此读取命令可为媒体特定命令601。(如下文中所描述,下文的实施例不依赖于此指定逻辑地址,且更一般来说,不仅可使用写入命令而且可使用具有数据部分的任何命令。)卡接着检査此命令的签名以对此进行验证且接着提取命令601。在例示性实施例中,由于在SCSI和其它协议中,通常不存在方便的位置将媒体特定命令内嵌于指令的命令部分中,所以命令601放置于指令的数据部分内。举例来说,如果PC希望对SD卡的安全区域进行写入,那么其将形成指令203,所述指令203由到指定逻辑块地址(LBA)的写入命令组成,含有命令传递(CPT)签名并含有内嵌于数据部分中的实际安全写入命令601。PC接着将此指令203发送到读取器,所述读取器将其解译为SCSI协议中的标准写入指令。接着通过读取器将此转译为SD协议中的标准写入指令201。读取器仅仅传递安全写入命令601,假定其是附着到写入命令的数据的一部分。当指令201到达卡时,基于为写入而指定的LBA,固件允许卡确定指令替代地为媒体特定命令。控制器接着提取命令601(将其识别为安全写入),且通过执行对指令的实际数据部分的安全写入而继续执行命令。'图16更详细地描述执行到SD卡的N个数据区段的安全数据写入的实例的一特定实施例。顶部行展示由主机形成的指令。^因为安全数据写入不具有实例的SCSI协议中的类似物,所以命令部分由SCSI协议中的命令CMD'组成,CMD'此处为写入,其存在于两个命令集中。写入是到达指定命令传递逻辑块地址CPTLBA。(未展示命令的其它细节,以简化论述。)数据部分(虚线的右边)由初始区段组成,其含有媒体特定命令,随后为N个实际数据区段。初始数据区段将包括命令传递签名、实际媒体特定命令和其中将写入以下数据的实际地址。逻辑块地址CPTLBA对应于上文论述的第一例示性实施例的论述中所使用的逻辑块地址LBA—XYZ(例如见图10A。)不同标记用于指示在实施于主机侧装置驱动程序层级的本实例中,正被使用的逻辑块地址为特别指定的逻辑块地址,l在实施于文件层级的先前实例中,可将其视为任何地址。图16类似于先前论述的图5,但指令510对于在此实例中明确展示的传输协议(主机到读取器、读取器到装置)中的每一者重复一次。图5的指令510将命令CMD的内嵌展示为此将发生于沿应用的主机侧与装置侧之间的传输路径的某处,而指令530将所提取的形式展示为其将由应用的装置侧使用。图16说明可存在若干中间协议且实际命令(CMD)将保持内嵌于若干这些中间协议中,即使在内嵌命令具有特定中间协议中的类似物的状况下也如此。如由读取器所见,第一数据区段恰好为其视为待写入到指定逻辑块地址的数据的N+l个区段中的第一者。如此,这些传递内容未改变。通过读取器将指令的命令部分从PC/读取器协议中的其表示形式(CMD')转译为卡协议中的其表示形式(CMD)。此时,可将指令传递到卡且所述指令仍具有(例如)到CPTLBA的写入命令随后为N+l个数据区段的形式。一旦在卡中,固件便可解开实际命令。当其确定命令使用指定地址时,其接着转到第一数据区段,检査CPT签名并提取实际媒体特定命令。此接着形成指令的实际命令,所述实际命令之后将接着为N个实际数据区段。因此,如参看图16所描述,具有N个数据区段的媒体特定写入命令变得内嵌为PC与读取器之间使用的传输协议中的N+l个数据区段。为了读取N个数据区段,将媒体特定读取命令内嵌为读取(或接受数据的其它命令)中或PC与读取器之间使用的传输协议中的一个数据区段。因此,可将媒体特定读取命令实施为具有内嵌于唯一数据区段中的媒体特定读取命令的写入命令。再次基于指定逻辑地址(CPTLBA)和签名,卡将提取媒体特定命令并以来自媒体特定读取中指定的所请求的逻辑块地址的数据进行响应。上文参考第一例示性实施例进一步展开关于读取实施方案的细节和处理例如写入或读取失败等复杂问题的方法。指定逻辑地址(CPTLBA)优选为文件系统中非正常使用的区段,因为这可避免与可能被发送到此区段的标准读取或写入命令发生冲突。举例来说,在DOS中,在主启动记录之后,通常存在通常不被存取的某些隐藏区段。(在某些操作系统中,存取此区域可需要管理员特权,其为在下一部分的基于文件的实施方案中可绕过的可能的复杂问题。)通过将此逻辑地址视为指定逻辑地址,如果不是出于检査实际命令为内嵌媒体特定命令的目的,对此地址的存取将不真正地在此处读取或写入数据。读取器将仅仅传递此命令作为正常数据存取,且卡将所有一切进行分类。图17A到17L展示可如何将命令的各种实例内嵌于数据区段中的一个实施例。如上文所描述,当执行到媒体卡的与入时,数据部分的第一区段含有CPT(卡传递)命令。其指示待执行的CPT功能。因此,为了写入10个区段,因为第一区段为CPT标头,所以实际上写入11个区段。为了读取IO个区段,用户需要发送CPT命令的-'个写入接着读取10个区段。实际应用为执行不可由正常读取或写入命令实现的特殊命令。举例来说,CPT模式可用于媒体特定命令,例如AKE(鉴认密钥交换)或SD卡的应用命令。图17A展示内嵌命令格式实施例。字节0到31中的CPT签名是取决于用以检査所述签名与所述命令匹配的命令的字符串。字节32中的命令可包括0-CPT模式检査希望检査媒体卡的CPT模式支持签名"卡传递模式检査"1-数据输出数据将写入到媒体卡签名"卡传递输出命令"2-数据输入数据将从媒体卡读取签名"卡传递输入命令"3-无数据传送的命令签名"卡传递无I/0命令"4-CPT命令异常中止签名"卡传递异常中止命令"5-CPT模式重设签名"卡传递重设命令"6-CPT状态检索签名"卡传递状态读取"数据传送长度(DataTransferLength)(字节33到35)指定待传送的数据量(如字节的数目);由于数据以区段形式传送,所以不完整的区段由0来填充。数据(Data)(字节36,位l)是数据传送的旗标,且如果在下一命令上不存在数据传送那么其为"0",如果在下一命令上存在数据传送那么其为"1"。类似地,方向(Dir)(字节36,位0)是数据传送的方向的旗标,且如果数据传送针对下一命令上的输入,那么其为"0",如果数据传送针对下一命令上的输出,那么其为"1"。媒体卡特定命令K域(字节48-511)是当其被提取时媒体卡将运行的实际命令。媒体卡特定旗标区域(字节36,位0)用于媒体相依旗标。如果在发送实际命令之前媒体卡支持卡传递命令协议,那么必须检査所述媒体卡。如上文所描述,LBA(CPTLBA-卡传递LBA)指定用于所述协议。LBA可为从卡的0区段到最后区段的任何数字。在实例中,此将为LBA2,其为在FAT文件系统中的主启动记录之后的第二隐藏区段且通,并不用于保持数据。注意,即使所述LBA含有有效数据,此协议仍将保存其值。对于检査模式支持,存在两个选择。査询协议支持的第一选择用于当媒体卡将CPT模式支持签名置于CPTLBA区段中时。然而,加果CPTLBA是具有有效信息的区段(例如,FAT/目录或用户数据区域中的区段),那么这并非优选的。如果支持CPT模式,那么视情况卡可返回具有如图17B中所示的签名的CPTLBA区段,其中字节0-31为"支持卡传递模式(以空白填充)"且字节32-511为0。如果CPTLBA区段不含有支持CPT模式的签名,那么可使用査询协议支持的第二选择。在此状况下,将以下协议用于检査模式支持a)读取CPTLBA区段并将其保存于主机存储器区域中。(无支持签名)b)以含有用于查询CPT模式支持的签名的区段写入CPTLBA。c)读取CPTLBA区段以检查CPT模式支持的响应。d)以来自所保存的存储器区域的原始区段写入CPTLBA。当主机读取CPTLBA区段并将其保存于存储器中时,步骤a)允许检査指定逻辑地址(CPTLBA)以进行支持同时仍保持其中可含有的任何数据。这是为了在媒体卡不支持卡传递模式时复原所述区段。此写入并不使用CPT模式命令。图17C展示步骤b),以含有用于查询的签名的区段对CPTLBA进行写入。主机将CPTLBA区段的字节0-31写入为"卡传递模式检查"(以空白填充),接着在字节32-47中写入命令和旗标。字节48-511为O。在步骤c)中,主机读取CPTLBA区段以进行响应。如果响应如图HD中所示具有为"支持卡传递模式"(以空白填充)的字节0-31和为O的字节32-511,那么支持卡传递模式;否则,卡不支持CPT协议。注意,此协议不同于用以査询协议支持的第一选择。当发出CPT模式检査命令时,对签名进行响应。在步骤d)中,主机从所保存的存储器区域写入CPTLBA区段中的原始数据。注意,即使卡支持卡传递模式,也因为不存在适当签名而不会将此写入解译为特殊CPT命令。41参看图17E到图17G而描述输入/输出协议。为了将数据输出到媒体卡,首先以用于输出的签名写入CPTLBA,接着基于数据传送长度而写入数据。为了以用于输出的签名写入CPTLBA,主机将写入命令发送到媒体卡,其中数据具有内嵌有媒体卡特定命令的CPT命令格式。长度为"数据传送长度"加上CPT命令格式的一个区段。图17E中对此进行展示,其中字节32中的1对应于"待写入到媒体卡的数据"。图17F中展示塞于数据传送长度的实际写入,其中媒体卡如何处理数据取决于媒体卡特定命令。如参看图17A所提及,此实例中的"数据传送长度"信息根据字节而表达于字节33-35(MSB、LMSB、LSB)中。然而,因为在卡与读取器之间以区段形式传送读取/写入数据,所以可视需要以O来填充不完整区段。举例来说,在SD卡中,鉴认密钥交换(AKE)过程使用8个字节进行询问和响应。因此,主机以504个字节的0来填充数据区段以询问1和响应2数据,其中卡类似地填充询问2和响应1数据。为了输入来自媒体卡的数据,主机以用于输入的签名写入CPTLBA且接着基于数据传送长度而读取数据。图17G展示待发送以指示将读取数据的CPT命令,其中字节32中的2对应于"待从媒体卡读取的数据"。为了基于数据传送长度而读取数据,在主机将读取命令发送到媒体卡之后,待读取的区段的数目为[(数据传送长度)/512]。(这假定每区段512个字节;更一般来说,如果是不同区段,那么实际区段长度将取代512。)起始区段为CPTLBA。由于先前命令为CPT输入命令,所以卡将基于媒体卡特定命令而将数据发送到主机。不具有输入或输出的命令的实例包括"不具有数据传送的命令"、"CPT命令异常中止"和"CPT模式重设"。图17H展示"不具有数据传送的命令",如由字节32处的3所指示。图17I展示"状态读取"命令(由字节32处的6指示),其允许主机读取CPT状态。举例来说,在SD卡中,可将状态实施为响应数据。所述状态将为读回的数据的前几个字节。尽管当需要具体实例时参考SD卡,但图17A到图171并不限于任何特定媒体协议且并不限于媒体特定命令。为了给出媒体特定命令的实例,图17J展示特定针对SD或MMC卡的内嵌命令,且图17L展示特定针对紧密快闪卡的内嵌命令。在图17J中,展示SD/MMC实例的命令格式。字节0-35如上文所述。SD/MMC命令填充媒体卡特定命令字段。字节48-53为SD命令,例如安全读取。在媒体卡特定旗标字段中需要并界定某些旗标。BLKH指示命令是用于单一区段还是用于多个区段如果使用单一区段命令那么为0,且如果使用多个区段命令那么为1。对于应用命令来说,APP=1。响应类型视命令索引而定为SD响应类型。字节48-52中的各条目是SD命令的实际元素,其中字节53中的CRC7视情况可被设定为0。为了获得SD命令的响应数据,用户可发送状态检索以获得响应。图17K中对此进行展示。当读取区段的前6个字节时将传回响应数据。图17L展示内嵌命令的紧密快闪(CF)命令格式。在此状况下,命令在字节48-54中且提供构成CF命令所需的元素。在图17L中,媒体卡特定旗标(字节36-位2到字节37)经保留以用于特定针对各种卡格式的将来的命令。第三例示性实施例第三例示性实施例实施于文件层级,与第一例示性实施例一样。此处,论述将更集中于主机侧文件中所放置的内容的细节。由于装置特定命令内嵌于文件中,所以没有办法损害例如FAT区域的文件系统特定数据。从卡的观点来看,不同例示性实施例将看起来是类似的,其不同之处更多的是关于如何在主机侧封装信息。当需要参考特定应用时,第三例示性实施例将是例如2004年12月21日申请的第60/638,804号美国临时专利申请案中所提出的到安全总线的安全链接的应用,所述临时专利申请案以上述方式并入本文中。在使用文件层级实施方案的情况下,除了克服使用装置驱动程序层级实施方案可能出现的所述种特权问题之外,还可克服可能需要具有发送特殊命令的特殊硬件。举例来说,在某些状况下,在装置驱动程序层级处,存在必须发送特殊命令以存取SD卡的安全区域的需要,但在使用文件层级实施方案的情况下,因为信息封装于文件内,所以不再需要此操作。因此,只要可写入和读取文件,便可以此实施方案来发送和接收任何命令集。前一部分的实施例为卡驱动程序实施方案,其操作于装置输入/输出层级。主机或PC应用与装置或卡驱动程序之间为操作系统(OS)文件系统。第三组实施例是文件1/0实施方案,其在OS文件系统上操作。在这些实施例中,主机仅告知文件系统将文件写入到存储器装置,其中再次内嵌装置特定命令。关于将文件写入到快闪存储器的更多细节描述于均在2005年2月16日申请的第11/060,249号、第11/060,174号和第11/060,248号美国专利申请案中,所述专利申请案均以引用的方式并入本文中。尽管这些实施例可需要比装置层级实施例多一些的固件额外开销,但其可具有若干优点。举例来说,在装置层级处,当开发一应用时,需要了解一些有关的硬件,而通过使用文件系统,这变得与硬件无关并与底部层级协议的许多细节无关。与装置层级实施例一样,文件层级实施例可用于将卖主特定命令发送到各自卖主产品,例如在Windows98/ME/95/DOS和类似实例中所建置的高级SCSI编程接口(ASPI)。在上文描述的装置层级实施例中,利用到特定逻辑地址(CPTLBA)的写入。然而,在许多操作系统中,为了存取此逻辑地址需要某些存取特权。举例来说,如果用户不具有管理员特权,那么不能够将某SCSI命令发送到卖主产品。因为操作系统通常允许写入文件,所以本发明的文件层级实施例通过将媒体特定命令内嵌于文件中、将文件写入到装量并在装置上解除内嵌实际命令而避免此特权问题。在Windows操作系统的许多版本中,使用例示性CPTLBA的卡层级实施例将需要管理员特权,而写入文件将不需要任何此类特殊存取特权。与之前一样,例示性实施例将媒体特定命令内嵌于指令的数据部分中。操作系统的文件系统层级处的实施方案可再次由卡的卡固件实施,所述卡固件适于遵守并认同协议。使用到任何LBA的读取/写入命令,检査签名以确定数据是否含有内嵌的媒体卡特定命令。这不同于其中使用特殊地址的装置驱动程序实施方案。在其它方面,如从卡处所见,在此部分的装置驱动程序层级实施例与前一部分的文件系统层级实施例之间存在很少差别。如在前一部分中,如果命令涉及任何数据传送,那么基于文件的实施方案的例示性实施例将协议分成"指令"部分(其中内嵌有媒体特定命令)和"数据输入/输出"部分,以保持与命令相关联的数据。当卡接收到协议命令时,在读取或写入操作期间固件检査特殊签名以确定给定的LBA是否为指令部分,这仅需要对其中签名始终内嵌于第一数据区段中的实施例的协议命令的第一数据区段执行。从主机侧编程员的观点来看,客户端应用发出简单文件或具有指令部分和(也许)数据输入/输出部分的逻辑区段(LBA)写入操作。如果命令涉及读取数据或将数据写入到媒体,那么固件执行逻辑到物理映射。固件将在从传输协议接收作为写入或读取的命令期间检测API指令部分。在例示性实施例中,协议命令的指令部分将含有签名、查询命令、卖主特定命令和可更新字段。此处大小将限于512个字节(其为最通常使用的数据块的大小)的倍数。图18A中展示例示性实施例中的指令页的格式,其除了具有额外细节之外非常类似于图17A。前36个字节未经加密,剩余字节根据陈述所支持的加密算法的存在的加密/解密信息而被加密/解密。参看图18A中所示的各种字段,字节O和1是用于指示可为API指令页的候选者的LBA的签名字节。如果这两个字节匹配,那么固件将检査API签名。在以下实例中,字节0为19,且字节1为73。API签名位于字节2-34中且是单一字符串。在以下实例中,将签名视为"高级编程接口"。字节35是告知固件后续指令页和数据页是否经加密的加密/解密(E/D)信息。如果其未经加密,那么应将此字段设定为API_NO—ENCRYPTION;否则,应将其设定为加密名称,使得固件可解密和加密从字节36开始的指令页(-或多个)以及数据页。字节36-39是尚件操作状态字段(OperationStatusField)字段且将基于操作的成功或失败而被更新。如果一切均好,那么其将被设定为API—OP_SUCCESS;否则,其将被设定为错误值或API—OP—NO—SUCCESS。建议当发出命令时,—将其缺省值设定为OxFFFFFFFF。在写入之后,调用程序可读取指令页以验证所请求的操作是否成功。可将卖主识别符字段(字节40-43)用作唯一卖主识别符。如果固件还需要有效卖主ID,那么此字段可由调用环境使用以向固件识别其本身。指令页字段(字节44)的数目将指令页的总数目告知固件,其中指令页以512个字节为边界。类似地,数据页字段(字节45-46)的数目将附着到指令部分的数据输入/输出页的总数目告知固件。数据页大小不必意味着以字节计的数据大小;在某些状况下,可能已将填充添加到数据字节的末端。举例来说,DES需要以字节计的数据大小必须为八的倍数。字节字段(Bytesfield)(字节47-50)字段中的数据大小将含有效数据的数据页中的字节的总数目告知固件。在从媒体进行读取的状况下,此字段应由固件使用页区域中实际处理的字节大小加以更新。在将数据写入到媒体方面,此为数据大小的以字节计的长度。如果数据经加密,那么固件首先解密数据页的全部内容且接着进行提取。字节51中的位O是数据传送的旗标,如果当前命令不需要数据传送那么将其设定为"O",且如果当前命令需要数据传送,那么将其设定为l。字节51中的位1和2是数据传送的方向的旗标。值"00"指示数据传送是针对关于当前命令的输入,且固件将在写入时间期间处理命令且一旦被写入到媒体便将使数据页无效。值"01"指示数据传送是针对关于当前命令的输入,且固件将在写入时间期间处理命令而不执行无效化(nullifications值"10"指示数据传送是针对关于当前命令的输出。保留值"11"。字节51中的位3到字节52是媒体卡特定旗标且取决于媒体卡的类型。字节53-63是保留供将来使用的字段。媒体卡査询命令字段(字节64)将用于査询媒体卡的当前状态和能力。已知的支持包括是否支持API协议;获得所支持的E/D算法;和停用API协议支持。媒体卡査询命令传回状态字段(字节65-68)可用于保持媒体卡查询命令的传回值。媒体卡特定命令长度(字节69和70)指定命令字段所存储的命令字节的总数目,其中媒体卡将运行的实际命令在媒体卡特定命令(字节71-511)中。附加到指令页(一或多个)的将是任何数据输入/输出页。调用程序环境和基于所建立密码系统算法的固件将对内容进行加密/解密。在某些状况下,不需要将数据页写入到媒体,在所述状况下,固件必须在写入之前处理命令且接着仅将指令页写入到媒体,使得用户可将其读回并了解操作的状态。图18B到图18F给出媒体特定査询命令的若干实例,例如对检查在发送实际命令之前媒体卡是否支持API协议的API协议支持的査询。参看图18B和图18C说明一特定程序。当文件系统用子存取媒体时,将写入具有仅一个指令页的内容的文件。图1SB和图18C的实例将论证如何经由文件系统来查询协议。调用环境开启-'文件(例如"myAPI.bin")。为了査询协议的支持,调用程序可将512个字节(图18B中所示)写入到文件并发出写入文件命令。在发出所述写入文件命令之后,不管在将文件写入到媒体期间还是在读取所述文件期间,媒体均将采取适当动作。对于所述实例来说,假定在写入之前,媒体卡处理指令页。在此状况下,将采取以下动作a)验证签名字节b)如果匹配,那么验证API签名c)如果匹配,那么仔细检査(gothrough)媒体特定旗标(如果存在)。d)检查媒体卡查询命令请求,其为1e)当不存在数据传送时,验证数据字段和方向字段为O。f)处理命令、更新字段并将文件写入到媒体。当用户从媒体读取文件(myAPI.file)时,调用程序需要检査两个字段(1)固件操作状态如果成功完成命令操作,那么此字段将以API—OP—SUCCESS来更新或在失败时以某些错误值来更新,且(2)仅当成功完成命令操作时才检査媒体卡査询命令传回状态。如果支持协议那么以1更新所述字段,或如果不支持协议,那么以0进行更新。见图18C。如果不支持协议,或卡对于此协议支持已被停用,那么这两个可更新字段将保持其初始缺省值OxFFFFFFFF。媒体特定査询命令的第二实例是用以确定支持哪些加密/解密算法的査询,其中如果支持API协议且在此杳询之前所述API协议为有效的,那么必须检査媒体卡。使用图18D和18E对此进行说明。类似于API协议的支持的査询(参看图18B和18C而论述),当使用文件型系统来存取媒体时,将写入具有仅一个指令页的内容的文件。调用环境将写入一文件(例如myAPI.bin),以使用与上文相同的实例。调用环境将写入一文件;例如myAPI.bin。为了査询有关此命令的支持,用户将包括如图18D中所示的512个字节且发出写入文件命令。假定媒体卡在写入之前处理指令页,那么一组例示性动作如下a)验证签名字节;b)如果匹配,那么验证API签名;C)如果匹配,那么仔细检查媒体特定旗标(如果存在);d)检査媒体卡査询命令请求,其为2;e)当不存在数据传送时,验证数据字段和方向字段为O;和f)处理命令、更新字段并将文件写入到媒体。当用户从媒体读取文件myAPI.bin时,调用程序将检査两个字段(1)固件操作状态如果成功完成命令操作,那么将以API—OP—SUCCESS来更新此字段,或如果其失败,那么以某一错误值来更新,且(2)仅当成功完成命令操作时才将检査媒体卡査询命令传回状态。此字段将传回32位的整数,其中0意味着不支持任何加密/解密算法。否则,将设定每一预定义加密/解密箅法的每一位。举例来说,假定DES在位1中,3DES在位3中且AES在位32中,那么传回值应为MSB10000000000000000000000000001010LSB图18E中展示所述结果。注意,在例示性实施例中,算法的最大数目为32。基于传回值,可确定所支持的E/D算法的类型,使得可通过在字节35中设定相同预定义算法名称而加密指令页(从字节36开始)和数据页。注意,字节35应在任何给定时间仅设定一个位。如果设定超过l位,那么其将失败。媒体特定査询命令的另一实例是用以确定媒体卡是否支持API协议且如果支持那么停用所述API协议的查询。类似于用以确定支持哪些加密/解密算法的査询,将开启一文件,其中所述文件的内容将仅具有一个指令页。调用环境将开启一文件,例如再次为myAPI.bin。为了査询此命令的支持,用户可在一文件中包括图18F中所示的512个字节且发出写入文件命令。,在写入文件之后,用户可读取字段并通过首先检査以下各项而验证是否成功完成操作(1)固件操作状态如果成功完成命令操作,那么将以0来更新此字段,或如果其失败,那么以1来更新;以及(2)仅当成功完成命令操作时,才将检査媒体卡査询命令传回状态。如果停用协议那么其将为1,或如果失败,那么其将为0。图18G和18H展示基于文件系统的媒体特定读取和写入命令的特定实例。在将固件命令发出到媒体卡之前,检査所述卡以察看其是否支持API协议。如同先前协议,如果将文件系统用于存取媒体,那么将开启具有一个或一个以上指令页和任何相关联数据页的内容的文件。图18G中展示媒体特定写入命令的实例。更具体来说,假定调用程序希望发出一命令(例如,SD卡命令集中的"D5")以获得数据页并将其写入到某隐藏区域。调用环境将开启一文件且用户将预备如图18G中所示的数据页。字节00-34与图18A到图18F中---样,其中此实例中的指令的字节35指示无加密正被使用。字节36-39再次指示固件的操作状态,其中斜体字(此处的斜体字与前述斜体字两者)指示字段为固件可更新的,且卖主或媒体识别符(所述实例将卖主识别符用作"SNDK")位于字节40-43中。内嵌命令因而将特定针对此媒体/卖主。字节44-50指示指令页的数目(此处仅所示的页(NIP=1))、数据页的数目(在实例中也为一(NDP=1))和指定为字节数目的数据大小(此处用作区段的512个字节(DSIB=512))。指令的字节51-68视特定命令的需要而提供先前描述的指令信息。实际内嵌命令的长度(以字节计)指定于字节69-70中,其在此状况下为含有指示到保留区域或安全区域的写入的例示性"D5"指令的单一字节71。接着以零来填充经分配以用于媒体特定指令的剩余区域(字节72-511)从而形成完整区段。实际特定命令的数据的(此处)52个字节作为下一区段。在图18G中,注意,数据字段(数据=1)指示此指令含有"输入"且方向字段(方向=00)告知固件处理数据并将页写入到媒体。由于文件系统会将数据页写入到媒体(如由文件系统所见的1024个字节,前512个字节用于内嵌命令),因此固件将视需要以O或FF来填充数据页。调用程序可通过从媒体卡读取文件和检査固件操作状态字段而验证操作是否己成功。如果已成功完成操作,那么将以API—OP_SUCCESS来更新此字段,或如果不成功,那么将以某些错误值或API_OP—NCLSUCCESS对其进行更新。注意,由于方向为00,所以数据页应为0或FF。假定在写入之前媒体卡处理指令页,那么一组例示性动作如下a)验证签名字节;b)如果签名匹配,那么验证API签名;c)检査指令页(从字节36开始)是否被加密;d)如果被加密,那么解密指令页(从字节36开始)和数据页;e)验证卖主ID签名;f)如果卖主ID匹配,那么仔细检査媒体特定旗标(如果存在);g)检査方向和数据字段;h)处理实际内嵌媒体特定命令;和i)更新指令页的固件操作状态字段,加密(如果请求)在字节36之后的指令页,且将其写入到媒体。由于方向为OO,所以视需要将数据页写为O或FF。可以若干方式实施媒体特定读取命令,以下部分中对其中某些方式进行更多的论述。参看图18H描述基于文件系统的媒体特定读取命令的实施方案,其结构类似于图18G的写入结构。在正从媒体读取媒体特定命令时,所述媒体特定命令现为D6且方向为10。另外,可灵活地基于使用何命令和确立的协议而修改'内容。举例来说,可告知卡写入此文件且所述文件具有用以告知固件在写入之前加密内容的特殊命令。因此,所写入的内容在写入之前可转换成另一形式。上述情形也可适用于读取操作。图18H展示调用程序希望发出一命令(例如,SD卡命令集中的"D6")以从隐藏区域读取数据区段并将其放置于数据页下方的状况。调用环境将开启一文件且用户将预备如图18H中所示的数据页,其中再次将卖主识别符用作"SNDK"。数据字段指示此为"输出",使得数据页将被更新且方向字段告知固件在读取期间处理数据。对于固件另一可能性是处理命令、更新数据页并将其写入到媒体。因此,固件会将1024个字节写入到媒体。当固件读取文件时,其将检测到此为指令页,接着其将读取命令并适当地更新数据字段。调用程序可通过从媒体卡读取文件而验证操作是否已成功。一旦读取文件,调用程序便可检査固件操作状态字段。如果命令导致成功完成的操作,那么将以API—OP—SUCCESS来更新此字段;如果未成功,那么将以例如API—OP—NO—SUCCESS的某些错误值对其进行更新。还可通过检査DSIB字段来验证数据读取的量从而察看其是否已经更新为512。尽管已参考特定实施例描述了本发明的各种方面,但将了解,本发明在所附权利要求书的全部范围内受到保护。权利要求1.一种操作一系统的方法,所述系统包含存储卡和可与所述卡交换数据和命令的主机,其中所述主机与所述卡之间的所述数据和命令交换在传输过程中的某一阶段使用第一协议中的第一命令集,且其中所述主机和所述卡包括使用第二协议中的第二命令集的应用,所述方法包含将来自所述第二命令集的命令内嵌于来自所述第一协议的第一指令中,所述命令不具有所述第一命令集中的相应命令;将所述第一指令从所述主机传输到所述存储卡;以及在所述卡中提取所述内嵌命令。2.根据权利要求1所述的方法,其中使用第二协议中的第二命令集的所述应用是多个应用中的一者,且所述第二协议是多个相应第二协议中的各自第二协议,且其中可同时操作所述多个应用中的多个应用。3.根据权利要求1所述的方法,其中由所述主机在文件系统层级实施所述内嵌。4.根据权利要求3所述的方法,其中所述命令用于将数据从所述主机传送到所述卡,所述数据放置于对应于所述第一指令的文件的数据部分中,所述方法进一步包含确定所述卡上足以在分段的情况下容纳所述文件的逻辑地址。5.根据权利要求1所述的方法,其进一步包含确定所述命令是否用于将数据从所述卡传送到所述主机;响应于确定所述命令用于将数据从所述卡传送到所述主机,设定用于所述传送的旗标;从所述卡传送与所述命令相关联的数据。6.根据权利要求5所述的方法,其中所述经传送的数据少于与所述命令相关联的全部数据。7.根据权利要求5所述的方法,其进一步包含响应于第二命令,从所述卡重新传送与所述命令相关联的所述数据。8.根据权利要求1所述的方法,其中由所述主机在卡驱动程序层级实施所述内嵌。9.根据权利要求1所述的方法,其中所述系统进一步包含硬件适配器,所述主机与卡经由所述硬件适配器交换所述数据和命令,其中所述主机与硬件适配器通过所述第一协议进行通信,且其中所述将所述第一指令从所述主机传输到所述存储卡包含将所述第一指令从所述主机传输到所述硬件适配器T在所述硬件适配器中将所述第一指令转译为所述第二协议中的相应指令;以及将所述相应指令从所述硬件适配器传输到所述存储卡。10.根据权利要求l所述的方法,其中来自所述第一协议的所述指令包含包括来自所述第一协议的命令的命令部分和数据部分,其中所述内嵌命令内嵌于所述数据部分中。11.根据权利要求IO所述的方法,其中所述数据部分进一步包括与所述内嵌命令相关联的数据。12.根据权利要求11所述的方法,所述方法进一步包含确定包括于所述数据部分中的与所述内嵌命令相关联的所述数据是否为与所述内嵌命令相关联的全部数据。13.根据权利要求12所述的方法,所述方法进一步包含,响应于确定包括于所述数据部分中的与所述内嵌命令相关联的所述数据并非与所述内嵌命令相关联的全部数据,设定旗标以用于与所述内嵌命令相关联的额外数据的接收。14.根据权利要求IO所述的方法,其中所述在所述卡中提取所述内嵌命令包含确定所述数据部分包括签名;以及响应于确认所述指令中的所述签名而从所述数据部分中提取所述内嵌命令。15.根据权利要求10所述的方法,其中所述相应指令包含包括来自所述第二协议的命令的命令部分和数据部分,其中所述内嵌命令内嵌于所述数据部分中。16.根据权利要求1所述的方法,其中来自所述第一协议的所述命令是到达预定逻辑地址。17.根据权利要求16所述的方法,其进一步包含,在所述卡中接收所述经传输的相应指令之后并在所述卡中提取所述内嵌命令之前确定所述相应命令是到达所述预定逻辑一地址;以及响应于所述确定所述相应命令是到达所述预定逻辑地址,确认所述指令中的签名,其中响应于确认所述签名而提取所述内嵌命令。18.根据权利要求17所述的方法,其中所述确定所述相应命令是到达所述预定逻辑地址、所述确认所述指令中的签名和所述提取所述内嵌命令由所述卡的固件执行。19.根据权利要求1所述的方法,其进一步包含执行所述内嵌命令。20.根据权利要求1所述的方法,其中所述第二协议是SD协议。21.根据权利要求20所述的方法,其中所述内嵌命令是安全数据存取。22.根据权利要求1所述的方法,其中所述第二协议是MMC协议。23.根据权利要求1所述的方法,其中所述第二协议是ATA协议。24.根据权利要求1所述的方法,其中所述第一协议是SCSI协议。25.根据权利要求1所述的方法,其中所述命令用于在所述主机与所述卡之间传送数据,其中所述数据未高速缓存于所述主机中。26.—种操作一系统的方法,所述系统包含存储卡和可与所述卡交换数据和命令的主机,其中所述主机与所述卡之间的所述数据和命令交换在传输过程中的某一阶段使用第一协议中的第一命令集,且其中所述主机和所述卡包括使用第二协议中的第二命令集的应用,所述方法包含将来自所述第二命令集的命令和签名内嵌于来自所述第一协议的第一指令中,其中所述第一指令包括命令部分和数据部分,且其中所述签名和来自所述第二命令集的所述命令内嵌于所述数据部分中;将所述第一指令从所述主机传输到所述存储卡;确定所述第一指令的所述数据部分是否含有所述签名;以及响应于所述第一指令含有所述签名,从所述第一指令的所述数据部分中提取来自所述第二命令集的所述命令。27.根据权利要求26所述的方法,其中使用第二协议中的第二命令集的所述应用是多个应用中的一者,且所述第二协议是多个相应第二协议中的各自第二协议,且其中可同时操作所述多个应用中的多个应用。28.根据权利要求26所述的方法,其中所述数据部分还包括与来自所述第二命令集的所述命令相关联的数据。29.根据权利要求28所述的方法,所述方法进一步包含确定包括于所述数据部分中的与来自所述第二命令集的所述命令相关联的所述数据是否为与来自所述第二命令集的所述命令相关联的全部数据。30.根据权利要求4所述的方法,所述方法进一步包含,响应于确定包括于所述数据部分中的与来自所述第二命令集的所述命令相关联的所述数据并非与来自所述第二命令集的所述命令相关联的全部数据,设定旗标以用于与来自所述第二命令集的所述命令相关联的额外数据的接收。31.根据权利要求26所述的方法,其进一步包含-确定所述命令是否用于将数据从所述卡传送到所述主机;响应于确定所述命令用于将数据从所述卡传送到所述主机,设定用于所述传送的旗标;从所述卡传送与所述命令相关联的数据。32.根据权利要求31所述的方法,其中所述经传送的数据少于与所述命令相关联的全部数据。33.根据权利要求31所述的方法,其进一步包含响应于第二命令,从所述卡重新传送与所述命令相关联的所述数据。34.根据权利要求26所述的方法,其中所述第一指令为写入。35.根据权利要求26所述的方法,其中来自所述第二命令集的所述命令为读取。36.根据权利要求26所述的方法,其中所述签名包含于所述数据部分的预定区段中。37.根据权利要求26所述的方法,其中所述指令是存取第一逻辑地址处的数据,且其中所述确定所述指令的所述数据部分是否含有签名是响应于所述第一逻辑地址对应于预定逻辑地址。38.根据权利要求26所述的方法,其中由所述主机在所述文件驱动程序层级实施所述内嵌。39.根据权利要求38所述的方法,其中所述命令用于将数据从所述主机传送到所述卡,所述数据放置于对应于所述第一指令的文件的数据部分中,所述方法进一步包含确定所述卡上足以在分段的情况下容纳所述文件的逻辑地址。40.根据权利要求26所述的方法,其中由所述主机在所述卡驱动程序层级实施所述内嵌。41.根据权利要求26所述的方法,其中所述系统进一步包含硬件适配器,所述主机与卡经由所述硬件适配器交换所述数据和命令,其中所述主机和硬件适配器通过所述第一协议进行通信,且其中所述将所述第一指令从所述主机传输到所述存储卡包含将所述第一指令从所述主机传输到所述硬件适配器;在所述硬件适配器中将所述第一指令转译为所述第二协议中的相应指令;以及将所述相应指令从所述硬件适配器传输到所述存储卡。42.根据权利要求26所述的方法,其中来自所述第一协议的所述指令包含包括来自所述第一协议的命令的命令部分和数据部分,其中所述内嵌命令内嵌于所述数据部分中。43.根据权利要求26所述的方法,其中来自所述第一协议的所述命令是到达预定逻辑地址。44.根据权利要求26所述的方法,其进一步包含执行所述内嵌命令。45.根据权利要求26所述的方法,其中所述第二协议是SD—协议。46.根据权利要求45所述的方法,其中所述内嵌命令是安全数据存取。47.根据权利要求26所述的方法,其中所述第二协议是MMC协议。48.根据权利要求26所述的方法,其中所述第二协议是ATA协议。49.根据权利要求26所述的方法,其中所述第一协议是SCSI协议。50.根据权利要求26所述的方法,其中所述命令用于在所述主机与所述卡之间传送数据,其中所述数据未高速缓存于所述主机中。51.—种操作非易失性存储卡的方法,其包含接收指令,其中所述指令包括命令部分和数据部分;确定所述指令的所述数据部分是否含有签名以及响应于所述指令含有所述签名,从所述指令的所述数据部分中提取命令。52.根据权利要求51所述的方法,其进一步包含确定所述命令是否用于从所述—卡传送数据;响应于确定所述命令用于从所述卡传送数据,设定用于所述传送的旗标;从所述卡传送与所述命令相关联的数据根据权利要求51所述的方法,其中所述经传送的数据少于与所述命令相关联的全部数据。53.根据权利要求52所述的方法,其进一步包含响应于第二命令,从所述卡重新传送与所述命令相关联的所述数据。54.根据权利要求51所述的方法,其中所述数据部分进一步包括与所述经提取命令相关联的数据。55.;根据权利要求54所述的方法,所述方法进一步包含确定包括于所述数据部分中的与所述经提取命令相关联的所述数据是否为与所述经提取命令相关联的全部数据。56.根据权利要求55所述的方法,所述方法进一步包含,响应于确定包括于所述数据部分中的与所述经提取命令相关联的所述数据并非与所述经提取命令相关联的全部数据,设定旗标以用于与所述经提取命令相关联的额外数据的接收。57.根据权利要求51所述的方法,其中所述签名包含于所述数据部分的预定区段中。58.根据权利要求51所述的方法,其中所述指令在具有第一命令集的第一协议中,且其中所述经提取命令来自第二协议中的第二命令集且不具有所述第一命令集中的相应命令。59.根据权利要求58所述的方法,其中所述第二协议用于多个应用中的一者,且所述第二协议是多个相应应用协议中的各自应用协议,且其中可同时操作所述多个应用中的多个应用。60.根据权利要求51所述的方法,其中所述指令是存取第一逻辑地址处的数据,且其中所述确定所述指令的所述数据部分是否含有签名是响应于所述第一逻辑地址对应于预定逻辑地址。61.根据权利要求51所述的方法,其中所述确定所述指令含有签名和从所述指令的所述数据部分中提取命令由所述卡的固件来执行。62.根据权利要求51所述的方法,其进一步包含执行所述经提取命令。63.根据权利要求51所述的方法,其中所述指令在SD协议中。64.根据权利要求51所述的方法,其中所述经提取命令是安全数据存取。65.根据权利要求51所述的方法,其中所述指令在MMC协议中。66.根据权利要求51所述的方法,其中所述指令在ATA协议中。67.—种传输来自第一协议的命令的方法,其包含-形成来自第二协议的指令,所述指令包括接受相关联数据部分的命令;将来自所述第一协议的所述命令和指示所述指令含有来自所述第一协议的命令的签名放置于所述指令的所述相关联数据部分中;以及传输所述指令。68.根据权利要求67所述的方法,其中所述第一协议用于多个应用中的一者,且所述第一协议是多个相应应用协议中的各自应用协议,且其中可同时操作所述多个应用中的多个应用。69.根据权利要求67所述的方法,其进一步包含将与来自所述第一协议的所述命令相关联的数据放置于所述相关联的数据部分中。70.根据权利要求69所述的方法,所述方法进一步包含确定包括于所述数据部分中的与来自所述第一协议的所述命令相关联的所述数据是否为与来自所述第一协议的所述命令相关联的全部数据。71.根据权利要求70所述的方法,所述方法进一步包含,响应于确定包括于所述数据部分中的与来自所述第一协议的所述命令相关联的所述数据并非与来自所述第一协议的所述命令相关联的全部数据,设定旗标以用于与来自所述第一协议的命令相关联的额外数据的接收。72.根据权利要求67所述的方法,其中来自所述第二协议的所述指令为写入。73.根据权利要求67所述的方法,其中来自所述第一协议的所述命令为读取。74.根据权利要求67所述的方法,其中将所述签名放置于所述相关联数据部分的预定区段中。75.根据权利要求67所述的方法,其中由所述主机在所述文件驱动程序层级实施所述内嵌。76.根据权利要求67所述的方法,其中将所述相关联数据部分形成为文件的一部分。77.根据权利要求67所述的方法,其中将来自所述第二协议的所述指令传输到预定逻辑地址。78.根据权利要求67所述的方法,其中来自所述第一协议的所述命令用于所述数据传送,且其中所述数据未高速缓存于所述传输装置中。79.—种操作一系统的方法,所述系统包含存储卡和可与所述卡交换数据和命令的主机,其中所述主机与所述卡之间的所述数据和命令交换在传输过程中的某一阶段使用第一协议中的第一命令集,且其中所述主机和所述卡包括使用第二协议中的第二命令集的应用,所述方法包含将来自所述第二命令集的命令内嵌于来自所述第一协议的第一指令中;将所述第一指令从所述主机传输到所述存储卡中的第一逻辑地址;确定所述内嵌命令是否用于将数据从所述卡传送到所述主机;随后将第二指令从所述主机传输到所述存储卡;响应于确定所述内嵌命令用于将数据从所述卡传送到所述主机,确定所述第二指令是否到达所述存储卡中的所述第一逻辑地址;以及响应于所述第二指令到达所述存储卡中的所述第一逻辑地址,将数据从所述卡传送到所述主机。80.根据权利要求79所述的方法,其中所述第一指令为写入。81.根据权利要求79所述的方法,其中来自所述第二指令的所述命令为读取。82.根据权利要求79所述的方法,其中所述签名包含于所述第一指令的预定区段中。83.根据权利要求79所述的方法,其中由所述主机在所述文件驱动程序层级实施所述内嵌。84.根据权利要求79所述的方法,其中所述命令用于在所述主机与所述卡之间传送数据,其中所述数据未高速缓存于所述主机中。85.—种存储卡结构,其包含非易失性存储器;前端层,其用于根据第一协议与所述卡所连接的主机交换指令,其中第一层确定所述第一协议中的传入指令的数据部分是否含有签名;且用于响应于确定无所述签名而根据所述第一协议中的所述指令来存取所述存储器;以及应用层,其中响应于确定所述第一协议中的传入指令含有签名,将所述传入指令从所述前端层传送到所述应用,其中从所述传入指令的所述数据部分中提取第二协议中的指令且根据所述第二协议中的所述指令而存取所述存储器。86.根据权利要求85所述的存储卡结构,其中所述签名包含于所述数据部分的预定区段中。87.根据权利要求85所述的存储卡结构,其中所述指令在具有第一命令集的第一协议中,且其中所述经提取命令来自第二协议中的第二命令集且不具有所述第一命令集中的相应命令。88.根据权利要求85所述的存储卡结构,其中所述指令是存取第一逻辑地址处的数据,且其中所述确定所述指令的所述数据部分是否含有签名是响应于所述第一逻辑地址对应于预定逻辑地址。89.根据权利要求85所述的存储卡结构,其中所述前端层和所述应用层实施在固件中。90.根据权利要求85所述的存储卡结构,其中所述存储卡结构可同时处理多个此类指令。91.根据权利要求90所述的存储卡结构,其中所述应用层包括多个应用,且其中经同时处理的所述多个指令来自所述应用中的一个以上应用。92.根据权利要求85所述的存储卡结构,其中响应于确定所述传入指令是用于从所述卡的数据传送,所述应用层设定旗标用于所述传送并从所述卡传送与所述传入指令相关联的数据。93.根据权利要求92所述的存储卡结构,其中响应于第二传入指令,从所述卡重新传送与所述传入指令相关联的所述数据。94.根据权利要求85所述的存储卡结构,其中所述应用层确定所述数据部分是否进一步包括与所述第二协议中的所述指令相关联的数据。95.根据权利要求94所述的存储卡结构,其中所述应用层确定包括于所述数据部分中的与所述第二协议中的所述指令相关联的所述数据是否为与所述第二协议中的所述指令相关联的全部数据。96.根据权利要求95所述的存储卡结构,其中响应于确定包括于所述数据部分中的与所述第二协议中的所述指令相关联的所述数据并非与所述第二协议中的所述指令相关联的全部数据,所述应用层设定旗标以用于与所述第二协议中的所述指令相关联的额外数据的接收。全文摘要本发明提出用于在主机与存储卡之间传输应用特定指令的技术。将用于应用特定协议的命令与签名一起内嵌于用于在所述主机与所述存储卡之间通信的传输协议的数据部分中。这允许在所述传输协议中缺失相应的命令时仍可在所述协议中传输应用特定命令的传输。可在主机侧的装置驱动程序层级或文件层级实施所述方法。为了实施所述应用特定协议中的读取命令,首先将具有内嵌的读取命令的第一协议中的写入命令发送到逻辑地址,接着将第二读取命令发送到相同逻辑地址。文档编号G06F3/06GK101326483SQ200680045924公开日2008年12月17日申请日期2006年11月30日优先权日2005年12月8日发明者亨利·里卡多·赫顿,法施德·萨伯特-沙吉,罗伯特·C·张,罗恩·巴尔齐莱,迈塔尔·达姆·阿里,阿吕·肯特·塔尼克申请人:桑迪士克股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1