説明

電子デバイス、メモリデバイス、ホスト装置

【課題】バスへの複数デバイスの接続を可能にする電子デバイスを提供する。
【解決手段】電子デバイスは、アドレスを保持するレジスタを有する。電源を投入された後に電子デバイスの初期化が完了するまでに供給される必要があり、宛先アドレス部を有さない、有する形式1、形式2のコマンドを認識可能に構成されている。形式1のコマンドを受信すると、形式1のコマンドが指示する処理とレスポンスの出力を行なう。レジスタと同じ値を宛先アドレス部に有する形式2のコマンドを受信すると、形式2のコマンドが指示する処理とレスポンスの出力を行なう。一斉送信を意味する値を宛先アドレス部に有する形式2のコマンドを受信すると、レスポンスを出力せずに形式2のコマンドが指示する処理を行なう。一斉送信以外でレジスタと異なる値を宛先アドレス部に有する形式2のコマンドを受信すると、形式2のコマンドの実行とレスポンスの出力を行なわない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子デバイス、メモリデバイス、ホスト装置に係り、例えばメモリカード等が挿入されるホスト装置と、このホスト装置に内蔵され得る(エンベディド)電子デバイスおよびメモリデバイスの初期化に関する。
【背景技術】
【0002】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いた、メモリカード等のメモリシステムが使われている。メモリシステムに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。ホスト装置は、このようなメモリシステムを挿入され、メモリシステムとの間でデータを転送する。メモリシステムの一種として、SDTMカードが知られている。
【0003】
メモリシステムとホスト装置との間のインターフェースとして、様々なものが知られている。そのうちの1つに、SDインターフェースがある。SDインターフェースは、SDTMカードと、SDTMカードをサポートするホストとの間のインターフェースである。
【0004】
SDインターフェースバスには、複数の信号線(例えばクロックライン、コマンドライン等)が定義されている。そして、これらが、1組として1つのバスとして扱われる。
【0005】
近時、メモリや他のデバイスを内蔵するホスト装置が増えている。そして、これらの内蔵デバイスをSDインターフェースを用いて、ホスト装置と接続することが制御等の観点から好ましいことがある。SDインターフェースでは、デバイスを選択するアドレス(relative card address、RCA)によって1つのバスに複数のデバイスを接続することが可能である。しかしながら、各デバイスのRCAを決定するためには、個々のデバイスを別々に制御する手段が用意されていなければならない。このため、通常、SDインターフェース以外の制御信号が必要となり、加えて初期化手順も各デバイスに対して個別に変える必要があった。標準ドライバによる初期化手順の統一化を行なうとともに、内蔵デバイスと、この内蔵デバイスに対して抜き差しが可能なSDTMカードとを接続できるようにするには、ホスト装置に、複数のバスを設ける必要があった。すなわち、複数の組の信号線と、各組専用の信号ピンを、ホスト装置に設ける必要がある。これらの要求によって、ホスト装置の構成、設計が煩雑になる。
【0006】
さらに、より多くの内蔵デバイスを接続したいという要求が増えている。この場合、内蔵デバイスの数に合わせてバスの数を増やす必要がある。しかしながら、このように、単純にバスの数を増やすのみでは、効率が悪い。
【0007】
また、近年は、ハードディスクドライブを持たずに、フラッシュメモリを不揮発性記憶デバイスとして用いるホスト装置が製造されるようになっている。このようなホスト装置では、システムを立ち上げるのに必要なプログラムコート(ブートコード)をフラッシュメモリから読み出す必要がある。ブートコードは、内蔵フラッシュメモリデバイスに格納され、ホストコントローラを介して、システムメモリに転送され、実行される。ここで、ブートコードは、ブートロードやデバイスドライバだけでなく、OS(operating system)も含むことがあり、ホスト装置の電源投入後に真っ先に読み出されることが本来求められる。しかしながら、既存のインターフェース(例えばSDインターフェース)では、デバイスの初期化等の所定の状態を経た後でないと、メモリ内のデータの読み出しが可能な状態に移行できない。このような手順を踏むのは、システムの初期化の処理時間の増大につながり、好ましくない。また、通常領域にブートコードを格納した場合は、通常領域はファイルシステムでデータが管理されているため、システムはブートを開始する前にファイルシステムを実装しておく必要があるという問題があった。
【0008】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【特許文献1】特開2006-92019号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
本発明は、1対1での接続をサポートするバスに対して複数のデバイスを接続することを可能にする電子デバイス、メモリデバイス、ホスト装置を提供しようとするものである。
【課題を解決するための手段】
【0010】
本発明の一態様による電子デバイスは、所定の機能を有する電子デバイスであって、前記電子デバイスの選択に用いる宛先アドレスを保持するレジスタを具備し、前記電子デバイスへの電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有さない1つまたは複数のコマンドで構成される形式1のコマンドと、電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有する宛先アドレス部を含み且つ1つまたは複数のコマンドで構成される形式2のコマンドと、を認識可能に構成され、前記形式1のコマンドを受信し且つ前記形式1のコマンドが指示する処理を実行可能であるとき、前記形式1のコマンドが指示する処理を行なうとともにレスポンスを出力し、前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記形式2のコマンドを受信すると、前記形式2のコマンドが指示する処理を行なうとともにレスポンスを出力し、一斉送信を意味する値を前記宛先アドレス部に有する前記形式2のコマンドを受信すると、レスポンスを出力することなく前記形式2のコマンドが指示する処理を行ない、一斉送信以外で前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記形式2のコマンドを受信すると、前記形式2のコマンドの実行を行なわず且つレスポンスを出力しない。
【0011】
本発明の一態様によるメモリデバイスは、半導体メモリと前記半導体メモリを制御するコントローラとを具備するメモリデバイスであって、前記半導体メモリは、第1記憶領域と第2記憶領域とを有し、前記メモリデバイスは、前記半導体メモリの前記第1記憶領域に対してデータの書き込み、読み出し、及び消去が可能な第1状態と、前記第2記憶領域からのデータの読み出しが可能な第2状態と、を有し、前記コントローラは、前記メモリデバイスへの電源の投入後に前記メモリデバイスを前記第1状態に移行させるためのそれぞれが1つまたは複数のコマンドで構成される複数の第1コマンドと、前記メモリデバイスを前記第1状態から前記第2状態に移行させる第2コマンドと、前記メモリデバイスへの電源投入後に前記メモリデバイスを前記第1状態を経ずに前記第2状態に移行させる1つまたは複数のコマンドで構成される第3コマンドと、を認識可能に構成され、前記メモリデバイスが前記第1状態で前記第2コマンドを受信すると、前記メモリデバイスは前記第2状態に移行し、前記コントローラは前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力し、前記メモリデバイスが電源の投入後の状態で前記第3コマンドを受信すると、前記メモリデバイスは前記第2状態に移行し、前記コントローラは前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力する。
【0012】
本発明の一態様によるホスト装置は、カードデバイスが挿入されるスロットと、前記スロットと接続された第1バスと、前記第1バスを介して前記カードデバイスとの通信を可能にする第1ホストコントローラと、上記複数の電子デバイスと、前記複数の電子デバイスが接続された第2バスと、前記第2バスを介して前記複数のデバイスの1つを選択して通信を可能にする第2ホストコントローラと、を具備し、前記複数の電子デバイスは、それぞれが、デバイスの選択に用いる宛先アドレスを保持するレジスタを有し、前記レジスタは、相互に異なる値を有し、前記第2ホストコントローラは、上記形式2のコマンドを発行することにより、前記カードデバイスおよび前記複数の電子デバイスの初期化を行って初期化が完了した状態に移行させる。
【発明の効果】
【0013】
本発明によれば、バスインターフェースに追加信号を設けることなく複数のデバイスを接続することを可能にする電子デバイス、メモリデバイス、ホスト装置を提供できる。
【発明を実施するための最良の形態】
【0014】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。ただし、図面は模式的なものであり、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【0015】
また、以下に示す各実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0016】
また、本発明の各実施形態における各機能ブロックは、ハードウェア、コンピュータソフトウェア、のいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
【0017】
(第1実施形態)
第1実施形態は、ホスト装置に内蔵されることが可能な構成を有する電子デバイスおよび、そのような電子デバイスをサポートするホスト装置に関する。図1乃至図8を参照して、第1実施形態について説明する。
【0018】
図1は、本発明の第1実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示している。図1に示すように、ホスト装置1は、2つのホストコントローラ2、3、スロット4、CPU(central processing unit)6、システムメモリ7等を含んでいる。
【0019】
CPU6は、ホスト装置1の動作全体を司り、図示せぬROM(read only memory)に格納されているプログラム等に従って動作する。システムメモリ7は、CPU6が各種のデータを一時的に保存しておくために用いられ、また実行可能なプログラムを実行するために用いられる。
【0020】
ホストコントローラ2、3は、このバスを介して接続されるデバイス(要素)と通信するのに必要な様々なハードウェア、ソフトウェア、取り決め等を含んでいる。具体的には、ホストコントローラ2、3は、複数の信号線からなるバスを介した通信が可能になるように構成されている。バスに含まれる信号線として、コマンドライン、データライン、クロックライン、電源ライン等が含まれる。ホストコントローラ2、3の一部の機能は、これらの信号線を予め設定された規定に従って、出力したり、取り込んだりする。より具体的には、バスを介して供給される信号を解析し、この信号から予め設定されたビットパターンを認識し、この信号の中からコマンドを取り込む。また、同様に、所定のビットパターンを認識して、信号の中からデータを取り込む。ホストコントローラ2、3において定義されているコマンドには、様々なものが用意されている。ホストコントローラ2、3は、このような機能を実現できるように、例えばソフトウェアによる制御により実行されるCPUの機能の一部や、半導体チップとして実現することができる。
【0021】
ホストコントローラ2、3は、より具体的には、クロックライン、コマンドライン、データラインをサポートしている。すなわち、ホストコントローラ2、3は、これらクロックライン、コマンドライン、データラインを用いて、データの転送を行えるように構成されている。
【0022】
さらに具体的には、ホストコントローラ2、3は、例えばSDインターフェースを制御できるように構成されている。信号を受ける側のSDインターフェースモジュールは、クロックライン上の信号の立ち上がりのときのコマンドライン、データライン上の信号を取り込む。そして、信号を出力する側のSDインターフェースモジュールは、クロックライン上の信号の立ち上がり(または立ち下がり)のときのコマンドライン、データライン上にコマンド(およびレスポンス)、データを出力する。なお、データラインは、4ビットの信号からなり、すなわち、4本の信号線を用いてパラレルにデータを転送することができる。
【0023】
ホストコントローラ2は、1つのバスを構成する各信号ライン(例えば、クロックライン、コマンドライン、データライン、電源ライン等)を介してスロット4と接続される。スロット4は、このスロット4がサポートするメモリシステムおよびその他デバイスを含む、リームーバブルなカードデバイス5が抜き差しできるように構成されている。
【0024】
スロット4は、これらカードデバイス5と接続される端子を有しており、インターフェース中の各ラインと、これらに対応する端子とが接続される。ホストコントローラ2がSDインターフェースをサポートしている場合、図1のように、クロックライン、コマンドライン、4ビットのデータラインに対応する端子がスロットに設けられる。カードデバイス5として、SDTMカード、SDTMIOカード等、SDインターフェースを介してホスト装置と通信するように構成されたあらゆるカードデバイスが含まれる。
【0025】
スロット4は、カードデバイス5が挿入されているか否かを検出し、カードデバイス5の検出の有無を知らせるカード検出信号CDをホストインターフェース2に供給する。
【0026】
ホストコントローラ3のバスは、1つのバスを構成する各信号ライン(例えば、クロックライン、コマンドライン、データライン、電源ライン)を介して複数の内蔵デバイス(図では4つを例示)11乃至14と接続される。内蔵デバイスとして、ホストコントローラ3を介してCPU6と通信可能に構成されているあらゆるタイプのデバイスを用いることができ、例えば、メモリデバイス、無線LAN(local area network)デバイス等が該当する。内蔵デバイス11乃至14として用いることが可能なデバイスの主たる部分は、各内蔵デバイス11乃至14の機能に応じて公知の技術によって実現できる。一方、各内蔵デバイス11乃至14の、インターフェースを制御するための要素は、後述のように、本実施形態に従って構成されている。内蔵デバイス11乃至14は、SDTMカード等のポータブルデバイスにおいて封止される半導体チップを利用して実現することができる。
【0027】
内蔵デバイス11乃至14は、それぞれ内蔵デバイス11乃至14の主たる機能(例えばメモリ機能、無線LAN機能等)を実行するためのデバイス部11b、12b、13、14bを有する。
【0028】
内蔵デバイス11乃至14は、それぞれコントローラ(デバイスコントローラ)11a、12a、13a、14aを備えている。各コントローラ11a、12a、13a、14aは、CPU6とホストコントローラ3を介して、インターフェースを用いて通信可能に構成されている。すなわち、このようなインターフェースをサポートするためのハードウェアおよびソフトウェア構成を含んでいる。コントローラ11a、12a、13a、14aとホストコントローラ3とは、これらを接続するバスを構成する信号線を介して通信できるように電気的に接続されている。
【0029】
ホストコントローラ2、3がSDインターフェースをサポートしている場合、コントローラ11a乃至14aもSDインターフェースをサポートするように構成されている。コントローラ11a、12a、13a、14aは、デバイス部11b、12b、13b、14bから独立したCPU、半導体チップとして実現してもよい。または、上記のように、コントローラ11a、12a、13a、14aとデバイス部11b、12b、13b、14bとが一体となった半導体チップとして実現してもよい。
【0030】
各コントローラ11a、12a、13a、14aは、それぞれ宛先アドレスを保持するアドレスレジスタ11b、12b、13b、14bを有する。アドレスレジスタ11b、12b、13b、14bは、各内蔵デバイス11乃至14に固有のアドレスが書き込まれている。各内蔵デバイス11乃至14のアドレスは、ホスト装置1の出荷の段階で固定されている。また、出荷の段階で、各内蔵デバイス11乃至14のアドレスの値は、ホスト装置1(たとえばホスト装置1内の図示せぬROM)に入力されており、ホスト装置1は各内蔵デバイス11乃至14のアドレス値を知得している。
【0031】
本実施形態にSDインターフェースを用いる場合、アドレスとして、相対カードアドレス(relative card address、RCA)を用いることができる。RCAは、SDインターフェースを用いたデバイスをホスト装置が初期化する際に、ホスト装置とSDインターフェースを用いるデバイスとの折衝によって、各デバイスに動的に割り当てられる固有の値を有する。図1の例では、内蔵デバイス11、12、13、14には、アドレス=0001、0002、0003、0004が割り当てられている。
【0032】
内蔵デバイス11乃至14の少なくとも1つ(内蔵デバイス11)は、メモリデバイスである。この内蔵デバイス(以下、内蔵メモリデバイスと称することがある)11は、NAND型フラッシュメモリ11cを含んでいる。NAND型フラッシュメモリ11cは、記憶領域として、複数のページから構成される。各ページは、直列接続された複数のメモリセルトランジスタを含んでいる。各メモリセルは、いわゆるスタックゲート構造型のMOSFET(metal oxide semiconductor field effect transistor)からなる。スタックゲート構造のMOSトランジスタは、トンネル絶縁膜、浮遊ゲート電極、電極間絶縁膜、制御ゲート電極、ソース/ドレイン拡散層を含む。各メモリセルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。そして、メモリのセンスアンプ、電位発生回路等を含む制御回路は、メモリセルトランジスタに多ビットのデータを書き込み、多ビットのデータを読み出すことが可能な構成を有している。データの書き込みおよび読み出しは、ページ単位で行なわれる。また、データの消去は複数のページからなるブロック単位で行なわれる。
【0033】
フラッシュメモリ11cの記憶領域は、図2に示すように、例えば、用途および格納するデータの種類に応じて、分割されている。ユーザ領域11c1は、ホスト装置およびホスト装置のユーザが自由にアクセスおよび使用することが可能な領域である。ユーザ領域11c1には、例えば、各種データやホスト装置の動作に必要なプログラムなど任意のデータが格納される。
【0034】
保護領域11c3は、例えば特定のホスト装置1のみがアクセス可能なデータが格納されており、ホスト装置1のユーザは、例えば所定の条件を満たした場合等に限って、保護領域11c3にアクセスできる。ユーザ領域11c1、11c3内のデータは、任意のファイルシステム(例えばFATファイルシステム)によってフォーマットおよび管理されている。
【0035】
システム領域11c4は、ホスト装置1およびユーザは直接アクセスすることができない領域で、コントローラ11aが管理する領域である。例えば、システム領域11c4には、コントローラ11aの制御情報、セキュリティ上方などが格納されている。
【0036】
ブートコード領域(ブート領域)11c2には、ブートコードが格納されている。ブートコードは、ホスト装置1への電源投入後、システム(OS)を起動するまでに実行することが必要な一連の処理の少なくとも一部を行なうためのコードの集合である。
【0037】
ブート領域11c2のデータは、ファイルシステムを用いて管理されない。そして、ブート領域11c2には、例えば、低位アドレスのページから高位アドレスのページに向って順に、ブートコードが格納されている。ホスト装置1は、電源投入後、何らかの手段によりブート領域11c2内のブートコードを低位のアドレスから高位のアドレスに向って順にシステムメモリ7に読み出し、CPU6がこれを実行することによって、システムを起動するまでに一連の処理が行われる。したがって、このシステムには、ファイルシステムも含まれており、したがってファイルシステムは、システム起動後に使用することができるようになる。
【0038】
内蔵デバイス11乃至14として、例えば、別のメモリデバイス(内蔵デバイス12)が含まれる。この内蔵デバイス(以下、内蔵メモリデバイスと称することがある)12には、ブート領域は設けられていない。すなわち、内蔵メモリデバイスは、図2からブート領域を除いた複数の領域、具体的には例えば一般領域、保護領域、システム領域等を有している。
【0039】
次に、内蔵メモリデバイス11、12について説明する。図3は、第1実施形態に係る内蔵メモリデバイスの状態遷移図である。なお、以下の説明は、あるインターフェースを例として用い場合に対応するが、本実施形態は、以下の例に限られない。
【0040】
図3に示すように、内蔵メモリデバイス11、12は、電源を投入されると、ホスト装置からリセットコマンド(SDインターフェースではCMD0)を供給される(遷移T1)。この結果、内蔵メモリデバイス11、12はアイドル状態(初期状態)へと移行する。リセットコマンドは、図3の説明に用いられるインターフェースでは、電源投入の直後に供給されるべきことが規定されているが、インターフェースによっては、必ずしも必須ではない。リセットコマンドは、内蔵デバイスをアイドル状態に移行させる場合に、いつでも発行することが可能である。
【0041】
次に、内蔵メモリデバイス11、12は、内蔵メモリデバイス11、12からのデータの読み出し、内蔵メモリデバイス11、12へのデータの書き込み、内蔵メモリデバイス11、12のデータの消去が可能な状態(初期化が完了した状態)に移行するのに必要な処理を行なう。この処理には、用いられるインターフェースによって、様々な過程が存在するが、以下に、ある具体例を用いて説明する。例えば、以下の例と異なり、1つのコマンドで、初期化が完了した移行するインターフェースも、本実施形態に含まれる。
【0042】
まず、例えば、電圧チェックコマンド(SDインターフェースではCMD8)を供給される(遷移T2)。電圧チェックコマンドは、既知のインターフェースにおいて設けられているコマンドを用いることができる。電圧チェックコマンドを受けると、内蔵メモリデバイス11、12は、自身がサポートしている電圧の範囲が示されたレスポンスを出力する。ホスト装置1によっては、このコマンドを用いた電圧範囲の確認を初期化開始の条件としている。
【0043】
電圧チェックコマンドは、国際出願番号PCT/JP2005/021689の明細書に開示の電圧チェックコマンドを用いることができる。電圧チェックコマンドは、コマンド部、リザーブ部、電圧範囲識別部、チェックパターン部、誤り検出符号部を含んでいる。コマンド部は、電圧チェックコマンドであることを示す固有のビットパターンを有する。電圧範囲識別部は、ホスト装置1がサポートしている電圧範囲を示すビットパターンを有している。チェックパターン部は、後述のレスポンスを用いてホスト装置が電圧チェックコマンドとこれに対するレスポンスの正当性を確認するために用いられ、所定のビットパターンを有する。誤り検出符号部は、例えばCRC(cyclic redundancy check)等の誤り検出符合を含んでいる。内蔵メモリデバイス11、12は、電圧チェックコマンドを受けるとレスポンスを返す。このレスポンスは、コマンドと同じフォーマットを有し、電圧範囲識別部においてメモリデバイスがサポートする電圧範囲を明示するビットパターンが形成されている。
【0044】
次に、内蔵メモリデバイス11、12は、メモリデバイス初期化コマンド(SDインターフェースではACMD41)を供給されて、初期化を開始する。初期化が完了すると、メモリデバイスは、ID(CID)送信要求コマンド、アドレス送信要求コマンドを供給され、これらに対するレスポンスを出力した後、スタンバイ状態に移行する(遷移T3)。ID送信要求コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、このインターフェースを介して通信するデバイスに固有の固体番号の送信を要求するコマンドである(SDインターフェースではCMD2)。アドレス送信要求コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、このインターフェースを介して通信するデバイスにアドレスの提案を要求するコマンドである(SDインターフェースではCMD3)。このアドレスは、ホスト装置が、ホスト装置に接続されるデバイスを識別するために用いられる。ホストは、デバイスから提案されたアドレスが、割り当て済みのアドレスと重なっていない場合、この提案されたアドレスを承認し、そうでない場合は別のアドレスの提案を再度要求する。または、ホスト装置が各デバイスに対して異なるアドレスをしてする例もある。この例では、再要求は不要となる。
【0045】
内蔵メモリデバイス11、12は、デバイス選択コマンドを供給されてトランスファー状態に移行する(遷移T4)。なお、内蔵デバイス13、14は、デバイス選択コマンドを供給されることによって、トランスファー状態と同様な、コマンド受付状態に遷移する。内蔵デバイス13、14におけるコマンド受付状態の名前がトランスファー状態という名前と異なっていたとしても、両者は意味的には同じものである。
【0046】
デバイス選択コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、1つのバスに複数のデバイスが接続される場合に、1つのデバイスを選択するために用いられるコマンドである(SDインターフェースではCMD7)。デバイス選択コマンドは、選択されるべきデバイスのアドレスの値を引数として含んでいる。内蔵メモリデバイス11、12は、トランスファー状態において、自身のアドレスと異なるアドレスを指定されたデバイス選択コマンドを受け取ると、スタンバイ状態に移行する(遷移T5)。
【0047】
トランスファー状態において、読み出しコマンド、書き込みコマンド、消去コマンド(SDインターフェースではCMD17、CMD18、CMD24、CMD25、CMD38)を受けると、ユーザ領域に対してコマンドに応じた読み出し、書き込み、消去実行状態に移行する(遷移T6)。読み出し、書き込み、消去が終了すると、内蔵メモリデバイス11、12はトランスファー状態に移行する(遷移T7)。または、読み出しコマンド、書き込みコマンドが、複数のブロックを順に読み出したり、複数のブロックに順に書き込んだりする、旨を指示している場合、内蔵メモリデバイス11、12は、データ転送停止コマンド(SDインターフェースではCMD12)を受けてトランスファー状態に移行する。
【0048】
トランスファー状態においてブートコード領域(ブート領域)を読み出し可能な状態(ブート読み出し状態)への移行を指示するコマンド(SDインターフェースではCMD6の1つの機能)を受けると、ブート領域を有する内蔵メモリデバイス(内蔵メモリデバイス11)はブート読み出し状態に移行する(遷移T11)。ブート読み出し状態移行指示コマンドは、例えば図4のようなフォーマットを有する。図4に示すように、ブート読み出し状態移行指示コマンドは、少なくとも、コマンド部CMD、ブート読み出し状態移行指示部BTを有している。コマンド部CMDは、ブート読み出し状態移行指示コマンドであることを示す固有のビットパターンを有する。ブート読み出し状態移行指示部BTが、移行指示を示しているビットパターン(例えば“1”)を有していると、ブート読み出し状態移行指示コマンドを受けたメモリデバイスは、ブート読み出し状態に移行する。また同時に、内蔵メモリデバイス11は、ブート読み出し状態移行指示コマンドに対するレスポンスを送信する。レスポンスは、ブート読み出し状態移行指示コマンドと同じフォーマットを有し、ブート読み出し状態移行指示部BTには、ブート読み出し状態に移行した旨のビットパターン(例えば“1”)が形成されている。または、レスポンス内に移行完了の旨が設けられる代わりに、レスポンスの出力後にデータライン上で出力されるステータス内に、ブート読み出し状態に移行した旨が示されている。
【0049】
一方、内蔵メモリデバイス12は、ブート領域を有さないので、ブート読み出し状態移行指示コマンドを認識するが、このコマンドを供給されてもこれを無視する。すなわち、内蔵メモリデバイス12は、コマンドが指示する内容の実行を行なわず、レスポンスも返さない。
【0050】
ブート読み出し状態において、内蔵メモリデバイス11が、ブート読み出し状態移行指示部BTが解除を示しているビットパターン(例えば“0”)を有しているブート読み出し状態移行指示コマンドを受けると、トランスファー状態に移行する(遷移T12)。
【0051】
ブート読み出し状態において、ブート領域のアドレス指定を伴った読み出し指示コマンド(SDインターフェースではCMD18)を受けると、内蔵メモリデバイス11は、ブート領域内のデータを読み出す(遷移T13)。ホスト装置1は、既知の任意の方法でブートコードのサイズ(ブートコードを格納しているブロックの数)を特定する。そして、ブートコードの読み出しが終了すると、内蔵メモリデバイス11は、ホスト装置1から、データ転送停止コマンド(SDインターフェースではCMD12)を受ける。これを受けて、内蔵メモリデバイス11は、ブート読み出し状態に移行する(遷移T14)
ブート読み出し状態において、ブート書き込み状態への移行を指示するコマンドを受けると、内蔵メモリデバイス11は、ブート書き込み状態に移行する(遷移T15)。ブート書き込み状態において、内蔵メモリデバイス11が、ブート書き込み状態の解除を指示するコマンドを受けると、ブート読み出し状態に移行する(遷移T16)。
【0052】
ブート書き込み状態において、ブート領域のアドレス指定を伴った書き込みを指示するコマンド(SDインターフェースではCMD25)を受けると、内蔵メモリデバイス11は、ブート領域にデータを書き込む(遷移T17)。そして、ブートコードの書き込みが終了すると、内蔵メモリデバイス11は、ホスト装置1から、データ転送停止コマンドを受ける。これを受けて、内蔵メモリデバイス11は、ブート書き込み状態に移行する(遷移T18)。なお、内蔵メモリデバイス12は、ブート領域を有さないので、ブート書き込み状態移行指示コマンドを認識するが、このコマンドを供給されても、このコマンドが指示する内容を実行せず、またレスポンスを返さない。
【0053】
アイドル状態においてブート読み出し状態への移行を指示するコマンドが供給されると、内蔵メモリデバイス11は、ブート読み出し状態に移行する。アイドル状態からブート読み出し状態への移行指示コマンドとして、アイドル状態から次の状態への遷移の条件となるコマンドを利用して実現することができる。本例の場合、電圧チェックコマンドが該当する。
【0054】
図5は、ブート読み出し状態への移行指示機能を有する電圧チェックコマンドを示している。図5に示すように、電圧チェックコマンドは、コマンド部CMD、リザーブ部RV、ブート読み出し状態移行指示部BT、電圧範囲識別部VOL、チェックパターン部CP、誤り検出符号部EDを含んでいる。コマンド部CMDは、電圧チェックコマンドであることを示す固有のビットパターンを有する。
【0055】
ブート読み出し状態移行指示部BTは、このコマンドで、ブート読み出し状態移行を指示するか、しないかを明示している。例えば、“1”は、電圧チェックコマンドが、ブート読み出し状態への移行を要求することを意味し、“0”は、電圧チェック動作のみを要求することを意味する。コマンド部CMD、電圧範囲識別部VOL、チェックパターン部CPS、誤り検出符号部EDは、上記した、拡張前の電圧チェックコマンドと同じである。
【0056】
図3に示すように、ブート読み出し状態の移行が指示されている電圧チェックコマンドを受けると、ブートコード領域を有する内蔵メモリデバイス11は、ブート読み出し状態に移行する(遷移T21)。また、同時に、内蔵メモリデバイス11は、レスポンスを返す。このレスポンスは、コマンドと同じフォーマットを有する。レスポンス内のブート読み出し状態移行指示部(表示部)BTは、ブート読み出し状態への移行が完了した旨を示し、例えばコマンドと同じ値を有する。
【0057】
一方、ブートコード領域を有さない内蔵メモリデバイス12は、ブート読み出し状態への移行が指示されている電圧チェックコマンドを受けると、アイドル状態に留まる(遷移T22)。また、このような内蔵デバイス12は、ブート読み出し状態へ移行しなかった旨を、ブート読み出し状態移行表示部において示すレスポンスを返す。
【0058】
電圧チェックコマンドが、電圧チェックのみを指示するために用いられる場合は、ブート読み出し状態移行指示部BTは、移行を指示しない値(例えば“0”)を有する。レスポンスでも、ブート読み出し状態移行表示部BTに同じ値が立っている。
【0059】
ブート読み出し状態において、内蔵メモリデバイス11は、リセットコマンドを受けると、内蔵メモリデバイス11はアイドル状態に移行する(遷移T23)。
【0060】
ブート読み出し状態移行指示部BTを有する電圧チェックコマンドを利用して、内蔵メモリデバイス11を、初期化を経ずにブート読み出し状態に直接移行させることができる。このため、ホスト装置1は、最小のステップ数で、ブートコードの読み出しを開始できる。
【0061】
次に、図6を参照して、ホスト装置1の動作について、内蔵デバイス11乃至14の動作に触れながら説明する。特に、ホスト装置1(ホストコントローラ2、3)への電源投入から、各内蔵デバイスを初期化が完了した状態に移行させるまでの動作を説明する。以下の説明で、ここまでの説明では触れなかった、ホスト装置および内蔵デバイスが有する特徴についても触れる。
【0062】
図6は、第1実施形態に係るホスト装置の動作を示すフローチャートである。図6は、内蔵デバイス11乃至14を初期化が完了した状態に移行させるための処理であり、カードデバイス5の初期化に先立って行なわれる。
【0063】
図6に示すように、まず、ホストコントローラ2、3に電源が投入される(ステップS1)。これを受けて、内蔵メモリデバイス11乃至14へ電源が供給される。次に、ホストコントローラ3は、リセットコマンドを内蔵デバイス11乃至14に供給する(ステップS2)。リセットコマンドは、このコマンドを受けたデバイスをアイドル状態に移行させるためのコマンド(SDインターフェースではCMD0)である。
【0064】
次に、ホストコントローラ3は、初期化の開始前に発行することが要求されているコマンドを利用して、ブート読み出し状態に移行する。このようなコマンドとして、例えば、上記のように、電圧チェックコマンドを利用することができる。
【0065】
電圧チェックコマンドは、上記のように、ブート領域を持つ複数のデバイスが接続された状態で使用されることが想定されていない。そこで、本実施形態では、電圧チェックコマンドがさらに拡張される。すなわち、電圧チェックコマンドが、所望の内蔵デバイス11乃至14に対してのみ有効となるように拡張される。具体的には、図7に示すように、ブート読み出し状態移行指示部BTを有する電圧チェックコマンドにコマンドの宛先を示すアドレス部ADが挿入される。SDインターフェースでは、図8に示すように、1対1の通信を想定されたインターフェースにおけるコマンド(以下、従来コマンドと称する)の直前に、宛先のアドレスを示すアドレス部ADを有するコマンド(CMD55)を付加することによって、このような、コマンドの拡張がサポートされている。
【0066】
ここで、従来コマンドの拡張化について説明する。任意のコマンド(例えば既出のリセットコマンド、電圧チェックコマンド)に、アドレスの値を挿入することによって拡張される。拡張コマンドのアドレス部ADに、宛先として指定したい内蔵デバイスのアドレスの値を入れることによって、所望の内蔵デバイスのみが、この拡張コマンドに反応する。また、非宛先のアドレスを有する内蔵デバイスは、コマンドを無視する(コマンドが指示する内容を行なわず、レスポンスを返さない)。
【0067】
一方、アドレス部ADを所定の値(例えば“FFFFh”)にすることによって、従来コマンドをブロードキャスト(一斉送信)用に拡張することができる。ブロードキャスト用の拡張コマンドを受けた各内蔵デバイス11乃至14は、コマンドによって定義された処理を行なう。しかし、レスポンスを返さない。バス上で、各内蔵デバイス11乃至14からのレスポンスが、衝突し、破壊されることを避けるためである。さらに、アドレス部ADを所定の値(例えば“0000”)とすることによって、拡張コマンドを認識しない従来のデバイスとの互換性を確保できる。
【0068】
この拡張電圧チェックコマンドを用いて内蔵デバイス11のみをブート読み出し状態に移行させる。具体的には、拡張電圧チェックコマンドのアドレス部に宛先の内蔵デバイス11のアドレスの値(“0001”)を入れるとともに、ブート読み出し状態移行指示部BTを有効にする。このような引数を有する拡張電圧チェックコマンドは、内蔵デバイス12乃至14にも供給されるが、内蔵デバイス12乃至14は、このコマンドの宛先ではない。このため、非宛先の内蔵デバイス12乃至14は、このコマンドを無視し、アイドル状態に留まる。アイドル状態にある内蔵デバイス12乃至14は、初期化が完了した状態に移行するまでに、アイドル状態において次に供給されるべきコマンド(本例では自身を宛先として含む電圧チェックコマンド)を受信しない限り、アイドル状態に留まる。
【0069】
自身を宛先に指定され且つブート読み出し可状態への移行を指示する拡張電圧チェックコマンドを受け取ると、内蔵デバイス11は、ブート読み出し状態移行表示部を有効(移行した旨)にした、拡張電圧チェックコマンドのレスポンスを送信するとともに、ブート読み出し状態に移行する(ステップS3)。レスポンスは拡張電圧チェックコマンドと同じフォーマットを有する。ホストコントローラ3は、カードデバイス5との通信の場合と異なり、内蔵デバイス11の動作電圧範囲や、初期化が完了した状態に移行するまでの処理において知得することになっているアドレス等を予め知得している。このため、従来の電圧チェックや初期化を行なわずに、ブート読み出し状態に移行しても問題は生じない。
【0070】
なお、ブート読み出し移行指示部を有する、拡張前の(アドレス指定の無い)電圧チェックコマンドを用いて、ブート読み出し移行指示を行ってもよい。この場合、このコマンドを全内蔵デバイス11乃至14が受け取るが、内蔵デバイス12乃至14は、ブートコード領域を有していないので、このコマンドを無視してアイドル状態に留まる。一方、内蔵メモリデバイス11は、このコマンドを認識して、ブート読み出し状態に移行する。ただし、この制御を行なう場合、ブートコード領域を有する内蔵メモリデバイスは、1つでなければならない。ブートコード領域を有する複数の内蔵デバイスからのレスポンスがバス上で衝突することを避けるためである。
【0071】
次に、ホストコントローラ3は、データの読み出しコマンドを用いて、ブートコード領域内のブートコードを読み出す(ステップS4)。ここでは、例えば複数ブロックを読み出すコマンドを用いることができる。例えば、ブートコード領域の先頭ブロック内のデータビットが全て0、またはFFhの場合は、ブートコードが存在しないと判定される。また、ブートコードのサイズ(ブート領域を格納しているブロックの数)の特定は、ホストシステムで定められた任意の方法で行なうことができる。例えばブートコードのサイズを示す位置を決めておけば、ブートコードを読み出す手順を統一することができる。SDインターフェースが用いられる場合、ブートコードの読み出しは、コマンドCMD18とコマンドCMD12を用いて行なうことができる。なお、内蔵デバイス11以外の内蔵デバイス12乃至14にもデータの読み出しコマンドが供給されるが、内蔵デバイス12乃至14はアイドル状態にあるので、データの読み出しコマンドに応答しない。
【0072】
ホストコントローラ3は、ブートコードの読み出しが終了すると、リセットコマンドを発行して、内蔵デバイス11をアイドル状態に移行させる(ステップS5)。
【0073】
次に、ホストコントローラ3は、従来と同じ手順を踏んで、内蔵デバイス11乃至14に対して、1つずつ、初期化を行なう。具体的には、以下の通りである。なお、以下の説明では、ある具体的な順番で内蔵デバイスの初期化を行なっているが、この順番は一例であり、以下の例に限らない。例えば内蔵デバイス13、14は、メモリをも内蔵する、いわゆるコンボデバイスとすることが可能である。このような場合を想定して、拡張デバイス初期化コマンドは拡張メモリデバイス初期化コマンドより前に発行されることが規定されてもよい。以下の説明は、この場合に対応している。
【0074】
ホストコントローラ3は、アドレス部の引数が内蔵デバイス13のアドレス(0003)とされ且つブート読み出し状態移行指示が無効とされた拡張電圧チェックコマンドを出力する(ステップS11)。内蔵デバイス11乃至14のうち、内蔵デバイス13のみがこのコマンドに対してレスポンスを返す。なお、内蔵デバイス13が拡張電圧チェックコマンドをサポートしていない場合、ステップS11が省略される。上記のように、内蔵デバイス11乃至14の供給電圧とホストコントローラ3の動作電圧との整合は取れているはずなので、電圧チェック手順が省略されても問題はない。ただし、ブートコード領域を有する内蔵デバイスは、拡張電圧チェックコマンドをサポートしていなければならない。
【0075】
次にホストコントローラ3は、内蔵デバイス13の初期化を行なう。この際、拡張されたデバイス初期化コマンドを用いることができる。拡張の方法は、図7、図8を用いて説明した手法を取ることができる。デバイス初期化コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、メモリデバイス以外のデバイスの初期化を要求するコマンドである(SDインターフェースではCMD5)。ホストコントローラ3は、アドレス部の引数が内蔵デバイス13のアドレス(0003)とされた拡張SDIOデバイス初期化コマンドを出力する(ステップS12)。
【0076】
拡張デバイス初期化コマンドを受けると、内蔵デバイス13は、初期化を開始するとともにビジーの旨を示すレスポンスを出力する。ホストコントローラ3は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで(ステップS13)、ステップS12を繰り返す。そして、初期化が完了すると、処理は、ステップS14に移行し、内蔵デバイス14の初期化を行なうため処理が開始する。
【0077】
ステップS14乃至ステップS16において、ステップS11乃至ステップS13と同様の処理が、内蔵デバイス14に対して行なわれる。ステップS14乃至ステップS16が、ステップS11乃至ステップS13と異なる点は、拡張デバイス初期化コマンド内のアドレス部が内蔵デバイス14のアドレス(0004)の値を有することである。このコマンドを受けて、内蔵デバイス14は初期化を開始する。内蔵デバイス14が拡張電圧チェックコマンドをサポートしていない場合、ステップS14が省略される。内蔵デバイス14の初期化が完了すると、処理は、ステップS21に移行し、内蔵デバイス11の初期化を行なうため処理が開始する。
【0078】
ステップS21乃至ステップS23において、ステップS11乃至ステップS13と同様の処理が、内蔵デバイス11に対して行なわれる。ステップS21乃至ステップS23が、ステップS11乃至ステップS13と異なる点は、ステップS22において拡張されたメモリデバイス初期化コマンドが用いられることである。拡張の方法は、図7、図8を用いて説明した手法を取ることができる。メモリデバイス初期化コマンド内のアドレス部は、内蔵デバイス11のアドレス(0001)の値を有している。このコマンドを受けて、内蔵デバイス11による初期化が完了すると、処理はステップS24に移行し、内蔵デバイス12の初期化を行なうため処理が開始する。
【0079】
ステップS24乃至ステップS26において、ステップS21乃至ステップS23と同様の処理が、内蔵デバイスS12に対して行なわれる。ステップS24乃至ステップS26が、ステップS21乃至ステップS23と異なる点は、拡張メモリデバイス初期化コマンド内のアドレス部が内蔵デバイス12のアドレス(0002)を有することである。このコマンドを受けて、内蔵デバイス12による初期化が完了すると、処理はステップS27に移行する。
【0080】
なお、内蔵デバイスの数が5つ以上の場合、ステップS11乃至ステップS26と同様の処理が、全ての内蔵デバイスに対する初期化が完了するまで行なわれる。この後、処理はステップS27に移行する。
【0081】
ステップS27、S28において、内蔵デバイス11乃至14を初期化が完了した状態に移行させるのに必要な次の処理が行なわれる。例えば、まず、ステップS27において、ホストコントローラ3は、拡張されたID送信要求コマンドを発行する。拡張ID送信要求コマンドは、ID送信要求コマンドを図7、図8を用いて説明した手法で拡張することによって得られる。ステップS27において、拡張ID送信要求コマンド内のアドレス部は、ブロードキャストを意味する値を有している。よって、内蔵デバイス11乃至14は、拡張ID送信要求コマンドを受け取ってもIDを返信しない。
【0082】
まず、ステップS28において、ホストコントローラ3は、拡張されたアドレス送信要求コマンドを発行する。拡張アドレス送信要求コマンドは、アドレス送信要求コマンドを図7、図8を用いて説明した手法で拡張することによって得られる。ステップS28において、アドレス送信要求コマンド内のアドレス部は、ブロードキャストを意味する値を有している。よって、内蔵デバイス11乃至14は、アドレス送信要求コマンドを受け取っても提案アドレスを返信しない。
【0083】
ステップS28の完了を条件に、内蔵デバイス11乃至14はスタンバイ状態に移行する。この後、従来の方法に従って、カードデバイス5がホスト装置1に挿入されている場合、ホストコントローラ2は、カードデバイス5の初期化に必要な処理を行なう。
【0084】
なお、本実施形態において、内蔵デバイス11乃至14がホスト装置1に内蔵される例について説明した。しかしながら、内蔵デバイス11乃至14は、ホスト装置1に内蔵される用途に限られない。すなわち、例えば、本実施形態に示した内蔵デバイス11乃至14を1チップで構成し、これをパッケージにて封止することにより、ホスト装置1にスロット4を介して挿入されるようなカードデバイスを実現することもできる。
【0085】
ここまで説明したように、第1実施形態に係る内蔵メモリデバイス11は、ホスト装置への電源投入後の最初の状態から次の状態に移行するコマンドに、所定の領域(ブートコード領域)を読み出すことが可能な状態への移行を指示するコマンドをサポートするインターフェースをサポートしている。このため、内蔵メモリデバイス11は、データの書き込み、読み出し、消去を行なうことが可能な状態に移行するのに必要な処理(初期化処理)を省略して、所定の領域にアクセスすることができる。このため、この所定の領域に、ブートコード等の早い段階での読み取りを必要とするデータを格納しておくことによって、ホスト装置1への電源供給の開始後、すぐに、このようなデータにアクセスできる。
【0086】
また、第1実施形態に係るホストコントローラ2、3、およびコントローラ11a、12a、13a、14aでは、1対1での通信を主に想定した従来のインターフェースにおいて定義されているアドレスを指定する機能を有さないコマンドが、宛先アドレスが指定できるように拡張される。このため、従来のインターフェースのバスに複数のデバイスが接続されたとしても、各デバイスを、初期化することができる。
【0087】
また、1つのバスインターフェースに接続される内蔵デバイスの数によって負荷容量は変化する。このため、ホスト装置1や内蔵デバイス11乃至14のI/Oセルにドライブ能力を調節する機能を持たせるか、負荷容量に応じた生じた遅延に対応する分、動作周波数を落とすことにより、内蔵デバイスの数にあわせた調節を行なうことができる。
【0088】
(第2実施形態)
第2実施形態は、第1実施形態からの初期化時間の短縮に関する。
【0089】
第2実施形態の内蔵デバイスおよびホスト装置の構成は、第1実施形態(図1、図2)と同じである。図9を参照して、第2実施形態の動作について説明する。図9は、第2実施形態に係るホスト装置の動作を示すフローチャートである。
【0090】
ステップS1乃至ステップS5までは、第1実施形態と同じである。ステップS5の次、ホストコントローラ3は、アドレス部の値をブロードキャスト用の値に設定された拡張電圧チェックコマンドを出力する(ステップS31)。各内蔵デバイス11乃至14は、この拡張電圧チェックコマンドを受けても、レスポンスを返さない。上記のように、内蔵デバイス11乃至14の供給電圧とホストコントローラ3の動作電圧との整合は取れているはずなので、拡張電圧チェックコマンドのレスポンスが送信されなくても、ホスト装置1の動作に支障は無い。そうであるにも係らず、電圧チェックコマンドの発行を行なう理由の1つは、内蔵デバイス11乃至14が、電圧チェックコマンドの受信を、初期化開始の条件としている場合があるからである。
【0091】
次に、ホストコントローラ3は、アドレス部の値をブロードキャスト用の値に設定された拡張デバイス初期化コマンドを出力する(ステップS32)。各内蔵デバイス13、14は、レスポンスを返さずに初期化を開始する。よって、内蔵デバイス13、14の初期化が並行して行なわれる。内蔵メモリデバイス11、12は、拡張デバイス初期化コマンドを無視する。
【0092】
次に、ホストコントローラ3は、アドレス部の値をブロードキャスト用の値に設定された拡張メモリデバイス初期化コマンドを出力する(ステップS33)。各内蔵メモリデバイス11、12は、レスポンスを返さずに、初期化を開始する。よって、内蔵メモリデバイス11、12の初期化が並行して行なわれる。内蔵デバイス13、14は、拡張メモリデバイス初期化コマンドを無視する。なお、ステップS32とステップS33は、順序が逆であっても構わない。この順序は、例えば内蔵デバイス13、14がコンボデバイスである場合を想定して決定された例である。
【0093】
次に、ホストコントローラ3は、内蔵デバイス11乃至14の初期化の完了を確認するための処理を行なう。具体的に、まず、ホストコントローラ3は、ステップS12と同じ処理を行なう。そして、ホストコントローラ3は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで(ステップS13)、ステップS12を繰り返す。
【0094】
次に、ホストコントローラ3は、ステップS15と同じ処理を行なう。そして、ホストコントローラ3は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで(ステップS16)、ステップS15を繰り返す。
【0095】
次に、ホストコントローラ3は、ステップS22と同じ処理を行なう。そして、ホストコントローラ3は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで(ステップS23)、ステップS22を繰り返す。
【0096】
次に、ホストコントローラ3は、ステップS25と同じ処理を行なう。そして、ホストコントローラ3は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで(ステップS26)、ステップS25を繰り返す。なお、内蔵デバイス11乃至14の初期化の完了の確認は、この例と異なる順序で行なわれてもよい。
【0097】
次に、ステップS27、S28と同じ処理が行なわれることにより、内蔵デバイス11乃至14がスタンバイ状態に移行する。
【0098】
ここまで説明したように、第2実施形態に係る内蔵デバイス11乃至14およびホスト装置1によれば、第1実施形態と同じインターフェースをサポートしている。このため、第1実施形態と同じ効果を得られる。また、第2実施形態に係る内蔵デバイス11乃至14およびホストコントローラ2、3は、宛先アドレスが指定できるように拡張されたコマンドをサポートするインターフェースをサポートしている。このため、第1実施形態と同じ効果を得られる。
【0099】
また、第2実施形態に係るホストコントローラ3は、内蔵デバイス11乃至14の初期化を指示するコマンドをブロードキャストで送信する。このため、内蔵デバイス11乃至14は、並行して初期化を行なう。よって、初期化に要する時間が短い。
【0100】
(第3実施形態)
第3実施形態は、バスを1つしか持たないホスト装置で複数のデバイスをサポートする方法に関する。図10、図11を参照して、第3実施形態について説明する。図10は、本発明の第3実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示している。
【0101】
図10に示すように、ホスト装置21は、1つのホストコントローラ22を有する。このホストコントローラ22は、第1実施形態のホストコントローラ2、3と同じ構成を有する。
【0102】
ホストコントローラ22には、1つのバスを介して内蔵デバイス11乃至14が接続されている。また、ホストコントローラ22は、アナログスイッチ23およびバッファ24を介して、スロット4と接続されている。具体的には、ホストコントローラ22からスロット4へ向う方向のみに流れる信号ラインは、ホストコントローラ22からバッファ23を介してスロット4に接続される。このような信号のラインとして、例えばクロックラインのような単方向に流れる信号のためのラインが該当する。
【0103】
一方、ホストコントローラ22とスロット4との間で両方向に流れる信号ラインについては、アナログスイッチ24を介して、ホストコントローラ22とスロット4とが接続される。このような信号のラインとして、例えば、コマンドライン、データラインのような双方向に流れる信号のためのラインが該当する。なお、双方向性のバッファも使用可能であるが、この場合、ホストコントローラ22からバスの方向を制御する制御信号が必要となる。通常は、このような信号は用意されていない。バッファ23を用いずに、アナログスイッチ24で全信号ラインを制御しても良い。
【0104】
バッファ23およびアナログスイッチ24は、CPU6からホストコントローラ22を介してイネーブル信号ENを供給されると、ホストコントローラ22とスロット4との間の電気的な接続を行なう。この結果、CPU6は、スロット4(スロット4に挿入されたカードデバイス5)と通信を行なうことができる。
【0105】
ホストコントローラ22は、また、コントローラ11a、12a、13a、14aと、対応する信号ライン(クロックライン、コマンドライン、データライン、電源ライン)を介して接続されている。
【0106】
スロット4は、カードデバイス5が挿入されているか否かを検出し、カードデバイス5の検出の有無を知らせるカード検出信号CDをホストインターフェース2に供給する。CPU6は、カードデバイス5が挿入されていない間、バッファ23およびアナログスイッチ24をオフに維持している。そして、カードデバイス5が挿入されたことが検出されると、CPU6は、内蔵デバイス11乃至14とホストコントローラ22との間での通信やデータ転送が行なわれていないことを条件にバッファ23およびアナログスイッチ24をオンする。
【0107】
また、ホスト装置21は、スロット4に設けられた蓋4aを有する。蓋4aには、センサが設けられており、蓋4aが開けられると、その旨を示す蓋開閉信号LDをホストインターフェース22に供給する。蓋4aが開くと、カードデバイス5が抜かれる可能性があることを意味する。CPU6は、蓋開閉信号LD等を用いてカードデバイス5がスロット4から抜かれる可能性があることを検出すると、カードデバイス5へのアクセスを速やかに停止し、バッファ23およびアナログスイッチ24をオフする。こうすることによって、スロット4からの信号と、内蔵デバイス11乃至14からの信号がバス上で衝突することが回避される。
【0108】
その他の構成は、第1実施形態と同じである。
【0109】
次に、図11を参照して、動作について説明する。図11は、第3実施形態に係るホスト装置の動作を示すフローチャートである。まず、図11に示すように、ホストコントローラ22に電源が投入される(ステップS1)。次に、ホストコントローラ22は、イネーブル信号を有効にしてバッファ23およびアナログスイッチ24をイネーブル(オン)にする(ステップS41)。次に、ホストコントローラ22は、リセットコマンドを発行する(ステップS2)。次に、ホストコントローラ22は、イネーブル信号を無効にして、バッファ23およびアナログスイッチ24をディセーブル(オフ)にする(ステップS42)。この結果、ホストコントローラ22は、内蔵デバイス11乃至14のみと通信を行なう状態になる。
【0110】
次に、この状態で、内蔵デバイス11乃至14の初期化が行なわれる。具体的には、まず、第1実施形態のステップS3乃至S5と同じ処理が行なわれる。次に、第1実施形態のステップS11乃至S16、S21乃至S26と同じ処理、または第2実施形態のステップS31乃至S33、ステップS12、S13、S15、S16、S22、S23、S25、S26と同じ処理が行なわれる。次に、第1実施形態のステップS27、S28と同じ処理が行なわれる。この結果、内蔵デバイス11乃至14は、スタンバイ状態に移行する。この後、内蔵デバイス11乃至14は、スタンバイ状態からの状態の遷移を要求するコマンド(例えばデバイス選択コマンド)以外のコマンドは受け付けない。よって、ホストコントローラ22は、スロット4に挿入されているカードデバイス5のみと通信しているのと実質的に同じ状態である。
【0111】
次に、ホストコントローラ22は、バッファ23およびアナログスイッチ24をイネーブル状態にする(ステップS43)。この状態で、ホストコントローラ22は、カードデバイス5の初期化を行ってスタンバイ状態に移行させる。
【0112】
具体的には、まずホストコントローラ22は、ブート読み出し状態移行指示部を有する電圧チェックコマンドをカードデバイス5に供給する(ステップS44)。ブート読み出し状態移行指示部は無効にされている。
【0113】
次に、ホストコントローラ22は、カードデバイス5に、デバイス初期化コマンドまたはメモリデバイス初期化コマンドを供給する(ステップS45)。カードデバイス5は、初期化を開始するとともにビジーの旨を示すレスポンスを出力する。ホストコントローラ22は、初期化が完了してレディーの旨を明示するレスポンスを受け取るまで(ステップS46)、ステップS45を繰り返す。
【0114】
初期化が完了すると、ホストコントローラ22は、カードデバイス5をスタンバイ状態に移行させるのに必要なさらなる処理を行なう。具体的には、例えば、ホストコントローラ22は、ID送信要求コマンドを用いてカードデバイス5からIDを読み出す(ステップS51)。次に、ホストコントローラ22は、アドレス送信要求コマンドを用いて、カードデバイス5からアドレスの提案を受ける(ステップS52)。ここで、内蔵デバイス11乃至14もアドレスの送信要求コマンドを受信するが、上記のように、内蔵デバイス11乃至14はスタンバイ状態にあってこのコマンドを無視するため、内蔵デバイス11乃至14のアドレスの値が変わることはない。
【0115】
ホストコントローラ22は、カードデバイス5から提案されたアドレスの値が、内蔵デバイス11乃至14のアドレスと一致しているか否かを判定する(ステップS53)。一致している場合、ステップS52に戻って、ホストコントローラ22は別のアドレスの値の提案を要求する。そして、カードデバイス5から提案されたアドレスの値と、内蔵デバイス11乃至14のアドレスの値が一致しなくなるまでステップS52を繰り返す。内蔵デバイス11乃至14はスタンバイ状態において、アドレス送信要求コマンドを無視するが、カードデバイス5はアドレス送信要求コマンドを受け付けることによって、アドレスが変更可能になっている。
【0116】
ここまで説明したように、第3実施形態に係るデバイスおよびホスト装置によれば、第1実施形態と同じインターフェースをサポートしている。このため、第1実施形態と同じ効果を得られる。また、第3実施形態に係るデバイスおよびホスト装置は、宛先アドレスが指定できるように拡張されたコマンドをサポートするインターフェースをサポートしている。このため、第1実施形態と同じ効果を得られる。また、内蔵デバイス11乃至14の初期化に第2実施形態に係る方法を用いることによれば、第3実施形態に係るホスト装置においても、第2実施形態と同じ効果を得られる。
【0117】
また、第3実施形態に係るホスト装置21によれば、ホストコントローラ22とスロット4とは、バッファ23およびアナログスイッチ24を介して接続される。このため、スロット4をホストコントローラ22から電気的に分離することができる。スロット4をホストコントローラ22から分離した状態で内蔵デバイス11乃至14をスタンバイ状態へと移行させる処理の後、スロット4をホストコントローラ22と接続してカードデバイス5をスタンバイ状態へ移行する処理を行なうことが可能となる。このため、1つのバスに内部デバイス11乃至14とスロット4とを接続しても、内部デバイス11乃至14およびカードデバイス5を適切に初期化することができる。
【0118】
(第4実施形態)
第4実施形態は、ブートコードの読み出しの詳細に関する。このため、第4実施形態は、第1乃至第3実施形態に組み合わせることができる。図12、図13を参照して第4実施形態について説明する。
【0119】
図12は、第4実施形態に係るホスト装置の内蔵デバイス内のブートコードの読み出しのフローチャートを示している。すなわち、図12は、第1乃至第3実施形態のブートコート読み出し完了までのフローの詳細を示すフローチャートである。
【0120】
図12に示すように、ステップS1、S2と同じ工程が行なわれる。次に、ホストコントローラ3、22は、ブート読み出し状態への移行指示コマンドを供給する(ステップS61)。このコマンドとして、第1実施形態と同じく、ブート読み出し状態移行指示部を含んだ電圧チェックコマンドを利用することができる。
【0121】
内蔵デバイス11乃至14は、ブート読み出し状態への移行指示を示す電圧チェックコマンドを受け取る。内蔵デバイスのうちで、ブート領域を有する内蔵デバイスが有る場合、この内蔵デバイス(例えば、図3の内蔵デバイス11)は、レスポンスを返す。このレスポンス内のブート読み出し状態移行指示部は、移行した旨を示すビットパターンを有している。他の内蔵デバイス(例えば、図3の内蔵デバイス12乃至14)は、ブート領域を有さないので、レスポンスを返さない。
【0122】
電圧チェックコマンドに代えて、拡張電圧チェックコマンドを用いることもできる。この場合、拡張電圧チェックコマンド内のアドレス部には、ブート領域を有する内蔵デバイスのアドレス(例えば、図3の例では、“0001”)が記載されている。
【0123】
次に、ホストコントローラ3、22は、電圧チェックコマンドに対するレスポンスの有無を確認する(ステップS62)。レスポンスが無い場合、ブート領域を有する内蔵デバイスが存在しないので、ステップS5を経て、内蔵デバイス11乃至14からのブートコードの読み出し処理が終了する。
【0124】
ホストコントローラ3、22は、電圧チェックコマンドに対するレスポンスを受信した場合、ブート読み出し状態移行部が、移行の旨を示すビットパターンを有しているか否かを確認する(ステップS63)。このようなビットパターンが形成されていない場合、処理はステップS5に移行する。一方、レスポンスが、ブート読み出し状態への移行の旨を示している場合、ホスト装置は、ブートコードの読み出しを行なうために、ステップS64に移行する。
【0125】
ステップS64において、ホストコントローラ3、22は、読み出しコマンドを発行する(ステップS64)。この読み出しコマンドは、SDインターフェースの場合、マルチブロック読み出しコマンド(CMD18)を用いることができる。次に、ホストコントローラ3、22は、読み出しコマンドに対するレスポンスを受信する(ステップS65)。次に、ホストコントローラ3、22は、レスポンス内の誤り訂正符号や誤り検出用のビットパターンの整合を確認する等して、レスポンス内のエラーの有無を確認する(ステップS66)。
【0126】
エラーが検出されると、処理はステップS81に移行する。ステップS81で、ホストコントローラ3、22は、読み出しを停止するために、データ転送終了コマンド(SDインターフェースではCMD12)を発行する。次に、ホストコントローラ3、22は、データ転送終了コマンドに対するレスポンスを受け取り(ステップS82)、ステップS5に移行する。
【0127】
一方、エラーが検出されなかった場合、ホストコントローラ3、22は、内蔵デバイス11から読み出された、ブートコード領域内の最初のブロック内のデータをバッファに読み込む(ステップS71)。また、ホストコントローラ3、22は、この最初のブロック内のデータを解析して、ブートコードが存在するか否かを確認する(ステップS72)。予めブートコードが存在しない旨を示すパターン、例えば特定の場所が全て0または1などと決めておくことで判定が可能である。
【0128】
ブートコードが存在しない場合、ホストコントローラ3、22はバッファの内容を破棄すると共に、処理はステップS81に移行する。一方、ブートコードが存在する場合、ホストコントローラ3、22は、ブートコードの内容を解析して、ブートコードの大きさ(例えば何ブロックに亘ってブートコードが格納されているか)を知得する(ステップS73)。ブートコードの大きさを示すデータの位置を予め決めておくことで、共通した手順を用いることができるようになる。
【0129】
次に、ホストコントローラ3、22は、バッファ中のデータをシステムメモリ7に転送する(ステップS74)。次に、ホストコントローラ3、22は、ブート領域内の2番目のブロックのデータをバッファに読み込み、次いでシステムメモリ7に転送する(ステップS75)。次に、ホストコントローラ3、22は、ステップS73で知得したブートコードの大きさを参照して、ブートコードが全て読み出されるまで(ステップS76)、ステップS75を繰り返す。ブートコード全体の読み出しが完了すると、処理はステップS81に移行する。
【0130】
第1実施形態で説明したように、本発明の各実施形態では、ホスト装置1、21への電源投入後に、通常の初期化処理を省いてブート読み出し状態への移行を可能とするコマンドが設けられている。このため、電源投入から、ブートコードの読み出しまでに必要な処理は非常に少ない。そこで、本実施形態に係るブートコードの読み出し処理を、CPU5に代えて、ホストコントローラ3、22内に設けられたDMA(direct memory access)コントローラを用いてブートコードの読み出しを自動化させることもできる。
【0131】
図13は、本発明の実施形態に係るホスト装置を概略的に示すブロック図である。図13に示すように、ホストコントローラ3、22は、第1実施形態で説明した要素に加えて、DMAコントローラ42を含んでいる。DMAコントローラ42は、既知の技術を用いて、本実施形態の動作を実行するように構成される。DMAコントローラを用いることにより、ブートコードの読み出し完了までの処理をCPU6を用いずに行なうことができる。ホスト装置41の図13に示す構成以外の構成については、図13では省略されているが、第1実施形態(図1)、第3実施形態(図10)と同じである。
【0132】
ここまで説明したように、第4実施形態に係る内蔵デバイス11乃至14およびホストコントローラ3、22は、第1実施形態と同じインターフェースをサポートしている。このため、ホスト装置41への電源投入からブートコードの読み出し状態への移行に要する処理が少なく、結果、電源投入からブートコード読み出し完了までに要する処理も少ない。このため、この一連の処理をDMAコントローラ42によって実行することが可能となる。第4実施形態を第1乃至第3実施形態と組み合わせることによって、第1乃至第3実施形態によって得られる効果を得ることもできる。
【0133】
(第5の実施形態)
次に、この発明の第5の実施形態について説明する。本実施形態は、上記第1の実施形態をより具体的に説明するものであり、構成及び動作は、基本的には第1の実施形態と同様である。なお以下では、“b”を付加した数値は2進数表記であり、“h”を付加した数値は16進数表記であり、何も付加しない数値は10進数表記である。
【0134】
<拡張電圧チェックコマンドについて>
まず、上記実施形態で説明した図6のステップS3で使用する拡張電圧チェックコマンドについて、図14を用いて説明する。図14は、拡張電圧チェックコマンドの構成を模式的に示すダイアグラムである。拡張電圧チェックコマンドは、SDTMインターフェースではACMD8として定義出来る。
【0135】
ACMD8は、前述のCMD55とCMD8との組み合わせである。CMD55は、その上位ビットから順に、Command Index及びRCAを含む。Command Indexにはコマンド固有の番号が格納され、CMD55の場合には“110111b”である。RCAは、次に続くコマンド(ACMD8の場合にはCMD8)の宛先となるデバイスのRCAを含む。
【0136】
CMD8は、その上位ビットから順に、Command Index、QBR(Quick Boot Request)、Reserved、VHS、Pattern、CRC、及びENDを含む。Command Index、QBR、Reserved、VHS、Pattern、及びCRCはそれぞれ、前述のコマンド部、ブート読み出し状態移行指示部BT、リザーブ部RV、電圧範囲識別部VOL、チェックパターン部CP、及び誤り検出符号部EDに相当する。CMD8の場合、Command Indexは“001000b”である。また、QBR=“1b”である場合には、CMD8はブート読み出し状態への移行を要求し、“0b”である場合には、電圧チェック動作のみを要求する。以下では、QBE=“1b”とされて、ブート読みだし状態への移行を要求する動作を、クイックブート(quick boot)と呼ぶことにする。
【0137】
<内蔵デバイス11〜14の状態遷移について>
次に、メモリデバイス11、12及びデバイス13、14の状態遷移について、図15を用いて説明する。図15は、メモリデバイス11の状態遷移図であるが、Boot Read State及びBoot Write Stateを有しない以外は、その他のデバイス12〜14も同様である。
【0138】
図15の状態遷移図は、第1の実施形態で説明した図3と対応している。図中のIdle State、Initialization、Standby State、Transfer State、(Executing Read, Write, Erase)、Boot Read State、及びBoot Write Stateはそれぞれ、図3におけるアイドル状態、初期化、スタンバイ状態、トランスファー状態、(読み出し、書き込み、消去)、ブート読み出し状態、及びブート書き込み状態に対応する。そして図15では、SDTMインターフェースにおいて各状態間の遷移に使用する具体的なコマンド名を記載している。以下では、主要な状態遷移についてのみ、メモリデバイス11(ブート領域を備えたデバイス)を例に、図15を参照して説明する。
【0139】
メモリデバイス11は、コントローラ3からクイックブートを命令されることにより、Initialization及びStandby Stateを経ることなく、Idle StateからBoot Read Stateへ直接遷移する。この際に、コントローラ3からメモリデバイス11に与えられるコマンドが、上記説明したACMD8またはCMD8であり、これらのコマンドにおいてはQBR=“1b”とされる。ホスト装置1内においてCMD8をサポートするデバイスが1つだけであれば、CMD8を使用出来る。しかし、CMD8をサポートするデバイスが複数有る場合には、そのうちのいずれかを選択して命令する必要があるため、ACMD8を使用する。
【0140】
他方、コントローラ3から、QBR=“0b”とされたACMD8またはCMD8が発行されると、メモリデバイス11はInitializationされる。更に、引き続きACMD41が発行され、ACMD2またはCMD2が発行され、更にACMD3またはCMD3が発行されることで、メモリデバイス11はStandby Stateに遷移する。CMD2及びCMD3は第1の実施形態で説明した通りであり、ACMD2及びACMD3はそれぞれ、CMD2及びCMD3にそれぞれCMD55が付加されたコマンドである。
【0141】
Standby Stateにあるメモリデバイス11は、コントローラ3からCMD7を発行されることで、Transfer Stateに遷移する。勿論、この際に発行されるCMD7の引数には、メモリデバイス11の保持するRCAが含まれていなければならない。
【0142】
Transfer Stateにあるメモリデバイスは、コントローラ3からCMD6を発行されることで、Boot Read Stateに遷移出来る。CMD6の内容は、第1の実施形態で説明した図4の通りである。CMD6によってBoot Read Stateに遷移したメモリデバイス11は、BT=“0b”とされたCMD6を発行されることによって、Transfer Stateに遷移する。但し、Idle Stateから直接Boot Read Stateに遷移した場合には、コントローラ3が仮にCMD6を発行したとしても、メモリデバイス11はTransfer Stateに遷移することは無い。すなわち、Boot Read StateとTransfer Stateとの間の遷移は、初期化が完了した後に可能となる。
【0143】
<コントローラ3における初期化動作について>
次に、コントローラ3による内蔵デバイス11〜14の初期化動作について、図16を用いて説明する。図16は、コントローラ3の処理の流れを示すフローチャートである。
【0144】
図示するように、コントローラ3はまず、内蔵デバイス11〜14に電源を投入する(ステップA−0)。その後、コントローラ3はステップA−1〜A−18の処理を行う。ステップA−1〜A−18の処理は、第1の実施形態で説明した図6におけるステップS2〜S5、S11〜S16、S21〜S28にそれぞれ対応している。
【0145】
すなわち、コントローラ3はCMD0を発行する(ステップA−1)。前述の通り、CMD0はリセットコマンドである。これによりコントローラ3は、内蔵デバイス11〜14をIdle stateに遷移させると共に、コントローラ3と内蔵デバイス11〜14を接続するバス(CMD line)をinput modeとする。Input modeとされることで、バスはSDTMインターフェースにおける各種コマンドを待ち受ける状態となる。
【0146】
次にコントローラ3は、ACMD8を発行する(ステップA−2)。ACMD8においては、QBR=“1b”、RCA=“0001h”とされる。つまり、クイックブートが命令され、RCA=“0001h”に該当するメモリデバイス11はBoot Read Stateに遷移する。その他の内蔵デバイス12〜14は、Idele Stateに留まった状態である。
【0147】
更にコントローラ3は、CMD18及びCMD12を用いて、メモリデバイス11内のブートコード領域にアクセスする(ステップA−3)。これによりコントローラ3は、ブートコード領域に保持されるブートコードを読み出す。
【0148】
ブートコードの読み出しが終了すると、コントローラ3は再度CMD0を発行して、メモリデバイス11をIdle stateに遷移させる(ステップA−4)。なお、メモリデバイス11が、ブートコードの読み出しが終了した時点でIdle stateに遷移出来るような場合には、ステップA−4は不要である。このことは図6でも同様である。
【0149】
次にコントローラ3は、内蔵デバイス11乃至14を1つずつ初期化する。すなわち、まず内蔵デバイス13についての初期化を行うにあたり、コントローラ3はACMD8(但しQBR=“0b”、RCA=“0003h”)を発行する(ステップA−5)。引き続きコントローラ3は、ACMD5(但し、RCA=“0003h”)を発行する(ステップA−6)。ACMD5は、CMD55とCMD5とを含むコマンドであり、CMD5はメモリデバイス以外の初期化を命令するコマンドである。以上により、内蔵デバイス13がinitializeされる。
【0150】
Initializeされることにより内蔵デバイス13がready状態になると(ステップA−7、YES)、すなわち、ready状態になった旨のレスポンスを内蔵デバイス13から受け取ると、コントローラ3は次に内蔵デバイス14の初期化を行う。内蔵デバイス14の初期化処理は、内蔵デバイス13の場合と同様である(ステップA−8〜A−10)。
【0151】
次にコントローラ3は、メモリデバイス11の初期化を行う。すなわちコントローラ3は、ACMD8(但しQBR=“0h”、RCA=“0001h”)を発行する(ステップA−11)。なお、メモリデバイス11に対するACMD8の発行は、すでにステップA−2で行われている。つまり、内蔵デバイス11の電圧チェックは、一度、既に済んでいる。従って、ステップA−11は省略しても構わない。引き続きコントローラ3は、ACMD41(但し、ECA=“0001h”)を発行する(ステップA−12)。ACMD41は、CMD55とCMD41とを含むコマンドであり、CMD41はメモリデバイスの初期化を命令するコマンドである。以上により、メモリデバイス11がinitializeされる。
【0152】
Initializeされることによりメモリデバイス11がready状態になると(ステップA−13、YES)、すなわち、ready状態になった旨のレスポンスをメモリデバイス11から受け取ると、コントローラ3は、次にメモリデバイス12の初期化を行う。メモリデバイス12の初期化処理は、メモリデバイス12の場合と同様である(ステップA−14〜A−16)。
【0153】
その後、コントローラ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はStandby Stateに遷移する。
【0154】
<内蔵デバイス11〜14における初期化動作について>
次に、図16で説明した初期化処理における内蔵デバイス11〜14の処理について説明する。まず、内蔵デバイス11〜14の備えるフラグについて説明する。
【0155】
内蔵デバイス11〜14は、2つのフラグを有する。すなわち、フラグFirstCMD55と、フラグCompatibleModeである。フラグFirstCMD55は、既にCMD55をコントローラ3から受信したか否かを示すフラグである。そしてフラグFirstCMD55は、CMD55を受け取るまでは“1b”とされ、最初にCMD55を受信すると、以後“0b”とされる。
【0156】
フラグCompatibleModeは、内蔵デバイス11〜14の動作モードを切り替えるためのフラグであり、電源投入直後は“1b”とされている。“1b”とされている期間、内蔵デバイス11〜14は、従来のSDTMコマンドを用いた手順により初期化を行う。つまり、上記実施形態で説明したACMD8、ACMD2、ACMD3、ACMD5は使用されない。以下、この動作モードを互換モードと呼ぶ。
【0157】
他方、最初に受信したCMD55に含まれる引数に含まれる16ビットのRCA番号(以下、これをCRCAと呼ぶ)が“0000h”で無い場合には、フラグCompatibleModeは“1b”から“0b”にセットされる。つまり、最初に受信したコマンドCMD55が、内蔵デバイス11〜14のいずれかを選択させるための命令であれば、フラグCompatibleModeは“0b”とされる。そして“0b”とされると、内蔵デバイス11〜14は、上記実施形態で説明した拡張されたSDTMコマンドを用いた手順により初期化を行う。つまり、ACMD8、ACMD2、ACMD3、ACMD5等が使用可能となる。以下、この動作モードを拡張モードと呼ぶ。
【0158】
上記フラグFirstCMD55、CompatibleModeは、内蔵デバイス11〜14自身が保持しても良い。この場合には、例えば内蔵デバイス11〜14のレジスタ等に、これらのフラグが保持される。しかし内蔵デバイス11〜14は、これらのフラグそのものを有している必要はない。つまり内蔵デバイス11〜14は、これらのフラグに応じて動作モードが変化するような構成であれば十分である。更に、こららのフラグをコントローラ3が保持しても良い。
【0159】
次に、内蔵デバイス11〜14の動作について、メモリデバイス11の場合を例に挙げて、図17を用いて説明する。図17は、メモリデバイス11の処理の流れを示すフローチャートである。内蔵デバイス11〜14は、コントローラ3からコマンドを受信して、その内容によってどの様な動作するかを決める。そのため、内蔵デバイス11〜14の動作は、コマンド受信とその処理のループから形成される。図17に示すフローチャートは、初期化期間のみに有効なフローチャートであり、内蔵デバイス11〜14が、図13におけるIdle State及びInitializationにおいて有効である。なお、下記に説明する処理は、各デバイス11〜14がそれぞれ有するコントローラ11b〜14bによって実行され、下記機能はソフトウェアで実現されても良いし、ハードウェア、例えばwired logic等により実現されても良い。
【0160】
まずメモリデバイス11は、フラグCompatibleMode、FirstCMD55として、それぞれ“1b”をセットする(ステップE−1)。次にメモリデバイス11は、コントローラ3からコマンドを受信すると(ステップE−2)、それがCMD55であるか否かを判定する(ステップE−3)。
【0161】
CMD55でなかった場合(ステップE−3、NO)、メモリデバイス11は、そのコマンドのレスポンスを送信すると共に、定義に従ってコマンドを実行する(ステップE−4)。
【0162】
CMD55であった場合(ステップE−3、YES)、メモリデバイス11はこのCMD55が最初に受信したCMD55であるか否かを判定する(ステップE−5)。これは、フラグFirstCMD55が“1b”であるか否かによって判定出来る。つまり、フラグFirstCMD55が“1b”であれば、受信したCMD55は最初のCMD55であるし、“0b”であれば当該CMD55は最初のCMD55では無い。
【0163】
最初のCMD55であった場合(ステップE−5、YES)、メモリデバイス11はフラグFirstCMD55を“0b”にセットする。この際、CMD55を受信した全ての内蔵デバイス11〜14が、フラグFirstCMD55を“0b”にセットする。引き続きメモリデバイス11は、CMD55内のRCA、すなわちCRCAをチェックする(ステップE−7)。
【0164】
CRCA=“0000h”でなかった場合(ステップE−7、NO)、つまりいずれかの内蔵デバイス11〜14が選択されていた場合には、メモリデバイス11はフラグCompatibleModeを“0b”とする。これにより、メモリデバイス11は拡張モードで動作する。
【0165】
他方、CRCA=“0000h”であった場合(ステップE−7、YES)、メモリデバイス11はフラグCompatibleModeを“1b”のままとする。つまり、互換モードを維持する。なお、これ以降、CMD55を受信したとしても、ステップE−6〜E−8の処理は行われない(なぜなら、ステップE−5、NOだから)。つまり、ステップE−8で拡張モードが設定されない限り、メモリデバイス11は以降、常時互換モードとして動作する。また、CMD55を受信した全ての内蔵デバイス11〜14が、フラグCompatibleModeを“0b”にセットする。
【0166】
ステップE−5においてフラグFirstCMD55=“0b”である場合、ステップE−7においてCRCA=“0000h”である場合、またはステップE−8においてフラグCompatibleModeが“0b”にセットされた場合、次に内蔵デバイス11は、自身が拡張モードであるか否かを判定する(ステップE−9)。
【0167】
拡張モードである場合、すなわちフラグCompatibleMode=“0b”である場合(ステップE−9、NO)、メモリデバイス11はCRCAと、自身がレジスタ保持するRCAの値(これを以下DRCAと呼ぶ)とを比較する(ステップE−10)。
【0168】
両者が一致した場合、すなわちCRCA=DRCAの場合(ステップE−10、YES)、メモリデバイス11は、当該CMD55が自分宛であることを認識し、コントローラ3に対してレスポンスを返す(ステップE−11)。
【0169】
その後、コントローラ3から後続するコマンドを受信すると(ステップE−12)、当該コマンドが初期化処理において実行可能なコマンドであるか否かを判定する(ステップE−13)。実行可能なコマンドであれば(ステップE−13、YES)、メモリデバイス11はコントローラ3に対して、当該コマンドについてのレスポンスを返し(ステップE−14)、コマンドを実行する(ステップE−15)。そして、ステップE−2へ戻る。
【0170】
実行不能なコマンドであれば(ステップE−13、NO)、メモリデバイス11は何も行わず(レスポンスも返さず)、ステップE−2へ戻る。また、ステップE−10においてCRCAとDRCAとが一致しない場合(ステップE−10、NO)、メモリデバイス11は当該CMD55が自分宛で無いことを認識する。そして、次に発行されるコマンドは受信するが(ステップE−16)、そのコマンドを無視し、レスポンスも返さず、ステップE−2へ戻る。
【0171】
ステップE−9において互換モードである場合、すなわちフラグCompatibleMode=“1b”である場合(ステップE−9、YES)、メモリデバイス11はコントローラ3に対して、CMD55のレスポンスを返す(ステップE−17)。そして後続するコマンドを受信する(ステップE−18)。ステップE−18で受信したコマンドがCMD41であれば(ステップE−19、NO)、メモリデバイス11はコントローラ3に対して、ACMD41に関するレスポンスを返し(ステップE−20)、ACMD41を実行する(ステップE−21)。
【0172】
ステップE−19においてCMD41でなければ(ステップE−19、NO)、メモリデバイス11はレスポンスを返さず、また処理も行わずにステップE−2に戻る。なぜなら、CMD55を含むコマンドのうち(ステップE−3、YES)、互換モードにおいて初期化処理時に認識可能なコマンドはCMD41だけだからである。
【0173】
以下、ステップE−2に戻ると、次のコマンドを受信して、初期化が完了するまで同様の処理を繰り返す。なお、図17のフローチャートは、メモリデバイス12でも同様である。また内蔵デバイス13、14でも同様であり、内蔵デバイス13、14の場合にはステップS19で判定されるコマンドがCMD5(=ACMD5)である点が異なるのみである。
【0174】
なお、QBR=“1b”とされたCMD8、またはQBR=“1b”、CRCA=“0001h”とされたACMD8をメモリデバイス11が受信した場合には、メモリデバイス11はステップE−15においてクイックブートを実行する。つまり、図17に示すシーケンスは一時中断され、ブートコード領域からのブートコード読み出しが実行される。ブートコードの読み出しが完了すれば、ステップE−2に戻る。
【0175】
SDTMインターフェースにおいては、上記のようにして第1の実施形態が適用出来る。
【0176】
(第6の実施形態)
次に、この発明の第6の実施形態について説明する。本実施形態は、上記第2の実施形態をSDTMインターフェースに適用した際の、より具体的な動作に関するものである。
【0177】
本実施形態に係るコントローラ3による内蔵デバイス11〜14の初期化動作について、図18を用いて説明する。図18は、コントローラ3の処理の流れを示すフローチャートである。
【0178】
図示するようにコントローラ3は、内蔵デバイス11〜14に電源を投入する(ステップB−0)。その後コントローラ3は、ステップB−1〜B−17の処理を行う。ステップB−1〜B−17の処理は、第2の実施形態で説明した図9におけるステップS2〜S5、S31〜S33、S12、S15、S22、S23、S25〜S28にそれぞれ対応している。
【0179】
まずコントローラ3は、ステップB−1〜B−4の処理を行う。ステップB−1〜B−4は、第5の実施形態で説明したステップA−1〜A−4と同様である。次にコントローラ3は、内蔵デバイス11〜14につき、一括して初期化命令を発行する。
【0180】
すなわちコントローラ3は、まずACMD8(QBR=“0b”、RCA=“FFFFh”)を発行する(ステップB−5)。すなわち、拡張電圧チェックコマンドを、ブロードキャストで送信する。ブロードキャストで送信されるため、内蔵デバイス11〜14はレスポンスを返さない。引き続きコントローラ3は、ACMD5(RCA=“FFFFh”)を発行する(ステップB−6)。これにより内蔵デバイス13、14は初期化を開始する。引き続きコントローラ3は、ACMD41(RCA=“FFFFh”)を発行する(ステップB−7)。これによりメモリデバイス11、12は初期化を開始する。
【0181】
その後は、コントローラ3は内蔵デバイス11〜14の初期化の完了を確認するための処理を行なう。すなわち、ステップB−8〜B15の処理を行う。これらの処理は、第5の実施形態で説明したステップA−6、A−7、A−9、A−10、A−12、A−13、A−15、A−16の処理と同様である。従って説明は省略する。
【0182】
そして、最後にACMD2(RCA=“FFFFh”)及びACMD3(RCA=“FFFFh”)を発行して(ステップB−16、B−17)、初期化を完了する。
【0183】
SDTMインターフェースにおいては、上記のようにして第2の実施形態が適用出来る。
【0184】
(第7の実施形態)
次に、この発明の第7の実施形態について説明する。本実施形態は、上記第3の実施形態をSDTMインターフェースに適用した際の、より具体的な動作に関するものである。
【0185】
本実施形態に係るコントローラ3による内蔵デバイス11〜14の初期化動作について、図19を用いて説明する。図19は、コントローラ3の処理の流れを示すフローチャートである。
【0186】
図示するように、コントローラ3は、内蔵デバイス11〜14に電源を投入する(ステップC−0)。その後、コントローラ3はステップC−1〜C−13の処理を行う。ステップC−1〜B−3の処理は、第3の実施形態で説明した図11におけるステップS41、S2、S42にそれぞれ対応する。またステップC−4の処理は、図11におけるブート読み出しからID、アドレス要求までに相当するものであって、上記したステップA−2〜A−18、またはB−2〜B−17の処理に相当する。ステップC−5、C−6は、図11におけるステップS43、S44に相当する。ステップC−7〜C−10は、図11におけるステップS45、S46に相当する。そしてステップC−11〜C13は、図11におけるステップS51〜S53に相当する。
【0187】
上記ステップC−6においては、コントローラ3は、CMD8(QBR=“0b”)を発行する(C−6)。これにより、カードデバイス5の電圧チェックが実行される。引き続きコントローラ3は、CMD5を発行して(ステップC−7)、カードデバイス5の初期化を行う。その後、コントローラ3はACMD9、CMD2、CMD3を順次発行することで、初期化を完了させる。
【0188】
(第8の実施形態)
次に、この発明の第8の実施形態について説明する。本実施形態は、上記第4の実施形態をSDTMインターフェースに適用した際の、より具体的な動作に関するものである。
【0189】
本実施形態に係るコントローラ3によるブートコードの読み出し動作について、図20を用いて説明する。図20は、コントローラ3の処理の流れを示すフローチャートである。
【0190】
図示するように、コントローラ3は、内蔵デバイス11〜14に電源を投入する(ステップD−0)。その後、コントローラ3はステップD−1〜D−16の処理を行う。ステップD−1〜D−16の処理は、第4の実施形態で説明した図12におけるステップS2〜S、S61〜S66、S71〜S76、S81、S82、S5にそれぞれ対応する。なお、ステップD−3においてレスポンスを得られない場合には、ステップD−16に進んでも良い。また、ステップD−2においてはCMD8の代わりにACMD8を使用することが出来る。
【0191】
(第9の実施形態)
次に、この発明の第9の実施形態について説明する。本実施形態は、上記第1乃至第8の実施形態におけるクイックブートの詳細に関するものであり、クイックブートを行う際にオペレーティングシステム(OS)の読み出しを行うものである。以下では、第1乃至第8の実施形態と異なる点についてのみ説明する。
【0192】
<ホスト装置1の構成>
図21は、本実施形態に係るホスト装置1のブロック図であり、その主要部のみを示している。本実施形態に係る構成は、第1の実施形態で説明した図1において、更にROM8及びRAM9が設けられた構成を有している。また、メモリデバイス11におけるフラッシュメモリ11cの構成が異なっている。それ以外の構成及び動作は、図21では図示を省略している部分もあるが、全て同一である。
【0193】
ROM8及びRAM9は、例えば図1におけるシステムメモリ7に含まれるものであっても良い。ROM8は例えば半導体メモリであって、プライマリローダー(Primary Loader)20を保持する。Primary Loader20は、CPU6で実行されるプログラムであり、上記第1乃至第8の実施形態における内蔵デバイス11〜14の初期化及びクイックブートを行う際に実行される。
【0194】
RAM9は、例えばDRAM等の半導体メモリであって、CPU6の作業領域として使用される。例えばCPU6は、Primary Loader20をRAM9に読み出し、RAM9において必要なテーブル等を作成する。また、後述するオペレーティングシステム(OS:Operating system)も、RAM9に読み出されてCPU6により実行される。
【0195】
メモリデバイス11は、NAND型フラッシュメモリ11cを備えている。NAND型フラッシュメモリ11cは、保護領域(Security area)30、システム領域(System area)31、ユーザ領域(User area)32、システムパーティション(System partition)33、第1ブートパーティション(First boot partition)34、及び第2ブートパーティション(Second boot partition)35を備えている。保護領域30、システム領域31、及びユーザ領域32はそれぞれ、第1の実施形態で説明した図2におけるシステム領域11c4、保護領域11c3、及びユーザ領域11c1に相当する。
【0196】
システムパーティション33は、任意のファイルシステム(例えばFATファイルシステム)により管理され、OSを保持する。また第1、第2ブートパーティション34、35はファイルシステムにより管理される領域では無く、それぞれセカンダリローダー(Secondary Loader)36を保持する。Secondary Loader36は、CPU6で実行されるプログラムであり、システムパーティション33からOSを読み出す際に実行される。これらのシステムパーティション33、第1ブートパーティション34、及び第2ブートパーティション35はそれぞれ、ユーザ領域32とは物理的に区切られた独立したパーティションである。従ってCPU6は、これらのパーティション33〜35を、ユーザ領域32とは物理的に異なる領域として認識する。また、第1、第2ブートパーティション34、35は、第1の実施形態で説明した図2におけるブートコード領域11c2に相当する。
【0197】
NAND型フラッシュメモリ11cにおいて、上記ユーザ領域32、システムパーティション33、及び第1、第2ブートパーティション34、35は、CPU6によって任意にアクセス可能な領域である。他方、保護領域30及びシステム領域31は、CPU6が任意にアクセス出来る領域では無く、保護領域30は所定の条件を満たした場合にのみアクセス可能であるが、システム領域31はメモリデバイス11のコントローラ11aのみがアクセス可能である。
【0198】
メモリデバイス12は、メモリデバイス11において、システムパーティション33及び第1、第2ブートパーティション34、35を排した構成を有している。デバイス13、14は、第1の実施形態で説明した通りである。
【0199】
<内蔵デバイス11〜14の初期化動作の大まかな流れについて>
次に、CPU6及びコントローラ3による内蔵デバイス11〜14の初期化動作の大まかな流れについて、図22を用いて説明する。図22は、CPU6及びコントローラ3の動作を示すタイミングチャートである。
【0200】
図示するように、まずCPU6がROM8からPrimary Loader20をRAM9に読み出し、Primary Loader20を実行する(ステップS90)。これによりCPU6は、Primary Loader20に従って、各デバイス11〜14の初期化と、OSの立ち上げ動作を開始する(ステップS91)。
【0201】
初期化及びOS立ち上げにあたってCPU6は、コントローラ3に対してSecondary Loader36の読み出しを命令する。するとコントローラ3は、CPU6の命令に従って、メモリデバイス11の第1、第2ブートパーティション33、35のいずれかからSecondary Loader36を読み出し、RAM9に格納する。そしてCPU6は、RAM9に格納されたSecondary Loader36を実行する(ステップS92)。
【0202】
次にCPU6は、Secondary Loader36に従って、コントローラ3に対してOSの読み出しを命令する。するとコントローラ3は、CPU6の命令に従って、メモリデバイス11のシステムパーティション33にアクセスし、OS37を読み出し、RAM9に格納する。そしてCPU6は、RAM9に格納されたOSを実行する(ステップS93)。OSが実行されたことで、Secondary Loader36に基づく処理は完了する。
【0203】
引き続きCPU6は、Primary Loader36に従って、コントローラ3に対してデバイス11〜14の初期化を命令する。するとコントローラ3は、CPU6の命令に従って、デバイス11〜14に対して電圧チェック等を行い、初期化のための処理を行う(ステップS94)。
【0204】
デバイス11〜14の各々は、初期化によりStandby Stateに遷移し、CPU6はPrimary Loader20に基づく処理を完了する(ステップS95)。
【0205】
<内蔵デバイス11〜14状態遷移について>
次に、メモリデバイス11の状態遷移について、図23を用いて説明する。図23は、メモリデバイス11の状態遷移図である。図23は、基本的には図15と同様であるので、以下では図15と異なる点についてのみ説明する。
【0206】
メモリデバイス11は、コントローラ3からクイックブートを命令されることにより、Idle StateからBoot and System Partition Read Stateに遷移する。Boot and System Partition Read Stateは、図15においてクイックブート命令(QBR=“1b”とされたACMD8またはCMD8)によって遷移したBoot Read Stateに相当する。Boot and System Partition Read Stateでは、コントローラ3は第1、第2ブートパーティション34、35及びシステムパーティション33にアクセス出来る。
【0207】
Idle StateからBoot and System Partition Read Stateへ遷移する条件は、QBR=“1b”とされたACMD8またはCMD8がコントローラ3によって発行され、これに対してQBA(Quick Boot Accepted)=“1b”とされたレスポンスをメモリデバイス11が返した場合である。ACMD8またはCMD8に対するレスポンスは、図14に示したCMD8の構成において、QBRをQBAに置き換えた構成を有している。QBAは、クイックブート命令を受け入れたか否かを示す情報であり、QBA=“1b”であればクイックブート命令が受け入れられ、“0b”であれば受け入れられなかったことを示す。
【0208】
Boot and System Partition Read Stateでは、コントローラ3がCMD12、CMD17〜CMD19を用いることで、OS37及びSecondary Loader36の読み出しを行う。CMD19は、第1、第2ブートパーティション33、34及びシステムパーティション33を選択するためのコマンドである。勿論、これらのCMD12、CMD17〜CMD19は、CMD55が付加された拡張コマンドであっても良い。
【0209】
Boot and System Partition Read Stateにあるメモリデバイス11は、コントローラ3からACMD41またはCMD0を発行されることで、Idle Stateに遷移する。この際、CMD0によってIdle Stateに遷移した場合には、再度の電圧チェック(ACMD8またはCMD8)が必要となる。
【0210】
Idle Stateにあるメモリデバイス11は、コントローラ3がACMD41を発行することにより、Ready Stateに遷移する。Ready Stateは、デバイス固有の固体番号を送信可能な状態である。すなわちACMD2またはCMD2を受け付け可能な状態である。
【0211】
Ready Stateにあるメモリデバイス11は、コントローラ3がACMD2またはCMD2を発行することで、Ident Stateに遷移する。Ident Stateは、自身のアドレスを送信可能な状態である。すなわち、ACMD3またはCMD3を受け付け可能な状態である。
【0212】
Ident Stateにあるメモリデバイス11は、コントローラ3がACMD3またはCMD3を発行することで、Standby Stateに遷移する。Ident StateからStandby Stateに遷移することで、メモリデバイス11の初期化が完了する。Standby Stateは、図15におけるStandby Stateと同様である。
【0213】
Standby Stateにあるメモリデバイス11は、コントローラ3からACMD7またはCMD7を発行されることで、Transfer Stateに遷移する。勿論、この際に発行されるCMD7の引数には、メモリデバイス11の保持するRCAが含まれていなければならない。そしてTransfer Stateにおいては、コントローラ3はACMD19またはCMD19を使用することで、システムパーティション33及び第1、第2ブートパーティション34、35にアクセス出来る。しかし、Transfer Stateにおいてシステムパーティション33及び第1、第2ブートパーティション34、35にアクセスしても、メモリデバイス11がBoot and System Partition Read Stateに遷移するわけでは無い。Boot and System Partition Read Stateはあくまで、クイックブート命令によって遷移出来る状態である。
【0214】
<メモリデバイス11の初期化動作について>
次に、コントローラ3による内蔵デバイス11〜14の初期化動作について、特にクイックブートに着目して、図24を用いて説明する。図24は、コントローラ3の処理の流れを示すフローチャートであり、Primary Loader20に従った処理を示している。
【0215】
まず、コントローラ3はROM8からPrimary Loader20を読み出し実行する。Primary Loader20に従ってコントローラ3は、図16で説明したステップA−0〜A−2を実行する。通常、デバイス11〜14は、デフォルトでSDTMモードにあるので、ステップA−1のCMD0は省略することが出来る。またステップA−2では、CMD8をサポートしているデバイスが複数あればACMD8を発行し、1つだけであればACMD8またはCMD8を発行する。この際、クイックブートを必要とする場合には、コントローラ3はACMD8またはCMD8の引数QBRに“1b”を設定し、必要としない場合にはQBR=“0b”を設定する。
【0216】
デバイス11〜14は、ACMD8またはCMD8を受け取ると、QBAを含むレスポンスを返す。クイックブートが要求されていない場合、またはデバイスがクイックブートをサポートしていない場合は、レスポンスにおけるQBAは“0b”とされる。またCMD8自体をサポートしていないデバイスは、レスポンスを返さない。従ってコントローラ3は、ステップA−2で発行したクイックブート命令に対して、QBA=“0b”とされたレスポンスを受信した場合、またはレスポンスを受信できなかった場合(ステップA−19、QBA=0 or NO Response)、デバイス11〜14はクイックブートをサポートしていないと判断する(ステップA−20)。そして、図16におけるステップA−5、または図18におけるステップB−5に進み、通常の初期化処理を行う。
【0217】
他方、QBA=“1b”とされたレスポンスを受信した場合(ステップA−19、QBA=1)、コントローラ3はクイックブート処理を開始する。なお、クイックブートをサポートするデバイスは、QBR=“1b”とされたACMD8またはCMD8に応答して、ACMD8またはCMD8のレスポンスの送信終了から8クロック以内に、4ビットバスモードに切り替える(ステップA−21)。SDTMインターフェースでは、2つのバスモードが使用可能である。一方は1ビットバスモードであり、この場合のバス幅は1ビットであり、最大で400kHzの周波数での動作(これをNormal Speed Modeと呼ぶ)が可能である。もう一方は4ビットバスモードであり、この場合のバス幅は4ビットであり、最大で50MHzでの動作(これをHigh Speed Modeと呼ぶ)が可能である。1ビットバスモードではNormal Speed Modeでの動作のみが可能であるが、4ビットバスモードではNormal Speed ModeとHigh Speed Modeとの両方の動作が可能である。
【0218】
デバイス11〜14が4ビットバスモードに切り替わるのと同様に、コントローラ3も4ビットバスモードに切り替わる(ステップA−21)。この際バスの動作周波数もNormal Speed ModeからHigh Speed Modeに切り替わっても良いし、またはコントローラ3とデバイス11〜14との間の取り決めによって、High Speed Modeに切り替わるか否かが決定されても良い。
【0219】
次にコントローラ3は、ACMD18またはCMD18を発行して、第1ブートパーティション34にアクセスして、Secondary Loader36を読み出す(ステップA−22)。CMD18は、データの読み出しコマンドである。なお、第1、第2ブートパーティション34、35は、CMD18が発行されてから100ms以内にデータ読み出し可能な状態となる。コントローラ3は、第1ブートパーティション34からSecondary Loader36を読み出せたか否かを、Error Flagを参照することにより判定する。Error Flagは、コントローラ3がデバイス11〜14について各種のチェック(例えば電圧チェック)を行った際に、エラーが発生したか否かを記憶しておくためのフラグである。
【0220】
ステップA−22の詳細について、図25を用いて説明する。図25はステップA−22を実行する際の処理を示すフローチャートである。
【0221】
まず、コントローラ3においてError Flagは“0b”とされている(ステップF−0)。そしてコントローラ3はCMD18(またはACMD18、CRCAはSecondary Loader36を保持するデバイスのRCA、本例ではRCA=“0001h”)を発行する(ステップF−1)。CMD18は、マルチプルブロックリードコマンド(multiple block read command)である。すなわち、複数のブロックについて読み出しを行うコマンドである。
【0222】
CMD18に対するデバイス11からのレスポンスにエラーが無いことを確認すると(ステップF−2、NO)、コントローラ3は、NAND型フラッシュメモリ11cにおける最初のブロックを読み出す(ステップF−3)。最初のブロックの先頭アドレスには、読み出しを制御するためのヘッダー情報が含まれている。そこでコントローラ3は、ヘッダー情報を参照することにより、Secondary Loader36が存在するかどうかを判定する。Secondary Loader36が存在する場合(ステップF−4、Data Exists)、ヘッダーにはSecondary Loader36の大きさ(ブロック数)が書かれているので、それを取得する(ステップF−5)。これにより、リードコマンドCMD18の終了タイミングが計算できる。その後コントローラ3は、最初のブロックをシステムメモリ、例えばRAM9へ転送する(ステップF−6)。
【0223】
第1、第2ブートパーティション34、35はファイルシステムで管理されない領域であり、Secondary Loader36はNAND型フラッシュメモリ11cにアドレス順に順次書き込まれている。そのため、一回のマルチプルブロックリードコマンド(CMD18)で、Secondary Loader36を読み出すことができる。CMD18は、アドレスを順次増加させながら順番にブロックを読み出すコマンドである。よってコントローラ3は、前記Secondary Loader36の大きさに相当するブロック数だけ、第1ブートパーティション34にアクセスしてデータを読み出し、RAM9へ転送していく(ステップF−7)。
【0224】
データの転送途中でリードエラーが発生した場合は、デバイス11はデータを出力しない状態を保持する。そこでコントローラ3は、リードタイムアウトを設定しておくことで、リードエラーを検出する。すなわち、一定の期間、データが出力されなかった場合には(ステップF−8、YES)、コントローラ3はError Flagを“1b”にセットする(ステップF−10)。
【0225】
なお、ステップF−2においてCMD18に対するレスポンスがエラーだった場合(ステップF−2、YES)、及びステップF−4においてSecondary Loader36が存在しなかった場合(ステップF−4、Data Not Exists)にも、コントローラ3は、Error Flagを“1b”にセットする。
【0226】
データの転送途中でタイムアウトせずに(ステップF−8、NO)、Secondary Loader36を最後まで読み出させた場合(ステップF−9、YES)、コントローラ3はCMD12を発行する(ステップF−11)。CMD12を発行することで、コントローラ3は読み出し動作を終了する。また、ステップF−10でError Flag=“1b”とされた場合も、コントローラ3はCMD12を発行して(ステップF−11)、Secondary Loader36の読み出しを中断する。
【0227】
図24に戻って説明を続ける。ステップA−22において以上のようにして、Secondary Loader36の読み出しが行われた後、コントローラ3はError Flagをチェックする。Error Flag=“0b”であった場合、すなわちSecondary Loader36の読み出しに成功した場合(ステップA−23)、コントローラ3は読み出したSecondary Loader36を実行する(ステップA−29)。本ステップについては後述する。
【0228】
Error Flag=“1b”、すなわち読み出しに失敗した場合(ステップA−23、YES)、コントローラ3はCMD19(またはACMD19、CRCAはSecondary Loader36を保持するデバイスのRCA、本例ではRCA=“0001h”)を発行する(ステップA−24)。CMD19はパーティションを選択するためのコマンドであり、これにより第2ブートパーティション35を選択する。
【0229】
CMD19を実行する際にエラーが無ければ(ステップA−25、NO)、コントローラ3は第2ブートパーティション35からのSecondary Loader36の読み出しを試みる(ステップA−27)。ステップA−27の処理は、前述した図24の通りである。
【0230】
他方、CMD19を実行する際にエラーが発生すれば(ステップA−25、YES)、コントローラ3は第2ブートパーティション35が存在しないと判断し(ステップA−26)、図16におけるステップA−5、または図18におけるステップB−5に進み、通常の初期化処理を行う。
【0231】
ステップA−27の結果、第2ブートパーティション35からSecondary Loader36を読み出せた場合(ステップA−28、NO)、ステップA−29に進む。他方、Secondary Loader36の読み出しに失敗した場合(ステップA−28、YES)には、図16におけるステップA−5、または図18におけるステップB−5に進み、通常の初期化処理を行う。
【0232】
次にステップA−29の詳細について、図26を用いて説明する。図26は、Secondary Loader36に従ったコントローラ3の処理の流れを示すフローチャートである。
【0233】
図示するように、Secondary Loader36の実行を開始したコントローラ3は、まずCMD19(またはACMD19)を発行して、システムパーティション33を選択する(ステップG−0)。前述の通り、システムパーティション33はOS37がインストールされている領域である。
【0234】
システムパーティション33の選択に失敗した場合(ステップG−1、YES)、コントローラ3はOS37が存在しないと判断し(ステップG−2)、図16におけるステップA−5、または図18におけるステップB−5に進み、通常の初期化処理を行う。
【0235】
他方、システムパーティション33の選択に成功すると(ステップG−1、NO)、コントローラ3はシステムパーティション33からOS37の読み出しを行う(ステップG−3)。システムバーティション33はファイルシステムによって管理される領域であるため、ファイルシステムの管理に従って、複数のリードコマンド(CMD18またはACMD18)を使って、複数のファイルから構成されるOS37をロードする。ロードされたOS37は、例えばRAM9に格納される。
【0236】
ステップG−3において、エラーが発生することなくOS37のロードが完了すると(ステップG−4、NO)、CPU6はOS37を実行する(ステップG−5)。OS37が起動されると、CPU6はOS37に従って初期化コマンド(ACMD41)の発行をコントローラ3に命令し、メモリデバイス11の初期化が行われる。その結果、メモリデバイス11の全てのパーティションへのアクセスが可能となる。
【0237】
その後、他の図16または図18に示した方法にて、他のデバイス12〜14の初期化が行われる。
【0238】
以上のように、本実施形態に係る構成であると、他のデバイスの初期化に先立ち、クイックブートを用いてOS37を読み出すことが出来る。従って、OSの起動を高速化出来る。SDTMインターフェースでは、各デバイス11〜14の初期化には、比較的長い時間が必要である。従って、全デバイス11〜14の初期化を待ってからOSを起動するのでは、システムの立ち上げに長時間を要することになる。しかし、本実施形態であると、OSの起動にあたって、全デバイス11〜14の初期化を待つ必要が無い。よって、ホスト装置1に電源を投入後、即座にOSを起動出来る。
【0239】
また本実施形態に係る構成であると、クイックブート命令(ACMD8またはCMD8)に応答して、バスが4ビットモードに移行し、またHigh Speed Modeに移行することも可能である。更に、バスのモード移行のためだけのコマンド入力(従来のCMD6、ACMD6)も不要となる。従って、Secondary Loader36及びOS37の読み出し動作を高速化出来る。このことも、OSの高速な起動に寄与する。
【0240】
また、メモリデバイス11は複数(本実施形態では2つ)のブートパーティション34、35を備えている。従って、何らかの原因により第1ブートパーティション34からSecondary Loader36を読み出せなかったとしても、第2ブートパーティション35からSecondary Loader36を読み出せる。従って、システムの信頼性を向上出来る。ブートパーティションの数は3つ以上設けられても良い。
【0241】
更に本実施形態では、CMD19を使用することで、初期化前のデバイスにおけるパーティションを選択出来る。そしてこの際、ブートパーティション34、35及びシステムパーティション33以外の選択は禁止される。換言すれば、CMD19はブートパーティション34、35及びシステムパーティション33のみを選択可能なコマンドとされる。従って、初期化前にユーザ領域32へアクセスされることを防止出来い、ユーザデータを保護出来る。
【0242】
なお、上記第1乃至第9の実施形態において、各メモリデバイス11〜14がレジスタ11b〜14bに保持するRCAは、製造時に予め書き込まれていても良いし、または外部とアクセス可能な接続ピンにより書き換え可能とされても良い。また上記ホスト装置1は、例えば携帯電話やパーソナルコンピュータに適用出来る。
【0243】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【0244】
【図1】第1実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示す図。
【図2】内蔵デバイス内の構成をより詳細に示す図。
【図3】第1実施形態に係る内蔵メモリデバイスの状態遷移図。
【図4】ブート読み出し状態移行指示コマンドを概略的に示す図。
【図5】拡張電圧チェックコマンドを概略的に示す図。
【図6】第1実施形態に係るホスト装置の動作を示すフローチャート。
【図7】拡張電圧チェックコマンドをさらに拡張する例を概略的に示す図。
【図8】拡張電圧チェックコマンドをさらに拡張する他の例を概略的に示す図。
【図9】第2実施形態に係るホスト装置の動作を示すフローチャート。
【図10】第3実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示す図。
【図11】第3実施形態に係るホスト装置の動作を示すフローチャート。
【図12】第4実施形態に係るホスト装置による、内蔵デバイス内のブートコードの読み出し動作のフローチャート。
【図13】本発明の実施形態に係るホスト装置を概略的に示すブロック図。
【図14】第5の実施形態に係るホスト装置が使用するACMD8の概念図。
【図15】第5の実施形態に係るデバイスの状態遷移図。
【図16】第5実施形態に係るホスト装置の動作を示すフローチャート。
【図17】第5実施形態に係るデバイスの動作を示すフローチャート。
【図18】第6実施形態に係るホスト装置の動作を示すフローチャート。
【図19】第7実施形態に係るホスト装置の動作を示すフローチャート。
【図20】第8実施形態に係るホスト装置の動作を示すフローチャート。
【図21】第9実施形態に係るホスト装置のブロック図。
【図22】第9実施形態に係るホスト装置の動作を示すフローチャート。
【図23】第9の実施形態に係るデバイスの状態遷移図。
【図24】第9実施形態に係るホスト装置の動作を示すフローチャート。
【図25】第9実施形態に係るホスト装置の動作を示すフローチャート。
【図26】第9実施形態に係るホスト装置の動作を示すフローチャート。
【符号の説明】
【0245】
1…ホスト装置、2、3…コントローラ、4…スロット、5…カードデバイス、6…CPU、7…システムメモリ、11乃至14…内蔵デバイス、11a、12a、13a、14a…コントローラ、11b、12b、13b、14b…アドレスレジスタ、11c、12c、13c、14c…デバイス部、8…ROM、9…RAM、20…Primary Loader、30…保護領域、31…システム領域、32…ユーザ領域、33…システムパーティション、34、35…ブートパーティション、36…Secondary Loader、37…OS

【特許請求の範囲】
【請求項1】
所定の機能を有する電子デバイスであって、
前記電子デバイスの選択に用いる宛先アドレスを保持するレジスタを具備し、
前記電子デバイスへの電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有さない1つまたは複数のコマンドで構成される形式1のコマンドと、電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有する宛先アドレス部を含み且つ1つまたは複数のコマンドで構成される形式2のコマンドと、を認識可能に構成され、
前記形式1のコマンドを受信し且つ前記形式1のコマンドが指示する処理を実行可能であるとき、前記形式1のコマンドが指示する処理を行なうとともにレスポンスを出力し、
前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記形式2のコマンドを受信すると、前記形式2のコマンドが指示する処理を行なうとともにレスポンスを出力し、
一斉送信を意味する値を前記宛先アドレス部に有する前記形式2のコマンドを受信すると、レスポンスを出力することなく前記形式2のコマンドが指示する処理を行ない、
一斉送信以外で前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記形式2のコマンドを受信すると、前記形式2のコマンドの実行を行なわず且つレスポンスを出力しない、
ことを特徴とする電子デバイス。
【請求項2】
半導体メモリと前記半導体メモリを制御するコントローラとを具備するメモリデバイスであって、
前記半導体メモリは、第1記憶領域と第2記憶領域とを有し、
前記メモリデバイスは、前記半導体メモリの前記第1記憶領域に対してデータの書き込み、読み出し、及び消去が可能な第1状態と、前記第2記憶領域からのデータの読み出しが可能な第2状態と、を有し、
前記コントローラは、前記メモリデバイスへの電源の投入後に前記メモリデバイスを前記第1状態に移行させるためのそれぞれが1つまたは複数のコマンドで構成される複数の第1コマンドと、前記メモリデバイスを前記第1状態から前記第2状態に移行させる第2コマンドと、前記メモリデバイスへの電源投入後に前記メモリデバイスを前記第1状態を経ずに前記第2状態に移行させる1つまたは複数のコマンドで構成される第3コマンドと、を認識可能に構成され、
前記メモリデバイスが前記第1状態で前記第2コマンドを受信すると、前記メモリデバイスは前記第2状態に移行し、前記コントローラは前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力し、
前記メモリデバイスが電源の投入後の状態で前記第3コマンドを受信すると、前記メモリデバイスは前記第2状態に移行し、前記コントローラは前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力する、
ことを特徴とするメモリデバイス。
【請求項3】
前記コントローラは、前記メモリデバイスに割り当てられる宛先アドレスの値を保持するレジスタを含み、
前記第3コマンドが宛先アドレスを示す宛先アドレス部を含まない場合、前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力し、
前記第3コマンドが宛先アドレスを示す宛先アドレス部を含む場合で、前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記第3コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは、前記第2状態に移行するとともに前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力し、
前記第3コマンドが宛先アドレスを示す宛先アドレス部を含む場合で、前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記第3コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは前記第3コマンドの実行を行なわず且つレスポンスを出力しない、
ことを特徴とする請求項2に記載のメモリデバイス。
【請求項4】
半導体メモリと前記半導体メモリを制御するコントローラとを具備するメモリデバイスであって、
前記半導体メモリは、任意にアクセス可能な第1記憶領域と、所定の条件下でのみアクセス可能な第2記憶領域および第3記憶領域とを有し、
前記メモリデバイスは、前記半導体メモリの前記第1記憶領域に対してデータの書き込み、読み出し、及び消去が可能な第1状態と、前記第2記憶領域からのデータの読み出しが可能な第2状態と、第3記憶領域からのデータの読み出しが可能な第3状態と、を有し、
前記コントローラは、前記メモリデバイスへの電源の投入後に前記メモリデバイスを前記第1状態に移行させるためのそれぞれが1つまたは複数のコマンドで構成される複数の第1コマンドと、前記メモリデバイスを前記第1状態から前記第2状態に、前記第2状態から前記第3状態に移行させる第2コマンドと、前記メモリデバイスへの電源投入後に前記第1状態を経ずに前記第2状態に前記メモリデバイスを移行させる1つまたは複数のコマンドで構成される第3コマンドと、を認識可能に構成され、
前記メモリデバイスが前記第1状態で前記第2状態に移行する指示を含む前記第2コマンドを受信すると、前記メモリデバイスは前記第2状態に移行し、前記コントローラは前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力し、
前記メモリデバイスが電源の投入後の状態で前記第3コマンドを受信すると、前記メモリデバイスは前記第2状態に移行し、前記コントローラは前記メモリデバイスが前記第2状態へ移行した旨を示すレスポンスを出力し、前記第2状態において、第3状態に移行する指示を含む前記第2コマンドを受信すると、前記メモリデバイスは前記第3状態に移行し、前記コントローラは前記メモリデバイスが前記第3状態へ移行した旨を示すレスポンスを出力する
ことを特徴とするメモリデバイス。
【請求項5】
前記第2状態を有しない前記半導体メモリにおいて、前記コントローラは、前記メモリデバイスに割り当てられる宛先アドレスの値を保持するレジスタを含み、
前記第3コマンドが宛先アドレスを示す宛先アドレス部を含まない場合、前記メモリデバイスは、前記メモリデバイスが前記第2状態に移行しなかったことを示すレスポンスを出力し、
前記第3コマンドが宛先アドレスを示す宛先アドレス部を含み且つ前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記第3コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは前記第2状態へ移行しなかった旨を示すレスポンスを出力し、
前記第3コマンドが宛先アドレスを示す宛先アドレス部を含み且つ前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記第3コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは前記第3コマンドの実行を行なわず且つレスポンスを出力しない、
ことを特徴とする請求項4に記載のメモリデバイス。
【請求項6】
前記複数の第1コマンドのうちの1つのコマンドは、前記メモリデバイスを前記第2状態に移行させるか否かを指定する指示部を有し、
前記第3コマンドは、前記指示部に前記第2状態に移行させるか否かを指定できる前記複数の第1コマンドの1つ、または前記第1コマンドに宛先アドレスが付加された拡張コマンドであり、
前記第3コマンドのレスポンスは、前記第2状態への移行が行なわれたか否かを示す表示部を含む、
ことを特徴とする請求項2または4に記載のメモリデバイス。
【請求項7】
前記第3記憶領域はインストールされたオペレーティングシステムプログラムおよびデータを保持し、
前記第2記憶領域は、前記第3記憶領域から前記オペレーティングシステムを起動するための第1プログラムを保持する
ことを特徴とする請求項4記載のメモリデバイス。
【請求項8】
前記半導体メモリは、前記第2記憶領域および前記第4記憶領域を読み出し可能な第2状態を持ち、、前記第4記憶領域は前記第1プログラムと同様なプログラムを保持し、
前記第2状態において前記第2コマンドにより、前記第2記憶領域から前記第4記憶領域に読み出し領域を切り替えて前記第2記憶領域または前記第4記憶領域を選択的に読み出す
ことを特徴とする請求項7記載のメモリデバイス。
【請求項9】
前記コントローラは、バスを用いてホスト装置と通信可能とされ、
前記バスは、第1バス幅または第1周波数で通信可能な第1モードと、前記第1バス幅よりも大きい第2バス幅または前記第1周波数よりも高周波数の第2周波数で通信可能な第2モードとを備え、
前記コントローラは、前記電源の投入後の状態で前記第3コマンドを受信すると、前記第2モードで通信可能とされる
ことを特徴とする請求項2または4記載のメモリデバイス。
【請求項10】
前記第2状態および第3状態において前記第2記憶領域および前記第3記憶領域へのデータの書き込みは禁止されており、
前記メモリデバイスは、前記第2記憶領域および前記第3記憶領域へのデータの書き込みを可能にする1つまたは複数の第4コマンドにより構成されている、
ことを特徴とする請求項4に記載のメモリデバイス。
【請求項11】
カードデバイスが挿入されるスロットと、
前記スロットと接続された第1バスと、
前記第1バスを介して前記カードデバイスとの通信を可能にする第1ホストコントローラと、
請求項1の複数の電子デバイスと、
前記複数の電子デバイスが接続された第2バスと、
前記第2バスを介して前記複数のデバイスの1つを選択して通信を可能にする第2ホストコントローラと、
を具備し、
前記複数の電子デバイスは、それぞれが、デバイスの選択に用いる宛先アドレスを保持するレジスタを有し、
前記レジスタは、相互に異なる値を有し、
前記第2ホストコントローラは、請求項1の形式2のコマンドを発行することにより、前記カードデバイスおよび前記複数の電子デバイスの初期化を行って初期化が完了した状態に移行させる、
ことを特徴とするホスト装置。
【請求項12】
バスと、
オン、オフによって前記バスとスロットとを電気的に接続または非接続にするスイッチと、
前記スイッチに接続され、カードデバイスが挿入されるスロットと、
前記バスと接続された、1つまたは複数の請求項1の電子デバイスと、
前記バスを介して、前記カードデバイス及び前記電子デバイスとの通信を行うホストコントローラと
を具備することを特徴とするホスト装置。
【請求項13】
前記ホスト装置への電源の投入後、前記スイッチがオフされた状態で、
前記電子デバイスは、異なる宛先アドレスを有し、
ホストコントローラから請求項1の前記形式2のコマンドを発行することにより、前記電子デバイスの初期化を行って初期化が完了した状態に移行させ、
前記初期化が完了した状態へと前記電子デバイスが移行した後に、前記スイッチがオンとされ、
前記スイッチがオンとされた後に、前記カードデバイスを請求項2の形式1および形式2のコマンドによって初期化が完了した状態に移行させるための処理が行なわれ、前記カードデバイスの宛先アドレスを示すレジスタには前記電子デバイスと異なる値が設定されるように制御する、
ことを特徴とする請求項12に記載のホスト装置。
【請求項14】
前記スロットに前記カードデバイスが挿入されたことが検出されると、前記ホストコントローラと前記電子デバイスとの間のデータの転送が行なわれていない状態で前記スイッチがオンされ、
前記スロットに挿入されていた前記カードデバイスが前記スロットから抜かれることが検出されると、前記スロットから前記カードデバイスが抜かれる前に前記スイッチがオフされる、
ことを特徴とする請求項12に記載のホスト装置。
【請求項15】
システムメモリと、
バスと、
前記バスを介して接続されたデバイスと通信を行なうホストコントローラと、
前記バスと接続された、請求項2に記載のメモリデバイスと、
を具備し、
前記ホストコントローラは、
前記メモリデバイスに前記第3コマンドを供給し、
前記第3コマンドに対するレスポンスから前記第2記憶領域を読み出し可能であるか否かを判定し、
読み出し可能であれば前記第2記憶領域からデータを読み出し、そのデータが有効なブートコードであるか否かを判定し、
前記データがブートコードでない場合は読み込みを中断して読み込み済みのデータを破棄し、
前記データがブートコードである場合は前記データの中に記載されているブートコードの大きさを知得し、
前記ブートコードの全てを前記システムメモリに転送すると、前記第2記憶領域の読み出し実行する、
ことを特徴とするホスト装置。
【請求項16】
請求項2のメモリデバイスの前記第1記憶領域についてはファイルシステムによりデータの管理を行い、前記第2記憶領域についてはファイルシステムを用いず、順次アドレスの順にブートコードをシステムメモリに読み出し、予め決めておいた場所からブートコードを実行することを特徴とするホスト装置。
【請求項17】
請求項7記載のメモリデバイスと、
前記メモリデバイスの動作を制御するホストコントローラと、
前記メモリデバイスと前記コントローラとの間を通信可能に接続するバスと、
前記メモリデバイスの初期化を行うための第2プログラムを保持するメモリと
を具備し、前記ホストコントローラは、前記第2プログラムを実行することにより、
前記メモリデバイスへ電源投入後、前記メモリデバイスに対して前記第3コマンドを発行して、前記第2記憶領域から前記第1プログラムを読み出し、
読み出した前記第1プログラムを実行することにより、前記第3記憶領域から前記オペレーティングシステムを読み出して、該オペレーティングシステムを起動し、
前記オペレーティングシステムの起動後、前記メモリデバイスに対して前記請求項1の第1形式および第2形式のコマンドを発行して初期化を完了させる
ことを特徴とするホスト装置。
【請求項18】
前記半導体メモリは、前記所定の条件下でのみアクセス可能とされ、前記第1プログラムと同様なプログラムを保持する第4記憶領域を更に備え、
前記ホストコントローラは、前記第2記憶領域からの前記第1プログラムの読み出しに失敗した場合、前記第2コマンドを用いて前記第2記憶領域から前記第4記憶領域に切り替えて前記第4記憶領域から前記第1プログラムと同様なプログラムを読み出す
ことを特徴とする請求項17記載のホスト装置。
【請求項19】
前記バスは、第1バス幅または第1周波数で前記ホストコントローラと前記メモリデバイスとの間を通信可能とする第1モードと、
前記第1バス幅よりも大きい第2バス幅または前記第1周波数よりも高周波数の第2周波数で通信可能とする第2モードと
を備え、前記電源の投入後の状態で前記第3コマンドが発行され、前記第2状態に移行可能を示すレスポンスを受信すると前記バスを前記第1モードから前記第2モードに切り替える
ことを特徴とする請求項18記載のホスト装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate


【公開番号】特開2009−26296(P2009−26296A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2008−72461(P2008−72461)
【出願日】平成20年3月19日(2008.3.19)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】