具体实施方式
下面将参考附图描述本发明的实施例。在以下描述中,具有基本相同的功能和配置的部件由相同的参考字符表示,并且仅在必要时提供重复描述。然而,这些图是示意表示,并且显然这些图的尺寸关系和部件之间的比例彼此不同。
在以下实施例中,仅仅通过实例来示例设备和方法,以具体化本申请的技术思想,并且该技术思想不将部件的材料、形状、结构和布置局限于以下实施例。对于该技术思想,在本申请的权利要求的范围内可进行各种修改和改变。
在本发明的每个实施例中,可通过硬件和计算机软件之一或其组合来实现每个功能块。因此,从功能的观点,如下描述每个块,使得每个块可清楚地表示为硬件和计算机软件。所述功能被执行为硬件还是软件取决于具体实施例或者对整个系统施加的设计限制。虽然本领域技术人员在每个具体实施例中可通过不同方法实现所述功能,但对实现的确定也包括在本申请的范围内。
(第一实施例)
下面描述根据本发明第一实施例的电子装置和主机设备。第一实施例的电子装置具有这样的配置,其中该电子装置可被嵌入主机设备中,并且该主机设备支持该电子装置。将参考图1至8描述第一实施例的电子装置和主机设备。
图1示出根据本发明第一实施例的装置以及该实施例的装置被嵌入其中的主机设备的示意性配置。参考图1,主机设备1包括两个主机控制器2和3、插槽4、CPU(中央处理单元)6以及系统存储器7。
CPU 6控制主机设备1的整体操作,并且根据存储在ROM(只读存储器,未示出)中的程序进行操作。使用系统存储器7,以便CPU 6在系统存储器7中暂时存储各种数据,并且系统存储器7还用于执行可执行程序。
主机控制器2和3包括各种软件和硬件以及与通过总线连接的装置(元件)进行通信所需的协议。具体而言,主机控制器2和3被配置为使得能够通过包括多条信号线的总线进行通信。总线的信号线的实例包括命令线、数据线、时钟线、以及电源线。在主机控制器2和3的功能的一部分中,根据预定规则通过信号线提供且馈送信号。更具体而言,主机控制器2和3分析通过总线提供的信号,从该信号中识别预先设定的位样式,并从该信号中捕获命令。类似地,主机控制器2和3从该信号中识别预定的位样式以捕获数据。在主机控制器2和3中限定有准备好的各种命令。主机控制器2和3可被具体化为由软件或半导体芯片的控制而执行的CPU的功能的一部分,以这些功能可以得到实现。
更具体而言,主机控制器2和3支持时钟线、命令线和数据线。即,主机控制器2和3被配置为通过时钟线、命令线和数据线执行数据传送。
进一步具体地,主机控制器2和3被配置为控制SD接口。在时钟线上的信号上升时,信号接收侧的SD接口模块捕获命令线和数据线上的信号。当时钟线上的信号上升(或下降)时,信号发射侧的SD接口模块向命令线和数据线提供命令(和响应)以及数据。数据线包括四位信号,即,可使用四条信号线来并行地传送数据。
主机控制器2通过形成一条总线的信号线(例如,时钟线、命令线、数据线、以及电源线)连接到插槽4。插槽4被配置为使得可以可移除地插入可移除的卡装置5。卡装置5的实例包括存储器系统以及插槽4所支持的其他装置。
插槽4包括可连接到卡装置5的端子,并且接口中的每条线都连接到对应的端子。在主机控制器2支持SD接口的情况下,在插槽4中提供对应于时钟线、命令线和四位数据线的端子,如图1所示。卡装置5应包括被配置为通过SD接口与主机设备通信的任何卡装置,例如SD卡和SD IO卡。
插槽4检测是否插入了卡装置5,并且向主机接口2提供卡检测信号CD。卡检测信号CD表明是否检测到卡装置5。
主机控制器3的总线通过形成一条总线的信号线(例如,时钟线、命令线、数据线和电源线)而连接到多个嵌入的装置(图1中为四个嵌入的装置)11至14。可将被配置为能够通过主机控制器3而与CPU 6通信的任何类型的装置用作为嵌入的装置11至14。例如,存储器装置和无线LAN(局域网络)装置可用作为嵌入的装置。根据嵌入的装置11至14的功能,可通过公知的技术而实现可用作为嵌入的装置11至14的装置的主要部分。另一方面,在嵌入的装置11至14中,如稍后所述,根据第一实施例来配置用来控制接口的元件。可通过利用在便携式装置(例如SD卡)中密封的半导体芯片来实现嵌入的装置11至14。
嵌入的装置11至14分别包括装置单元11b、12b、13b和14b,以执行嵌入的装置11至14的主要功能(例如存储器功能和无线LAN功能)。
嵌入的装置11至14分别包括控制器(装置控制器)11a、12a、13a和14a。使用接口,将控制器11a、12a、13a和14a配置为能够通过主机控制器3而与CPU 6通信。即,嵌入的装置11至14包括硬件和软件配置,以支持接口。控制器11a、12a、13a和14a以及主机控制器3被电连接,使得可通过构成总线的信号线来进行通信,所述总线连接控制器11a、12a、13a和14a以及主机控制器3。
在主机控制器2和3支持SD接口的情况下,控制器11a至14a被配置为也支持SD接口。控制器11a、12a、13a和14a可被实现为与装置单元11b、12b、13b和14b相独立的CPU或半导体芯片。如上所述,控制器11a、12a、13a和14a可被实现为这样的半导体芯片,在该半导体芯片中利用控制器11a、12a、13a和14a以及装置单元11b、12b、13b和14b。
控制器11a、12a、13a和14a分别包括保持目标地址的地址寄存器11b、12b、13b和14b。指向嵌入的装置11至14中的每一个的独特的地址被写入地址寄存器11b、12b、13b和14b中的每一个中。嵌入的装置11至14的地址在主机设备1的运送中是固定的。在运送主机设备1时,将嵌入的装置11至14中的每一个的地址值输入主机设备1(例如,输入主机设备1中的ROM(未示出))。因此,主机设备1获得嵌入的装置11至14的地址值。
在第一实施例中使用SD接口的情况下,可以将相对卡地址(RCA)用作地址。当主机设备初始化其中使用SD接口的装置时,通过在主机设备与其中使用SD接口的装置之间的协商,RCA具有动态分配给每个装置的独特值。参考图1,分别将地址0001、0002、0003和0004分配给嵌入的装置11、12、13和14。
嵌入的装置11至14中的至少一个(嵌入的装置11)为存储器装置。该嵌入的装置(下文中有时称为嵌入的存储器装置)11包括NAND型闪速存储器11c。NAND型闪速存储器11c包括作为存储区域的多个块。每个块包括串联连接的多个存储器基元。每个存储器基元包括所谓的层叠栅极结构MOSFET(金属氧化物半导体场效应晶体管)。层叠栅极结构MOS晶体管包括隧道绝缘膜、浮栅电极、电极间绝缘膜、控制栅电极和源极/漏极扩散层。在每个存储器基元晶体管中,阈值电压根据在浮栅电极中累积的电子的数目而变化,并且根据阈值电压的差异来记录信息。包括读出放大器和存储器的电压产生电路的控制电路具有这样的配置,其中可以在存储器基元晶体管中写入多位数据和从其中读取多位数据。以页为单位进行数据的写入和读取。以包括多个页的块单位进行数据的擦除。
如图2所示,根据应用和所存储的数据的种类,划分闪速存储器11c的存储区域。主机设备以及主机设备的用户可自由地访问和使用用户区域11c1。例如,在用户区域11c1中存储各种数据和操作主机设备所需的程序。
在安全区域11c3中存储仅可通过特定主机设备1存取的数据,并且仅当满足预定条件时,主机设备1的用户才可访问安全区域11c3。用户区域11c1和11c3中的数据通过任意文件系统(例如,FAT文件系统)来格式化和管理。
主机设备1和用户不能直接访问系统区域11c4,并且控制器11a管理系统区域11c4。例如,在系统区域11c4中存储关于控制器11a的控制的信息和安全信息。
在启动代码区域(启动区域)11c2中存储启动代码。启动代码是用于执行一系列进程的至少一部分的代码的组,并且要求该系列进程在开启主机设备1之后且在起动系统(OS)之前执行。
启动区域11c2中的数据不使用文件系统来管理。按照从较低地址的页到较高地址的页的顺序在启动区域11c2中存储启动代码。在开启主机设备1之后,主机设备1通过特定的方式按照从较低地址到较高地址的顺序将启动区域11c2中的启动代码读取到系统存储器7,并且CPU 6执行启动代码以在启动系统之前执行该系列进程。因此,该系统包括文件系统,从而可以在起动系统之后使用该文件系统。
在嵌入的装置11至14中包括另一存储器装置(嵌入的装置12)。在该嵌入的装置(下文中有时称为嵌入的存储器装置)12中不提供启动区域。即,该嵌入的装置包括其中排除了图2的启动区域的多个区域,具体而言,通用区域、安全区域和系统区域。
下面将描述嵌入的存储器装置11和12。图3示出根据第一实施例的嵌入的存储器装置的状态转变。虽然以下描述对应于其中使用接口的情况,但第一实施例不限于以下描述。
如图3中所示,当开启嵌入的存储器装置11和12时,主机设备向嵌入的存储器装置11和12提供复位命令(在SD接口中为CMD0)(转变T1)。这使得嵌入的存储器装置11和12能够进行向空闲状态(初始状态)的转变。在图3的描述中所使用的接口中,规定应紧接在通电之后提供复位命令。然而,该规定并不总是必要的。可以在嵌入的装置转换为空闲状态的任何时候发出复位命令。
然后,嵌入的存储器装置11和12执行向这样的状态转变所需的处理,在该状态下,可从嵌入的存储器装置11和12读取数据,可在嵌入的存储器装置11和12中写入数据,并且可从嵌入的存储器装置11和12擦除数据(已完成初始化的状态)。根据所使用的接口,在该处理中存在各种进程,下面将参考具体实例来描述该处理。例如,虽然不同于以下实例,但在第一实施例中还包括这样的接口,一个命令进行向已完成初始化的状态的转变。
首先,提供电压检查命令(在SD接口中为CMD8)(转变T2)。可将公知的接口中提供的命令用作为电压检查命令。当接收到电压检查命令时,嵌入的存储器装置11和12提供表明嵌入的存储器装置11和12所支持的电压范围的响应。有时,主机设备1将伴随该命令的电压范围的确认设定到初始化开始条件。
可以使用包括在国际专利申请No.PCT/JP2005/021689(WO2006/057340)中所描述的那些的电压检查命令,在此通过参考引入该参考文件的整个内容(所有页)。电压检查命令包括命令段、保留段、电压范围识别段、检查样式段以及错误检测代码段。命令段具有表明电压检查命令的独特的位样式。电压范围识别段具有表明主机设备1所支持的电压范围的位样式。使用检查样式段,以便主机设备确认电压检查命令的有效性和使用稍后提到的响应而对电压检查命令的响应。检查样式段具有预定的位样式。错误检测代码段包括错误检测代码,例如CRC(循环冗余检查)。当接收到电压检查命令时,嵌入的存储器装置11和12发送回一个响应。该响应具有与命令相同的格式,并且在该响应的电压范围识别段中形成清楚地表明存储器装置所支持的电压范围的位样式。
然后,向嵌入的存储器装置11和12提供存储器装置初始化命令(在SD接口中为ACMD41),这进而又开始初始化。当完成初始化时,向存储器装置提供ID(CID)传输请求命令和地址传输请求命令,存储器装置针对这些命令提供响应,并且存储器装置进行向备用状态的转变(转变T3)。可以将公知接口中限定的命令用作为ID传输请求命令,并且该ID传输请求命令请求传输装置的独特的ID号码,利用该ID号码,通过接口(在SD接口中为CMD2)来进行通信。可以将公知接口中限定的命令用作为地址传输请求命令,并且该地址传输请求命令向该装置请求提出地址建议,利用该地址,通过接口(在SD接口中为CMD3)来进行通信。使用该地址,以便主机设备识别被连接到主机设备的装置。当该装置所提出的地址不与已分配的地址重叠时,主机设备批准所提出的地址,否则主机设备再次请求提出另一地址。或者,主机设备可为这些装置指定不同的地址。在这种情况下,不必再次进行请求。
向嵌入的存储器装置11和12提供装置选择命令,其进行向传送状态(transfer state)的转变(转变T4)。装置选择命令的提供将嵌入的装置13和14转换为与传送状态类似的命令接收状态。即使嵌入的装置13和14中的命令接收状态的名称不同于传送状态,该命令接收状态与传送状态具有相同的意义。
可以将公知接口中限定的命令用作为装置选择命令,并且该装置选择命令用于在多个装置被连接到一条总线时(在SD接口中为CMD7)选择一个装置。装置选择命令包括变元(argument)形式的将被选择的装置的地址值。在传送状态下,在接收到规定了与其本身的地址不同的地址的装置选择命令时,嵌入的存储器装置11和12进行向备用状态的转变(转变T5)。
在传送状态下,当接收到读取命令、写入命令和擦除命令(在SD接口中为CMD17、CMD18、CMD24、CMD25和CMD38)时,嵌入的存储器装置11和12根据用于用户区域的命令而进行向读取状态、写入状态和擦除状态之一的转变(转变T6)。当读取、写入和擦除之一结束时,嵌入的存储器装置11和12进行向传送状态的转变(转变T7)。在读取命令或写入命令指示依次读取或写入多个块的情况下,嵌入的存储器装置11和12接收到数据传送停止命令(在SD接口中为CMD12),以进行向传送状态的转变。
在传送状态下,当接收到用以进行向可读取启动代码区域(启动区域)的状态(启动读取状态)转变的命令(在SD接口中为CMD6的功能之一)时,具有启动区域的嵌入的存储器装置(嵌入的存储器装置11)进行向启动读取状态的转变(转变T11)。例如,启动读取状态转变指示命令具有图4中所示的格式。如图4中所示,启动读取状态转变指示命令至少具有命令段CMD和启动读取状态转变指示段BT。命令段CMD具有表明启动读取状态转变指示命令的独特的位样式。当启动读取状态转变指示段BT具有表明转变指示的位样式(例如“1”)时,已接收到启动读取状态转变指示命令的存储器装置进行向启动读取状态的转变。同时,嵌入的存储器装置11发送回对启动读取状态转变指示命令的响应。该响应具有与启动读取状态转变指示命令相同的格式,并且在启动读取状态转变指示段BT中形成表明向启动读取状态进行转变的位样式(例如“1”)。或者,替代在该响应中提供表明向启动读取状态的转变完成的位样式,可以在提供了响应之后在数据线上提供的状态中表明向启动读取状态的转变的完成。
另一方面,由于嵌入的存储器装置12不具有启动区域,虽然嵌入的存储器装置12识别出启动读取状态转变指示命令,但是即使提供了该启动读取状态转变指示命令,嵌入的存储器装置12也会忽略该启动读取状态转变指示命令。即,嵌入的存储器装置12不执行由启动读取状态转变指示命令指示的内容,也不发送回响应。
在启动读取状态下,当接收到这样的启动读取状态转变指示命令时,该指示命令具有表明启动读取状态转变指示段BT已解除的位样式(例如“0”),此时嵌入的存储器装置11进行向传送状态的转变(转变T12)。
在启动读取状态下,当接收到与启动区域地址规定相关联的读取指示命令(在SD接口中为CMD18)时,嵌入的存储器装置11读取在启动区域中的数据(转变T13)。主机设备1通过任何公知的方法识别启动代码大小(启动代码存储于其中的块的数目)。在读取启动代码之后,嵌入的存储器装置11接收到来自主机设备1的数据传送停止命令(在SD接口中为CMD12)。因此,嵌入的存储器装置11进行向启动读取状态的转变(转变T14)。
在启动读取状态下,当接收到用以指示向启动写入状态的转变的命令时,嵌入的存储器装置11进行向启动写入状态的转变(转变T15)。在启动写入状态下,当接收到用以指示启动写入状态的解除的命令时,嵌入的存储器装置11进行向启动读取状态的转变(转变T16)。
在启动写入状态下,当接收到用以指示与启动区域地址规定相关联的写入的命令(在SD接口中为CMD25)时,嵌入的存储器装置11在启动区域中写入数据(转变T17)。在启动代码被写入之后,嵌入的存储器装置11接收到来自主机设备1的数据传送停止命令。因此,嵌入的存储器装置11进行向启动写入状态的转变(转变T18)。由于嵌入的存储器装置12不具有启动区域,虽然嵌入的存储器装置12识别出启动写入状态转变指示命令,但是即使提供了启动写入状态转变指示命令,嵌入的存储器装置12也会忽略该启动写入状态转变指示命令,也不会发送回响应。
在空闲状态下,当提供了用以指示向启动读取状态的转变的命令时,嵌入的存储器装置11进行向启动读取状态的转变。可以通过利用成为从空闲状态到下一状态的转变条件的命令,实现从空闲状态向启动读取状态的转变。在图3的状态转变中,电压检查命令对应于成为从空闲状态到下一状态的转变条件的命令。
图5示出具有指示向启动读取状态转变的功能的电压检查命令。如图5所示,电压检查命令包括命令段CMD、保留段RV、启动读取状态转变指示段BT、电压范围识别段VOL、检查样式段CP和错误检测代码段ED。命令段CMD具有表明电压检查命令的独特的位样式。
启动读取状态转变指示段BT清楚地表明启动读取状态转变指示命令是否指示了启动读取状态转变。例如,“1”表示电压检查命令请求向启动读取状态转变,而“0”表示电压检查命令仅仅请求电压检查操作。命令段CMD、电压范围识别段VOL、检查样式段CPS和错误检测代码段ED与扩展前的电压检查命令中的那些相同。
如图3所示,当接收到用以指示向启动读取状态转变的电压检查命令时,具有启动代码区域的嵌入的存储器装置11进行向启动写入状态的转变(转变T21)。同时,嵌入的存储器装置11发送回一个响应。该响应具有与电压检查命令相同的格式。该响应中的启动读取状态转变指示段(表示段)BT表明向启动读取状态的转变的完成,且具有与启动读取状态转变指示命令相同的值。
另一方面,当接收到指示向启动读取状态转变的电压检查命令时,不具有启动代码区域的嵌入的存储器装置12维持在空闲状态(转变T22)。嵌入的存储器装置12发送回这样的响应,其启动读取状态转变表示段表明未进行向启动读取状态的转变。
在电压检查命令用于仅仅指示电压检查的情况下,启动读取状态转变指示段BT具有不指示转变的值(例如“0”)。在响应中,同样的值被设定到启动读取状态转变表示段BT。
在启动读取状态下,当接收到复位命令时,嵌入的存储器装置11进行向空闲状态的转变(转变T23)。
通过利用具有启动读取状态转变指示段BT的电压检查命令,嵌入的存储器装置11可以直接转换到启动读取状态而不经过初始化。因此,主机设备1可以最小数目的步骤开始启动代码读取。
将参考图6描述主机设备1的操作以及嵌入的装置11至14的操作。特别地,将描述从主机设备1的通电(主机控制器2和3)到每个嵌入的装置的初始化完成的操作。下面还将描述主机设备和嵌入的装置所具有的未在上面进行描述的功能。
图6是示出根据第一实施例的主机设备的操作的流程图。图6示出用以将嵌入的装置11至14转换到完成了初始化的状态的处理,并且该处理在卡装置5初始化之前进行。
参考图6,开启主机控制器2和3(步骤S1)。因此,向嵌入的装置11至14提供电力。主机控制器3向嵌入的装置11至14提供复位命令(步骤S2)。复位命令用于将已接收到复位命令的装置转换为空闲状态(在SD接口中为CMD0)。不总是需要提供复位命令(步骤S2)。即,当主机设备在通电时自动进行向空闲状态的转变时,主机控制器3不必提供复位命令。在嵌入的装置11至14在除了通电以外时被初始化的情况下,提供复位命令。在后面的实施例中同样如此。
通过利用在开始初始化之前要求发出的命令,主机控制器3进行向启动读取状态的转变。例如,可利用电压检查命令作为该命令。
假定在连接具有启动区域的多个装置的状态下不使用电压检查命令。因此,在第一实施例中,电压检查命令被进一步扩展。即,电压检查命令被扩展为仅对希望的嵌入的装置11至14有效。具体而言,如图7中所示,在具有启动读取状态转变指示段BT的电压检查命令中插入表明命令目标的地址段AD。在SD接口中,如图8中所示,通过在假定为一对一通信的接口中紧接在命令(下文中称为常规命令)之前向段区域添加这样的命令(CMD55),来支持该命令扩展,其中上述命令(CMD55)具有表明目标地址的地址段AD。
下面将描述对常规命令的扩展。通过在任何命令(例如,已描述的复位命令和电压检查命令)中插入地址值,进行该扩展。通过将有待指定的嵌入的装置的地址值设定为扩展的命令的地址段AD指向的目标,仅仅所希望的嵌入的装置响应于扩展的命令。不具有该目标地址的嵌入的装置忽略该扩展的命令(不执行扩展的命令所指示的内容,也不发送回响应)。
另一方面,将预定的值(例如“FFFFh”)设定给地址段AD,这允许常规命令为了广播的目的而被扩展。当嵌入的装置11至14接收到广播的扩展的命令时,虽然嵌入的装置11至14并不发送回响应,但嵌入的装置11至14执行由该命令限定的处理。这是因为,由于在总线上响应彼此冲突,防止对来自嵌入的装置11至14的响应的破坏。此外,通过将预定值(例如“0000”)设定给地址段AD,可以确保与不识别扩展的命令的常规装置的兼容性。
仅有嵌入的装置11使用扩展的电压检查命令转换到启动读取状态。具体而言,在将目标的嵌入的装置11的地址值(“0001”)设定给扩展的电压检查命令的地址段时,启动读取状态转变指示段BT得到启用。虽然具有变元的扩展的电压检查命令还被提供到嵌入的装置12至14,但嵌入的装置12至14不是命令目标。因此,不具有该目标地址的嵌入的装置12至14忽略该扩展的命令,并且维持在空闲状态下。除非在嵌入的装置12至14转换到已完成初始化的状态之前,嵌入的装置12至14接收到在空闲状态下将被提供的命令(在第一实施例中为包括本身作为目标的电压检查命令),否则处于空闲状态的嵌入的装置12至14维持在空闲状态。
当嵌入的装置11接收到扩展的电压检查命令(其中在指示向启动可读状态转变的同时将嵌入的装置11规定为目标)时,嵌入的装置11发送回表明启动读取状态转变表示段被启用(进行了转变)的响应,并且进行向启动读取状态的转变(步骤S3)。该响应具有与扩展的电压检查命令相同的格式。不同于与卡装置5的通信,主机控制器3预先获得嵌入的装置11的工作电压范围以及应在初始化完成前的处理中获得的地址。因此,即使进行向启动读取状态的转变而不进行常规的电压检查或初始化,也不会产生问题。
可以使用具有启动读取状态转变指示段的扩展前(不存在地址规定)的电压检查命令来形成启动读取状态转变指示。在这种情况下,虽然所有嵌入的装置11至14接收到该扩展前的电压检查命令,由于嵌入的装置12至14不具有启动代码区域,嵌入的装置12至14忽略该命令而维持在空闲状态。另一方面,嵌入的存储器装置11识别出扩展前的电压检查命令,从而进行向启动读取状态的转变。然而,在控制的情况下,需要仅仅存在一个具有启动代码区域的嵌入的存储器装置。这是为了防止来自具有启动代码区域的多个嵌入的装置的响应在总线上彼此冲突。
主机控制器3使用数据读取命令来读取在启动代码区域中的启动代码(步骤S4)。此时,例如,可以将用以读取多个块的命令用作为数据读取命令。例如,在0或FFh被设定给启动代码区域的首块中的数据位的情况下,确定不存在启动代码。可以通过由主机系统限定的任何方法来规定启动代码大小(启动区域被存储于其中的块的数目)。例如,当预先确定了表明启动代码大小的位置时,可以统一读取启动代码的过程。在使用SD接口的情况下,可以使用命令CMD18和命令CMD12来读取启动代码。虽然除了向嵌入的装置11之外还向嵌入的装置12至14提供该数据读取命令,但由于嵌入的装置12至14处于空闲状态,嵌入的装置12至14不响应于该数据读取命令。
在读取了启动代码之后,主机控制器3发出复位命令,以将嵌入的装置11转换为空闲状态(步骤S5)。
然后,主机控制器3通过与常规技术相同的过程,顺序地初始化嵌入的装置11至14。在以后的描述中,通过实例以特定的顺序初始化嵌入的装置。然而,初始化的顺序不限于以下的说明。例如,可以通过其中也嵌入有存储器装置的所谓的组合(combo)装置,形成嵌入的装置13和14。假定通过组合装置形成嵌入的装置13和14,则可以限定,在扩展的存储器装置初始化命令之前发出扩展的装置初始化命令。以下的说明对应于其中在扩展的存储器装置初始化命令之前发出扩展的装置初始化命令的情况。
主机控制器3提供扩展的电压检查命令,其中嵌入的装置13的地址(0003)被设定给地址段的变元,同时启动读取状态转变指示被禁用(步骤S11)。在嵌入的装置11至14中,仅仅嵌入的装置13发送回对扩展的电压检查命令的响应。在嵌入的装置13不支持扩展的电压检查命令的情况下省略步骤S11。如上所述,由于在嵌入的装置11至14的供应电压与主机控制器3的工作电压之间建立了匹配关系,即使省略了电压检查过程,也不会产生问题。然而,需要使具有启动代码区域的嵌入的装置支持扩展的电压检查命令。
然后,主机控制器3初始化嵌入的装置13。此时,可以使用扩展的装置初始化命令。可以采用参考图7和8描述的技术作为扩展方法。可以将在公知接口中限定的命令用作为装置初始化命令,并且该装置初始化命令请求对除了存储器装置以外的装置的初始化(在SD接口中为CMD5)。主机控制器3提供扩展的SD IO装置初始化命令,其中将嵌入的装置13的地址(0003)设定给地址段的变元(步骤S12)。
当接收到扩展的装置初始化命令时,嵌入的装置13提供表明忙碌的响应,同时开始初始化。主机控制器3重复步骤S12,直到完成初始化而接收到表明就绪的响应(步骤S13)。当完成初始化时,流程转到步骤S14,以开始用以初始化嵌入的装置14的处理。
在步骤S14至S16中,对嵌入的装置14进行与在步骤S11至S13中的那些相同的处理。步骤S14至S16与步骤S11至S13的不同之处在于,扩展的装置初始化命令的地址段具有嵌入的装置14的地址值(0004)。当接收到扩展的装置初始化命令时,嵌入的装置14开始初始化。在嵌入的装置14不支持扩展的电压检查命令的情况下省略步骤S14。当完成了对嵌入的装置14的初始化时,流程转到步骤S21,以开始用以初始化嵌入的装置11的处理。
在步骤S21至S23中,对嵌入的装置11进行与在步骤S11至S13中的那些相同的处理。步骤S21至S23与步骤S11至S13的不同之处在于,在步骤S22中使用扩展的存储器装置初始化命令。可以采用参考图7和8描述的技术作为扩展方法。存储器装置初始化命令的地址段具有嵌入的装置11的地址值(0001)。当接收到存储器装置初始化命令时,嵌入的装置11开始初始化。当完成了对嵌入的装置11的初始化时,流程转到步骤S24,以开始用以初始化嵌入的装置12的处理。
在步骤S24至S26中,对嵌入的装置12进行与在步骤S21至S23中的那些相同的处理。步骤S24至S26与步骤S21至S23的不同之处在于,扩展的存储器装置初始化命令的地址段具有嵌入的装置12的地址值(0002)。当接收到扩展的存储器装置初始化命令时,嵌入的装置12开始初始化。当完成了对嵌入的装置12的初始化时,流程转到步骤S27。
在至少五个嵌入的装置的情况下,对所有嵌入的装置进行与在步骤S11至S26中的那些相同的处理,直到完成对嵌入的装置的初始化。接着,流程转到步骤S27。
在步骤S27和S28中进行将嵌入的装置11至14转换到已完成初始化的状态所需要的处理。在步骤S27中,主机控制器3发出扩展的ID传输请求命令。通过使用参考图7和8描述的技术扩展ID传输请求命令,来获得扩展的ID传输请求命令。在步骤S27中,该扩展的ID传输请求命令的地址段具有表示广播的值。因此,即使嵌入的装置11至14接收到该扩展的ID传输请求命令,嵌入的装置11至14也不发送回ID。
在步骤S28中,主机控制器3发出扩展的地址传输请求命令。通过使用参考图7和8描述的技术扩展地址传输请求命令,获得该扩展的地址传输请求命令。在步骤S28中,该地址传输请求命令的地址段具有表示广播的值。因此,即使嵌入的装置11至14接收到该扩展的地址传输请求命令,嵌入的装置11至14也不发送回提出的地址。
根据步骤S28,嵌入的装置11至14进行向备用状态的转变。然后,在卡装置5被插入主机设备1中的情况下,主机控制器2根据常规方法进行初始化卡装置5所需的处理。
在第一实施例中,嵌入的装置11至14被嵌入主机设备1中。然而,嵌入的装置11至14不限于其被嵌入主机设备1中的应用。例如,第一实施例的嵌入的装置11至14形成在一个芯片中且通过封装而被密封,从而实现卡装置,该卡装置可通过插槽4而被插入到主机设备1中。
由此,第一实施例的嵌入的存储器装置11支持这样的接口,该接口在用以在主机设备通电之后进行从初始状态向下一状态转变的命令中支持用于指示向可读取预定区域(启动代码区域)的状态转变的命令。因此,嵌入的存储器装置11可以访问该预定的区域,而省略向可写入、读取和擦除数据的状态转变所需的处理(初始化处理)。相应地,在该预定区域中存储早期阶段所需要读取的数据(例如启动代码),这允许紧接在对主机设备1启动电源之后访问该数据。
在第一实施例的主机控制器2和3以及控制器11a、12a、13a和14a中,可扩展不具有对假定为一对一通信的常规接口中限定的地址进行规定的功能的命令,从而可规定目标地址。因此,即使多个装置被连接到常规接口的总线,这些装置也可被初始化。
一个总线接口的负载容量取决于连接到该总线接口的嵌入的装置的数目。因此,调整驱动能力的功能被添加到主机设备1或嵌入的装置11至14的I/O基元,或者,根据由负载容量产生的延迟而降低工作频率,这允许根据嵌入的装置的数目进行调整。
(第二实施例)
在第二实施例中,缩短了第一实施例的初始化时间。
第二实施例的嵌入的装置和主机设备具有与第一实施例(图1和2)中的相同的配置。将参考图9描述第二实施例的操作。图9是示出第二实施例的主机设备的操作的流程图。
第二实施例的步骤S1至S5与第一实施例的步骤S1至S5相同。在步骤S5之后,主机控制器3提供扩展的电压检查命令,在该命令中,将地址段值设定至广播值(步骤S31)。即使嵌入的装置11至14接收到扩展的电压检查命令,嵌入的装置11至14也不发送回响应。如上所述,由于在嵌入的装置11至14的供应电压与主机控制器3的工作电压之间建立了匹配关系,即使不发送回对扩展的电压检查命令的响应,主机设备1的操作也不存在问题。尽管如此,发出电压检查命令的原因在于,有时嵌入的装置11至14在接收到电压检查命令的情况下开始初始化。
主机控制器3提供扩展的装置初始化命令,在该命令中,将地址段值设定至广播值(步骤S32)。嵌入的装置13和14开始初始化而不发送回响应。因此,嵌入的装置13和14同时被初始化。嵌入的存储器装置11和12忽略该扩展的装置初始化命令。
主机控制器3提供扩展的存储器装置初始化命令,在该命令中,将地址段值设定至广播值(步骤S33)。嵌入的存储器装置11和12开始初始化而不发送回响应。因此,嵌入的存储器装置11和12同时被初始化。嵌入的装置13和14忽略该扩展的存储器装置初始化命令。步骤S32和S33的顺序可以改变。该顺序是通过假定嵌入的装置13和14为组合装置而确定的实例。
接着,主机控制器3执行用以确认对嵌入的装置11至14的初始化是否已完成的处理。具体而言,主机控制器3执行与步骤S12相同的处理。主机控制器3重复步骤S12中的处理,直到主机控制器3接收到表明其中初始化已完成的就绪的响应(步骤S13)。
接着,主机控制器3执行与步骤S15相同的处理。主机控制器3重复步骤S15中的处理,直到主机控制器3接收到表明其中初始化已完成的就绪的响应(步骤S16)。
接着,主机控制器3执行与步骤S22相同的处理。主机控制器3重复步骤S22中的处理,直到主机控制器3接收到表明其中初始化已完成的就绪的响应(步骤S23)。
接着,主机控制器3执行与步骤S25相同的处理。主机控制器3重复步骤S25中的处理,直到主机控制器3接收到表明其中初始化已完成的就绪的响应(步骤S26)。确认对嵌入的装置11至14的初始化是否已完成的顺序可以改变。
接着,通过执行与步骤S27和S28相同的处理,嵌入的装置11至14进行向备用状态的转变。
由此,第二实施例的嵌入的装置11至14以及主机设备1支持与第一实施例中的相同的接口。因此,获得与第一实施例相同的效果。第二实施例的嵌入的装置11至14以及主机控制器2和3支持这样的接口,该接口支持扩展的命令,从而可以规定目标地址。因此,获得与第一实施例相同的效果。
第二实施例的主机控制器3以广播的方式传输用以指示嵌入的装置11至14的初始化的命令。因此,嵌入的装置11至14被同时初始化,从而可以缩短初始化所需的时间。
(第三实施例)
第三实施例涉及利用具有仅仅一条总线的主机设备支持多个装置的方法。将参考图10和11描述根据第三实施例的方法。图10示意性示出根据本发明第三实施例的装置以及该装置嵌入其中的主机设备的配置。
如图10中所示,主机设备21包括一个主机控制器22。主机控制器22具有与第一实施例的主机控制器2和3相同的配置。
嵌入的装置11至14通过一条总线而连接到主机控制器22。主机控制器22通过缓冲器23和模拟开关24而连接到插槽4。具体而言,仅仅从主机控制器22朝向插槽4流动的信号的线通过缓冲器23而从主机控制器22连接到插槽4。单向信号线(例如时钟线)对应于该信号线。
对于在主机控制器22与插槽4之间沿两个方向流动的信号的线,主机控制器22和插槽4通过模拟开关24而连接。双向信号线(例如命令线和数据线)对应于该信号线。虽然可以使用双向缓冲器,但有必要使主机控制器22使用控制信号来控制总线方向。通常,不准备控制信号。模拟开关24可控制所有的信号线而不利用缓冲器23。
当CPU 6通过主机控制器22而将启用信号EN提供给缓冲器23和模拟开关24时,缓冲器23和模拟开关24电连接主机控制器22和插槽4。这使得CPU 6能够进行与插槽4的通信(卡装置5被插入插槽4中)。
主机控制器22还通过对应的信号线(时钟线、命令线、数据线和电源线)而分别连接到控制器11a、12a、13a和14a。
插槽4检测是否插入了卡装置5,并且插槽4向主机接口2提供卡检测信号CD。卡检测信号CD表明是否检测到卡装置5。在未插入卡装置5的情况下,CPU 6使缓冲器23和模拟开关24保持关断。当插槽4检测到插入了卡装置5时,在嵌入的装置11至14与主机控制器22之间没有进行通信或数据传送的条件下,CPU 6开启缓冲器23和模拟开关24。
主机设备21具有在插槽4中设置的盖子4a。在该盖子4a中设置有传感器。当盖子4a打开时,传感器向主机控制器22提供盖子打开和关闭信号LD。这意味着存在在盖子4a打开时移除卡装置5的可能性。当通过盖子打开和关闭信号LD而检测到从插槽4移除卡装置5的可能性时,CPU 6快速停止对卡装置5的访问,以关断缓冲器23和模拟开关24。因此,防止来自插槽4的信号与来自嵌入的装置11至14的信号在总线上冲突。
其他配置与第一实施例的配置相似。
下面将参考图11描述第三实施例的主机设备的操作。图11是示出第三实施例的主机设备的操作的流程图。如图11中所示,开启主机控制器22(步骤S1)。主机控制器22启用启动信号以开启缓冲器23和模拟开关24(步骤S41)。主机控制器22发出复位命令(步骤S2)。主机控制器22禁用启动信号以关断缓冲器23和模拟开关24(步骤S42)。因此,主机控制器22不与卡装置5而仅与嵌入的装置11至14通信。
此时,嵌入的装置11至14被初始化。具体而言,执行与第一实施例的步骤S3至S5中的处理相同的处理。接着,执行与第一实施例的步骤S11至S16以及S21至S26、或者第二实施例的步骤S31至S33、步骤S12、S13、S15、S16、S22、S23、S25和S26中的处理相同的处理。接着,执行与第一实施例的步骤S27和S28中的处理相同的处理。因此,嵌入的装置11至14进行向备用状态的转变。之后,嵌入的装置11至14不接受除了用以请求从备用状态进行状态转变的命令(例如,装置选择命令)之外的命令。因此,主机控制器22基本上处于这样的状态,其中主机控制器22仅与插入插槽4中的卡装置5通信。
主机控制器22开启缓冲器23和模拟开关24(步骤S43)。此时,主机控制器22初始化卡装置5,以将卡装置5转换到备用状态。
具体而言,主机控制器22向卡装置5提供具有启动读取状态转变指示段的电压检查命令(步骤S44)。该启动读取状态转变指示段被无效化。
主机控制器22向卡装置5提供装置初始化命令或存储器装置初始化命令(步骤S45)。一旦开始初始化,卡装置5提供表明忙碌的响应。主机控制器22重复步骤S45中的处理,直到主机控制器22接收到表明其中已完成初始化的就绪的响应(步骤S46)。
当完成初始化时,主机控制器22进一步执行将卡装置5转换到备用状态所需的处理。具体而言,主机控制器22使用ID传输请求命令而从卡装置5读取ID(步骤S51)。主机控制器22使用地址传输请求命令而从卡装置5接收提出的地址建议(步骤S52)。此时,嵌入的装置11至14也接收到该地址传输请求命令。然而,如上所述,由于嵌入的装置11至14在备用状态下忽略该地址传输请求命令,因此嵌入的装置11至14的地址值不变。
主机控制器22确定卡装置5所提出的地址值是否与嵌入的装置11至14的地址值匹配(步骤S53)。当卡装置5所提出的地址值与嵌入的装置11至14的地址值匹配时,流程返回到步骤S52,并且主机控制器22请求提出其他地址。主机控制器22重复步骤S52中的处理,直到卡装置5所提出的地址值与嵌入的装置11至14的地址值不匹配。虽然嵌入的装置11至14在备用状态下忽略该地址传输请求命令,但卡装置5可接受该地址传输请求命令,从而改变地址。
如上所述,第三实施例的装置和主机设备支持与第一实施例中的相同的接口。因此,获得与第一实施例相同的效果。第三实施例的装置和主机设备还支持这样的接口,该接口支持扩展的命令,从而可以规定目标地址。因此,获得与第一实施例相同的效果。当采用第二实施例的方法来初始化第三实施例的嵌入的装置11至14时,在第三实施例的主机设备中获得与第二实施例相同的效果。
在第三实施例的主机设备21中,主机控制器22和插槽4通过缓冲器23和模拟开关24而连接。因此,插槽4可与主机控制器22电分离。在插槽4与主机控制器22分离的同时嵌入的装置11至14转换到备用状态之后,插槽4被连接到主机控制器22以启用卡装置5,从而进行向备用状态的转变。因此,即使内部装置11至14以及插槽4连接到一条总线,也可以适当地初始化内部装置11至14以及插槽4。
(第四实施例)
第四实施例涉及对启动代码的详细读取。因此,第四实施例可与第一至第三实施例组合。下面将参考图12和13描述第四实施例。
图12是示出由第四实施例的主机设备执行的在嵌入的装置中的启动代码读取操作的流程图。即,图12是示出直到在第一至第三实施例中完成启动代码读取的详细流程的流程图。
如图12中所示,执行与步骤S1和S2相同的处理。接着,主机控制器3或22提供用以指示向启动读取状态转变的命令(步骤S61)。与第一实施例类似地,可以利用包括启动读取状态转变指示段的电压检查命令作为用以指示向启动读取状态转变的命令。
嵌入的装置11至14接收指示向启动读取状态转变的电压检查命令。在任何嵌入的装置具有启动区域的情况下,具有启动区域的嵌入的装置(例如,图3的嵌入的装置11)发送回响应。该响应中的启动读取状态转变指示段具有表明已进行转变的位样式。其他嵌入的装置(例如,图14的嵌入的装置12至14)不发送回响应,这是因为其他嵌入的装置不具有启动区域。
可使用扩展的电压检查命令来替代电压检查命令。在这种情况下,在扩展的电压检查命令的地址段中描述具有启动区域的嵌入的装置的地址(例如,图3中的“0001”)。
接着,主机控制器3或22确认是否发送回了对电压检查命令的响应(步骤S62)。当没有发送回响应时,由于不存在具有启动区域的嵌入的装置,流程转到步骤S5,并且从嵌入的装置11至14读取启动代码的处理结束。
当接收到对电压检查信号的响应时,主机控制器3或22确认启动读取状态转变段是否具有表明向启动读取状态转变的位样式(步骤S63)。当启动读取状态转变段不具有表明该转变的位样式时,流程转到步骤S5。另一方面,当启动读取状态转变段具有表明向启动读取状态转变的位样式时,流程转到步骤S64,从而主机设备读取启动代码。
在步骤S64中,主机控制器3或22发出读取命令(步骤S64)。在SD接口的情况下,可以将多块读取命令(CMD18)用作为该读取命令。主机控制器3或22接收对该读取命令的响应(步骤S65)。主机控制器3或22通过确认在该响应中的错误校正代码或错误检测位样式的匹配,来确认在该响应中是否存在错误(步骤S66)。
当在该响应中存在错误时,流程转到步骤S81。在步骤S81中,主机控制器3或22发出数据传送结束命令(在SD接口中为CMD12)以停止读取。接着,主机控制器3或22接收对该数据传送结束命令的响应(步骤S82),并且流程转到步骤S5。
另一方面,当未检测到错误时,主机控制器3或22读取启动代码区域的第一块中的数据并将所读取的数据保存在缓冲器中(步骤S71)。数据从嵌入的装置11中读取。主机控制器3或22分析第一块中的数据,以确认是否存在启动代码(步骤S72)。可以通过预先获得表明不存在启动代码的样式,例如,所有的特定位置被设定为0或1,进行该确定。
当不存在启动代码时,主机控制器3或22废弃缓冲器的内容,并且流程转到步骤S81。当存在启动代码时,主机控制器3或22分析启动代码的内容,以获得启动代码大小(例如,启动代码被存储在多少个块中)(步骤S73)。可通过预先获得表明启动代码大小的数据的位置而使用常见的过程。
主机控制器3或22将缓冲器中的数据传输到系统存储器7(步骤S74)。主机控制器3或22读取启动区域的第二块的数据并将所读取的数据保存在缓冲器中,并且将所读取的数据传送到系统存储器7(步骤S75)。参考在步骤S73中所获得的启动代码大小,主机控制器3或22重复步骤S75中的处理,直到读取所有的启动代码(步骤S76)。当对所有的启动代码完成读取时,流程转到步骤S81。
如在第一实施例中所述,在本发明的每个实施例中提供了这样的命令,该命令使得在主机设备1和21开启之后能够进行向启动读取状态转变而不经过通常的初始化处理。因此,从通电到启动代码读取所需要的处理的数目显著减少。因此,对于第四实施例的启动代码读取处理,替代CPU 6,可以使用在主机控制器3或22中设置的DMA(直接存储器访问)控制器来自动读取启动代码。
图13是示意性示出第四实施例的主机设备的框图。如图13中所示,除了第一实施例的部件之外,主机控制器3或22还包括DMA控制器42。DMA控制器42被配置为使用公知技术来执行第四实施例的操作。当使用DMA控制器时,可以在没有CPU 6的条件下进行对完成启动代码读取的的多条处理。在主机设备41中,虽然在图13中省略了,但图13的配置之外的其他配置与第一实施例(图1)和第三实施例(图10)的那些配置相同。
由此,第四实施例的嵌入的装置11至14以及主机控制器3或22支持与第一实施例中的相同的接口。因此,从主机设备41的通电直到向启动代码读取状态的转变所需的处理的数目减少,因而从通电到启动代码读取的完成所需的处理的数目减少。相应地,可以通过DMA控制器42来执行所述一系列处理。还可以通过组合第四实施例与第一至第三实施例,获得由第一至第三实施例所获得的效果。
(第五实施例)
下面将描述本发明的第五实施例。在第五实施例中,更具体地描述第一实施例,并且其配置和操作与第一实施例的基本相似。在第五实施例中,附加“b”的数值表示二进制数,附加“h”的数值表示十六进制数,而没有附加的数值表示十进制数。
(扩展的电压检查命令)
将参考图14描述在第一实施例中描述的图6的步骤S3中所使用的扩展的电压检查命令。图14是示意性示出扩展的电压检查命令的配置的图。在SD接口中,该扩展的电压检查命令可被定义为ACMD8。
通过组合CMD55和CMD8而形成ACMD8。CMD55包括按照从上位开始的顺序的命令索引和RCA。在命令索引中存储命令的独特的号码。例如,为CMD55存储“110111b”。RCA包括成为随后的命令(在ACMD8的情况下为CMD8)的目标的装置的RCA。
CMD8包括按照从上位开始的顺序的命令索引、QBR(快速启动请求)、保留、VHS、样式、CRC和END。命令索引、QBR、保留、VHS、样式和CRC分别对应于命令段、启动读取状态转变指示段BT、保留段RV 、电压范围识别段VOL、检查样式段CP和错误检测代码段ED。对于CMD8,命令索引为“001000b”。在QBR=“1b”的情况下,CMD8请求向启动读取状态的转变。在QBR=“0b”的情况下,CMD8仅请求电压检查操作。在下面的描述中,假定将QBR设定为“1b”。下文中,用以请求向启动读取状态转变的操作被称为快速启动。
<嵌入的装置11至14的状态转变>
将参考图15描述存储器装置11和12以及装置13和14的状态转变。图15示出存储器装置11的状态转变。装置12至14的状态转变与存储器装置11的状态转变相似,但装置12至14不具有启动读取状态和启动写入状态。
图15的状态转变对应于第一实施例中的图3的状态转变。在图15中,空闲状态、初始化、备用状态、传送状态、(执行读取、写入、擦除)状态、启动读取状态和启动写入状态分别对应于图3的空闲状态、初始化、备用状态、传送状态、(读取、写入、擦除)状态、启动读取状态和启动写入状态。在图15中描述在SD接口中用于在状态之间的转变的特定命令的名称。将参考图15仅仅描述存储器装置11(包括启动区域的装置)的主要的状态转变。
控制器3向存储器装置11发出快速启动命令,由此存储器装置11直接进行从空闲状态向启动读取状态的转变而不经过初始化和备用状态。此时,控制器3向存储器装置11发出ACMD8或CMD8命令,并且在该命令中将QBR设定为“1b”。当在主机设备1中仅仅一个装置支持CMD8时,使用CMD8。然而,当多个装置支持CMD8时,使用ACMD8,这是因为有必要使控制器3选择装置以发出命令。
当控制器3发出其中QBR被设定为“0b”的ACMD8或CMD8时,存储器装置11被初始化。接着,控制器3发出ACMD41,发出ACMD2或CMD2,并发出ACMD3或CMD3,由此将存储器装置11转换到备用状态。CMD2和CMD3与第一实施例中的相似,而ACMD2和ACMD3分别是其中CMD55被添加到CMD2和CMD3的命令。
控制器3发出CMD7,由此处于备用状态的存储器装置11进行向传送状态的转变。显然,有必要使由存储器装置11保持的RCA包括在CMD7的变元中。
控制器3发出CMD6,由此处于传送状态的存储器装置11进行向启动读取状态的转变。CMD6的内容与第一实施例中的图4的CMD6的内容相似。控制器3发出其中BT被设定为“0b”的CMD6,由此通过CMD6而转换到启动读取状态的存储器装置11进行向传送状态的转变。然而,在存储器装置11直接进行从空闲状态向启动读取状态的转变的情况下,即使控制器3发出CMD6,存储器装置11也不进行向传送状态的转变。即,启动读取状态与传送状态之间的转变可以在完成初始化之后进行。
<控制器3中的初始化操作>
下面将参考图16描述由控制器3执行的对嵌入的装置11至14的初始化操作。图16是示出由控制器3执行的处理流程的流程图。
如图16中所示,控制器3开启嵌入的装置11至14(步骤A-0)。接着,控制器3执行步骤A-1至A-18中的处理。步骤A-1至A-18中的处理对应于第一实施例中的图6的步骤S2至S5、S11至S16以及S21中的处理。
控制器3发出CMD0(步骤A-1)。如上所述,CMD0为复位命令。因此,控制器3将嵌入的装置11至14转换到空闲状态,并且将连接控制器3和嵌入的装置11至14的总线(CMD线)设定为输入模式。通过将总线设定为输入模式,总线变为用以等待SD接口中各种命令的状态。
接着,控制器3发出ACMD8(步骤A-2)。在ACMD8中,QBR被设定为“1b”,且RCA被设定为“0001h”。即,控制器3提供快速启动命令,并且对应于RCA=“0001h”的存储器装置11进行向启动读取状态的转变。嵌入的装置12至14维持在空闲状态。
控制器3使用CMD18和CMD12访问在存储器装置11中的启动代码区域(步骤A-3)。这使得控制器3能够读取在启动代码区域中保持的启动代码。
当启动代码读取结束时,控制器3再次发出CMD0,以将存储器装置11转换到空闲状态(步骤A-4)。在当启动代码读取结束时存储器装置11可进行向空闲状态转变的情况下,可以省略步骤A-4中的处理。
控制器3顺序地初始化嵌入的装置11至14。为了初始化嵌入的装置13,控制器3发出ACMD8(QBR=“0b”,且RCA=“0003h”)(步骤A-5)。控制器3发出ACMD5(RCA=“0003h”)(步骤A-6)。ACMD5是包括CMD55和CMD5的命令,并且CMD5用于执行对除了存储器装置之外的装置的初始化。由此,嵌入的装置13被初始化。
当嵌入的装置13通过初始化而变成就绪状态(步骤A-7中的是)时,即,当控制器3从嵌入的装置13接收到表明就绪状态的响应时,控制器3初始化嵌入的装置14。对嵌入的装置14的初始化处理与对嵌入的装置13的初始化处理相似(步骤A-8至A-10)。
接着,控制器3初始化存储器装置11。控制器3发出ACMD8(QBR=“0b”,且RCA=“0001h”)(步骤A-11)。控制器3已经在步骤A-2中向存储器装置11发出ACMD8。即,已经进行了一次对嵌入的装置11的电压检查。因此,可以省略步骤A-11中的处理。控制器3发出ACMD41(RCA=“0001h”)(步骤A-12)。ACMD41是包括CMD55和CMD41的命令,并且CMD41用于执行对存储器装置的初始化。由此,存储器装置11被初始化。
当存储器装置11通过初始化而变成就绪状态(步骤A-13中的是)时,即,当控制器3从存储器装置11接收到表明就绪状态的响应时,控制器3初始化存储器装置12。对存储器装置12的初始化处理与对存储器装置11的初始化处理相似(步骤A-14至A-16)。
接着,控制器3发出ACMD2(RCA=“FFFFh”)(步骤A-17),并随后发出ACMD3(RCA=“FFFFh”)(步骤A-18)。ACMD2包括CMD55和CMD2,并且CMD2用于请求向嵌入的装置11至14的ID传输。ACMD3包括CMD55和CMD3,并且CMD3用于请求向嵌入的装置11至14的地址传输。ACMD2和ACMD3利用RCA=“FFFFh”进行传输,即,广播。由此,嵌入的装置11至14进行向备用状态的转变。
<嵌入的装置11至14中的初始化操作>
下面将描述图16的初始化处理中对嵌入的装置11至14的处理。将描述在嵌入的装置11至14中所包括的标志。
嵌入的装置11至14中的每一个具有两个标志,即,标志“第一CMD55”和标志“兼容模式”。标志“第一CMD55”表明是否已从控制器3接收到CMD55。标志“第一CMD55”被设定至“1b”,直到接收到CMD55,并且当接收到CMD55时,标志“第一CMD55”被设定至“0b”。
标志“兼容模式”用于改变嵌入的装置11至14的操作模式,并且标志“兼容模式”紧接在通电之后被设定至“1b”。在标志“兼容模式”被设定至“1b”期间,嵌入的装置11至14通过其中使用常规SD命令的过程来执行初始化。即,不使用实施例的ACMD8、ACMD2、ACMD3和ACMD5。下文中,将该操作模式称为兼容模式。
当在最初接收到的CMD55的变元中所包括的16位RCA数(下文中称为CRCA)不是“0000h”时,将标志“兼容模式”从“1b”设定至“0b”。即,当最初接收到的CMD55是用以选择嵌入的装置11至14之一的命令时,标志“兼容模式”被设定为“0b”。当标志“兼容模式”被设定为“0b”时,嵌入的装置11至14通过其中使用实施例的扩展的SD命令的过程而执行初始化。即,可使用ACMD8、ACMD2、ACMD3和ACMD5。下文中,将该操作模式称为扩展模式。
嵌入的装置11至14可保持标志“第一CMD55”和标志“兼容模式”。在这种情况下,例如,在嵌入的装置11至14的寄存器中保持标志“第一CMD55”和标志“兼容模式”。然而,嵌入的装置11至14本身不必具有这些标志。即,嵌入的装置11至14仅需要被如此配置,使得操作模式根据标志而改变。控制器3可保持这些标志。
采用存储器装置11作为实例,将参考图17描述嵌入的装置11至14的操作。图17是示出由存储器装置11执行的处理流程的流程图。嵌入的装置11至14接收到来自控制器3的命令,并且根据该命令的内容确定操作。因此,嵌入的装置11至14的操作包括命令接收和对命令的处理的循环。图17的流程图仅对初始化期间有效,并且当嵌入的装置11至14处于空闲状态和图13的初始化时,该流程图有效。通过装置11至14中包括的控制器11b至14b来执行下面描述的下列处理。可通过软件或硬件(例如布线逻辑)来实现下列功能。
存储器装置11将标志“兼容模式”和第一CMD55二者都设定至“1b”(步骤E-1)。当存储器装置11接收到来自控制器3的命令(步骤E-2)时,存储器装置11确定该命令是否为CMD55(步骤E-3)。
当该命令不是CMD55(步骤E-3中的否)时,存储器装置11发送回对该命令的响应,并且根据定义来执行该命令(步骤E-4)。
当该命令是CMD55(步骤E-3中的是)时,存储器装置11确定CMD55是否为最初接收到的CMD55(步骤E-5)。可以基于标志“第一CMD55”是否为“1b”来进行步骤E-5中的确定。即,当标志“第一CMD55”是“1b”时,CMD55是最初接收到的CMD55,而当标志“第一CMD55”是“0b”时,CMD55不是最初接收到的CMD55。
当CMD55是最初接收到的CMD55(步骤E-5中的是)时,存储器装置11将标志“第一CMD55”设定至“0b”。此时,已接收到CMD55的所有嵌入的装置11至14将标志“第一CMD55”设定至“0b”。接着,存储器装置11检查CMD55中的RCA,即,CRCA(步骤E-7)。
当CRCA不是“0000h”(步骤E-7中的否)时,即,当选择了嵌入的装置11至14之一时,存储器装置11将标志“兼容模式”设定至“0b”。因此,存储器装置11以扩展模式进行操作。
另一方面,当CRCA是“0000h”(步骤E-7中的是)时,存储器装置11使标志“兼容模式”保持在“1b”,即,存储器装置11维持兼容模式。即使以后接收到CMD55,也不执行步骤E-6至E-8中的处理(因为在步骤E-5中为否)。即,存储器装置11总是以兼容模式操作,除非在步骤E-8中设定扩展模式。已接收到CMD55的所有嵌入的装置11至14将标志“兼容模式”设定至“0b”。
当在步骤E-5中将标志“第一CMD55”设定至“0b”,当在步骤E-7中将CRCA设定至“0000h”,或者当在步骤E-8中将标志“兼容模式”设定至“0b”时,存储器装置11确定存储器装置11是否处于扩展模式(步骤E-9)。
当存储器装置11处于扩展模式,即,当标志“兼容模式”被设定至“0b”(步骤E-9中的否)时,存储器装置11比较CRCA与通过存储器装置11的寄存器保持的RCA值(下文中称为DRCA)(步骤E-10)。
当CRCA与DRCA匹配时,即,当CRCA等于DRCA(步骤E-10中的是)时,存储器装置11识别出CMD55的目标为存储器装置11,并且存储器装置11发送回对控制器3的响应(步骤E-11)。
当存储器装置11从控制器3接收到随后的命令(步骤E-12)时,存储器装置11确定接收到的命令是否可以在初始化处理中执行(步骤E-13)。当该命令可被执行(步骤E-13中的是)时,存储器装置11向控制器3发送回对该命令的响应(步骤E-14),并且执行该命令(步骤E-15)。接着,流程转到步骤E-2。
当该命令不可被执行(步骤E-13中的否)时,存储器装置11什么也不执行(不发送回响应)。接着,流程转到步骤E-2。当CRCA与DRCA不匹配(步骤E-10中的否)时,存储器装置11识别出CMD55的目标不是存储器装置11。虽然存储器装置11接收到随后发出的命令(步骤E-16),但存储器装置11忽略该命令,且不发送回响应。接着,流程转到步骤E-2。
当在步骤E-9中存储器装置11处于兼容模式,即,当标志“兼容模式”被设定至“1b”(步骤E-9中的是)时,存储器装置11向控制器3发送回对CMD55的响应(步骤E-17)。接着,存储器装置11接收随后的命令(步骤E-18)。当在步骤E-18中接收到的命令是CMD41(步骤E-19中的是)时,存储器装置11向控制器3发送回对ACMD41的响应(步骤E-20),并且执行ACMD41(步骤E-21)。
当在步骤E-18中接收到的命令不是CMD41(步骤E-19中的否)时,存储器装置11不发送回响应且不执行处理。接着,流程转到步骤E-2。这是因为,在包括CMD55的命令中(步骤E-3中的是),CMD41在兼容模式下的初始化处理期间是仅有的可识别的命令。
接着,存储器装置11接收下一个命令,并且重复类似的处理,直到完成初始化。图17的流程对存储器装置12同样适用。除了在步骤S19中确定的命令为CMD5(=ACMD5)之外,图17的流程对嵌入的装置13和14同样适用。
当存储器装置11接收到其中QBR=“1b”的CMD8或者其中QBR=“1b”且CRCA=“0001h”的ACMD8时,存储器装置11执行步骤E-15中的快速启动。即,图17中所示的序列被打断,并且从启动代码区域读取启动代码。
当完成启动代码读取时,流程转到步骤E-2。
在SD接口中,可以以上述方式应用第一实施例。
(第六实施例)
下面将描述本发明的第六实施例。第六实施例涉及当将第二实施例应用于SD接口时进一步的具体的操作。
将参考图18描述由第六实施例的控制器3执行的对嵌入的装置11至14的初始化操作。图18是示出由控制器3执行的处理流程的流程图。
如图18中所示,控制器3开启嵌入的装置11至14(步骤B-0)。接着,控制器3执行步骤B-1至B-3以及B-6至B-17中的处理。步骤B-1至B-3以及B-6至B-17中的处理对应于在第二实施例中描述的图9的步骤S2至S4、S32、S33、S12、S15、S22、S23以及S25至S28中的处理。
控制器3执行步骤B-1至B-3中的处理。步骤B-1至B-3中的处理与第五实施例的步骤A-1至A-3中的处理类似。
控制器3发出ACMD5,其中RCA=“FFFFh”(步骤B-6)。这使得嵌入的装置13和14能够开始初始化。控制器3发出ACMD41,其中RCA=“FFFFh”(步骤B-7)。这使得存储器装置11和12能够开始初始化。
接着,控制器3确认嵌入的装置11至14的初始化是否已完成。即,控制器3执行步骤B-8至B-15中的处理。由于步骤B-8至B-15中的处理与第五实施例的步骤A-6、A-7、A-9、A-10、A-12、A-13、A-15和A-16中的处理类似,省略对其的描述。
最后,控制器3发出其中RCA=“FFFFh”的ACMD2和其中RCA=“FFFFh”的ACMD3(步骤B-16和步骤B-17)。接着,初始化得以完成。
在SD接口中,可以以上述方式应用第二实施例。使用ACMD41,可省略图9的步骤S5和S31中的处理。因此,在步骤S5中省略对复位命令的发出,以消除另一电压检查,并且可通过ACMD41开始对存储器装置的初始化。
(第七实施例)
下面将描述本发明的第七实施例。第七实施例涉及当将第三实施例应用于SD接口时的进一步的具体的操作。
将参考图19描述由第七实施例的控制器3执行的对嵌入的装置11至14的初始化操作。图19是示出由控制器3执行的处理流程的流程图。
如图19中所示,控制器3开启嵌入的装置11至14(步骤C-0)。接着,控制器3执行步骤C-1至C-13中的处理。步骤C-1至C-3中的处理对应于在第三实施例中描述的图11的步骤S41、S2和S42中的处理。步骤C-4中的处理对应于图11的从启动读取到ID和地址请求的处理,即,步骤C-4中的处理对应于步骤A-2至A-18或B-2至B-17中的处理。步骤C-5和C-6中的处理对应于图11的步骤S43和S44的处理。步骤C-7至C-10中的处理对应于图11的步骤S45和S46的处理。步骤C-11至C-13中的处理对应于图11的步骤S51至S53的处理。
控制器3发出CMD8,其中QBR=“0b”(步骤C-6)。这使得能够执行对卡装置5的电压检查。接着,控制器3发出CMD5(步骤C-7),以初始化卡装置5。接着,控制器3顺序地发出ACMD9、CMD2和CMD3,以完成初始化。
(第八实施例)
下面将描述本发明的第八实施例。第八实施例涉及当将第四实施例应用于SD接口时的进一步的具体的操作。
将参考图20描述由第八实施例的控制器3执行的启动代码读取操作。图20是示出由控制器3执行的处理流程的流程图。
如图20中所示,控制器3开启嵌入的装置11至14(步骤D-0)。接着,控制器执行步骤D-1至D-16中的处理。步骤D-1至D-16中的处理对应于第四实施例的图12中的步骤S2、S61至S66、S71至S76、S81、S82和S5中的处理。当在步骤D-3中没有获得响应时,流程转到步骤D-16。在步骤D-2中,可使用ACMD8来替代CMD8。
(第九实施例)
下面将描述本发明的第九实施例。第九实施例涉及在第一至第八实施例中的快速启动的细节,并且在第九实施例中执行快速启动过程中读取操作系统(OS)。下面将仅仅描述与第一至第八实施例不同的点。
<主机设备1的配置>
图21是示出第九实施例的主机设备1的主要部分的框图。在第九实施例的配置中,将ROM 8和RAM 9附加到第一实施例的图1的配置中。第九实施例还在存储器装置11中的闪速存储器11c的配置方面与第一实施例不同。虽然在图21中部分省略,但其他配置和操作与第一实施例中的相同。
ROM 8和RAM 9可包括在图1的系统存储器7中。通过保持主加载程序20的半导体存储器而形成ROM 8。主加载程序20是由CPU 6执行的程序,且在第一至第八实施例中执行对嵌入的装置11至14的初始化和快速启动的过程中被执行。
RAM 9是通过半导体存储器(例如DRAM)形成的,并且用作为CPU6的工作区域。例如,CPU 6将主加载程序20读取到RAM 9上,以产生在RAM 9中需要的表。还将OS(操作系统)读取到RAM 9上并通过CPU6来执行。
存储器装置11包括NAND型闪速存储器11c。NAND型闪速存储器11c包括安全区域30、系统区域31、用户区域32、系统分区33、第一启动分区34以及第二启动分区35。安全区域30、系统区域31和用户区域32对应于第一实施例的图2中的系统区域11c4、安全区域11c3和用户区域11c1。
通过文件系统(例如FAT文件系统)管理系统分区33,并且在系统分区33中存储OS程序和数据。通过使用数据执行程序来起动OS。第一和第二启动分区34和35不通过文件系统来管理,但第一和第二启动分区34和35分别保持次加载程序36。次加载程序36是由CPU 6执行的程序,并且在从系统分区33读取OS的过程中被执行。系统分区33、第一启动分区34和第二启动分区35中的每一个都是从用户区域32物理分隔出来的分区。因此,CPU 6将分区33至35识别为与用户区域32物理上不同的区域。第一和第二启动分区34和35对应于第一实施例中的图2的启动代码区域11c2。
系统分区33以及第一和第二启动分区34和35被配置为禁止写入。这是因为,防止OS程序和数据以及次加载程序因疏忽而改变为禁用对系统的起动。然而,为了更新OS和次加载程序,需要重写OS程序和数据以及次加载程序。因此,控制器3具有用以解除对系统分区33以及第一和第二启动分区34和35的写入禁止的命令或硬件装置。控制器3可以访问系统分区33以及第一和第二启动分区34和35,以通过发出命令或使用硬件装置而重写OS程序和数据以及次加载程序。
在NAND型闪速存储器11c中,用户区域32、系统分区33以及第一和第二启动分区34和35是CPU 6可任意访问的区域。另一方面,安全区域30和系统区域31不是CPU 6可任意访问的区域。仅当满足预定条件时,CPU 6可访问安全区域30,并且仅仅存储器装置11的控制器11a可访问系统区域31。
存储器装置12具有这样的配置,其中系统分区33以及第一和第二启动分区34和35从存储器装置11移除。装置13和14具有与第一实施例相同的配置。
<嵌入的装置11至14的初始化操作的示意性流程>
将参考图22描述由CPU 6和控制器3执行的对嵌入的装置11至14的初始化操作的示意性流程。图22是示出CPU 6和控制器3的操作的时序图。
如图22中所示,CPU 6执行ROM 8中的主加载程序20(步骤S90)。这使得CPU 6能够根据主加载程序20而开始对装置11至14的初始化以及OS起动操作(步骤S91)。
在执行初始化和OS起动过程中,CPU 6向控制器3提供用以读取次加载程序36的命令。响应于来自CPU 6的该命令,控制器3从存储器装置11的第一和第二启动分区33和35之一中读取次加载程序36,并且将该次加载程序36存储在RAM 9中。CPU 6执行存储在RAM 9中的次加载程序36(步骤S92)。
接着,CPU 6根据次加载程序36向控制器3提供用以读取OS程序和数据的命令。响应于来自CPU 6的该命令,控制器3访问存储器装置11的系统分区33,以读取OS程序和数据37,并且控制器3将OS程序和数据37存储在RAM 9中。接着,CPU 6执行存储在RAM 9中的OS程序37,以起动OS(步骤S93)。当OS得到起动时,基于次加载程序36的处理得以完成。
接着,CPU 6根据次加载程序36向控制器3提供用以初始化装置11至14的命令。响应于来自CPU 6的该命令,控制器3执行用于对嵌入的装置11至14的初始化的处理(例如电压检查)(步骤S94)。
通过初始化,装置11至14中的每一个转换到备用状态,并且CPU 6完成基于主加载程序20的处理(步骤S95)。
<嵌入的装置11至14的状态转变>
将参考图23描述存储器装置11的状态转变。图23示出存储器装置11的状态转变。由于图23的状态转变与图15的状态转变基本相似,下面将仅仅描述与图15不同的点。
当控制器3向存储器装置11发出快速启动命令时,存储器装置11进行从空闲状态向启动和系统分区读取状态的转变。启动和系统分区读取状态对应于图15中通过快速启动命令(ACMD8或CMD8,其中QBR被设定至“1b”)所转变到的启动读取状态。在启动和系统分区读取状态下,控制器3可访问第一和第二启动分区34和35以及系统分区33。
当控制器3发出ACMD8或CMD8(其中QBR被设定至“1b”)时,存储器装置11发送回其中QBA(被接受的快速启动)被设定至“1b”的响应,这允许存储器装置11进行从空闲状态向启动和系统分区读取状态的转变。对ACMD8或CMD8的响应具有这样的配置,其中用图14的CMD8中的QBA来替代QBR。QBA是表明快速启动命令是否被接受的信息。在QBA=“1b”的情况下,快速启动命令被接受,而在QBA=“0b”的情况下,快速启动命令没有被接受。
在启动和系统分区读取状态下,使用CMD12和CM17至CMD19来读取次加载程序36,并且次加载程序36使用CMD12和CM17至CMD19来读取OS程序和数据37。CMD19用于选择第一和第二启动分区33和34以及系统分区33。显然,CMD12和CM17至CMD19可以是添加有CMD55的扩展的命令。
当控制器3向存储器装置11发出ACMD41或CMD0时,存储器装置11进行从启动和系统分区读取状态向空闲状态的转变。此时,在存储器装置11通过CMD0进行向空闲状态转变的情况下,要求另一电压检查(ACMD8或CMD8)。
当控制器3向存储器装置11发出ACMD41时,存储器装置11进行从空闲状态向就绪状态的转变。可以在就绪状态下传输装置的独特的ID号码。即,存储器装置11处于其中可接受ACMD2或CMD2的状态。
当控制器3向存储器装置11发出ACMD2或CMD2时,存储器装置11进行从就绪状态向识别状态(ident状态)的转变。可以在ident状态下传输存储器装置11的地址。即,存储器装置11处于其中可接受ACMD3或CMD3的状态。
当控制器3向存储器装置11发出ACMD3或CMD3时,存储器装置11进行从ident状态向备用状态的转变。存储器装置11从ident状态向备用状态的转变完成对存储器装置11的初始化。备用状态类似于图5的备用状态。
当控制器3向存储器装置11发出CMD7时,存储器装置11进行从备用状态向传送状态的转变。此时,显然,所发出的CMD7的变元需要包括由存储器装置11保持的RCA。在传送状态下,控制器3可以使用CMD19来访问系统分区33以及第一和第二启动分区34和35。然而,即使控制器3在传送状态下访问系统分区33以及第一和第二启动分区34和35,存储器装置11也不进行向启动和系统分区读取状态的转变。启动和系统分区读取状态是这样的状态,其中存储器装置11可以通过快速启动命令进行转变。
<存储器装置11的初始化操作>
集中于快速启动,将参考图24来描述由控制器3执行的对嵌入的装置11至14的初始化操作。图24是示出由控制器3执行的处理流程的流程图,并且图24示出根据主加载程序20而执行的处理。
控制器3从ROM 8读取主加载程序20,并且执行ROM 8中的主加载程序20。控制器3根据主加载程序20而执行图16的步骤A-0至A-2中的处理。通常,装置11至14按照缺省处于SD模式,从而可以省略步骤A-1中的CMD0。在步骤A-2中,控制器3在多个装置支持CMD8时发出ACMD8,而在仅仅一个装置支持CMD8时发出ACMD8或CMD8。此时,在要求快速启动时,控制器3将ACMD8或CMD8的变元QBR设定至“1b”,而在不要求快速启动时,控制器3将QBR设定至“0b”。
当接收到ACMD8或CMD8时,装置11至14发送回包括QBA的响应。当不要求快速启动时,或者当装置不支持快速启动时,在该响应中QBA被设定至“0b”。不支持CMD8的装置不发送回响应。因此,当控制器3接收到对步骤A-2中发出的快速启动命令的响应(其中QBA被设定至“0b”)时,或者当控制器3未接收到该响应(在步骤A-19中QBA=0或没有响应)时,控制器3确定装置11至14不支持快速启动(步骤A-20)。接着,流程转到图16的步骤A-5或图18的步骤B-5,并且执行通常的初始化处理。
另一方面,当控制器3接收到其中QBA被设定至“1b”的响应(在步骤A-19中QBA=1)时,控制器3开始快速启动处理。支持快速启动的装置对应于其中QBR被设定至“1b”的ACMD8或CMD8,并且由于对ACMD8或CMD8的响应的传输结束,装置在八个时钟内被改变为四位总线模式(步骤A-21)。
在SD接口中可以使用两种总线模式,即,一位总线模式和四位总线模式。一位总线模式具有一个位的总线宽度,且可以以400kHz的最大频率操作(下文中称为标准速度模式)。四位总线模式具有四个位的总线宽度,且可以以50MHz的最大频率操作(下文中称为高速度模式)。标准速度模式和高速度模式都可以在四位总线模式下操作,但仅仅标准速度模式可以在一位总线模式下操作。
与装置11至14类似地,控制器3被改变为四位总线模式(步骤A-21)。此时,总线操作频率可以从标准速度模式改变为高速度模式,或者通过控制器3与装置11至14之间的调节,确定总线操作模式是否改变为高速度模式。
控制器3发出ACMD18或CMD18,并且访问第一启动分区34,以读取次加载程序36(步骤A-22)。CMD18是数据读取命令。由于发出CMD18,第一和第二启动分区34和35被启用,以在100ms内读取数据。控制器3参考错误标志,以确定数据是否从第一启动分区34中正常读取。该错误标志用于记忆当控制器3对装置11至14执行各种检查(例如,电压检查)时错误的发生。
将参考图25描述步骤A-22中的详细处理。图25是示出步骤A-22中的处理的流程图。
在控制器3中,错误标志被设定至“0b”(步骤F-0)。控制器3发出CMD18或ACMD18(CRCA是保持次加载程序36的装置的RCA,在第九实施例中,RCA=“0001h”)(步骤F-1)。CMD18是多块读取命令。即,CMD18用于读取多个块。
当确认来自装置11的对CMD8的响应中不存在错误(步骤F-2中的否)时,控制器3访问第一启动分区34,从而以块为单位读取数据,并且将数据传输至RAM 9(步骤F-7)。当在步骤F-7的处理中发生读取错误时,装置11维持在其中不提供数据的状态。控制器3通过设定读取超时来检测读取错误。即,当在给定的周期内没有提供数据(步骤F-8中的是)时,控制器3将错误标志设定至“1b”(步骤F-10)。当在步骤F-2中对CMD18的响应具有错误(步骤F-2中的是)时,控制器3也将错误标志设定至“1b”。
当在数据传送中未发生超时(步骤F-8中的否)时,以及当数据读取到最后(步骤F-9中的是)时,控制器3发出CMD12(步骤F-11)。控制器3通过发出CMD12来结束读取操作。当在步骤F-10中错误标志被设定至“1b”时,控制器3也发出CMD12(步骤F-11)来中断数据读取。
例如,可以使用头部信息来执行步骤F-9中的处理。在步骤F-7中访问的第一块的头部地址包括用以控制读取的头部信息,从而控制器3可以参考该头部信息而了解次加载程序36的大小。更具体而言,在头部信息中记录将被读取的块的数目。或者,在控制器3中预先设定块的数目。块的数目还表示步骤F-7和F-8中的循环的次数。当控制器3读取了从头部信息中获得的块的数目或预设的块数目的数据时,控制器3结束读取。
第一和第二启动分区34和35是不通过文件系统进行管理的区域,并且次加载程序36以地址顺序写入在NAND型闪速存储器11c中。因此,可以通过一次多块读取命令(CMD18)来读取次加载程序36。CMD18用于在地址增加的同时顺序地读取块。
参考图24,在步骤A-22中读取数据(次加载程序36)之后,控制器3检查错误标志。当错误标志被设定至“0b”(步骤A-23中的否)时,控制器3确定在读取的数据中是否存在有效的次加载程序36。可以通过预先固定这样的样式来进行该确定,该样式表明不存在启动代码,例如,与步骤S72中的处理相同地,所有的特定位置都被设定至0或1。当存在次加载程序36(步骤A-30中的是)时,控制器3执行读取次加载程序36(步骤A-29)。稍后描述步骤A-29中的处理。
当错误标志被设定至“1b”时,即,当没有成功地读取数据(步骤A-23中的是)时,控制器3发出CMD19或ACMD19(CRCA是保持次加载程序36的装置的RCA,在第九实施例中,RCA=“0001h”)(步骤A-24)。CMD19用于选择分区,因此,选择第二启动分区35。
当在执行CMD19过程中不存在错误(步骤A-25中的否)时,控制器3尝试从第二启动分区35读取次加载程序36(步骤A-27)。以上在图24中描述了步骤A-27中的处理。
当在执行CMD19过程中发生错误(步骤A-25中的是)时,控制器3确定不存在第二启动分区35(步骤A-26),并且流程转到图16的步骤A-5或者图18的步骤B-5。接着,执行通常的初始化处理。
作为步骤A-27中的处理的结果,当从第二启动分区35成功地读取数据(步骤A-28中的否)时,流程转到步骤A-30。当数据没有成功读取(步骤A-28中的是)时,流程转到图16的步骤A-5或者图18的步骤B-5,并且执行通常的初始化处理。
将参考图26描述步骤A-29中的详细处理。图26是示出基于次加载程序36的由控制器3执行的处理流程的流程图。
如图26中所示,开始执行次加载程序36的控制器3发出CMD19(或ACMD19),以选择系统分区33(步骤G-0)。如上所述,系统分区33是其中安装有OS 37的程序和数据的区域。
当没有成功地选择系统分区33(步骤G-1中的是)时,控制器3确定不存在OS 37(步骤G-2),并且流程转到图16的步骤A-5或者图18的步骤B-5。接着,执行通常的初始化处理。
当成功地选择系统分区33(步骤G-1中的否)时,控制器3从系统分区33中读取OS 37的程序和数据(步骤G-3)。由于系统分区33是通过文件系统管理的区域,根据该文件系统的管理,通过多个读取命令(CMD18或ACMD18)来加载包括多个文件的OS 37。加载的OS 37的程序和数据存储在RAM 9中。
当在步骤G-3中完成对OS 37的程序和数据的加载而未发生错误(步骤G-4中的否)时,CPU 6通过执行在步骤G-3中读取的程序和数据而起动OS 37(步骤G-5)。当OS 37已起动时,根据OS 37,CPU 6命令控制器3发出初始化命令(ACMD41),并且存储器装置11被初始化。这使得存储器装置11能够访问所有的分区。
接着,装置12至14通过图16或18中所示的方法初始化。
由此,在第九实施例的配置中,可以在其他装置的初始化之前使用快速启动来读取OS 37,从而可以高速执行对OS的起动。在SD接口中,要花费相对长的时间来初始化装置11至14。因此,当在所有的装置11至14初始化之后起动OS时,需要花费长时间来起动系统。然而,在第九实施例中,不需要在所有的装置11至14初始化之后才起动OS,因此可以紧接在开启主机设备1之后起动OS。
在第九实施例的配置中,可以响应于快速启动命令(ACMD8或CMD8)来将总线改变为四位总线模式,并且还可以将总线改变为高速度模式。也可以省略用于改变总线模式的命令输入(在常规技术中为CMD6或ACMD6)。因此,可以在对次加载程序36和OS 37的读取操作中实现速度提高。这也有助于OS的高速起动。
存储器装置11包括多个(在第九实施例中为两个)启动分区34和35。因此,即使由于某些原因没有从第一启动分区34成功地读取次加载程序36,也可以从第二启动分区35读取次加载程序36,从而可以改善系统的可靠性。可以提供至少三个启动分区。
在第九实施例中,使用CMD19,可以在初始化之前选择装置中的分区。此时,仅仅允许选择启动分区34和35以及系统分区33。换句话说,CMD19是仅可选择启动分区34和35以及系统分区33的命令。因此,阻止了在初始化之前对用户区域32的访问,从而可保护用户数据。
在第一至第九实施例中,在制造工艺期间预先写入通过存储器装置11至14而保持在寄存器11b至14b中的RCA,或者通过外部可访问的连接引脚而重写入或设定RCA。例如,主机设备1可应用于便携式电话和个人计算机。
本领域技术人员很容易想到其他优点和修改。因此,本发明在其更宽的方面不限于在此示出和描述的具体细节和代表性实施例。因此,只要不脱离由所附权利要求及其等价物所限定的总发明构思的精神或范围,可以进行各种修改。