首页> 中国专利> 可以很容易在其中设定扩展功能的存储器系统

可以很容易在其中设定扩展功能的存储器系统

摘要

根据本发明的一个实施例,一种例如SDIO卡之类的存储器系统包括非易失性半导体存储器器件(18)、控制部分(11a)、存储器(14,15)、扩展功能部分(19)以及扩展寄存器。扩展功能部分(19)由控制部分(11a)控制。扩展寄存器被提供在存储器(14,15)上或者控制部分(11a)上。第一命令以给定数据长度的单位从扩展寄存器读取数据。第二命令以给定数据长度的单位向扩展寄存器写入数据。扩展寄存器包括第一区域和不同于第一区域的第二区域,被配置成指定扩展功能和可控驱动程序的类型的信息以及表明将把扩展功能指派到的扩展寄存器上的位置的地址信息被记录在第一区域中,并且第二区域包括扩展功能。

著录项

  • 公开/公告号CN103403803A

    专利类型发明专利

  • 公开/公告日2013-11-20

    原文格式PDF

  • 申请/专利权人 株式会社东芝;

    申请/专利号CN201180068856.7

  • 发明设计人 藤本曜久;坂本广幸;

    申请日2011-09-16

  • 分类号G11C5/00(20060101);G06F13/38(20060101);

  • 代理机构11247 北京市中咨律师事务所;

  • 代理人杨晓光;于静

  • 地址 日本东京都

  • 入库时间 2024-02-19 21:27:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-08-18

    专利权的转移 IPC(主分类):G06F13/38 登记生效日:20170731 变更前: 变更后: 申请日:20110916

    专利申请权、专利权的转移

  • 2016-08-10

    授权

    授权

  • 2013-12-18

    实质审查的生效 IPC(主分类):G11C5/00 申请日:20110916

    实质审查的生效

  • 2013-11-20

    公开

    公开

说明书

相关申请的交叉引用

本申请基于2011年2月4日提交的日本专利申请No.2011-023217和 2011年5月17日提交的日本专利申请No.2011-110242并且要求其优先权, 其全部内容被合并在此以作参考。

技术领域

这里所描述的实施例总体上涉及一种例如利用半导体非易失性存储器 的存储器系统。

背景技术

近来希望存储器卡不仅仅是存储器器件,而且还是可以为之添加各种 功能的存储器器件,以便为存储器卡赋予附加价值。此外,为了使得有可 能在即插即用的基础上使用附加功能,希望有一种通用初始化装置。

附图说明

图1是示意性地示出了被应用于一个实施例的存储器系统的方框图。

图2是示出了图1中所示的存储器系统的固件的一个实例的方框图。

图3是示出了扩展寄存器的读取命令的一个实例的方框图。

图4是示出了将通过读取命令实施的扩展寄存器的读取操作的时序 图。

图5是示出了将通过读取命令实施的数据端口的读取操作的时序图。

图6是示出了扩展寄存器的写入命令的一个实例的方框图。

图7A、7B和7C是分别示出了掩码寄存器的操作的视图。

图8是示出了将通过写入命令实施的扩展寄存器的写入操作的时序 图。

图9是示出了将通过写入命令实施的数据端口的写入操作的时序图。

图10是示出了将被设定到扩展寄存器的第一页的一般信息字段的一 个实例的视图。

图11是示出了遵循读取命令的存储器系统的一个操作实例的流程图。

图12是示出了遵循写入命令的存储器系统的一个操作实例的流程图。

图13是示出了主机驱动程序的一个操作实例的流程图。

图14是示出了主机驱动程序的另一个操作实例的流程图。

图15是示意性地示出了SDIO中的扩展寄存器的存取操作的视图。

图16是示出了版次管理的一个实例的视图。

图17是示出了根据第二实施例的扩展寄存器的读取命令的一个实例 的视图。

图18是示出了根据第二实施例的扩展寄存器的写入命令的一个实例 的视图。

图19是示出了将通过读取命令实施的扩展寄存器的读取操作的时序 图。

图20是示出了将通过读取命令实施的数据端口的读取操作的时序图。

图21是示出了将通过写入命令实施的扩展寄存器的写入操作的时序 图。

图22是示出了将通过写入命令实施的数据端口的写入操作的时序图。

图23是示出了将被设定在扩展寄存器的第一页的一般信息字段的一 个实例的视图。

图24是示出了根据第二实施例的遵循读取命令的存储器系统的一个 操作实例的流程图。

图25是示出了根据第二实施例的遵循写入命令的存储器系统的一个 操作实例的流程图。

图26是示出了根据第二实施例的扩展寄存器的多块读取命令的一个 实例的视图。

图27是示出了根据第二实施例的扩展寄存器的多块写入命令的一个 实例的视图。

图28A和28B是示出了根据第二实施例的一般信息的显示位置的一个 实例的视图。

图29是示出了根据第二实施例的存储器空间与SDIO空间之间的关系 的一个实例的视图。

图30是被显示来解释根据第二实施例的SDIO的初始化的简化的流程 图。

图31是示意性地示出了根据第二实施例的存储器器件与主机的功能 接口之间的关系的视图。

图32是被显示来解释根据第二实施例的缓冲器控制的示意性方框图。

图33是示出了功能标识代码的一个实例的视图。

具体实施方式

一般来说,根据一个实施例,一种存储器系统包括非易失性半导体存 储器器件、控制部分、存储器、扩展功能部分以及扩展寄存器。控制部分 控制非易失性半导体存储器器件。存储器是连接到控制部分的工作区域。 扩展功能部分由控制部分控制。扩展寄存器被提供在存储器上,并且具有 给定块长度,其可以定义扩展功能部分的扩展功能。控制部分处理第一命 令从而以给定数据长度的单位从扩展寄存器读取数据,并且处理第二命令 从而以给定数据长度的单位向扩展寄存器写入数据,扩展寄存器包括第一 区域和不同于第一区域的第二区域,被配置成指定扩展功能和可控驱动程 序的类型的信息以及表明将把扩展功能指派到扩展寄存器上的某一位置的 地址信息被记录在第一区域中,并且第二区域包括扩展功能。

在例如SD卡之类的存储器器件中,当将要扩展功能时,设定新的标准, 并且根据所述标准来扩展功能。相应地,在没有定义标准的情况下难以扩 展功能。

举例来说,在例如SD卡和主机设备之类的存储器器件中,还没有定义 标准功能的扩展方法。相应地,除了在特定的主机器件中之外,还不可能 使得添加到存储器器件的功能可以很容易地使用。这是在向存储器器件添 加新功能方面的一个阻碍。

此外,由于主机控制器在其功能方面受到限制,因此出现了无法使用 添加到存储器器件的功能的情况。更具体来说,在许多情况中,用于存储 器的主机控制器不支持中断,或者与小于512字节的数据读取/写入不兼 容。特别在SDIO标准中,虽然定义了可变长度块的多块传输,但是专用于 存储器的主机在许多情况中无法实施这样的数据传输。相应地,在例如数 码相机和PHS之类的外设中,在扩展具有接口功能的SDIO卡或者通过把 SDIO卡合并到SD卡中而获得的组合卡的功能时,必须在主机系统中安装 对应于所扩展功能的功能驱动程序,并且在不改变主机驱动程序的情况下 不可能识别出功能驱动程序。

此外,主机使用被配置成指定卡/器件的卡地址(RCA)和器件ID。虽 然在单一功能卡/器件的情况下可以通过使用三个信息项来指定一项功能, 但是问题在于不可能通过仅仅使用卡地址来指定多功能器件的其中一项功 能。相应地也就不可能使用多功能器件,除非被配置成管理主机系统的软 件被改变从而使得软件可以与多功能卡/器件兼容。

此外,存储器中的控制器通常以512字节的单位对存储器进行存取。 相应地,当要重写所述512字节单位数据的当中一部分数据时,需要进行 读取-修改-写入操作。也就是说,例如当要重写512字节数据当中的1字 节数据时,需要把所述512字节数据读取到缓冲器中、在缓冲器上更新所 述1字节数据以及写入更新后的512字节数据的操作。因此控制效率很低。

此外一般来说,当要通过使用寄存器扩展卡的一项功能时,控制寄存 器被指派到特定地址。相应地,卡销售商不可能自由决定用于功能扩展的 地址位置。当要标准化所扩展的功能时,必须把多项功能指派到各个寄存 器位置,从而使得各项功能不会被重复指派,并且所出现的问题在于,取 决于所述功能的所支持状态,地址空间变得散漫而不连续。此外,当也要 实施销售商的原始功能时,所出现的问题在于无法自由地添加所述功能。

因此,该实施例提供了通过使用虚拟扩展寄存器实现功能扩展的功能 扩展措施,并且通过标准化可以借之找到相应的功能驱动程序的信息,所 述功能扩展措施具有灵活性。

下面将对该实施例进行示意性解释。

(功能扩展方法)

当主机驱动程序寻找被配置成控制附加功能的功能驱动程序并且相应 的功能驱动程序被安装在主机中时,通过采用被配置成把控制转移到功能 驱动程序的机制,有可能很容易地实施功能扩展。特定于功能的控制被隐 藏在功能驱动程序中,因此主机驱动程序有可能通过仅仅使用最少的信息 来实施附加的功能。举例来说,固件包括由该固件管理的多页扩展寄存器, 并且提供被配置成在扩展寄存器的页0中识别出特定驱动程序的标准一般 信息字段。因此主机系统就有可能实施即插即用功能。此外,通过由主机 系统实施管理从而使得可以指出每一项功能以便支持多功能卡/器件,有可 能在不改变主机软件的情况下使用多功能卡/器件。

(SD存储器或SDIO主机控制器的兼容性)

在SD存储器主机控制器中,也定义了被配置成对扩展寄存器进行存取 的专用命令,从而可以高效地实施对于附加功能的控制。通过传输512字 节的固定长度块,有可能从传送SD存储器主机控制器发出所述专用命令。 此外,通过在写入时具有关于有效数据长度或掩码功能的信息作为所述命 令的参量(argument),有可能使得读取-修改-写入操作不再必要。

在与SDIO卡兼容的主机控制器中,通过使得有可能从SDIO存取命令 对扩展寄存器进行存取,有可能与短长度块传输和多块传输兼容,从而有 可能制作进一步优化的驱动程序。

通过支持充当数据传输端口的数据端口,有可能实现需要更少数量的 扩展寄存器空间的实现方式。此外,通过使用数据端口,有可能高效地实 施去到除扩展寄存器之外的其他器件的数据传输。有可能通过使用多个块 而支持突发传输命令。关于数据端口,在实施所述功能时,有可能把扩展 寄存器的任意地址定义为数据端口。卡对所述地址进行译解,以便确定该 地址与数据端口还是扩展寄存器相关联。

(通过可重定位地址来定义扩展寄存器)

通过使得卡销售商有可能指派被配置成把附加功能控制到扩展寄存器 上的任意位置的寄存器,并且通过从所述一般信息字段提供关于所实施的 寄存器的地址信息,从而有可能使得寄存器设置是可重定位的。相应地, 传统上需要标准化的地址设置不再必要,并且很容易制造存储器器件。允 许重定位,从而即使在寄存器被扩展时,也很容易就可能应对所述扩展。

下面将参照附图描述一个实施例。

图1示意性地示出了根据该实施例的存储器系统。

所述存储器系统由例如SD卡之类的存储器器件11和主机20构成。

当存储器器件11连接到主机20时,存储器器件11接收电力供给以进 行操作,并且实施对应于来自主机20的存取的处理。存储器器件11包括 控制器11a。

控制器11a例如由主机接口12、CPU13、只读存储器(ROM)14、随 机存取存储器(RAM)15、缓冲器16和存储器接口17构成。这些组件通过 总线彼此连接。举例来说,NAND闪存18和充当扩展功能部分的SDIO19 连接到存储器接口17。作为扩展功能部分,例如可以采用无线LAN器件等 等。

主机接口12实施控制器11a与主机20之间的接口处理。

存储器接口17实施控制器11a与NAND闪存18或SDIO19之间的接口 处理。

CPU13是被配置成管理总体存储器器件11的操作的单元。被配置成 控制CPU13的程序通过使用存储器ROM14中的固件(控制程序等等)或 者通过把所述固件加载到RAM15中来执行预定处理。也就是说,CPU13 在RAM18上创建各种表和扩展寄存器(后面将进行描述),接收来自主机 20的写入命令、读取命令或擦除命令以便对NAND闪存18上的一个区域进 行存取,并且通过缓冲器16控制数据传输处理。

ROM14在其中存储固件,比如将由CPU13使用的控制程序。RAM15 被用作CPU13的工作区域,并且在其中存储控制程序、各种表和扩展寄存 器(后面将进行描述)。

当要把发送自主机20的数据例如写入到NAND闪存18中时,缓冲器 16在其中临时存储给定数量的数据(例如一页的数据),并且当要把读取 自NAND闪存18的数据发送到主机20时,缓冲器16在其中临时存储给定 数量的数据。此外,缓冲器16可以异步地控制SD总线接口和后端,这是 通过经由所述缓冲器实施控制而实现的。

NAND闪存18例如由层叠栅极结构的存储器单元或者MONOS结构的存 储器单元构成。

SDIO19具有例如数码相机和PHS之类的外设的功能以及接口的功能。 通过采用无线LAN器件作为SDIO19,即使对于没有无线通信功能的数码 相机也有可能在其本身与外部服务器、外部PC等等之间实施无线数据通 信。

作为主机20,例如可以采用数码相机、PHS等等。主机20由主机控制 器21、CPU22、ROM23、RAM24以及例如硬盘25(包括SSD)构成。这些 组件通过总线彼此连接。

CPU22控制总体主机。ROM23在其中存储对于CPU22的操作所必要 的固件。虽然RAM24例如被用作CPU22的工作区域,但是可以由CPU22 执行的程序也被加载到这里以供执行。硬盘25保存各种数据项。在其中存 储器器件11连接到主机控制器21的状态下,主机控制器21实施其本身与 存储器器件11之间的接口处理。此外,主机控制器21根据来自CPU22 的指令而发出各种命令(后面将进行描述)。

(固件的配置)

图2示出了存储在存储器器件11的ROM14中的固件的功能配置的一 个实例。这些功能由构成控制器11a的例如CPU13之类的硬件项的组合来 实现。所述固件例如由命令处理部分14a、闪存控制器14b、扩展寄存器处 理部分14c和功能处理程序14d构成。当存储器器件11被激活时,扩展寄 存器处理部分14c在RAM15中创建扩展寄存器31。扩展寄存器31是一个 虚拟寄存器,并且被允许定义扩展功能。在该实施例中,扩展寄存器不限 于虚拟寄存器。例如有可能把扩展寄存器提供为CPU13中的硬件。

(扩展寄存器的配置)

如图2中所示,CPU13例如由八页构成。一页由512字节构成。为了 以一个字节的单位存取512字节扩展存储器,需要至少9个比特的地址, 并且为了访问所述八页,需要至少3个比特的地址。通过总共12比特的地 址,使得扩展寄存器的全部空间都可存取。虽然512字节是可以由几乎所 有主机支持的存取单位,但是所述存取单位不限于512字节,而是可以大 于512字节。当扩展寄存器31由较长比特长度的地址字段构成时,一些低 位比特被用作存取单位,其余的高位比特则被用来选择多页当中的一页。

采取512字节为单位的原因在于,其配置使得大量存储器卡主机控制 器通过使用一个块(=512字节)作为单位来实施读取/写入传输。虽然与 SDIO兼容的主机控制器可以以一个字节的单位实施读取/写入,但是并非 所有主机控制器都支持前述读取/写入。为了使得绝大多数主机控制器能够 控制扩展功能,如果能够以512字节为单位实施存取则是便利的。

在所述八页(页0到页7)当中,页0是被配置成记录一般信息字段 以便实施扩展功能的即插即用操作的区域。后面将描述一般信息字段的细 节。在页1到7中定义了被配置成控制扩展功能的寄存器。在页0中可以 很容易指定一个位置,因此页0是记录一般信息字段的适当位置,但是将 在其中记录一般信息字段的页并不一定限于页0,可以把特定一页中的某 一位置定义为被配置成描述一般信息字段的位置。

对于扩展寄存器的读取/写入,使用将如下定义的专用读取/写入命令。 这些命令分别具有其中实施扩展寄存器的读取/写入的第一操作模式,以及 其中配置数据端口的第二操作模式。

(扩展寄存器的读取命令(CMD48))

图3示出了扩展寄存器的读取命令(CMD48)的字段配置的一个实例。 “S”表示命令的起始比特,“T”是表示传输方向的比特,“索引”表示 命令编号。“RS”(寄存器选择)表示扩展寄存器31中的一页,“OFS” 表示所选页中的一个数据位置(与该页的头部的偏移量)。通过使用3比 特的“RS”和9比特的“OFS”,可以以一个字节的单位指定对应于512 字节扩展寄存器的8页的空间。更具体来说,所选扩展寄存器中的读取起 始位置由“RS”和“OFS”指定。

“LEN”表示数据长度。对于512字节扩展寄存器中的读取所必要的有 效数据长度由该9比特LEN字段指定。

“CR7”表示循环冗余校验码,“E”表示命令的结束比特。此外,“rsv” 表示备用比特。

(扩展寄存器的读取命令,第一操作模式)

图4示出了将在第一操作模式下实施的扩展寄存器的读取操作的一个 实例。

如图4中所示,在接收到来自主机20的命令(CMD48)时,存储器器 件11向主机20返回响应(R1),并且随后从扩展寄存器31读取一个512 字节数据块。

更具体来说,通过所述命令(CMD48)的参量,即通过“RS”和“OFS”, 指定扩展寄存器中的一页以及将在该页中读取的数据位置,并且通过“LEN” 指定数据长度。按照前面描述的方式,所指定的扩展寄存器中的数据被设 定到所述512字节数据块的头部,并且被读取。在所述512字节数据块中 的各个数据块当中,其长度超出由“LEN”指定的数据长度的数据项变为无 效数据项。CRC代码被添加到所述数据块的最后一部分,从而使得有可能 检查数据是否被正确地接收(通过包括无效数据来实施数据检查)。有效 数据项被从头部开始设置,因此主机20没有必要实施例如数据偏移之类的 操作来寻找有效数据。

(扩展寄存器的读取命令,第二操作模式)

图5示出了将在第二操作模式下实施的数据端口读取操作的一个实 例。

在接收到命令(CMD48)时,存储器器件11返回响应(R1),并且随 后返回所述512字节数据块。

通过所述命令的参量“RS”和“OFS”,指定扩展寄存器的所选页中的 一个位置。在图5中示出了其中长度是“1”的情况的一个数据端口实例。 也就是说,如果数据端口仅仅占用扩展寄存器映射图上的一个字节的地址 就足够了。此外,如果有可能通过对一个地址解码区分出该地址是否数据 端口就足够了,而不必要把所述数据实际传送经过1字节宽度的端口,从 而不会对数据传输性能造成负面影响。有可能从被指派给该数据端口的器 件读取一块(512字节单位的)数据。也就是说,有可能每次读取一块(512 字节单位的)数据。所读取的数据例如被保存在缓冲器16中,并且随后由 主机20读取。

当随后对相同的数据端口进行读取时,可以读取随后的512字节数据。 可以通过扩展功能的规范自由定义将从数据端口读取数据的位置。关于数 据端口协议,可以通过例如在扩展寄存器上定义一个控制寄存器来实施控 制。把CRC代码添加到所述512字节数据块的最后一部分,从而使得有可 能检查所述数据是否被正确接收。

(扩展寄存器的写入命令(CMD49))

图6示出了扩展寄存器的写入命令的一个实例。在写入命令(CDM49) 中,与读取命令(CMD48)完全相同的部分由完全相同的附图标记表示。 写入命令和读取命令可以通过“索引”彼此区分。通过使用3比特的“RS” 和9比特的“OFS”指定扩展寄存器中的一页以及所选页中的数据位置。通 过9比特的“LEN”字段指定将要写入到512字节扩展寄存器中的数据长度。 相应地,有可能把512字节以内的任意数据长度(字节单位)的数据写入 到扩展寄存器的任意页和位置。

在命令参量中,写入命令(CMD49)提供有一个掩码寄存器。也就是 说,“掩码”表示一个8比特长度的掩码寄存器。通过所述掩码寄存器, 有可能在一个字节的数据写入中以一个比特的单位实施操作,并且仅仅向 一个特定比特写入数据。相应地,在一个字节内的比特操作中,不必要实 施读取-修改-写入操作。

当数据长度是一个字节时,也就是说在“LEN=0”(长度为1)的情况 下,掩码寄存器变为有效。关于具有数据“1”的掩码寄存器“掩码”的一 个比特,数据被写入到该比特,关于具有数据“0”的掩码寄存器“掩码” 的一个比特,保留已经设定的值。

也就是说,在假设图7A中示出的保存数据的扩展寄存器的情况下,如 果掩码寄存器的数据如图7B中所示,则通过执行写入命令,数据被写入到 如图7C中所示的具有数据“1”的掩码寄存器的一个比特,并且在具有数 据“0”的比特中,保留原始数据。相应地,有可能在不实施读取-修改- 写入操作的情况下仅仅重写所期望的比特。分别由“x”表示的部分示出了 将为之写入新数据的比特。

此外,当可以通过单独的措施供应更长的掩码数据时,即使在LEN大 于1(LEN>1)的情况下,尽管掩码写入被启用,但是在图7A、7B和7C所 示的实例中,掩码数据也被指派给命令参量,因此使用8比特掩码。

(扩展寄存器的写入命令,第一操作模式)

图8示出了将在第一操作模式下实施的扩展寄存器的写入操作的一个 实例。

在接收到命令(CMD49)时,存储器器件11返回响应(R1),并且随 后接收一个512字节数据块。

存储器器件11向主机20返回CRC代码,其表明所述数据块是否被正 确接收。随后,存储器器件11返回表明繁忙状态的信息,直到所述命令的 处理完成为止,并且向主机20通知主机20可以发出下一条命令的定时。 所述数据块被保存在缓冲器16中。

在命令处理过程中,扩展寄存器中的一页和位置由命令的参量“RS” 和“OFS”指定,并且数据长度由“LEN”指定。在保存在缓冲器16中的各 个数据块当中,分别具有由“LEN”指定的长度的各个数据项被从其头部开 始写入到扩展寄存器中。其长度超出由“LEN”指定的数据长度的数据块中 的数据被作为无效数据丢弃。

通过从数据块的头部开始设置有效数据项,主机系统不需要实施在数 据块的中部设置有效数据块的操作。

(扩展寄存器的写入命令,第二操作模式)

图9示出了将在第二操作模式下实施的写入数据端口操作的一个实 例。

在接收到命令(CMD49)时,存储器器件11返回响应(R1),并且随 后接收一个512字节数据块。

存储器器件11向主机20返回CRC代码,其表明所述数据块是否被正 确接收。随后,存储器器件11返回表明繁忙状态的信息,直到所述命令的 处理完成为止,并且向主机20通知主机20可以发出下一条命令的定时。 所述数据块被保存在缓冲器16中。

在命令处理过程中,扩展寄存器中的一页和位置被指定,并且数据端 口由命令的参量“RS”和“OFS”指定。如果数据端口仅仅占用扩展寄存器 映射图上的一个字节的地址就足够了。有可能把保存在缓冲器16中的一块 (512字节单位的)数据写入到被指派给该数据端口的器件。也就是说, 有可能每次写入一块的数据。

当随后对相同的数据端口进行写入时,可以把随后的512字节数据写 入到为之指派该数据的器件。可以通过扩展功能的规范自由定义将向该处 递送数据端口的数据的位置。关于数据端口协议,可以通过例如在扩展寄 存器上定义一个控制寄存器来实施控制。

(一般信息字段的使用实例)

图10示出了在扩展寄存器31的页0中示出的一般信息字段的一个实 例。通过使得主机20有可能通过使用所述一般信息字段来指定被配置来控 制扩展功能的驱动程序,在添加扩展功能时,主机系统有可能很容易地使 用扩展功能并且实现即插即用。

下面将参照图10描述将由标准主机驱动程序处理的一个序列实例。

(结构版次)

结构版次是被配置成定义扩展寄存器31的页0的格式的版次。当向一 般信息字段添加新的信息时,通过更新结构版次来表明一般信息字段的哪 一个版本被保存。先前版本的功能主机驱动程序忽略该新字段。

(数据长度)

作为一个数据长度,示出了记录在页0中的有效数据长度。

(扩展功能的数目(=N))

扩展功能的数目表明由器件支持的扩展功能的数目。在启动时,主机 驱动程序反复检查是否安全了对应于各项扩展功能的驱动程序,检查次数 对应于所支持的功能的数目。

(器件1功能标识代码)

当一项代码被设定到器件1功能标识代码时,其表明可以使用标准驱 动程序。当OS支持标准驱动程序时,可以在不安装专用驱动程序的情况下 使用所述器件。当安装了专用驱动程序时,优选地使用专用驱动程序。在 非标准功能的情况下,“0”被设定到该字段。在这种情况下,该功能仅由 专用驱动程序控制。

(器件1制造商标识信息,器件1功能标识信息)

器件1制造商标识信息和器件1功能标识信息当中的每一项是被配置 成指定专用驱动程序的信息,并且在这些字段中利用通过使用ASCII字符 串描述了制造商名称、发行商名称或者扩展功能的标识信息。在这些信息 项的基础上,主机驱动程序检查是否安装了器件1的专用驱动程序。

作为功能标识信息,例如通过使用ASCII字符串描述了器件的型号、 版次等等。

(下一个器件的开始地址)

下一个器件的开始地址表明在该处描述下一个器件的器件信息的页0 中的一个地址。当主机系统不支持该器件时,该器件无法被使用,因此对 下一个器件进行检查。该开始地址之后的字段具有可变长度,因此其定义 被设定到该位置。

(器件1地址指针1到X,长度字段1到X)

器件1地址指针1到X以及长度字段1到X表明对于一项功能可以定 义多个扩展寄存器区域。下面将列举各个地址和长度。长度字段不一定是 所需信息,并且可以省略该字段。

(器件1地址指针1(起始地址),长度1)

其表示由器件1使用的扩展寄存器的第一区域(其开始于扩展寄存器 的页1到7的空间中的地址)以及所使用的扩展寄存器区域的尺寸。

也就是说,可以把一个或多个扩展寄存器区域指派给一个器件,并且 所述地址指针表示除了页0之外的任意扩展区域的一个位置(起始地址)。 所述长度表示占用具有所述起始地址处的指针的扩展寄存器的尺寸。

(器件1地址指针2(起始地址),长度2)

其表示出被指派给器件1的扩展寄存器中的第二区域的位置和区域尺 寸。从而允许这样的应用:其中例如标准驱动程序仅在第一区域中实施控 制,并且允许专用驱动程序通过使用第一区域和第二区域高效地实施控制。

(器件1地址指针X(起始地址),长度X)

其表示出被指派给器件1的第X区域的位置和区域尺寸。

如前所述,在扩展寄存器可以定义多个区域。各个区域被设置成彼此 不重叠。有可能通过使用长度信息来检查在各个区域之间是否有重叠。

当附加字段变为必要时,此后附加地定义所述附加字段。无法识别出 新字段的主机读取可识别字段,并且忽略附加字段。可以通过使用前面提 到的(下一个器件的开始地址)字段实施跳跃。

(读取命令(CMD48)的操作)

图11示出了与读取命令(CMD48)兼容的存储器器件11中的控制器 11a的操作。

当接收到读取命令时,由CPU13分析所述命令的参量“RS”和“OFS”, 并且确定该读取命令是否是从数据端口读取(ST11)。也就是说,确定扩 展寄存器中的页“RS”和该页中的数据位置。其结果是,当确定读取命令 是从扩展寄存器读取时,从扩展寄存器31的所选页中的由“OFS”表示的 位置获取数据长度为“LEN”的数据(ST12)。所获取的数据被设定到缓冲 器16(ST13)。

另一方面,当在步骤ST11中确定读取命令是从数据端口读取时,则在 第二操作模式下,例如通过扩展寄存器31的所选页的由“OFS”表示的位 置的数据端口从SDIO19的特定功能获取512字节的数据(ST14)。所获 取的数据被设定到缓冲器16(ST15)。

(写入命令(CMD49)的操作)

图12示出了与写入命令(CMD49)兼容的存储器器件11中的控制器 的操作。

当接收到写入命令时,由CPU13(命令处理部分14a)分析所述命令 的参量“RS”和“OFS”,并且确定该写入命令是否是写入到数据端口(ST21)。 也就是说,确定扩展寄存器中的页“RS”和该页中的数据位置。当作为结 果确定写入命令是写入到不同于数据端口的一部分,则确定所述命令的参 量“LEN”是否为0(“LEN”=0)(长度1),也就是确定掩码是否有效(ST22)。 当作为所述确定的结果确定“LEN”不为0时(长度大于1),则由扩展寄 存器处理部分14c实施扩展寄存器的写入处理。也就是说从缓冲器16获取 由“LEN”指定的长度的数据。所获取的数据被设定到由“RS”选择的扩展 寄存器页中的由“OFS”指定的位置。

另一方面,当在步骤ST22中确定“LEN”为0(“LEN=0”)(长度为 1)并且掩码有效时,由扩展寄存器处理部分14c从缓冲器16获取1字节 的数据和1字节的掩码(ST25)。通过使用所述1字节的数据和1字节的 掩码,执行图7A、7B和7C中示出的掩码操作,并且重写由“RS”选择的 扩展寄存器页中的由“OFS”指定的位置的数据部分(ST26)。

此外,当在步骤ST21中确定写入命令是写入到数据端口时,从缓冲器 16获取512字节的数据(ST27)。通过扩展寄存器31的所选页中的由“OFS” 表示的位置的数据端口,所获取的数据被传输到例如SDIO19的特定功能 (ST28)。

(主机驱动程序处理)

图13示出了主机20的处理。当存储器器件11连接到主机20时,存 储器器件11被激活,并且扩展寄存器31被散布在存储器器件11的RAM15 上。主机器件11首先通过使用主机驱动程序发出读取命令(CMD48),并 且获取扩展寄存器31的页0的数据(ST31)。随后确认所获取的页0的结 构版次,并且还确认一般信息字段的哪一个版本被保存(ST32)。随后获 取所支持的功能的数目N以及器件信息的开始地址(ST33,ST34)。

随后通过搜索来检查在主机20中是否安装了对应于所获取的扩展功 能的专用功能驱动程序(ST35,ST36)。当作为所述检查的结果没有专用 功能驱动程序时,则进一步确定在扩展寄存器的页0中描述的功能标识代 码是否为“0”(ST37)。其结果是,当功能标识代码为“0”时,所述扩 展功能不受支持,因此识别出该器件无法被使用,从而所述处理转而搜索 对应于下一个器件的驱动程序(ST34)。

此外,作为步骤ST37的确定的结果,当功能标识代码不为“0”时, 搜索安装在主机20中的标准功能驱动程序(ST38,ST39)。其结果是,当 没有标准功能驱动程序时,该扩展功能不受支持,因此识别出该器件无法 被使用,从而所述处理转而搜索对应于下一个器件的驱动程序(ST34)。

此外,作为步骤ST35和ST36的搜索的结果,当存在标准功能驱动程 序时,并且作为步骤ST35和ST36的搜索的结果,当存在专用功能驱动程 序时,获取在页0中描述的器件地址和长度数目(ST40)。这一操作的执 行次数对应于地址和长度的数目(ST41)。

随后,例如从主机20的硬盘25把所获取的专用功能驱动程序或标准 功能驱动程序加载到RAM24中,把页0中描述的一个或多个扩展区域的地 址指针(起始地址)递送到功能驱动程序,并且初始化扩展功能(ST42)。 在执行被加载到RAM24中的功能驱动程序时递送所述地址和长度信息。虽 然标准功能驱动程序和专用功能驱动程序在可递送地址和长度信息项的数 目方面可能彼此不同,但是仍然按照寄存在页0中的顺序通过可递送项的 数目来递送各个信息项。相应地,首先被寄存的地址和长度区域充当共同 功能寄存器,后来寄存的地址和长度区域则可以作为选项。

初始化由功能驱动程序实施。也就是说,在从主机驱动程序递送的起 始地址的基础上,功能驱动程序对该功能所指派的扩展寄存器进行存取以 便初始化器件。在初始化操作中,必须考虑器件的功率消耗。这是因为所 述器件必须被使用在可以由主机供给的功率范围内。当器件具有多个功率 模式时,必须选择低于可以由主机供给的器件功率的功率模式。主机系统 通过单独的装置把可以由主机系统供给的功率传送到功能驱动程序,从而 允许选择功率模式。

重复前面的步骤ST34到ST43的操作,直到达到所支持功能的数目N 为止(ST43)。

应当提到的是,例如当把新的字段添加到页0时,则把对于该新字段 的处理添加到步骤ST40到步骤ST41之间的一部分。无法识别该新字段的 主机驱动程序被配置成跳过该字段。

如前所述,主机20获取扩展寄存器31的页0的信息,并且在该信息 的基础上获取驱动程序,从而可以实现即插即用。此外,与传统情况不同, 器件销售商可以在扩展寄存器的任意位置处定义功能而不需要确定扩展寄 存器的固定位置,从而可以很容易地实施功能扩展。

图14示出了图13的一个修改实例,与图13完全相同的部分由完全相 同的附图标记表示,下面将仅仅描述不同的部分。

在图14中,专用功能驱动程序和标准功能驱动程序在搜索处理方面彼 此不同。也就是说,在步骤ST34中,在获取器件信息的开始地址之后,首 先确定功能标识代码是否为“0”(ST51)。作为所述确定的结果,当功能 标识代码不为“0”时,也就是说当所述功能是标准功能时,进一步确定是 否要使用专用驱动程序(ST53)。作为所述确定的结果,当不使用专用驱 动程序时,则搜索标准功能驱动程序(ST54,ST55)。当作为所述搜索的 结果没有标准功能驱动程序时,或者当在步骤ST53中确定使用专用功能驱 动程序时,则搜索专用功能驱动程序(ST52,ST56)。当作为所述搜索的 结果存在专用功能驱动程序时,或者当在步骤ST55中存在标准功能驱动程 序时,如前所述地获取地址和长度数目(ST40)。

同样通过前面的操作,有可能像图13中的情况那样实现即插即用。

应当提到的是,在前面的描述中描述了将扩展功能驱动程序安装在主 机20中,并且在主机20内部进行搜索。但是所述配置不限于此,并且扩 展功能驱动程序也可以被存储在存储器卡11中。在这种情况下,存储器卡 11也成为扩展功能驱动程序的搜索对象。

图33示出了当卡具有各种选项并且各个功能驱动程序根据所述选项 而不同时的用于指定功能驱动程序的信息。如图33中所示,功能标识代码 表明两种信息,即选项代码和功能代码。功能代码表明标准化的具体功能 规范,并且选项的种类也由功能规范定义。选项代码是表明实施在卡中的 选项是否影响功能驱动程序的信息。该例示出了关于是否支持CMD48/49 的信息以及关于是否支持CMD52/53的信息。当选项代码是1字节时,利用 CMD48/49的驱动程序由“01h”(“h”表示十六进制数)表示,并且利用 CMD52/53的驱动程序由“02h”表示。当在主机系统中安装驱动程序时, 这些代码被寄存为功能驱动程序实施代码。为之安装了两个驱动程序的主 机系统具有全部两个选项代码“01h”和“02h”。

在被设计成使用CMD48/49的卡中,“01h”在选项代码中被表明。主 机系统基于选项代码选择用于CMD48/49的驱动程序。此外,在被设计成使 用CMD52/53的卡中,“02h”在选项代码中被表明。主机系统基于选项代 码选择用于CMD52/53的驱动程序。

很重要的是主机驱动程序不需要具有关于所述选项的信息,并且可以 制作通用主机驱动程序。关于选项的信息在安装功能驱动程序时为主机系 统给出。由于主机驱动程序不需要关于选项的信息,因此主机驱动程序不 需要在安装新卡时更新主机驱动程序。功能规范可以自由决定选项的内容, 并且通过在主机系统中安装对应于各种选项的组合的两个或更多功能驱动 程序,可以根据卡的支持状态来选择最优的功能驱动程序。

(对于SDIO中的扩展寄存器的存取)

图15示出了对于SDIO中的扩展寄存器的存取。

与SD存储器卡兼容的主机控制器可以通过使用命令CMD48和CMD49 对扩展寄存器进行存取,并且控制扩展功能。也就是说,主机控制器支持 固定长度块传输和单块传输。

另一方面,与SDIO卡兼容的主机控制器被允许使用命令CMD48和CMD 49对扩展寄存器进行存取,并且扩展寄存器被映射到SDIO的每一个功能 区域上,从而使得主机控制器有可能也从SDIO命令CMD52(写入命令) 和CMD53(数据传输命令)对扩展寄存器进行存取。通过使用SDIO命令, 有可能支持可变块长度传输和多块传输,并且优化驱动程序。当通过使用 命令CMD48和CMD49进行存取时,有可能在与SDIO的空间映射无关的情 况下对扩展寄存器进行存取。

更具体来说,当在SDIO中使用扩展寄存器时,扩展寄存器的每一页都 被映射到每一个功能区域上。在图15所示的实例的情况中,扩展寄存器的 页0被映射到功能区域61的功能0上,页1和页2被映射到功能1上,并 且页3被映射到功能2上。功能0保存表明各页的功能寄存器被设置在SDIO 映射图上的位置的地址信息。相应地,通过使用所述地址信息,有可能不 仅通过使用命令CMD48和CMD49的驱动程序而且还通过使用命令CMD52 和CMD53的驱动程序对扩展寄存器的每一页进行存取。

应当提到的是,主机20把关于被指派给扩展功能的扩展寄存器的位置 信息从在扩展寄存器的第一页中描述的一般信息字段递送到驱动程序。从 而即使当扩展功能被设置在任意位置处时也有可能控制扩展功能。

此外,在主机20与存储器器件11之间允许通过即插即用来进行数据 传输的状态下,有可能通过使用命令CMD48、CMD49、CMD52和CMD53 在主机20与充当扩展功能部分的SDIO之间实施数据传输。

根据前面的实施例,在存储器器件11的RAM15中提供包括多页的扩 展寄存器,并且被配置成识别特定驱动程序的标准一般信息字段被设定在 扩展寄存器31的页0中。相应地,主机20通过参照扩展寄存器31的页0 中的一般信息字段而设定驱动程序,从而可以实现即插即用。

此外,通过定义被互斥地用来对扩展寄存器进行存取的命令CMD48 和CMD49,用于存储器的主机控制器还可以高效地控制所添加的功能。

此外,使得数据传输成为512字节固定块长度的传输,因此可以从用 于存储器的传统主机控制器发出被配置成对扩展寄存器进行存取的专用命 令。

此外,关于写入时的有效数据长度或掩码功能的信息被设定为所述命 令的参量,因此当要重写数据的一部分时,不需要进行读取-修改-写入操 作,而是可以很容易重写数据的一部分。

此外,与SDIO卡兼容的主机控制器支持数据端口,因此有可能实施针 对特定具体器件的数据传输,并且实现允许减少所消耗的扩展寄存器空间 的数量的实现方式。

此外,通过使用数据端口,有可能支持基于SDIO中的多个块的突发传 输命令,并且高效地实施除存储器之外的其他器件的数据传输。(虽然在 该实施例中未做描述,但是在存储器中也是一样,当定义了基于多个块的 突发传输命令时,允许传输多个块。)

此外,通过使用SDIO的存取命令,有可能通过对扩展寄存器进行存取 而使得与SDIO卡兼容的主机控制器与短长度块传输和多块传输兼容。相应 地有可能创建进一步优化的驱动程序。

此外还使得卡销售商有可能把被配置成控制附加功能的寄存器指派到 扩展寄存器上的任意位置,从而卡销售商从页0中的一般信息字段提供关 于所实施的寄存器的地址信息。相应地,有可能按照可重定位的方式来设 置所定义的功能寄存器。相应地使得在传统上需要标准化的确定地址指派 的工作不再必要,并且有可能促进器件的制造。

应当提到的是,扩展寄存器的配置不限于多页,而是还有可能使得扩 展寄存器由一页构成,并且把对应于页0以及页1到7的各个区域设定在 所述一页之内。

(通过版次确认来确定可用功能)

前面描述的每一项功能都配备有被配置成表明关于由该功能定义的扩 展寄存器集合的版次的寄存器。此外,功能驱动程序本身知晓相应的版次。 当要通过版次改进来扩展特定功能时,有可能通过在保持与传统功能的兼 容性的同时扩展功能来保持兼容性。在使用可移除卡时,可用功能由卡的 功能版次与安装在主机系统中的功能驱动程序的版次的组合决定。

图16示出了版次管理的一个实例。图16示出了根据卡和功能驱动程 序当中的每一项的版次而可用的功能的实例。举例来说,下面将描述存在 三个版次(A<B<C)的情况。在这种情况下,实施其中C包括B的功能并且 B包括A的功能的扩展。版次管理由功能驱动程序实施。功能驱动程序本 身知晓其自身的版次。在图16中示出的各种组合的基础上确定可用功能。 在所有功能驱动程序版次中,可以使用版次A的功能,并且为了使用版次 B的功能,功能驱动程序的版次必须高于或等于B。

(第二实施例)

图17和18分别示出了根据第二实施例的读取命令CMD48和写入命令 CMD49的字段配置的一个实例。应当提到的是,在图17和图18中,与图 3和图6完全相同的部分由完全相同的附图标记标示,并且省略对其的描 述。

图17和图18中所示的命令CMD48和CMD49是图3和图6中所示的 命令CMD48和CMD49,在每一个所述命令中,由12比特的“RS”和“OFS” 构成的地址字段被扩展到由“FNO”和“Addr”构成的20比特,从而考虑 对/与SDIO的亲和性/兼容性。

“MIO”字段是将存储器空间与SDIO空间彼此分开的一个比特,从而 允许全部两个空间彼此独立地定义扩展寄存器。相应地,在定义扩展寄存 器时,有可能防止所述两个空间彼此干扰。当“MIO”为0时(“MIO”=0), 可以对用于存储器的扩展寄存器进行存取,并且当“MIO”为1时(“MIO” =1),可以对用于SDIO的扩展寄存器进行存取。

根据“MIO”字段的值,“FNO/FID”字段被设定到“FNO”和“FID” 的其中之一。当“MIO”为1时(“MIO”=1),“FNO”是表明功能数目的 3比特字段,当“MIO”为0时(“MIO”=0),“FID”是表明功能标识信 息的4比特字段。由于不同的比特数,使用不同的符号来进行表达。当要 读取前面提到的一般信息字段时,“FNO/FID”被设定到0(“FNO/FID” =0)。如果主机驱动程序把该字段设定到0就足够了。虽然“FID”没有被 使用在存储器空间中,但是“FNO”被使用在SDIO空间中以区分八个功能 空间。

也就是说,关于“FNO/FID”(4比特),当“MIO”为1时(“MIO” =1),比特38到36表明“FNO”,并且比特35总是为“0”。

此外,关于“FNO/FID”,当“MIO”为0时(“MIO”=0),比特38 到36表明“FID”。“FID”被用来在不增加存储器空间的情况下区分各项 功能。

(可以通过使用“FID”来增加存储器空间,这方面不受限制。)

当要在卡中实施一项功能时,为“FID/FNO”指派一个唯一值并且在一 般信息的字段定义中表明,正如后面将描述的那样。相应地,当向数据端 口发出一条命令时,功能驱动程序把“FID/FNO”设定为一个参量,从而使 得卡有可能确认所述命令是对应于所指定的功能的命令。相应地,有可能 防止由于错误数据端口的指定而导致的数据破坏和故障并且防止错误写入 的发生,从而确保了安全性。

虽然当主机尝试从地址信息指定功能时,主机必须对地址信息进行解 码,但是通过仅仅使用“FID/FNO”允许进行功能区分,并且可以简化主机 驱动程序的控制。也就是说,相同的命令按照混合方式被多项功能使用, 因此在主机和卡中,“FID/FNO”被设定成使得可以区分各项功能。

“Addr”字段(17比特)是一个地址,并且可以对128KB的空间进行 存取。“Addr”的高位8个比特被用作页编号。通过所述8个比特选择页 0到7的其中之一。通过低位9个比特对所选页中的一个512字节块进行 存取。也就是说,通过使用“MIO”、“FNO”(“MIO”=1)和“Addr”, 指定扩展寄存器的一个位置。

图17中所示的“Len”字段(8比特)表明有效数据长度。

此外,在图18所示的写入命令(CMD49)中,“MW”是被用来指定掩 码写入模式的一个比特。当“MW”为0时(“MW”=0),掩码被禁用,当 “MW”为1时(“MW”=1),掩码被启用。

此外,在“Len/掩码”字段中,当掩码被禁用时(“MW”=0),数据 长度被设定到9个比特(16到08)。此外,当掩码被启用时(“MW”=1), 数据长度被设定到1,并且如前所述通过所述9个比特(16到08)当中的 低位8个比特来控制写入操作。也就是说,当所述8个比特当中的每一个 比特是“1”时,寄存器的数据被写入,并且当每一个比特是“0”时,寄 存器中的比特不发生改变,并且保持已经设定的值。

在第二实施例中,有可能使得可以通过SDIO命令CMD52和CMD53 存取的空间与可以通过命令CMD48和CMD49存取的SDIO空间彼此重合。 也就是说,有可能通过使用任一条命令对相同的扩展寄存器集合进行存取。

(扩展寄存器的读取命令,第一操作模式)

图19示出了将在扩展寄存器的读取命令(CMD48)的第一操作模式下 实施的扩展寄存器的读取操作的一个实例。

如图19中所示,在接收到来自主机20的命令(CMD48)时,存储器 器件11向主机20返回响应(R1),并且随后从扩展寄存器31读取一个 512字节数据块。

更具体来说,通过“FNO”(MIO=1)和“Addr”指定将要读取的页中 的一个位置,并且通过“Len”指定将要读取的有效数据长度。这样,所指 定的扩展寄存器中的数据就被设定到所述512字节数据块的头部,并且随 后将其读取。在该512字节数据块当中,超出由“Len”指定的数据长度的 数据变为无效数据。将CRC代码添加到该数据块的末尾,从而使得有可能 检查所述数据是否被正确接收(通过包括无效数据来实施数据检查)。

图20示出了将在第二操作模式下实施的数据端口的读取操作的一个 实例。

在接收到命令(CMD48)时,存储器器件11返回响应(R1),并且随 后返回所述512字节数据块。

存储器器件11验证所述命令的参量“FID/FNO”是否与所指派的扩展 寄存器集合相符。所述扩展寄存器集合由“FNO”(“MIO”=1)和“Addr” 指定。当“FID/FNO”与扩展寄存器集合彼此相符时,通过所述命令的参量 “Addr”指定扩展寄存器的所选页中的一个位置。如果数据端口仅仅占用 扩展寄存器映射图上的一个字节的地址就足够了。如果通过对一个地址解 码区分出该地址是否数据端口就足够了,而不必要把所述数据实际传送经 过1字节宽度的端口,从而不会对数据传输性能造成负面影响。有可能从 被指派给该数据端口的器件读取一块(512字节单位)的数据。也就是说, 有可能每次读取一块(512字节单位)的数据。所读取的数据例如被保存 在缓冲器16中,并且随后由主机20读取。

当随后对相同的数据端口进行读取时,可以读取随后的512字节数据。 可以通过扩展功能的规范自由定义将从数据端口读取数据的位置。关于数 据端口协议,可以通过例如在扩展寄存器上定义一个控制寄存器来实施控 制。把CRC代码添加到所述512字节数据块的最后一部分,从而使得有可 能检查所述数据是否被正确接收。

此外,作为前面的验证的结果,当“FID/FNO”与被指派给所述功能的 值不相符时,则不执行数据传输操作,并且不传输数据块。

(扩展寄存器的写入命令,第一操作模式)

图21示出了扩展寄存器的写入命令的一个实例。

在接收到命令(CMD49)时,存储器器件11返回响应(R1),并且随 后接收一个512字节数据块。

存储器器件11向主机20返回CRC代码,其表明所述数据块是否被正 确接收。随后,存储器器件11返回表明繁忙状态的信息,直到所述命令的 处理完成为止,并且向主机20通知主机20可以发出下一条命令的定时。 所述数据块被保存在缓冲器16中。

在写入命令(CMD49)中,与读取命令(CMD48)完全相同的部分由 完全相同的附图标记标示。写入命令和读取命令可以通过“索引”彼此区 分。通过17比特的“FNO”(“MIO”=1)和“Addr”指定扩展寄存器中的 一页以及所选页中的一个数据位置。此外,通过9比特的“Len”字段指定 将要写入到512字节扩展寄存器中的数据长度。相应地,有可能把512字 节以内的任意数据长度(字节单位)的数据写入到扩展寄存器中的任意页 和位置。

如前所述,在写入命令(CMD49)中,在所述命令的参量中提供一个 掩码寄存器。也就是说,“掩码”标示一个8比特长度的掩码寄存器。通 过所述掩码寄存器,有可能在一个字节的数据写入中以一个比特的单位实 施操作,并且仅仅向一个特定比特写入数据。相应地,在一个字节内的比 特操作中,不必要实施读取-修改-写入操作。当数据长度是一个字节时, 也就是说当“掩码”的高位1比特是“1”时,掩码寄存器变为有效。

(扩展寄存器的写入命令,第二操作模式)

图22示出了将在第二操作模式下实施的写入数据端口的操作的一个 实例。在接收到命令(CMD49)时,存储器器件11返回响应(R1)。随后, 存储器器件11验证所述命令的参量“FID/FNO”是否与扩展寄存器集合相 符。扩展寄存器集合由“FNO”(“MIO”=1)和“Addr”指定。当“FID/FNO” 与扩展寄存器集合彼此相符时,通过所述命令的参量“Addr”指定扩展寄 存器的所选页中的一个位置,并且接收512字节数据块。

随后,存储器器件11向主机返回CRC代码,其表明所述数据块是否被 正确接收。随后,存储器器件11返回表明繁忙状态的信息,直到所述命令 的处理完成为止,并且向主机20通知主机20可以发出下一条命令的定时。 所述数据块被保存在缓冲器16中。

在命令处理过程中,指定扩展寄存器中的一页和位置,并且通过所述 命令的参量“Addr”指定一个数据端口。如果数据端口仅仅占用扩展寄存 器映射图上的一个字节的地址就足够了。有可能把保存在缓冲器16中的一 块(512字节单位)的数据写入到被指派给该数据端口的特定器件。也就 是说,有可能每次写入一块的数据。

当随后对相同的数据端口进行写入时,可以把随后的512字节数据写 入到为之指派该数据的器件。可以通过扩展功能的规范自由定义将向该处 递送数据端口的数据的位置。关于数据端口协议,可以通过例如在扩展寄 存器上定义一个控制寄存器来实施控制。

此外,作为前面的验证的结果,当“FID/FNO”与被指派给所述功能的 值不相符时,则不执行数据传输操作,并且丢弃数据块。

(一般信息字段的使用实例)

图23是示出了根据第二实施例的与FID的指定相关联的一个实例的视 图。所述一般信息字段的含义与图10完全相同。与图10的不同点在于, 固定一个4比特字段,以便通过扩展地址和长度字段的形式设定“FID/FNO” 的值。对于每一项功能设定一个唯一的“FID/FNO”。被实施在卡中的每一 项功能知晓其自身的“FID/FNO”。

(读取命令(CMD48)的操作)

图24示出了对应于图19和图20中所示的读取命令(CMD48)的存储 器器件11中的控制器11a的操作。

当接收到读取命令时,由CPU13验证所述命令的参量“FID/FNO”是 否与所指派的扩展寄存器集合相符(ST51)。扩展寄存器集合由“FNO”(“MIO” =1)和“Addr”指定。作为所述验证的结果,当二者彼此相符时,对所述 命令的参量“Addr”进行分析,并且确定所述读取命令是否是从数据端口 读取(ST52)。也就是说,确定所述地址是否是由“FNO”(“MIO”=1) 和“Addr”定义为数据端口的地址。

其结果是,当确定所述地址不是数据端口的地址并且所述命令是对于 扩展寄存器的读取时,在第一操作模式下基于位置“Addr”从扩展寄存器 31的所选页获取数据长度为“Len”的数据(ST53)。所获取的数据长度 为“Len”的数据被设定到缓冲器16的512字节数据块(ST54)。

另一方面,当在步骤ST52中确定读取命令是从数据端口读取时,例如 在第二操作模式下通过在扩展寄存器的所选页中预先设定的一个位置的数 据端口从SDIO19的特定功能获取512字节的数据(ST55)。所获取的数 据被设定到缓冲器16的512字节数据块(ST56)。

作为前面描述的步骤ST51的确定结果,当所述命令不是与数据端口相 关联的命令时,所述处理终止。

(写入命令(CMD49)的操作)

图25示出了对应于写入命令(CMD49)的存储器器件11中的控制器 的操作。

当接收到写入命令时,由CPU13(命令处理部分14a)验证所述命令 的参量“FID/FNO”是否与所指派的扩展寄存器集合相符(ST61)。扩展寄 存器集合由“FNO”(“MIO”=1)和“Addr”指定。作为所述验证的结果, 当二者彼此相符时,对所述命令的参量“Addr”进行分析,并且确定所述 写入命令是否是写入到数据端口(ST62)。也就是说,确定所述位置是否 是由“FNO”(“MIO”=1)和“Addr”预先设定的数据端口的位置。

作为前面的确定的结果,当确定所述写入命令是写入到除数据端口之 外的一部分时,则确定所述命令的参量“MW”是否为“1”,也就是说确定 所述写入是否掩码写入(ST63)。

作为所述确定的结果,当确定所述写入不是掩码写入时,则通过扩展 寄存器处理部分14c实施扩展寄存器的写入处理。也就是说,从缓冲器16 的数据块获取由“Len”指定的长度的数据(ST64)。所获取的数据基于“Addr” 被设定到扩展寄存器的所选页中的指定位置(ST65)。

另一方面,当在步骤ST63中确定“MW”为“1”(“MW”=“1”)并 且所述写入是掩码写入时,通过扩展寄存器处理部分14c从缓冲器16的数 据块获取1字节的数据,并且从所述参量获取1字节的掩码(ST66)。

随后通过使用所述1字节的数据和1字节的掩码执行图7A、7B和7C 中所示的掩码操作,并且把执行所述1字节的掩码操作时获得的数据设定 到由“Addr”指定的扩展寄存器的预定页中的预定位置(ST67)。

此外,当在步骤ST62中确定写入命令是写入到数据端口时,则从缓冲 器16的数据块获取512字节的数据(ST68)。例如通过扩展寄存器的指定 页中的一个位置的数据端口把所获取的数据发送到SDIO19的特定功能 (ST69)。

作为前面描述的步骤ST61的结果,当写入命令不是与数据端口相关联 的命令时,所述处理终止。

(CMD58,CMD59)

图26和图27分别示出了被配置成改进数据传输效率的多块传输命令, 图26示出了多块读取(CMD58),图27示出了多块写入(CMD59)。

虽然命令CMD58和CMD59的参量类似于命令CMD48和CMD49的参 量,但是其在定义方面彼此有部分不同。此外,命令CMD58不具有命令 CMD48的参量“Len”,并且命令CMD59不具有命令CMD49的参量“MW” 和“Len/掩码”。这是因为在多块传输中假设是针对数据端口的传输。命 令CMD58和CMD59是可选命令,并且数据端口被配置成使得可以用多条 单块传输命令CMD48或CMD49来替代命令CMD58或CMD59。

在多块传输中假设通过数据端口的数据传输。相应地,只有当该命令 的地址与被定义为扩展寄存器空间中的一个数据端口的地址相符时,该命 令才变为有效。相应地,当关于普通扩展寄存器执行该命令时会发生错误, 并且不会执行数据传输。

被配置成识别出为之使用了所发出的命令的功能的代码被设定到 “FID/FNO”字段(4比特)。相应地,通过使用“FID”字段,可以通过 其值识别出所述功能,并且便于实现。还可以通过使用“Addr”(地址) 字段来识别所述功能。但是将被指派的地址根据卡而不同,因此问题在于 主机驱动程序难以管理从地址识别功能。

主机驱动程序有可能对于每一项功能使用实施在主机系统中的一个缓 冲器等等来切换控制。

命令CMD58/59的参量不包括被配置成指定数据长度的“Len”字段。 这是因为对于较长数据的数据传输来说,必须指定较长的块计数,该信息 过多因此无法由读取/写入命令的参量来指定。相应地,必须在发出命令 CMD58/59之前指定对于数据传输所必要的块计数。相应地,例如使用一 种定义一个被配置成把块计数设定到扩展寄存器的寄存器并且通过使用命 令CMD49来设定该寄存器的方法,并且使用一种紧接在发出命令CMD58/59 之前发出被配置成设定块计数的命令的方法等等。

在把块数目设定到扩展寄存器时,将其设立的CMD49的“FID/FNO” 与执行数据传输的CMD58/59的“FID/FNO”需要是相符的。当二者不相符 时,不施行数据传输。

当把数据设定到扩展寄存器时,可以对于每一项功能独立地设定数据, 并且每一项功能不受其他功能的影响。当使用共同块计数命令时,把块计 数设定到存储器多块命令,并且需要对其进行区分。相应地,必须紧接在 发出每一条命令CMD58/59之前发出该命令,并且主机驱动程序必须管理 器发出顺序,从而使得不会在发出该命令之后立即发出其他命令。

为了使得主机可以指定多功能卡/器件的一项功能,需要通过初始化获 得的相对卡地址(RCA)、器件ID、前面提到的“MIO”信息以及“FNO/FID” 信息。

图28A和28B当中的每一幅图示出了根据第二实施例的一般信息字段 的显示位置的实例。在图28A所示的存储器空间中,一般信息字段被设置 在扩展寄存器的页0中,并且在图28B所示的SDIO空间中,一般信息字段 被设置在一个特定位置处,在该处所述字段不会与传统寄存器冲突。在图 28B中,对应于SDIO的一般信息例如被设置在“008FFh”-“00800h”(512 字节)处(“h”表示十六进制数)。

图29示出了根据第二实施例的存储器空间与SDIO空间之间的对应性 的一个实例。在图29中,与图15完全相同的部分由完全相同的附图标记 标示。

可以利用命令CMD48/49来对存储器扩展寄存器进行存取。更具体来 说,通过使用512字节的固定块长度实施单块传输。此外,在数据端口的 情况下,有可能通过使用命令CMD58/59来实施多块传输。不仅可以通过 命令CMD48/49而且还可以通过命令CMD52/53来对SDIO扩展寄存器进行 存取。命令CMD53是可变长度命令,因此可以被用于对SDIO扩展寄存器 进行存取而不管是否数据端口。

(功能驱动程序的安装)

通过由主机系统支持的功能来确定是否可以使用SDIO功能(CMD 52/53)。不支持SDIO的主机利用命令CMD48/49和CMD58/59来安装功 能驱动程序。支持SDIO的主机系统还可以利用命令CMD52/53来安装功能 驱动程序。

应当提到的是,命令CMD53是例如支持可变长度块传输和多块传输的 命令,并且可以被读取或写入,命令CMD52是例如不具有数据的命令,并 且允许通过参量和响应读取或写入1字节的数据。

命令CMD48/49的SDIO扩展寄存器空间等效于命令CMD52/53的空间。 命令CMD53支持可变长度块传输和多块传输,因此通过使用经过优化的 SDIO驱动程序,执行数据传输的效率更高。

正如支持命令CMD48/49的主机参照信息而不参照卡信息结构(CIS), 可以从功能0的特定位置看到SDIO的一般信息。

(功能驱动程序的选择)

关于SDIO兼容卡,在安装了利用命令CMD52/53的功能驱动程序时, 使用所述功能驱动程序,在没有安装所述功能驱动程序时,则使用利用命 令CMD48/49和CMD58/59的功能驱动程序。

关于SDIO不兼容卡,使用利用命令CMD48/49和CMD58/59的功能驱 动程序。

(SDIO的初始化操作)

图30示意性地示出了组合卡中的SDIO的第二初始化操作。

至此为止,给出了SDIO的初始化序列(第一初始化操作)的定义,其 中除非首先执行SDIO初始化命令(CMD5),则不允许SDIO功能。相应地, 即使当在组合卡中使用存储器时,在将要使用SDIO时也需要重新初始化, 从而使得主机难以使用所述规范。

通常希望紧接在使用I/O功能之前初始化所述功能,以免浪费系统资 源或浪费功率。关于功能初始化的定时,可以推荐的是在使用所述功能的 应用被激活的时间点实施初始化。

此外,在重新初始化中,相对卡地址(RCA)发生改变,从而会影响存 储器的存取方法。为了在不影响存储器控制的情况下启用SDIO功能,希望 使得存储初始化序列是基本的,并且可以在后来加入SDIO功能。

因此,如图30中所示,当存储器器件11被激活并初始化时(ST71), 发出一条命令(CMD3),并且获取相对卡地址(RCA)(ST72)。随后发 出一条命令(CMD7)(ST73),并且把存储器器件11设定到传输状态, 即可以使用存储器的状态(ST74)。随后设立卡的共同资源(ST75),比 如通过模式和功率消耗设定。在该状态下,发出SDIO的初始化命令(CMD5) (ST76)。从而初始化SDIO,并且允许接收命令CMD52和CMD53(ST77)。

在步骤ST76中,还有可能自动设立SDIO的共同资源。在传统上,存 储器和I/O具有独立的设定方法来控制共同资源。为此原因,包含在存储 器和I/O中的驱动程序需要被类似地调节。在第二初始化操作中,接收到 CMD5的卡把在ST75中设立的存储器的共同资源拷贝到I/O。因此不需要调 节每一个驱动程序。所述共同资源例如包含总线速度模式、RCA、电流极限 /功率极限以及驱动能力的设定等等。

这是对于所述初始化方法的补充,并且还可以通过传统的SDIO初始化 序列来实施初始化,并且传统序列具有兼容性。

根据前面提到的配置,在使用功能的应用被激活的定时处初始化所述 功能,因此有可能在不影响存储器控制的情况下初始化每一项功能。

(功能驱动程序接口)

至此为止是通过向共同寄存器指派必要的控制比特来控制SDIO。为了 通过向寄存器设定值来控制卡,所述卡需要实施处理功能。在实施特定处 理时,通过调用功能驱动程序,有可能通过功能驱动程序进行处理而不是 在卡内部进行处理。更具体来说,所述处理由主机施行。

当在传统上由卡通过共同寄存器实施的控制被定义为功能驱动程序的 应用程序接口(API)时,有可能把所述控制形成到软件中。通过标准化 API层级,可以促进卡的实现。

API的实例如下所示。

(1)初始化功能

从主机驱动程序调用功能以初始化所述功能

(2)退出/重设功能

退出或重设一项功能

(3)获得功能信息

读取功能版次

读取功能信息(支持信息等等)

读取中断信息(轮询)

(4)功率消耗控制

在所述功能中实施的功率模式信息

(5)断电通知

通知允许停电的定时

(6)应用接口

与应用的控制接口

具体来说,在其中实施多项功能的卡中,当卡的电力被关断时,主机 必须在把每一项功能带入到其中每一项功能允许停电的状态之后关断电 力。断电通知是被用于这一控制的API。

图31示意性地示出了充当存储器器件11的SD卡与主机20的功能接 口之间的关系。

主机20由主机控制器21、主机驱动程序71、文件系统72、存储器应 用73、功能驱动程序74和功能应用75构成。此外,充当存储器器件11 的SD卡包括扩展寄存器31以及例如由SDIO构成的功能硬件19。

在主机20中,主机驱动程序71支持检测并加载功能驱动程序74的功 能。也就是说,主机驱动程序71参照扩展寄存器的一般信息字段来检测功 能驱动程序74,并且执行功能驱动程序,从而使得主机驱动程序71可以 使用扩展功能。此外,被配置成控制扩展寄存器31的功能驱动程序74和 功能应用75通过由功能规范定义的API彼此通信。

SD卡包括前面提到的一般信息字段以用于标准化目的,从而使得由功 能规范定义的扩展寄存器31和主机驱动程序71可以找到并加载功能驱动 程序74。

主机控制器21、存储器器件11通过使用前面提到的命令CMD48/49 等等彼此通信。

根据前面描述的配置,通过把传统上在卡中实施的控制定义为功能驱 动程序的API,有可能把所述控制形成到软件中。此外,通过标准化API 层级,可以促进卡的实现。

此外,主机驱动程序71参照扩展寄存器的一般信息字段来检测功能驱 动程序74,并且执行功能驱动程序,从而使得主机驱动程序71可以使用 扩展功能。相应地,主机20可以很容易地使用扩展功能。

(通过“FID”控制数据缓冲器)

有可能使得存储器器件11通过识别地址信息来确定一条命令是针对 哪一项功能。但是地址范围根据功能而不同,因此主机20难以从地址识别 功能。

相应地,如前所述,通过使用“FID/FNO”有可能使得主机20很容易 地识别功能。

此外,例如有可能通过利用“FID/FNO”来控制主机20的多个缓冲器。

如图32中所示,主机20包括缓冲器81和82,其将在主机20关于充 当存储器器件11的SD卡的多项功能实施数据传输时被使用,各个缓冲器 独立地对应于各项功能。这些缓冲器81和82通过多路复用器(MUX)83 连接到主机控制器21。缓冲器81和82以及多路复用器83由虚拟组件构 成,并且缓冲器81和82被配置在系统存储器上,多路复用器83的功能由 软件或驱动程序实现。由多路复用器83选择的缓冲器的地址被提供到主机 控制器。通过借助于“FID/FNO”控制多路复用器83,有可能选择对应于 每一项功能的缓冲器81或82。

也就是说,主机20可以根据通过使用多路复用器83被设定到命令CMD 58/59的“FID/FNO”来选择相应的缓冲器81或82。

例如当从主机控制器21发出了读取命令CMD58时,从存储器器件11 的相应功能的扩展寄存器读取的数据被通过主机控制器21提供到多路复 用器83。多路复用器83基于“FID/FNO”把所接收到的数据提供到缓冲器 81和82的其中之一。

此外,例如当从主机控制器21发出了写入命令CMD59时,多路复用 器83基于“FID/FNO”把从缓冲器81和82的其中之一选择的数据提供到 主机控制器21,并且主机控制器21把所述数据传输到存储器器件11。存 储器器件11基于“FID/FNO”把所述数据提供到相应功能的扩展寄存器。

如前所述,“FID/FNO”被用来控制多路复用器83,从而有可能确定 地选择对应于每一项功能的缓冲器82或83。

虽然前面描述了某些实施例,但是这些实施例仅仅是作为举例而给出 的,其不意图限制本发明的范围。实际上,这里所描述的新颖实施例可以 通过多种其他形式来具体实现;此外,在不背离本发明的精神的情况下可 以在这里所描述的实施例的形式方面做出各种省略、替换和改变。所附权 利要求书及其等效表述意图涵盖落在本发明的范围和精神内的此类形式或 修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号