(57)【要約】【課題】バスへの複数デバイスの接続を可能にする電子デバイスを提供する。【解決手段】電子デバイスは、アドレスを保持するレジスタを有する。電源を投入された後に電子デバイスの初期化が完了するまでに供給される必要があり、宛先アドレス部を有さない、有する形式１、形式２のコマンドを認識可能に構成されている。形式１のコマンドを受信すると、形式１のコマンドが指示する処理とレスポンスの出力を行なう。レジスタと同じ値を宛先アドレス部に有する形式２のコマンドを受信すると、形式２のコマンドが指示する処理とレスポンスの出力を行なう。一斉送信を意味する値を宛先アドレス部に有する形式２のコマンドを受信すると、レスポンスを出力せずに形式２のコマンドが指示する処理を行なう。一斉送信以外でレジスタと異なる値を宛先アドレス部に有する形式２のコマンドを受信すると、形式２のコマンドの実行とレスポンスの出力を行なわない。【選択図】      図１
2009026296.tif 000002
【特許請求の範囲】
【請求項１】
所定の機能を有する電子デバイスであって、
前記電子デバイスの選択に用いる宛先アドレスを保持するレジスタを具備し、
前記電子デバイスへの電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有さない１つまたは複数のコマンドで構成される形式１のコマンドと、電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有する宛先アドレス部を含み且つ１つまたは複数のコマンドで構成される形式２のコマンドと、を認識可能に構成され、
前記形式１のコマンドを受信し且つ前記形式１のコマンドが指示する処理を実行可能であるとき、前記形式１のコマンドが指示する処理を行なうとともにレスポンスを出力し、
前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記形式２のコマンドを受信すると、前記形式２のコマンドが指示する処理を行なうとともにレスポンスを出力し、
一斉送信を意味する値を前記宛先アドレス部に有する前記形式２のコマンドを受信すると、レスポンスを出力することなく前記形式２のコマンドが指示する処理を行ない、
一斉送信以外で前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記形式２のコマンドを受信すると、前記形式２のコマンドの実行を行なわず且つレスポンスを出力しない、
ことを特徴とする電子デバイス。
【請求項２】
半導体メモリと前記半導体メモリを制御するコントローラとを具備するメモリデバイスであって、
前記半導体メモリは、第１記憶領域と第２記憶領域とを有し、
前記メモリデバイスは、前記半導体メモリの前記第１記憶領域に対してデータの書き込み、読み出し、及び消去が可能な第１状態と、前記第２記憶領域からのデータの読み出しが可能な第２状態と、を有し、
前記コントローラは、前記メモリデバイスへの電源の投入後に前記メモリデバイスを前記第１状態に移行させるためのそれぞれが１つまたは複数のコマンドで構成される複数の第１コマンドと、前記メモリデバイスを前記第１状態から前記第２状態に移行させる第２コマンドと、前記メモリデバイスへの電源投入後に前記メモリデバイスを前記第１状態を経ずに前記第２状態に移行させる１つまたは複数のコマンドで構成される第３コマンドと、を認識可能に構成され、
前記メモリデバイスが前記第１状態で前記第２コマンドを受信すると、前記メモリデバイスは前記第２状態に移行し、前記コントローラは前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力し、
前記メモリデバイスが電源の投入後の状態で前記第３コマンドを受信すると、前記メモリデバイスは前記第２状態に移行し、前記コントローラは前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力する、
ことを特徴とするメモリデバイス。
【請求項３】
前記コントローラは、前記メモリデバイスに割り当てられる宛先アドレスの値を保持するレジスタを含み、
前記第３コマンドが宛先アドレスを示す宛先アドレス部を含まない場合、前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力し、
前記第３コマンドが宛先アドレスを示す宛先アドレス部を含む場合で、前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記第３コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは、前記第２状態に移行するとともに前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力し、
前記第３コマンドが宛先アドレスを示す宛先アドレス部を含む場合で、前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記第３コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは前記第３コマンドの実行を行なわず且つレスポンスを出力しない、
ことを特徴とする請求項２に記載のメモリデバイス。
【請求項４】
半導体メモリと前記半導体メモリを制御するコントローラとを具備するメモリデバイスであって、
前記半導体メモリは、任意にアクセス可能な第１記憶領域と、所定の条件下でのみアクセス可能な第２記憶領域および第３記憶領域とを有し、
前記メモリデバイスは、前記半導体メモリの前記第１記憶領域に対してデータの書き込み、読み出し、及び消去が可能な第１状態と、前記第２記憶領域からのデータの読み出しが可能な第２状態と、第３記憶領域からのデータの読み出しが可能な第３状態と、を有し、
前記コントローラは、前記メモリデバイスへの電源の投入後に前記メモリデバイスを前記第１状態に移行させるためのそれぞれが１つまたは複数のコマンドで構成される複数の第１コマンドと、前記メモリデバイスを前記第１状態から前記第２状態に、前記第２状態から前記第３状態に移行させる第２コマンドと、前記メモリデバイスへの電源投入後に前記第１状態を経ずに前記第２状態に前記メモリデバイスを移行させる１つまたは複数のコマンドで構成される第３コマンドと、を認識可能に構成され、
前記メモリデバイスが前記第１状態で前記第２状態に移行する指示を含む前記第２コマンドを受信すると、前記メモリデバイスは前記第２状態に移行し、前記コントローラは前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力し、
前記メモリデバイスが電源の投入後の状態で前記第３コマンドを受信すると、前記メモリデバイスは前記第２状態に移行し、前記コントローラは前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力し、前記第２状態において、第３状態に移行する指示を含む前記第２コマンドを受信すると、前記メモリデバイスは前記第３状態に移行し、前記コントローラは前記メモリデバイスが前記第３状態へ移行した旨を示すレスポンスを出力する
ことを特徴とするメモリデバイス。
【請求項５】
前記第２状態を有しない前記半導体メモリにおいて、前記コントローラは、前記メモリデバイスに割り当てられる宛先アドレスの値を保持するレジスタを含み、
前記第３コマンドが宛先アドレスを示す宛先アドレス部を含まない場合、前記メモリデバイスは、前記メモリデバイスが前記第２状態に移行しなかったことを示すレスポンスを出力し、
前記第３コマンドが宛先アドレスを示す宛先アドレス部を含み且つ前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記第３コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは前記第２状態へ移行しなかった旨を示すレスポンスを出力し、
前記第３コマンドが宛先アドレスを示す宛先アドレス部を含み且つ前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記第３コマンドを前記メモリデバイスが受信すると、前記メモリデバイスは前記第３コマンドの実行を行なわず且つレスポンスを出力しない、
ことを特徴とする請求項４に記載のメモリデバイス。
【請求項６】
前記複数の第１コマンドのうちの１つのコマンドは、前記メモリデバイスを前記第２状態に移行させるか否かを指定する指示部を有し、
前記第３コマンドは、前記指示部に前記第２状態に移行させるか否かを指定できる前記複数の第１コマンドの１つ、または前記第１コマンドに宛先アドレスが付加された拡張コマンドであり、
前記第３コマンドのレスポンスは、前記第２状態への移行が行なわれたか否かを示す表示部を含む、
ことを特徴とする請求項２または４に記載のメモリデバイス。
【請求項７】
前記第３記憶領域はインストールされたオペレーティングシステムプログラムおよびデータを保持し、
前記第２記憶領域は、前記第３記憶領域から前記オペレーティングシステムを起動するための第１プログラムを保持する
ことを特徴とする請求項４記載のメモリデバイス。
【請求項８】
前記半導体メモリは、前記第２記憶領域および前記第４記憶領域を読み出し可能な第２状態を持ち、、前記第４記憶領域は前記第１プログラムと同様なプログラムを保持し、
前記第２状態において前記第２コマンドにより、前記第２記憶領域から前記第４記憶領域に読み出し領域を切り替えて前記第２記憶領域または前記第４記憶領域を選択的に読み出す
ことを特徴とする請求項７記載のメモリデバイス。
【請求項９】
前記コントローラは、バスを用いてホスト装置と通信可能とされ、
前記バスは、第１バス幅または第１周波数で通信可能な第１モードと、前記第１バス幅よりも大きい第２バス幅または前記第１周波数よりも高周波数の第２周波数で通信可能な第２モードとを備え、
前記コントローラは、前記電源の投入後の状態で前記第３コマンドを受信すると、前記第２モードで通信可能とされる
ことを特徴とする請求項２または４記載のメモリデバイス。
【請求項１０】
前記第２状態および第３状態において前記第２記憶領域および前記第３記憶領域へのデータの書き込みは禁止されており、
前記メモリデバイスは、前記第２記憶領域および前記第３記憶領域へのデータの書き込みを可能にする１つまたは複数の第４コマンドにより構成されている、
ことを特徴とする請求項４に記載のメモリデバイス。
【請求項１１】
カードデバイスが挿入されるスロットと、
前記スロットと接続された第１バスと、
前記第１バスを介して前記カードデバイスとの通信を可能にする第１ホストコントローラと、
請求項１の複数の電子デバイスと、
前記複数の電子デバイスが接続された第２バスと、
前記第２バスを介して前記複数のデバイスの１つを選択して通信を可能にする第２ホストコントローラと、
を具備し、
前記複数の電子デバイスは、それぞれが、デバイスの選択に用いる宛先アドレスを保持するレジスタを有し、
前記レジスタは、相互に異なる値を有し、
前記第２ホストコントローラは、請求項１の形式２のコマンドを発行することにより、前記カードデバイスおよび前記複数の電子デバイスの初期化を行って初期化が完了した状態に移行させる、
ことを特徴とするホスト装置。
【請求項１２】
バスと、
オン、オフによって前記バスとスロットとを電気的に接続または非接続にするスイッチと、
前記スイッチに接続され、カードデバイスが挿入されるスロットと、
前記バスと接続された、１つまたは複数の請求項１の電子デバイスと、
前記バスを介して、前記カードデバイス及び前記電子デバイスとの通信を行うホストコントローラと
を具備することを特徴とするホスト装置。
【請求項１３】
前記ホスト装置への電源の投入後、前記スイッチがオフされた状態で、
前記電子デバイスは、異なる宛先アドレスを有し、
ホストコントローラから請求項１の前記形式２のコマンドを発行することにより、前記電子デバイスの初期化を行って初期化が完了した状態に移行させ、
前記初期化が完了した状態へと前記電子デバイスが移行した後に、前記スイッチがオンとされ、
前記スイッチがオンとされた後に、前記カードデバイスを請求項２の形式１および形式２のコマンドによって初期化が完了した状態に移行させるための処理が行なわれ、前記カードデバイスの宛先アドレスを示すレジスタには前記電子デバイスと異なる値が設定されるように制御する、
ことを特徴とする請求項１２に記載のホスト装置。
【請求項１４】
前記スロットに前記カードデバイスが挿入されたことが検出されると、前記ホストコントローラと前記電子デバイスとの間のデータの転送が行なわれていない状態で前記スイッチがオンされ、
前記スロットに挿入されていた前記カードデバイスが前記スロットから抜かれることが検出されると、前記スロットから前記カードデバイスが抜かれる前に前記スイッチがオフされる、
ことを特徴とする請求項１２に記載のホスト装置。
【請求項１５】
システムメモリと、
バスと、
前記バスを介して接続されたデバイスと通信を行なうホストコントローラと、
前記バスと接続された、請求項２に記載のメモリデバイスと、
を具備し、
前記ホストコントローラは、
前記メモリデバイスに前記第３コマンドを供給し、
前記第３コマンドに対するレスポンスから前記第２記憶領域を読み出し可能であるか否かを判定し、
読み出し可能であれば前記第２記憶領域からデータを読み出し、そのデータが有効なブートコードであるか否かを判定し、
前記データがブートコードでない場合は読み込みを中断して読み込み済みのデータを破棄し、
前記データがブートコードである場合は前記データの中に記載されているブートコードの大きさを知得し、
前記ブートコードの全てを前記システムメモリに転送すると、前記第２記憶領域の読み出し実行する、
ことを特徴とするホスト装置。
【請求項１６】
請求項２のメモリデバイスの前記第１記憶領域についてはファイルシステムによりデータの管理を行い、前記第２記憶領域についてはファイルシステムを用いず、順次アドレスの順にブートコードをシステムメモリに読み出し、予め決めておいた場所からブートコードを実行することを特徴とするホスト装置。
【請求項１７】
請求項７記載のメモリデバイスと、
前記メモリデバイスの動作を制御するホストコントローラと、
前記メモリデバイスと前記コントローラとの間を通信可能に接続するバスと、
前記メモリデバイスの初期化を行うための第２プログラムを保持するメモリと
を具備し、前記ホストコントローラは、前記第２プログラムを実行することにより、
前記メモリデバイスへ電源投入後、前記メモリデバイスに対して前記第３コマンドを発行して、前記第２記憶領域から前記第１プログラムを読み出し、
読み出した前記第１プログラムを実行することにより、前記第３記憶領域から前記オペレーティングシステムを読み出して、該オペレーティングシステムを起動し、
前記オペレーティングシステムの起動後、前記メモリデバイスに対して前記請求項１の第１形式および第２形式のコマンドを発行して初期化を完了させる
ことを特徴とするホスト装置。
【請求項１８】
前記半導体メモリは、前記所定の条件下でのみアクセス可能とされ、前記第１プログラムと同様なプログラムを保持する第４記憶領域を更に備え、
前記ホストコントローラは、前記第２記憶領域からの前記第１プログラムの読み出しに失敗した場合、前記第２コマンドを用いて前記第２記憶領域から前記第４記憶領域に切り替えて前記第４記憶領域から前記第１プログラムと同様なプログラムを読み出す
ことを特徴とする請求項１７記載のホスト装置。
【請求項１９】
前記バスは、第１バス幅または第１周波数で前記ホストコントローラと前記メモリデバイスとの間を通信可能とする第１モードと、
前記第１バス幅よりも大きい第２バス幅または前記第１周波数よりも高周波数の第２周波数で通信可能とする第２モードと
を備え、前記電源の投入後の状態で前記第３コマンドが発行され、前記第２状態に移行可能を示すレスポンスを受信すると前記バスを前記第１モードから前記第２モードに切り替える
ことを特徴とする請求項１８記載のホスト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子デバイス、メモリデバイス、ホスト装置に係り、例えばメモリカード等が挿入されるホスト装置と、このホスト装置に内蔵され得る（エンベディド）電子デバイスおよびメモリデバイスの初期化に関する。
【背景技術】
【０００２】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いた、メモリカード等のメモリシステムが使われている。メモリシステムに使用されるフラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。ホスト装置は、このようなメモリシステムを挿入され、メモリシステムとの間でデータを転送する。メモリシステムの一種として、ＳＤTMカードが知られている。
【０００３】
メモリシステムとホスト装置との間のインターフェースとして、様々なものが知られている。そのうちの１つに、ＳＤインターフェースがある。ＳＤインターフェースは、ＳＤTMカードと、ＳＤTMカードをサポートするホストとの間のインターフェースである。
【０００４】
ＳＤインターフェースバスには、複数の信号線（例えばクロックライン、コマンドライン等）が定義されている。そして、これらが、１組として１つのバスとして扱われる。
【０００５】
近時、メモリや他のデバイスを内蔵するホスト装置が増えている。そして、これらの内蔵デバイスをＳＤインターフェースを用いて、ホスト装置と接続することが制御等の観点から好ましいことがある。ＳＤインターフェースでは、デバイスを選択するアドレス（relative card address、ＲＣＡ）によって１つのバスに複数のデバイスを接続することが可能である。しかしながら、各デバイスのＲＣＡを決定するためには、個々のデバイスを別々に制御する手段が用意されていなければならない。このため、通常、ＳＤインターフェース以外の制御信号が必要となり、加えて初期化手順も各デバイスに対して個別に変える必要があった。標準ドライバによる初期化手順の統一化を行なうとともに、内蔵デバイスと、この内蔵デバイスに対して抜き差しが可能なＳＤTMカードとを接続できるようにするには、ホスト装置に、複数のバスを設ける必要があった。すなわち、複数の組の信号線と、各組専用の信号ピンを、ホスト装置に設ける必要がある。これらの要求によって、ホスト装置の構成、設計が煩雑になる。
【０００６】
さらに、より多くの内蔵デバイスを接続したいという要求が増えている。この場合、内蔵デバイスの数に合わせてバスの数を増やす必要がある。しかしながら、このように、単純にバスの数を増やすのみでは、効率が悪い。
【０００７】
また、近年は、ハードディスクドライブを持たずに、フラッシュメモリを不揮発性記憶デバイスとして用いるホスト装置が製造されるようになっている。このようなホスト装置では、システムを立ち上げるのに必要なプログラムコート（ブートコード）をフラッシュメモリから読み出す必要がある。ブートコードは、内蔵フラッシュメモリデバイスに格納され、ホストコントローラを介して、システムメモリに転送され、実行される。ここで、ブートコードは、ブートロードやデバイスドライバだけでなく、ＯＳ（operating system）も含むことがあり、ホスト装置の電源投入後に真っ先に読み出されることが本来求められる。しかしながら、既存のインターフェース（例えばＳＤインターフェース）では、デバイスの初期化等の所定の状態を経た後でないと、メモリ内のデータの読み出しが可能な状態に移行できない。このような手順を踏むのは、システムの初期化の処理時間の増大につながり、好ましくない。また、通常領域にブートコードを格納した場合は、通常領域はファイルシステムでデータが管理されているため、システムはブートを開始する前にファイルシステムを実装しておく必要があるという問題があった。
【０００８】
この出願の発明に関連する先行技術文献情報としては次のものがある。
【特許文献１】特開2006-92019号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明は、１対１での接続をサポートするバスに対して複数のデバイスを接続することを可能にする電子デバイス、メモリデバイス、ホスト装置を提供しようとするものである。
【課題を解決するための手段】
【００１０】
本発明の一態様による電子デバイスは、所定の機能を有する電子デバイスであって、前記電子デバイスの選択に用いる宛先アドレスを保持するレジスタを具備し、前記電子デバイスへの電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有さない１つまたは複数のコマンドで構成される形式１のコマンドと、電源投入後に前記電子デバイスの初期化が完了するまでに供給される必要があり且つ宛先アドレスを有する宛先アドレス部を含み且つ１つまたは複数のコマンドで構成される形式２のコマンドと、を認識可能に構成され、前記形式１のコマンドを受信し且つ前記形式１のコマンドが指示する処理を実行可能であるとき、前記形式１のコマンドが指示する処理を行なうとともにレスポンスを出力し、前記レジスタが保持する値と同じ値を前記宛先アドレス部に有する前記形式２のコマンドを受信すると、前記形式２のコマンドが指示する処理を行なうとともにレスポンスを出力し、一斉送信を意味する値を前記宛先アドレス部に有する前記形式２のコマンドを受信すると、レスポンスを出力することなく前記形式２のコマンドが指示する処理を行ない、一斉送信以外で前記レジスタが保持する値と異なる値を前記宛先アドレス部に有する前記形式２のコマンドを受信すると、前記形式２のコマンドの実行を行なわず且つレスポンスを出力しない。
【００１１】
本発明の一態様によるメモリデバイスは、半導体メモリと前記半導体メモリを制御するコントローラとを具備するメモリデバイスであって、前記半導体メモリは、第１記憶領域と第２記憶領域とを有し、前記メモリデバイスは、前記半導体メモリの前記第１記憶領域に対してデータの書き込み、読み出し、及び消去が可能な第１状態と、前記第２記憶領域からのデータの読み出しが可能な第２状態と、を有し、前記コントローラは、前記メモリデバイスへの電源の投入後に前記メモリデバイスを前記第１状態に移行させるためのそれぞれが１つまたは複数のコマンドで構成される複数の第１コマンドと、前記メモリデバイスを前記第１状態から前記第２状態に移行させる第２コマンドと、前記メモリデバイスへの電源投入後に前記メモリデバイスを前記第１状態を経ずに前記第２状態に移行させる１つまたは複数のコマンドで構成される第３コマンドと、を認識可能に構成され、前記メモリデバイスが前記第１状態で前記第２コマンドを受信すると、前記メモリデバイスは前記第２状態に移行し、前記コントローラは前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力し、前記メモリデバイスが電源の投入後の状態で前記第３コマンドを受信すると、前記メモリデバイスは前記第２状態に移行し、前記コントローラは前記メモリデバイスが前記第２状態へ移行した旨を示すレスポンスを出力する。
【００１２】
本発明の一態様によるホスト装置は、カードデバイスが挿入されるスロットと、前記スロットと接続された第１バスと、前記第１バスを介して前記カードデバイスとの通信を可能にする第１ホストコントローラと、上記複数の電子デバイスと、前記複数の電子デバイスが接続された第２バスと、前記第２バスを介して前記複数のデバイスの１つを選択して通信を可能にする第２ホストコントローラと、を具備し、前記複数の電子デバイスは、それぞれが、デバイスの選択に用いる宛先アドレスを保持するレジスタを有し、前記レジスタは、相互に異なる値を有し、前記第２ホストコントローラは、上記形式２のコマンドを発行することにより、前記カードデバイスおよび前記複数の電子デバイスの初期化を行って初期化が完了した状態に移行させる。
【発明の効果】
【００１３】
本発明によれば、バスインターフェースに追加信号を設けることなく複数のデバイスを接続することを可能にする電子デバイス、メモリデバイス、ホスト装置を提供できる。
【発明を実施するための最良の形態】
【００１４】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。ただし、図面は模式的なものであり、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【００１５】
また、以下に示す各実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１６】
また、本発明の各実施形態における各機能ブロックは、ハードウェア、コンピュータソフトウェア、のいずれかまたは両者の組み合わせとして実現することができる。このため、各ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
【００１７】
（第１実施形態）
第１実施形態は、ホスト装置に内蔵されることが可能な構成を有する電子デバイスおよび、そのような電子デバイスをサポートするホスト装置に関する。図１乃至図８を参照して、第１実施形態について説明する。
【００１８】
図１は、本発明の第１実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示している。図１に示すように、ホスト装置１は、２つのホストコントローラ２、３、スロット４、ＣＰＵ（central processing unit）６、システムメモリ７等を含んでいる。
【００１９】
ＣＰＵ６は、ホスト装置１の動作全体を司り、図示せぬＲＯＭ（read only memory）に格納されているプログラム等に従って動作する。システムメモリ７は、ＣＰＵ６が各種のデータを一時的に保存しておくために用いられ、また実行可能なプログラムを実行するために用いられる。
【００２０】
ホストコントローラ２、３は、このバスを介して接続されるデバイス（要素）と通信するのに必要な様々なハードウェア、ソフトウェア、取り決め等を含んでいる。具体的には、ホストコントローラ２、３は、複数の信号線からなるバスを介した通信が可能になるように構成されている。バスに含まれる信号線として、コマンドライン、データライン、クロックライン、電源ライン等が含まれる。ホストコントローラ２、３の一部の機能は、これらの信号線を予め設定された規定に従って、出力したり、取り込んだりする。より具体的には、バスを介して供給される信号を解析し、この信号から予め設定されたビットパターンを認識し、この信号の中からコマンドを取り込む。また、同様に、所定のビットパターンを認識して、信号の中からデータを取り込む。ホストコントローラ２、３において定義されているコマンドには、様々なものが用意されている。ホストコントローラ２、３は、このような機能を実現できるように、例えばソフトウェアによる制御により実行されるＣＰＵの機能の一部や、半導体チップとして実現することができる。
【００２１】
ホストコントローラ２、３は、より具体的には、クロックライン、コマンドライン、データラインをサポートしている。すなわち、ホストコントローラ２、３は、これらクロックライン、コマンドライン、データラインを用いて、データの転送を行えるように構成されている。
【００２２】
さらに具体的には、ホストコントローラ２、３は、例えばＳＤインターフェースを制御できるように構成されている。信号を受ける側のＳＤインターフェースモジュールは、クロックライン上の信号の立ち上がりのときのコマンドライン、データライン上の信号を取り込む。そして、信号を出力する側のＳＤインターフェースモジュールは、クロックライン上の信号の立ち上がり（または立ち下がり）のときのコマンドライン、データライン上にコマンド（およびレスポンス）、データを出力する。なお、データラインは、４ビットの信号からなり、すなわち、４本の信号線を用いてパラレルにデータを転送することができる。
【００２３】
ホストコントローラ２は、１つのバスを構成する各信号ライン（例えば、クロックライン、コマンドライン、データライン、電源ライン等）を介してスロット４と接続される。スロット４は、このスロット４がサポートするメモリシステムおよびその他デバイスを含む、リームーバブルなカードデバイス５が抜き差しできるように構成されている。
【００２４】
スロット４は、これらカードデバイス５と接続される端子を有しており、インターフェース中の各ラインと、これらに対応する端子とが接続される。ホストコントローラ２がＳＤインターフェースをサポートしている場合、図１のように、クロックライン、コマンドライン、４ビットのデータラインに対応する端子がスロットに設けられる。カードデバイス５として、ＳＤTMカード、ＳＤTMＩＯカード等、ＳＤインターフェースを介してホスト装置と通信するように構成されたあらゆるカードデバイスが含まれる。
【００２５】
スロット４は、カードデバイス５が挿入されているか否かを検出し、カードデバイス５の検出の有無を知らせるカード検出信号ＣＤをホストインターフェース２に供給する。
【００２６】
ホストコントローラ３のバスは、１つのバスを構成する各信号ライン（例えば、クロックライン、コマンドライン、データライン、電源ライン）を介して複数の内蔵デバイス（図では４つを例示）１１乃至１４と接続される。内蔵デバイスとして、ホストコントローラ３を介してＣＰＵ６と通信可能に構成されているあらゆるタイプのデバイスを用いることができ、例えば、メモリデバイス、無線ＬＡＮ（local area network）デバイス等が該当する。内蔵デバイス１１乃至１４として用いることが可能なデバイスの主たる部分は、各内蔵デバイス１１乃至１４の機能に応じて公知の技術によって実現できる。一方、各内蔵デバイス１１乃至１４の、インターフェースを制御するための要素は、後述のように、本実施形態に従って構成されている。内蔵デバイス１１乃至１４は、ＳＤTMカード等のポータブルデバイスにおいて封止される半導体チップを利用して実現することができる。
【００２７】
内蔵デバイス１１乃至１４は、それぞれ内蔵デバイス１１乃至１４の主たる機能（例えばメモリ機能、無線ＬＡＮ機能等）を実行するためのデバイス部１１ｂ、１２ｂ、１３、１４ｂを有する。
【００２８】
内蔵デバイス１１乃至１４は、それぞれコントローラ（デバイスコントローラ）１１ａ、１２ａ、１３ａ、１４ａを備えている。各コントローラ１１ａ、１２ａ、１３ａ、１４ａは、ＣＰＵ６とホストコントローラ３を介して、インターフェースを用いて通信可能に構成されている。すなわち、このようなインターフェースをサポートするためのハードウェアおよびソフトウェア構成を含んでいる。コントローラ１１ａ、１２ａ、１３ａ、１４ａとホストコントローラ３とは、これらを接続するバスを構成する信号線を介して通信できるように電気的に接続されている。
【００２９】
ホストコントローラ２、３がＳＤインターフェースをサポートしている場合、コントローラ１１ａ乃至１４ａもＳＤインターフェースをサポートするように構成されている。コントローラ１１ａ、１２ａ、１３ａ、１４ａは、デバイス部１１ｂ、１２ｂ、１３ｂ、１４ｂから独立したＣＰＵ、半導体チップとして実現してもよい。または、上記のように、コントローラ１１ａ、１２ａ、１３ａ、１４ａとデバイス部１１ｂ、１２ｂ、１３ｂ、１４ｂとが一体となった半導体チップとして実現してもよい。
【００３０】
各コントローラ１１ａ、１２ａ、１３ａ、１４ａは、それぞれ宛先アドレスを保持するアドレスレジスタ１１ｂ、１２ｂ、１３ｂ、１４ｂを有する。アドレスレジスタ１１ｂ、１２ｂ、１３ｂ、１４ｂは、各内蔵デバイス１１乃至１４に固有のアドレスが書き込まれている。各内蔵デバイス１１乃至１４のアドレスは、ホスト装置１の出荷の段階で固定されている。また、出荷の段階で、各内蔵デバイス１１乃至１４のアドレスの値は、ホスト装置１(たとえばホスト装置１内の図示せぬＲＯＭ）に入力されており、ホスト装置１は各内蔵デバイス１１乃至１４のアドレス値を知得している。
【００３１】
本実施形態にＳＤインターフェースを用いる場合、アドレスとして、相対カードアドレス（relative card address、ＲＣＡ）を用いることができる。ＲＣＡは、ＳＤインターフェースを用いたデバイスをホスト装置が初期化する際に、ホスト装置とＳＤインターフェースを用いるデバイスとの折衝によって、各デバイスに動的に割り当てられる固有の値を有する。図１の例では、内蔵デバイス１１、１２、１３、１４には、アドレス＝０００１、０００２、０００３、０００４が割り当てられている。
【００３２】
内蔵デバイス１１乃至１４の少なくとも１つ（内蔵デバイス１１）は、メモリデバイスである。この内蔵デバイス（以下、内蔵メモリデバイスと称することがある）１１は、ＮＡＮＤ型フラッシュメモリ１１ｃを含んでいる。ＮＡＮＤ型フラッシュメモリ１１ｃは、記憶領域として、複数のページから構成される。各ページは、直列接続された複数のメモリセルトランジスタを含んでいる。各メモリセルは、いわゆるスタックゲート構造型のＭＯＳＦＥＴ（metal oxide semiconductor field effect transistor）からなる。スタックゲート構造のＭＯＳトランジスタは、トンネル絶縁膜、浮遊ゲート電極、電極間絶縁膜、制御ゲート電極、ソース／ドレイン拡散層を含む。各メモリセルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。そして、メモリのセンスアンプ、電位発生回路等を含む制御回路は、メモリセルトランジスタに多ビットのデータを書き込み、多ビットのデータを読み出すことが可能な構成を有している。データの書き込みおよび読み出しは、ページ単位で行なわれる。また、データの消去は複数のページからなるブロック単位で行なわれる。
【００３３】
フラッシュメモリ１１ｃの記憶領域は、図２に示すように、例えば、用途および格納するデータの種類に応じて、分割されている。ユーザ領域１１ｃ１は、ホスト装置およびホスト装置のユーザが自由にアクセスおよび使用することが可能な領域である。ユーザ領域１１ｃ１には、例えば、各種データやホスト装置の動作に必要なプログラムなど任意のデータが格納される。
【００３４】
保護領域１１ｃ３は、例えば特定のホスト装置１のみがアクセス可能なデータが格納されており、ホスト装置１のユーザは、例えば所定の条件を満たした場合等に限って、保護領域１１ｃ３にアクセスできる。ユーザ領域１１ｃ１、１１ｃ３内のデータは、任意のファイルシステム（例えばＦＡＴファイルシステム）によってフォーマットおよび管理されている。
【００３５】
システム領域１１ｃ４は、ホスト装置１およびユーザは直接アクセスすることができない領域で、コントローラ１１ａが管理する領域である。例えば、システム領域１１ｃ４には、コントローラ１１ａの制御情報、セキュリティ上方などが格納されている。
【００３６】
ブートコード領域（ブート領域）１１ｃ２には、ブートコードが格納されている。ブートコードは、ホスト装置１への電源投入後、システム（ＯＳ）を起動するまでに実行することが必要な一連の処理の少なくとも一部を行なうためのコードの集合である。
【００３７】
ブート領域１１ｃ２のデータは、ファイルシステムを用いて管理されない。そして、ブート領域１１ｃ２には、例えば、低位アドレスのページから高位アドレスのページに向って順に、ブートコードが格納されている。ホスト装置１は、電源投入後、何らかの手段によりブート領域１１ｃ２内のブートコードを低位のアドレスから高位のアドレスに向って順にシステムメモリ７に読み出し、ＣＰＵ６がこれを実行することによって、システムを起動するまでに一連の処理が行われる。したがって、このシステムには、ファイルシステムも含まれており、したがってファイルシステムは、システム起動後に使用することができるようになる。
【００３８】
内蔵デバイス１１乃至１４として、例えば、別のメモリデバイス（内蔵デバイス１２）が含まれる。この内蔵デバイス（以下、内蔵メモリデバイスと称することがある）１２には、ブート領域は設けられていない。すなわち、内蔵メモリデバイスは、図２からブート領域を除いた複数の領域、具体的には例えば一般領域、保護領域、システム領域等を有している。
【００３９】
次に、内蔵メモリデバイス１１、１２について説明する。図３は、第１実施形態に係る内蔵メモリデバイスの状態遷移図である。なお、以下の説明は、あるインターフェースを例として用い場合に対応するが、本実施形態は、以下の例に限られない。
【００４０】
図３に示すように、内蔵メモリデバイス１１、１２は、電源を投入されると、ホスト装置からリセットコマンド（ＳＤインターフェースではＣＭＤ０）を供給される（遷移Ｔ１）。この結果、内蔵メモリデバイス１１、１２はアイドル状態（初期状態）へと移行する。リセットコマンドは、図３の説明に用いられるインターフェースでは、電源投入の直後に供給されるべきことが規定されているが、インターフェースによっては、必ずしも必須ではない。リセットコマンドは、内蔵デバイスをアイドル状態に移行させる場合に、いつでも発行することが可能である。
【００４１】
次に、内蔵メモリデバイス１１、１２は、内蔵メモリデバイス１１、１２からのデータの読み出し、内蔵メモリデバイス１１、１２へのデータの書き込み、内蔵メモリデバイス１１、１２のデータの消去が可能な状態（初期化が完了した状態）に移行するのに必要な処理を行なう。この処理には、用いられるインターフェースによって、様々な過程が存在するが、以下に、ある具体例を用いて説明する。例えば、以下の例と異なり、１つのコマンドで、初期化が完了した移行するインターフェースも、本実施形態に含まれる。
【００４２】
まず、例えば、電圧チェックコマンド（ＳＤインターフェースではＣＭＤ８）を供給される（遷移Ｔ２）。電圧チェックコマンドは、既知のインターフェースにおいて設けられているコマンドを用いることができる。電圧チェックコマンドを受けると、内蔵メモリデバイス１１、１２は、自身がサポートしている電圧の範囲が示されたレスポンスを出力する。ホスト装置１によっては、このコマンドを用いた電圧範囲の確認を初期化開始の条件としている。
【００４３】
電圧チェックコマンドは、国際出願番号PCT/JP2005/021689の明細書に開示の電圧チェックコマンドを用いることができる。電圧チェックコマンドは、コマンド部、リザーブ部、電圧範囲識別部、チェックパターン部、誤り検出符号部を含んでいる。コマンド部は、電圧チェックコマンドであることを示す固有のビットパターンを有する。電圧範囲識別部は、ホスト装置１がサポートしている電圧範囲を示すビットパターンを有している。チェックパターン部は、後述のレスポンスを用いてホスト装置が電圧チェックコマンドとこれに対するレスポンスの正当性を確認するために用いられ、所定のビットパターンを有する。誤り検出符号部は、例えばＣＲＣ（cyclic redundancy check）等の誤り検出符合を含んでいる。内蔵メモリデバイス１１、１２は、電圧チェックコマンドを受けるとレスポンスを返す。このレスポンスは、コマンドと同じフォーマットを有し、電圧範囲識別部においてメモリデバイスがサポートする電圧範囲を明示するビットパターンが形成されている。
【００４４】
次に、内蔵メモリデバイス１１、１２は、メモリデバイス初期化コマンド（ＳＤインターフェースではＡＣＭＤ４１）を供給されて、初期化を開始する。初期化が完了すると、メモリデバイスは、ＩＤ（ＣＩＤ）送信要求コマンド、アドレス送信要求コマンドを供給され、これらに対するレスポンスを出力した後、スタンバイ状態に移行する（遷移Ｔ３）。ＩＤ送信要求コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、このインターフェースを介して通信するデバイスに固有の固体番号の送信を要求するコマンドである（ＳＤインターフェースではＣＭＤ２）。アドレス送信要求コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、このインターフェースを介して通信するデバイスにアドレスの提案を要求するコマンドである（ＳＤインターフェースではＣＭＤ３）。このアドレスは、ホスト装置が、ホスト装置に接続されるデバイスを識別するために用いられる。ホストは、デバイスから提案されたアドレスが、割り当て済みのアドレスと重なっていない場合、この提案されたアドレスを承認し、そうでない場合は別のアドレスの提案を再度要求する。または、ホスト装置が各デバイスに対して異なるアドレスをしてする例もある。この例では、再要求は不要となる。
【００４５】
内蔵メモリデバイス１１、１２は、デバイス選択コマンドを供給されてトランスファー状態に移行する（遷移Ｔ４）。なお、内蔵デバイス１３、１４は、デバイス選択コマンドを供給されることによって、トランスファー状態と同様な、コマンド受付状態に遷移する。内蔵デバイス１３、１４におけるコマンド受付状態の名前がトランスファー状態という名前と異なっていたとしても、両者は意味的には同じものである。
【００４６】
デバイス選択コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、１つのバスに複数のデバイスが接続される場合に、１つのデバイスを選択するために用いられるコマンドである（ＳＤインターフェースではＣＭＤ７）。デバイス選択コマンドは、選択されるべきデバイスのアドレスの値を引数として含んでいる。内蔵メモリデバイス１１、１２は、トランスファー状態において、自身のアドレスと異なるアドレスを指定されたデバイス選択コマンドを受け取ると、スタンバイ状態に移行する（遷移Ｔ５）。
【００４７】
トランスファー状態において、読み出しコマンド、書き込みコマンド、消去コマンド（ＳＤインターフェースではＣＭＤ１７、ＣＭＤ１８、ＣＭＤ２４、ＣＭＤ２５、ＣＭＤ３８）を受けると、ユーザ領域に対してコマンドに応じた読み出し、書き込み、消去実行状態に移行する（遷移Ｔ６）。読み出し、書き込み、消去が終了すると、内蔵メモリデバイス１１、１２はトランスファー状態に移行する（遷移Ｔ７）。または、読み出しコマンド、書き込みコマンドが、複数のブロックを順に読み出したり、複数のブロックに順に書き込んだりする、旨を指示している場合、内蔵メモリデバイス１１、１２は、データ転送停止コマンド（ＳＤインターフェースではＣＭＤ１２）を受けてトランスファー状態に移行する。
【００４８】
トランスファー状態においてブートコード領域（ブート領域）を読み出し可能な状態（ブート読み出し状態）への移行を指示するコマンド（ＳＤインターフェースではＣＭＤ６の１つの機能）を受けると、ブート領域を有する内蔵メモリデバイス（内蔵メモリデバイス１１）はブート読み出し状態に移行する（遷移Ｔ１１）。ブート読み出し状態移行指示コマンドは、例えば図４のようなフォーマットを有する。図４に示すように、ブート読み出し状態移行指示コマンドは、少なくとも、コマンド部ＣＭＤ、ブート読み出し状態移行指示部ＢＴを有している。コマンド部ＣＭＤは、ブート読み出し状態移行指示コマンドであることを示す固有のビットパターンを有する。ブート読み出し状態移行指示部ＢＴが、移行指示を示しているビットパターン（例えば“１”）を有していると、ブート読み出し状態移行指示コマンドを受けたメモリデバイスは、ブート読み出し状態に移行する。また同時に、内蔵メモリデバイス１１は、ブート読み出し状態移行指示コマンドに対するレスポンスを送信する。レスポンスは、ブート読み出し状態移行指示コマンドと同じフォーマットを有し、ブート読み出し状態移行指示部ＢＴには、ブート読み出し状態に移行した旨のビットパターン（例えば“１”）が形成されている。または、レスポンス内に移行完了の旨が設けられる代わりに、レスポンスの出力後にデータライン上で出力されるステータス内に、ブート読み出し状態に移行した旨が示されている。
【００４９】
一方、内蔵メモリデバイス１２は、ブート領域を有さないので、ブート読み出し状態移行指示コマンドを認識するが、このコマンドを供給されてもこれを無視する。すなわち、内蔵メモリデバイス１２は、コマンドが指示する内容の実行を行なわず、レスポンスも返さない。
【００５０】
ブート読み出し状態において、内蔵メモリデバイス１１が、ブート読み出し状態移行指示部ＢＴが解除を示しているビットパターン（例えば“０”）を有しているブート読み出し状態移行指示コマンドを受けると、トランスファー状態に移行する（遷移Ｔ１２）。
【００５１】
ブート読み出し状態において、ブート領域のアドレス指定を伴った読み出し指示コマンド（ＳＤインターフェースではＣＭＤ１８）を受けると、内蔵メモリデバイス１１は、ブート領域内のデータを読み出す（遷移Ｔ１３）。ホスト装置１は、既知の任意の方法でブートコードのサイズ（ブートコードを格納しているブロックの数）を特定する。そして、ブートコードの読み出しが終了すると、内蔵メモリデバイス１１は、ホスト装置１から、データ転送停止コマンド（ＳＤインターフェースではＣＭＤ１２）を受ける。これを受けて、内蔵メモリデバイス１１は、ブート読み出し状態に移行する（遷移Ｔ１４）
ブート読み出し状態において、ブート書き込み状態への移行を指示するコマンドを受けると、内蔵メモリデバイス１１は、ブート書き込み状態に移行する（遷移Ｔ１５）。ブート書き込み状態において、内蔵メモリデバイス１１が、ブート書き込み状態の解除を指示するコマンドを受けると、ブート読み出し状態に移行する（遷移Ｔ１６）。
【００５２】
ブート書き込み状態において、ブート領域のアドレス指定を伴った書き込みを指示するコマンド（ＳＤインターフェースではＣＭＤ２５）を受けると、内蔵メモリデバイス１１は、ブート領域にデータを書き込む（遷移Ｔ１７）。そして、ブートコードの書き込みが終了すると、内蔵メモリデバイス１１は、ホスト装置１から、データ転送停止コマンドを受ける。これを受けて、内蔵メモリデバイス１１は、ブート書き込み状態に移行する（遷移Ｔ１８）。なお、内蔵メモリデバイス１２は、ブート領域を有さないので、ブート書き込み状態移行指示コマンドを認識するが、このコマンドを供給されても、このコマンドが指示する内容を実行せず、またレスポンスを返さない。
【００５３】
アイドル状態においてブート読み出し状態への移行を指示するコマンドが供給されると、内蔵メモリデバイス１１は、ブート読み出し状態に移行する。アイドル状態からブート読み出し状態への移行指示コマンドとして、アイドル状態から次の状態への遷移の条件となるコマンドを利用して実現することができる。本例の場合、電圧チェックコマンドが該当する。
【００５４】
図５は、ブート読み出し状態への移行指示機能を有する電圧チェックコマンドを示している。図５に示すように、電圧チェックコマンドは、コマンド部ＣＭＤ、リザーブ部ＲＶ、ブート読み出し状態移行指示部ＢＴ、電圧範囲識別部ＶＯＬ、チェックパターン部ＣＰ、誤り検出符号部ＥＤを含んでいる。コマンド部ＣＭＤは、電圧チェックコマンドであることを示す固有のビットパターンを有する。
【００５５】
ブート読み出し状態移行指示部ＢＴは、このコマンドで、ブート読み出し状態移行を指示するか、しないかを明示している。例えば、“１”は、電圧チェックコマンドが、ブート読み出し状態への移行を要求することを意味し、“０”は、電圧チェック動作のみを要求することを意味する。コマンド部ＣＭＤ、電圧範囲識別部ＶＯＬ、チェックパターン部ＣＰＳ、誤り検出符号部ＥＤは、上記した、拡張前の電圧チェックコマンドと同じである。
【００５６】
図３に示すように、ブート読み出し状態の移行が指示されている電圧チェックコマンドを受けると、ブートコード領域を有する内蔵メモリデバイス１１は、ブート読み出し状態に移行する（遷移Ｔ２１）。また、同時に、内蔵メモリデバイス１１は、レスポンスを返す。このレスポンスは、コマンドと同じフォーマットを有する。レスポンス内のブート読み出し状態移行指示部（表示部）ＢＴは、ブート読み出し状態への移行が完了した旨を示し、例えばコマンドと同じ値を有する。
【００５７】
一方、ブートコード領域を有さない内蔵メモリデバイス１２は、ブート読み出し状態への移行が指示されている電圧チェックコマンドを受けると、アイドル状態に留まる（遷移Ｔ２２）。また、このような内蔵デバイス１２は、ブート読み出し状態へ移行しなかった旨を、ブート読み出し状態移行表示部において示すレスポンスを返す。
【００５８】
電圧チェックコマンドが、電圧チェックのみを指示するために用いられる場合は、ブート読み出し状態移行指示部ＢＴは、移行を指示しない値（例えば“０”）を有する。レスポンスでも、ブート読み出し状態移行表示部ＢＴに同じ値が立っている。
【００５９】
ブート読み出し状態において、内蔵メモリデバイス１１は、リセットコマンドを受けると、内蔵メモリデバイス１１はアイドル状態に移行する（遷移Ｔ２３）。
【００６０】
ブート読み出し状態移行指示部ＢＴを有する電圧チェックコマンドを利用して、内蔵メモリデバイス１１を、初期化を経ずにブート読み出し状態に直接移行させることができる。このため、ホスト装置１は、最小のステップ数で、ブートコードの読み出しを開始できる。
【００６１】
次に、図６を参照して、ホスト装置１の動作について、内蔵デバイス１１乃至１４の動作に触れながら説明する。特に、ホスト装置１（ホストコントローラ２、３）への電源投入から、各内蔵デバイスを初期化が完了した状態に移行させるまでの動作を説明する。以下の説明で、ここまでの説明では触れなかった、ホスト装置および内蔵デバイスが有する特徴についても触れる。
【００６２】
図６は、第１実施形態に係るホスト装置の動作を示すフローチャートである。図６は、内蔵デバイス１１乃至１４を初期化が完了した状態に移行させるための処理であり、カードデバイス５の初期化に先立って行なわれる。
【００６３】
図６に示すように、まず、ホストコントローラ２、３に電源が投入される（ステップＳ１）。これを受けて、内蔵メモリデバイス１１乃至１４へ電源が供給される。次に、ホストコントローラ３は、リセットコマンドを内蔵デバイス１１乃至１４に供給する（ステップＳ２）。リセットコマンドは、このコマンドを受けたデバイスをアイドル状態に移行させるためのコマンド（ＳＤインターフェースではＣＭＤ０）である。
【００６４】
次に、ホストコントローラ３は、初期化の開始前に発行することが要求されているコマンドを利用して、ブート読み出し状態に移行する。このようなコマンドとして、例えば、上記のように、電圧チェックコマンドを利用することができる。
【００６５】
電圧チェックコマンドは、上記のように、ブート領域を持つ複数のデバイスが接続された状態で使用されることが想定されていない。そこで、本実施形態では、電圧チェックコマンドがさらに拡張される。すなわち、電圧チェックコマンドが、所望の内蔵デバイス１１乃至１４に対してのみ有効となるように拡張される。具体的には、図７に示すように、ブート読み出し状態移行指示部ＢＴを有する電圧チェックコマンドにコマンドの宛先を示すアドレス部ＡＤが挿入される。ＳＤインターフェースでは、図８に示すように、１対１の通信を想定されたインターフェースにおけるコマンド（以下、従来コマンドと称する）の直前に、宛先のアドレスを示すアドレス部ＡＤを有するコマンド（ＣＭＤ５５）を付加することによって、このような、コマンドの拡張がサポートされている。
【００６６】
ここで、従来コマンドの拡張化について説明する。任意のコマンド（例えば既出のリセットコマンド、電圧チェックコマンド）に、アドレスの値を挿入することによって拡張される。拡張コマンドのアドレス部ＡＤに、宛先として指定したい内蔵デバイスのアドレスの値を入れることによって、所望の内蔵デバイスのみが、この拡張コマンドに反応する。また、非宛先のアドレスを有する内蔵デバイスは、コマンドを無視する（コマンドが指示する内容を行なわず、レスポンスを返さない）。
【００６７】
一方、アドレス部ＡＤを所定の値（例えば“ＦＦＦＦｈ”）にすることによって、従来コマンドをブロードキャスト（一斉送信）用に拡張することができる。ブロードキャスト用の拡張コマンドを受けた各内蔵デバイス１１乃至１４は、コマンドによって定義された処理を行なう。しかし、レスポンスを返さない。バス上で、各内蔵デバイス１１乃至１４からのレスポンスが、衝突し、破壊されることを避けるためである。さらに、アドレス部ＡＤを所定の値（例えば“００００”）とすることによって、拡張コマンドを認識しない従来のデバイスとの互換性を確保できる。
【００６８】
この拡張電圧チェックコマンドを用いて内蔵デバイス１１のみをブート読み出し状態に移行させる。具体的には、拡張電圧チェックコマンドのアドレス部に宛先の内蔵デバイス１１のアドレスの値（“０００１”）を入れるとともに、ブート読み出し状態移行指示部ＢＴを有効にする。このような引数を有する拡張電圧チェックコマンドは、内蔵デバイス１２乃至１４にも供給されるが、内蔵デバイス１２乃至１４は、このコマンドの宛先ではない。このため、非宛先の内蔵デバイス１２乃至１４は、このコマンドを無視し、アイドル状態に留まる。アイドル状態にある内蔵デバイス１２乃至１４は、初期化が完了した状態に移行するまでに、アイドル状態において次に供給されるべきコマンド（本例では自身を宛先として含む電圧チェックコマンド）を受信しない限り、アイドル状態に留まる。
【００６９】
自身を宛先に指定され且つブート読み出し可状態への移行を指示する拡張電圧チェックコマンドを受け取ると、内蔵デバイス１１は、ブート読み出し状態移行表示部を有効（移行した旨）にした、拡張電圧チェックコマンドのレスポンスを送信するとともに、ブート読み出し状態に移行する（ステップＳ３）。レスポンスは拡張電圧チェックコマンドと同じフォーマットを有する。ホストコントローラ３は、カードデバイス５との通信の場合と異なり、内蔵デバイス１１の動作電圧範囲や、初期化が完了した状態に移行するまでの処理において知得することになっているアドレス等を予め知得している。このため、従来の電圧チェックや初期化を行なわずに、ブート読み出し状態に移行しても問題は生じない。
【００７０】
なお、ブート読み出し移行指示部を有する、拡張前の（アドレス指定の無い）電圧チェックコマンドを用いて、ブート読み出し移行指示を行ってもよい。この場合、このコマンドを全内蔵デバイス１１乃至１４が受け取るが、内蔵デバイス１２乃至１４は、ブートコード領域を有していないので、このコマンドを無視してアイドル状態に留まる。一方、内蔵メモリデバイス１１は、このコマンドを認識して、ブート読み出し状態に移行する。ただし、この制御を行なう場合、ブートコード領域を有する内蔵メモリデバイスは、１つでなければならない。ブートコード領域を有する複数の内蔵デバイスからのレスポンスがバス上で衝突することを避けるためである。
【００７１】
次に、ホストコントローラ３は、データの読み出しコマンドを用いて、ブートコード領域内のブートコードを読み出す（ステップＳ４）。ここでは、例えば複数ブロックを読み出すコマンドを用いることができる。例えば、ブートコード領域の先頭ブロック内のデータビットが全て０、またはＦＦｈの場合は、ブートコードが存在しないと判定される。また、ブートコードのサイズ（ブート領域を格納しているブロックの数）の特定は、ホストシステムで定められた任意の方法で行なうことができる。例えばブートコードのサイズを示す位置を決めておけば、ブートコードを読み出す手順を統一することができる。ＳＤインターフェースが用いられる場合、ブートコードの読み出しは、コマンドＣＭＤ１８とコマンドＣＭＤ１２を用いて行なうことができる。なお、内蔵デバイス１１以外の内蔵デバイス１２乃至１４にもデータの読み出しコマンドが供給されるが、内蔵デバイス１２乃至１４はアイドル状態にあるので、データの読み出しコマンドに応答しない。
【００７２】
ホストコントローラ３は、ブートコードの読み出しが終了すると、リセットコマンドを発行して、内蔵デバイス１１をアイドル状態に移行させる（ステップＳ５）。
【００７３】
次に、ホストコントローラ３は、従来と同じ手順を踏んで、内蔵デバイス１１乃至１４に対して、１つずつ、初期化を行なう。具体的には、以下の通りである。なお、以下の説明では、ある具体的な順番で内蔵デバイスの初期化を行なっているが、この順番は一例であり、以下の例に限らない。例えば内蔵デバイス１３、１４は、メモリをも内蔵する、いわゆるコンボデバイスとすることが可能である。このような場合を想定して、拡張デバイス初期化コマンドは拡張メモリデバイス初期化コマンドより前に発行されることが規定されてもよい。以下の説明は、この場合に対応している。
【００７４】
ホストコントローラ３は、アドレス部の引数が内蔵デバイス１３のアドレス（０００３）とされ且つブート読み出し状態移行指示が無効とされた拡張電圧チェックコマンドを出力する（ステップＳ１１）。内蔵デバイス１１乃至１４のうち、内蔵デバイス１３のみがこのコマンドに対してレスポンスを返す。なお、内蔵デバイス１３が拡張電圧チェックコマンドをサポートしていない場合、ステップＳ１１が省略される。上記のように、内蔵デバイス１１乃至１４の供給電圧とホストコントローラ３の動作電圧との整合は取れているはずなので、電圧チェック手順が省略されても問題はない。ただし、ブートコード領域を有する内蔵デバイスは、拡張電圧チェックコマンドをサポートしていなければならない。
【００７５】
次にホストコントローラ３は、内蔵デバイス１３の初期化を行なう。この際、拡張されたデバイス初期化コマンドを用いることができる。拡張の方法は、図７、図８を用いて説明した手法を取ることができる。デバイス初期化コマンドは、既知のインターフェースにおいて定義されているものを用いることができ、メモリデバイス以外のデバイスの初期化を要求するコマンドである（ＳＤインターフェースではＣＭＤ５）。ホストコントローラ３は、アドレス部の引数が内蔵デバイス１３のアドレス（０００３）とされた拡張ＳＤＩＯデバイス初期化コマンドを出力する（ステップＳ１２）。
【００７６】
拡張デバイス初期化コマンドを受けると、内蔵デバイス１３は、初期化を開始するとともにビジーの旨を示すレスポンスを出力する。ホストコントローラ３は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで（ステップＳ１３）、ステップＳ１２を繰り返す。そして、初期化が完了すると、処理は、ステップＳ１４に移行し、内蔵デバイス１４の初期化を行なうため処理が開始する。
【００７７】
ステップＳ１４乃至ステップＳ１６において、ステップＳ１１乃至ステップＳ１３と同様の処理が、内蔵デバイス１４に対して行なわれる。ステップＳ１４乃至ステップＳ１６が、ステップＳ１１乃至ステップＳ１３と異なる点は、拡張デバイス初期化コマンド内のアドレス部が内蔵デバイス１４のアドレス（０００４）の値を有することである。このコマンドを受けて、内蔵デバイス１４は初期化を開始する。内蔵デバイス１４が拡張電圧チェックコマンドをサポートしていない場合、ステップＳ１４が省略される。内蔵デバイス１４の初期化が完了すると、処理は、ステップＳ２１に移行し、内蔵デバイス１１の初期化を行なうため処理が開始する。
【００７８】
ステップＳ２１乃至ステップＳ２３において、ステップＳ１１乃至ステップＳ１３と同様の処理が、内蔵デバイス１１に対して行なわれる。ステップＳ２１乃至ステップＳ２３が、ステップＳ１１乃至ステップＳ１３と異なる点は、ステップＳ２２において拡張されたメモリデバイス初期化コマンドが用いられることである。拡張の方法は、図７、図８を用いて説明した手法を取ることができる。メモリデバイス初期化コマンド内のアドレス部は、内蔵デバイス１１のアドレス（０００１）の値を有している。このコマンドを受けて、内蔵デバイス１１による初期化が完了すると、処理はステップＳ２４に移行し、内蔵デバイス１２の初期化を行なうため処理が開始する。
【００７９】
ステップＳ２４乃至ステップＳ２６において、ステップＳ２１乃至ステップＳ２３と同様の処理が、内蔵デバイスＳ１２に対して行なわれる。ステップＳ２４乃至ステップＳ２６が、ステップＳ２１乃至ステップＳ２３と異なる点は、拡張メモリデバイス初期化コマンド内のアドレス部が内蔵デバイス１２のアドレス（０００２）を有することである。このコマンドを受けて、内蔵デバイス１２による初期化が完了すると、処理はステップＳ２７に移行する。
【００８０】
なお、内蔵デバイスの数が５つ以上の場合、ステップＳ１１乃至ステップＳ２６と同様の処理が、全ての内蔵デバイスに対する初期化が完了するまで行なわれる。この後、処理はステップＳ２７に移行する。
【００８１】
ステップＳ２７、Ｓ２８において、内蔵デバイス１１乃至１４を初期化が完了した状態に移行させるのに必要な次の処理が行なわれる。例えば、まず、ステップＳ２７において、ホストコントローラ３は、拡張されたＩＤ送信要求コマンドを発行する。拡張ＩＤ送信要求コマンドは、ＩＤ送信要求コマンドを図７、図８を用いて説明した手法で拡張することによって得られる。ステップＳ２７において、拡張ＩＤ送信要求コマンド内のアドレス部は、ブロードキャストを意味する値を有している。よって、内蔵デバイス１１乃至１４は、拡張ＩＤ送信要求コマンドを受け取ってもＩＤを返信しない。
【００８２】
まず、ステップＳ２８において、ホストコントローラ３は、拡張されたアドレス送信要求コマンドを発行する。拡張アドレス送信要求コマンドは、アドレス送信要求コマンドを図７、図８を用いて説明した手法で拡張することによって得られる。ステップＳ２８において、アドレス送信要求コマンド内のアドレス部は、ブロードキャストを意味する値を有している。よって、内蔵デバイス１１乃至１４は、アドレス送信要求コマンドを受け取っても提案アドレスを返信しない。
【００８３】
ステップＳ２８の完了を条件に、内蔵デバイス１１乃至１４はスタンバイ状態に移行する。この後、従来の方法に従って、カードデバイス５がホスト装置１に挿入されている場合、ホストコントローラ２は、カードデバイス５の初期化に必要な処理を行なう。
【００８４】
なお、本実施形態において、内蔵デバイス１１乃至１４がホスト装置１に内蔵される例について説明した。しかしながら、内蔵デバイス１１乃至１４は、ホスト装置１に内蔵される用途に限られない。すなわち、例えば、本実施形態に示した内蔵デバイス１１乃至１４を１チップで構成し、これをパッケージにて封止することにより、ホスト装置１にスロット４を介して挿入されるようなカードデバイスを実現することもできる。
【００８５】
ここまで説明したように、第１実施形態に係る内蔵メモリデバイス１１は、ホスト装置への電源投入後の最初の状態から次の状態に移行するコマンドに、所定の領域（ブートコード領域）を読み出すことが可能な状態への移行を指示するコマンドをサポートするインターフェースをサポートしている。このため、内蔵メモリデバイス１１は、データの書き込み、読み出し、消去を行なうことが可能な状態に移行するのに必要な処理（初期化処理）を省略して、所定の領域にアクセスすることができる。このため、この所定の領域に、ブートコード等の早い段階での読み取りを必要とするデータを格納しておくことによって、ホスト装置１への電源供給の開始後、すぐに、このようなデータにアクセスできる。
【００８６】
また、第１実施形態に係るホストコントローラ２、３、およびコントローラ１１ａ、１２ａ、１３ａ、１４ａでは、１対１での通信を主に想定した従来のインターフェースにおいて定義されているアドレスを指定する機能を有さないコマンドが、宛先アドレスが指定できるように拡張される。このため、従来のインターフェースのバスに複数のデバイスが接続されたとしても、各デバイスを、初期化することができる。
【００８７】
また、１つのバスインターフェースに接続される内蔵デバイスの数によって負荷容量は変化する。このため、ホスト装置１や内蔵デバイス１１乃至１４のＩ／Ｏセルにドライブ能力を調節する機能を持たせるか、負荷容量に応じた生じた遅延に対応する分、動作周波数を落とすことにより、内蔵デバイスの数にあわせた調節を行なうことができる。
【００８８】
（第２実施形態）
第２実施形態は、第１実施形態からの初期化時間の短縮に関する。
【００８９】
第２実施形態の内蔵デバイスおよびホスト装置の構成は、第１実施形態（図１、図２）と同じである。図９を参照して、第２実施形態の動作について説明する。図９は、第２実施形態に係るホスト装置の動作を示すフローチャートである。
【００９０】
ステップＳ１乃至ステップＳ５までは、第１実施形態と同じである。ステップＳ５の次、ホストコントローラ３は、アドレス部の値をブロードキャスト用の値に設定された拡張電圧チェックコマンドを出力する（ステップＳ３１）。各内蔵デバイス１１乃至１４は、この拡張電圧チェックコマンドを受けても、レスポンスを返さない。上記のように、内蔵デバイス１１乃至１４の供給電圧とホストコントローラ３の動作電圧との整合は取れているはずなので、拡張電圧チェックコマンドのレスポンスが送信されなくても、ホスト装置１の動作に支障は無い。そうであるにも係らず、電圧チェックコマンドの発行を行なう理由の１つは、内蔵デバイス１１乃至１４が、電圧チェックコマンドの受信を、初期化開始の条件としている場合があるからである。
【００９１】
次に、ホストコントローラ３は、アドレス部の値をブロードキャスト用の値に設定された拡張デバイス初期化コマンドを出力する（ステップＳ３２）。各内蔵デバイス１３、１４は、レスポンスを返さずに初期化を開始する。よって、内蔵デバイス１３、１４の初期化が並行して行なわれる。内蔵メモリデバイス１１、１２は、拡張デバイス初期化コマンドを無視する。
【００９２】
次に、ホストコントローラ３は、アドレス部の値をブロードキャスト用の値に設定された拡張メモリデバイス初期化コマンドを出力する（ステップＳ３３）。各内蔵メモリデバイス１１、１２は、レスポンスを返さずに、初期化を開始する。よって、内蔵メモリデバイス１１、１２の初期化が並行して行なわれる。内蔵デバイス１３、１４は、拡張メモリデバイス初期化コマンドを無視する。なお、ステップＳ３２とステップＳ３３は、順序が逆であっても構わない。この順序は、例えば内蔵デバイス１３、１４がコンボデバイスである場合を想定して決定された例である。
【００９３】
次に、ホストコントローラ３は、内蔵デバイス１１乃至１４の初期化の完了を確認するための処理を行なう。具体的に、まず、ホストコントローラ３は、ステップＳ１２と同じ処理を行なう。そして、ホストコントローラ３は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで（ステップＳ１３）、ステップＳ１２を繰り返す。
【００９４】
次に、ホストコントローラ３は、ステップＳ１５と同じ処理を行なう。そして、ホストコントローラ３は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで（ステップＳ１６）、ステップＳ１５を繰り返す。
【００９５】
次に、ホストコントローラ３は、ステップＳ２２と同じ処理を行なう。そして、ホストコントローラ３は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで（ステップＳ２３）、ステップＳ２２を繰り返す。
【００９６】
次に、ホストコントローラ３は、ステップＳ２５と同じ処理を行なう。そして、ホストコントローラ３は、初期化が完了してレディーの旨を示すレスポンスを受け取るまで（ステップＳ２６）、ステップＳ２５を繰り返す。なお、内蔵デバイス１１乃至１４の初期化の完了の確認は、この例と異なる順序で行なわれてもよい。
【００９７】
次に、ステップＳ２７、Ｓ２８と同じ処理が行なわれることにより、内蔵デバイス１１乃至１４がスタンバイ状態に移行する。
【００９８】
ここまで説明したように、第２実施形態に係る内蔵デバイス１１乃至１４およびホスト装置１によれば、第１実施形態と同じインターフェースをサポートしている。このため、第１実施形態と同じ効果を得られる。また、第２実施形態に係る内蔵デバイス１１乃至１４およびホストコントローラ２、３は、宛先アドレスが指定できるように拡張されたコマンドをサポートするインターフェースをサポートしている。このため、第１実施形態と同じ効果を得られる。
【００９９】
また、第２実施形態に係るホストコントローラ３は、内蔵デバイス１１乃至１４の初期化を指示するコマンドをブロードキャストで送信する。このため、内蔵デバイス１１乃至１４は、並行して初期化を行なう。よって、初期化に要する時間が短い。
【０１００】
（第３実施形態）
第３実施形態は、バスを１つしか持たないホスト装置で複数のデバイスをサポートする方法に関する。図１０、図１１を参照して、第３実施形態について説明する。図１０は、本発明の第３実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示している。
【０１０１】
図１０に示すように、ホスト装置２１は、１つのホストコントローラ２２を有する。このホストコントローラ２２は、第１実施形態のホストコントローラ２、３と同じ構成を有する。
【０１０２】
ホストコントローラ２２には、１つのバスを介して内蔵デバイス１１乃至１４が接続されている。また、ホストコントローラ２２は、アナログスイッチ２３およびバッファ２４を介して、スロット４と接続されている。具体的には、ホストコントローラ２２からスロット４へ向う方向のみに流れる信号ラインは、ホストコントローラ２２からバッファ２３を介してスロット４に接続される。このような信号のラインとして、例えばクロックラインのような単方向に流れる信号のためのラインが該当する。
【０１０３】
一方、ホストコントローラ２２とスロット４との間で両方向に流れる信号ラインについては、アナログスイッチ２４を介して、ホストコントローラ２２とスロット４とが接続される。このような信号のラインとして、例えば、コマンドライン、データラインのような双方向に流れる信号のためのラインが該当する。なお、双方向性のバッファも使用可能であるが、この場合、ホストコントローラ２２からバスの方向を制御する制御信号が必要となる。通常は、このような信号は用意されていない。バッファ２３を用いずに、アナログスイッチ２４で全信号ラインを制御しても良い。
【０１０４】
バッファ２３およびアナログスイッチ２４は、ＣＰＵ６からホストコントローラ２２を介してイネーブル信号ＥＮを供給されると、ホストコントローラ２２とスロット４との間の電気的な接続を行なう。この結果、ＣＰＵ６は、スロット４（スロット４に挿入されたカードデバイス５）と通信を行なうことができる。
【０１０５】
ホストコントローラ２２は、また、コントローラ１１ａ、１２ａ、１３ａ、１４ａと、対応する信号ライン（クロックライン、コマンドライン、データライン、電源ライン）を介して接続されている。
【０１０６】
スロット４は、カードデバイス５が挿入されているか否かを検出し、カードデバイス５の検出の有無を知らせるカード検出信号ＣＤをホストインターフェース２に供給する。ＣＰＵ６は、カードデバイス５が挿入されていない間、バッファ２３およびアナログスイッチ２４をオフに維持している。そして、カードデバイス５が挿入されたことが検出されると、ＣＰＵ６は、内蔵デバイス１１乃至１４とホストコントローラ２２との間での通信やデータ転送が行なわれていないことを条件にバッファ２３およびアナログスイッチ２４をオンする。
【０１０７】
また、ホスト装置２１は、スロット４に設けられた蓋４ａを有する。蓋４ａには、センサが設けられており、蓋４ａが開けられると、その旨を示す蓋開閉信号ＬＤをホストインターフェース２２に供給する。蓋４ａが開くと、カードデバイス５が抜かれる可能性があることを意味する。ＣＰＵ６は、蓋開閉信号ＬＤ等を用いてカードデバイス５がスロット４から抜かれる可能性があることを検出すると、カードデバイス５へのアクセスを速やかに停止し、バッファ２３およびアナログスイッチ２４をオフする。こうすることによって、スロット４からの信号と、内蔵デバイス１１乃至１４からの信号がバス上で衝突することが回避される。
【０１０８】
その他の構成は、第１実施形態と同じである。
【０１０９】
次に、図１１を参照して、動作について説明する。図１１は、第３実施形態に係るホスト装置の動作を示すフローチャートである。まず、図１１に示すように、ホストコントローラ２２に電源が投入される（ステップＳ１）。次に、ホストコントローラ２２は、イネーブル信号を有効にしてバッファ２３およびアナログスイッチ２４をイネーブル（オン）にする（ステップＳ４１）。次に、ホストコントローラ２２は、リセットコマンドを発行する（ステップＳ２）。次に、ホストコントローラ２２は、イネーブル信号を無効にして、バッファ２３およびアナログスイッチ２４をディセーブル（オフ）にする（ステップＳ４２）。この結果、ホストコントローラ２２は、内蔵デバイス１１乃至１４のみと通信を行なう状態になる。
【０１１０】
次に、この状態で、内蔵デバイス１１乃至１４の初期化が行なわれる。具体的には、まず、第１実施形態のステップＳ３乃至Ｓ５と同じ処理が行なわれる。次に、第１実施形態のステップＳ１１乃至Ｓ１６、Ｓ２１乃至Ｓ２６と同じ処理、または第２実施形態のステップＳ３１乃至Ｓ３３、ステップＳ１２、Ｓ１３、Ｓ１５、Ｓ１６、Ｓ２２、Ｓ２３、Ｓ２５、Ｓ２６と同じ処理が行なわれる。次に、第１実施形態のステップＳ２７、Ｓ２８と同じ処理が行なわれる。この結果、内蔵デバイス１１乃至１４は、スタンバイ状態に移行する。この後、内蔵デバイス１１乃至１４は、スタンバイ状態からの状態の遷移を要求するコマンド（例えばデバイス選択コマンド）以外のコマンドは受け付けない。よって、ホストコントローラ２２は、スロット４に挿入されているカードデバイス５のみと通信しているのと実質的に同じ状態である。
【０１１１】
次に、ホストコントローラ２２は、バッファ２３およびアナログスイッチ２４をイネーブル状態にする（ステップＳ４３）。この状態で、ホストコントローラ２２は、カードデバイス５の初期化を行ってスタンバイ状態に移行させる。
【０１１２】
具体的には、まずホストコントローラ２２は、ブート読み出し状態移行指示部を有する電圧チェックコマンドをカードデバイス５に供給する（ステップＳ４４）。ブート読み出し状態移行指示部は無効にされている。
【０１１３】
次に、ホストコントローラ２２は、カードデバイス５に、デバイス初期化コマンドまたはメモリデバイス初期化コマンドを供給する（ステップＳ４５）。カードデバイス５は、初期化を開始するとともにビジーの旨を示すレスポンスを出力する。ホストコントローラ２２は、初期化が完了してレディーの旨を明示するレスポンスを受け取るまで（ステップＳ４６）、ステップＳ４５を繰り返す。
【０１１４】
初期化が完了すると、ホストコントローラ２２は、カードデバイス５をスタンバイ状態に移行させるのに必要なさらなる処理を行なう。具体的には、例えば、ホストコントローラ２２は、ＩＤ送信要求コマンドを用いてカードデバイス５からＩＤを読み出す（ステップＳ５１）。次に、ホストコントローラ２２は、アドレス送信要求コマンドを用いて、カードデバイス５からアドレスの提案を受ける（ステップＳ５２）。ここで、内蔵デバイス１１乃至１４もアドレスの送信要求コマンドを受信するが、上記のように、内蔵デバイス１１乃至１４はスタンバイ状態にあってこのコマンドを無視するため、内蔵デバイス１１乃至１４のアドレスの値が変わることはない。
【０１１５】
ホストコントローラ２２は、カードデバイス５から提案されたアドレスの値が、内蔵デバイス１１乃至１４のアドレスと一致しているか否かを判定する（ステップＳ５３）。一致している場合、ステップＳ５２に戻って、ホストコントローラ２２は別のアドレスの値の提案を要求する。そして、カードデバイス５から提案されたアドレスの値と、内蔵デバイス１１乃至１４のアドレスの値が一致しなくなるまでステップＳ５２を繰り返す。内蔵デバイス１１乃至１４はスタンバイ状態において、アドレス送信要求コマンドを無視するが、カードデバイス５はアドレス送信要求コマンドを受け付けることによって、アドレスが変更可能になっている。
【０１１６】
ここまで説明したように、第３実施形態に係るデバイスおよびホスト装置によれば、第１実施形態と同じインターフェースをサポートしている。このため、第１実施形態と同じ効果を得られる。また、第３実施形態に係るデバイスおよびホスト装置は、宛先アドレスが指定できるように拡張されたコマンドをサポートするインターフェースをサポートしている。このため、第１実施形態と同じ効果を得られる。また、内蔵デバイス１１乃至１４の初期化に第２実施形態に係る方法を用いることによれば、第３実施形態に係るホスト装置においても、第２実施形態と同じ効果を得られる。
【０１１７】
また、第３実施形態に係るホスト装置２１によれば、ホストコントローラ２２とスロット４とは、バッファ２３およびアナログスイッチ２４を介して接続される。このため、スロット４をホストコントローラ２２から電気的に分離することができる。スロット４をホストコントローラ２２から分離した状態で内蔵デバイス１１乃至１４をスタンバイ状態へと移行させる処理の後、スロット４をホストコントローラ２２と接続してカードデバイス５をスタンバイ状態へ移行する処理を行なうことが可能となる。このため、１つのバスに内部デバイス１１乃至１４とスロット４とを接続しても、内部デバイス１１乃至１４およびカードデバイス５を適切に初期化することができる。
【０１１８】
（第４実施形態）
第４実施形態は、ブートコードの読み出しの詳細に関する。このため、第４実施形態は、第１乃至第３実施形態に組み合わせることができる。図１２、図１３を参照して第４実施形態について説明する。
【０１１９】
図１２は、第４実施形態に係るホスト装置の内蔵デバイス内のブートコードの読み出しのフローチャートを示している。すなわち、図１２は、第１乃至第３実施形態のブートコート読み出し完了までのフローの詳細を示すフローチャートである。
【０１２０】
図１２に示すように、ステップＳ１、Ｓ２と同じ工程が行なわれる。次に、ホストコントローラ３、２２は、ブート読み出し状態への移行指示コマンドを供給する（ステップＳ６１）。このコマンドとして、第１実施形態と同じく、ブート読み出し状態移行指示部を含んだ電圧チェックコマンドを利用することができる。
【０１２１】
内蔵デバイス１１乃至１４は、ブート読み出し状態への移行指示を示す電圧チェックコマンドを受け取る。内蔵デバイスのうちで、ブート領域を有する内蔵デバイスが有る場合、この内蔵デバイス（例えば、図３の内蔵デバイス１１）は、レスポンスを返す。このレスポンス内のブート読み出し状態移行指示部は、移行した旨を示すビットパターンを有している。他の内蔵デバイス（例えば、図３の内蔵デバイス１２乃至１４）は、ブート領域を有さないので、レスポンスを返さない。
【０１２２】
電圧チェックコマンドに代えて、拡張電圧チェックコマンドを用いることもできる。この場合、拡張電圧チェックコマンド内のアドレス部には、ブート領域を有する内蔵デバイスのアドレス（例えば、図３の例では、“０００１”）が記載されている。
【０１２３】
次に、ホストコントローラ３、２２は、電圧チェックコマンドに対するレスポンスの有無を確認する（ステップＳ６２）。レスポンスが無い場合、ブート領域を有する内蔵デバイスが存在しないので、ステップＳ５を経て、内蔵デバイス１１乃至１４からのブートコードの読み出し処理が終了する。
【０１２４】
ホストコントローラ３、２２は、電圧チェックコマンドに対するレスポンスを受信した場合、ブート読み出し状態移行部が、移行の旨を示すビットパターンを有しているか否かを確認する（ステップＳ６３）。このようなビットパターンが形成されていない場合、処理はステップＳ５に移行する。一方、レスポンスが、ブート読み出し状態への移行の旨を示している場合、ホスト装置は、ブートコードの読み出しを行なうために、ステップＳ６４に移行する。
【０１２５】
ステップＳ６４において、ホストコントローラ３、２２は、読み出しコマンドを発行する（ステップＳ６４）。この読み出しコマンドは、ＳＤインターフェースの場合、マルチブロック読み出しコマンド（ＣＭＤ１８）を用いることができる。次に、ホストコントローラ３、２２は、読み出しコマンドに対するレスポンスを受信する（ステップＳ６５）。次に、ホストコントローラ３、２２は、レスポンス内の誤り訂正符号や誤り検出用のビットパターンの整合を確認する等して、レスポンス内のエラーの有無を確認する（ステップＳ６６）。
【０１２６】
エラーが検出されると、処理はステップＳ８１に移行する。ステップＳ８１で、ホストコントローラ３、２２は、読み出しを停止するために、データ転送終了コマンド（ＳＤインターフェースではＣＭＤ１２）を発行する。次に、ホストコントローラ３、２２は、データ転送終了コマンドに対するレスポンスを受け取り（ステップＳ８２）、ステップＳ５に移行する。
【０１２７】
一方、エラーが検出されなかった場合、ホストコントローラ３、２２は、内蔵デバイス１１から読み出された、ブートコード領域内の最初のブロック内のデータをバッファに読み込む（ステップＳ７１）。また、ホストコントローラ３、２２は、この最初のブロック内のデータを解析して、ブートコードが存在するか否かを確認する（ステップＳ７２）。予めブートコードが存在しない旨を示すパターン、例えば特定の場所が全て０または１などと決めておくことで判定が可能である。
【０１２８】
ブートコードが存在しない場合、ホストコントローラ３、２２はバッファの内容を破棄すると共に、処理はステップＳ８１に移行する。一方、ブートコードが存在する場合、ホストコントローラ３、２２は、ブートコードの内容を解析して、ブートコードの大きさ（例えば何ブロックに亘ってブートコードが格納されているか）を知得する（ステップＳ７３）。ブートコードの大きさを示すデータの位置を予め決めておくことで、共通した手順を用いることができるようになる。
【０１２９】
次に、ホストコントローラ３、２２は、バッファ中のデータをシステムメモリ７に転送する（ステップＳ７４）。次に、ホストコントローラ３、２２は、ブート領域内の２番目のブロックのデータをバッファに読み込み、次いでシステムメモリ７に転送する（ステップＳ７５）。次に、ホストコントローラ３、２２は、ステップＳ７３で知得したブートコードの大きさを参照して、ブートコードが全て読み出されるまで（ステップＳ７６）、ステップＳ７５を繰り返す。ブートコード全体の読み出しが完了すると、処理はステップＳ８１に移行する。
【０１３０】
第１実施形態で説明したように、本発明の各実施形態では、ホスト装置１、２１への電源投入後に、通常の初期化処理を省いてブート読み出し状態への移行を可能とするコマンドが設けられている。このため、電源投入から、ブートコードの読み出しまでに必要な処理は非常に少ない。そこで、本実施形態に係るブートコードの読み出し処理を、ＣＰＵ５に代えて、ホストコントローラ３、２２内に設けられたＤＭＡ（direct memory access）コントローラを用いてブートコードの読み出しを自動化させることもできる。
【０１３１】
図１３は、本発明の実施形態に係るホスト装置を概略的に示すブロック図である。図１３に示すように、ホストコントローラ３、２２は、第１実施形態で説明した要素に加えて、ＤＭＡコントローラ４２を含んでいる。ＤＭＡコントローラ４２は、既知の技術を用いて、本実施形態の動作を実行するように構成される。ＤＭＡコントローラを用いることにより、ブートコードの読み出し完了までの処理をＣＰＵ６を用いずに行なうことができる。ホスト装置４１の図１３に示す構成以外の構成については、図１３では省略されているが、第１実施形態（図１）、第３実施形態（図１０）と同じである。
【０１３２】
ここまで説明したように、第４実施形態に係る内蔵デバイス１１乃至１４およびホストコントローラ３、２２は、第１実施形態と同じインターフェースをサポートしている。このため、ホスト装置４１への電源投入からブートコードの読み出し状態への移行に要する処理が少なく、結果、電源投入からブートコード読み出し完了までに要する処理も少ない。このため、この一連の処理をＤＭＡコントローラ４２によって実行することが可能となる。第４実施形態を第１乃至第３実施形態と組み合わせることによって、第１乃至第３実施形態によって得られる効果を得ることもできる。
【０１３３】
（第５の実施形態）  
次に、この発明の第５の実施形態について説明する。本実施形態は、上記第１の実施形態をより具体的に説明するものであり、構成及び動作は、基本的には第１の実施形態と同様である。なお以下では、“ｂ”を付加した数値は２進数表記であり、“ｈ”を付加した数値は１６進数表記であり、何も付加しない数値は１０進数表記である。
【０１３４】
＜拡張電圧チェックコマンドについて＞  
まず、上記実施形態で説明した図６のステップＳ３で使用する拡張電圧チェックコマンドについて、図１４を用いて説明する。図１４は、拡張電圧チェックコマンドの構成を模式的に示すダイアグラムである。拡張電圧チェックコマンドは、ＳＤＴＭインターフェースではＡＣＭＤ８として定義出来る。
【０１３５】
ＡＣＭＤ８は、前述のＣＭＤ５５とＣＭＤ８との組み合わせである。ＣＭＤ５５は、その上位ビットから順に、Command Index及びＲＣＡを含む。Command Indexにはコマンド固有の番号が格納され、ＣＭＤ５５の場合には“１１０１１１ｂ”である。ＲＣＡは、次に続くコマンド（ＡＣＭＤ８の場合にはＣＭＤ８）の宛先となるデバイスのＲＣＡを含む。
【０１３６】
ＣＭＤ８は、その上位ビットから順に、Command Index、ＱＢＲ（Quick Boot Request）、Reserved、ＶＨＳ、Pattern、ＣＲＣ、及びＥＮＤを含む。Command Index、ＱＢＲ、Reserved、ＶＨＳ、Pattern、及びＣＲＣはそれぞれ、前述のコマンド部、ブート読み出し状態移行指示部ＢＴ、リザーブ部ＲＶ、電圧範囲識別部ＶＯＬ、チェックパターン部ＣＰ、及び誤り検出符号部ＥＤに相当する。ＣＭＤ８の場合、Command Indexは“００１０００ｂ”である。また、ＱＢＲ＝“１ｂ”である場合には、ＣＭＤ８はブート読み出し状態への移行を要求し、“０ｂ”である場合には、電圧チェック動作のみを要求する。以下では、ＱＢＥ＝“１ｂ”とされて、ブート読みだし状態への移行を要求する動作を、クイックブート（quick boot）と呼ぶことにする。
【０１３７】
＜内蔵デバイス１１〜１４の状態遷移について＞  
次に、メモリデバイス１１、１２及びデバイス１３、１４の状態遷移について、図１５を用いて説明する。図１５は、メモリデバイス１１の状態遷移図であるが、Boot Read State及びBoot Write Stateを有しない以外は、その他のデバイス１２〜１４も同様である。
【０１３８】
図１５の状態遷移図は、第１の実施形態で説明した図３と対応している。図中のIdle State、Initialization、Standby State、Transfer State、（Executing Read, Write, Erase）、Boot Read State、及びBoot Write Stateはそれぞれ、図３におけるアイドル状態、初期化、スタンバイ状態、トランスファー状態、（読み出し、書き込み、消去）、ブート読み出し状態、及びブート書き込み状態に対応する。そして図１５では、ＳＤＴＭインターフェースにおいて各状態間の遷移に使用する具体的なコマンド名を記載している。以下では、主要な状態遷移についてのみ、メモリデバイス１１（ブート領域を備えたデバイス）を例に、図１５を参照して説明する。
【０１３９】
メモリデバイス１１は、コントローラ３からクイックブートを命令されることにより、Initialization及びStandby Stateを経ることなく、Idle StateからBoot Read Stateへ直接遷移する。この際に、コントローラ３からメモリデバイス１１に与えられるコマンドが、上記説明したＡＣＭＤ８またはＣＭＤ８であり、これらのコマンドにおいてはＱＢＲ＝“１ｂ”とされる。ホスト装置１内においてＣＭＤ８をサポートするデバイスが１つだけであれば、ＣＭＤ８を使用出来る。しかし、ＣＭＤ８をサポートするデバイスが複数有る場合には、そのうちのいずれかを選択して命令する必要があるため、ＡＣＭＤ８を使用する。
【０１４０】
他方、コントローラ３から、ＱＢＲ＝“０ｂ”とされたＡＣＭＤ８またはＣＭＤ８が発行されると、メモリデバイス１１はInitializationされる。更に、引き続きＡＣＭＤ４１が発行され、ＡＣＭＤ２またはＣＭＤ２が発行され、更にＡＣＭＤ３またはＣＭＤ３が発行されることで、メモリデバイス１１はStandby Stateに遷移する。ＣＭＤ２及びＣＭＤ３は第１の実施形態で説明した通りであり、ＡＣＭＤ２及びＡＣＭＤ３はそれぞれ、ＣＭＤ２及びＣＭＤ３にそれぞれＣＭＤ５５が付加されたコマンドである。
【０１４１】
Standby Stateにあるメモリデバイス１１は、コントローラ３からＣＭＤ７を発行されることで、Transfer Stateに遷移する。勿論、この際に発行されるＣＭＤ７の引数には、メモリデバイス１１の保持するＲＣＡが含まれていなければならない。
【０１４２】
Transfer Stateにあるメモリデバイスは、コントローラ３からＣＭＤ６を発行されることで、Boot Read Stateに遷移出来る。ＣＭＤ６の内容は、第１の実施形態で説明した図４の通りである。ＣＭＤ６によってBoot Read Stateに遷移したメモリデバイス１１は、ＢＴ＝“０ｂ”とされたＣＭＤ６を発行されることによって、Transfer Stateに遷移する。但し、Idle Stateから直接Boot Read Stateに遷移した場合には、コントローラ３が仮にＣＭＤ６を発行したとしても、メモリデバイス１１はTransfer Stateに遷移することは無い。すなわち、Boot Read StateとTransfer Stateとの間の遷移は、初期化が完了した後に可能となる。
【０１４３】
＜コントローラ３における初期化動作について＞  
次に、コントローラ３による内蔵デバイス１１〜１４の初期化動作について、図１６を用いて説明する。図１６は、コントローラ３の処理の流れを示すフローチャートである。
【０１４４】
図示するように、コントローラ３はまず、内蔵デバイス１１〜１４に電源を投入する（ステップＡ−０）。その後、コントローラ３はステップＡ−１〜Ａ−１８の処理を行う。ステップＡ−１〜Ａ−１８の処理は、第１の実施形態で説明した図６におけるステップＳ２〜Ｓ５、Ｓ１１〜Ｓ１６、Ｓ２１〜Ｓ２８にそれぞれ対応している。
【０１４５】
すなわち、コントローラ３はＣＭＤ０を発行する（ステップＡ−１）。前述の通り、ＣＭＤ０はリセットコマンドである。これによりコントローラ３は、内蔵デバイス１１〜１４をIdle stateに遷移させると共に、コントローラ３と内蔵デバイス１１〜１４を接続するバス（ＣＭＤ line）をinput modeとする。Input modeとされることで、バスはＳＤＴＭインターフェースにおける各種コマンドを待ち受ける状態となる。
【０１４６】
次にコントローラ３は、ＡＣＭＤ８を発行する（ステップＡ−２）。ＡＣＭＤ８においては、ＱＢＲ＝“１ｂ”、ＲＣＡ＝“０００１ｈ”とされる。つまり、クイックブートが命令され、ＲＣＡ＝“０００１ｈ”に該当するメモリデバイス１１はBoot Read Stateに遷移する。その他の内蔵デバイス１２〜１４は、Idele Stateに留まった状態である。
【０１４７】
更にコントローラ３は、ＣＭＤ１８及びＣＭＤ１２を用いて、メモリデバイス１１内のブートコード領域にアクセスする（ステップＡ−３）。これによりコントローラ３は、ブートコード領域に保持されるブートコードを読み出す。
【０１４８】
ブートコードの読み出しが終了すると、コントローラ３は再度ＣＭＤ０を発行して、メモリデバイス１１をIdle stateに遷移させる（ステップＡ−４）。なお、メモリデバイス１１が、ブートコードの読み出しが終了した時点でIdle stateに遷移出来るような場合には、ステップＡ−４は不要である。このことは図６でも同様である。
【０１４９】
次にコントローラ３は、内蔵デバイス１１乃至１４を１つずつ初期化する。すなわち、まず内蔵デバイス１３についての初期化を行うにあたり、コントローラ３はＡＣＭＤ８（但しＱＢＲ＝“０ｂ”、ＲＣＡ＝“０００３ｈ”）を発行する（ステップＡ−５）。引き続きコントローラ３は、ＡＣＭＤ５（但し、ＲＣＡ＝“０００３ｈ”）を発行する（ステップＡ−６）。ＡＣＭＤ５は、ＣＭＤ５５とＣＭＤ５とを含むコマンドであり、ＣＭＤ５はメモリデバイス以外の初期化を命令するコマンドである。以上により、内蔵デバイス１３がinitializeされる。
【０１５０】
Initializeされることにより内蔵デバイス１３がready状態になると（ステップＡ−７、ＹＥＳ）、すなわち、ready状態になった旨のレスポンスを内蔵デバイス１３から受け取ると、コントローラ３は次に内蔵デバイス１４の初期化を行う。内蔵デバイス１４の初期化処理は、内蔵デバイス１３の場合と同様である（ステップＡ−８〜Ａ−１０）。
【０１５１】
次にコントローラ３は、メモリデバイス１１の初期化を行う。すなわちコントローラ３は、ＡＣＭＤ８（但しＱＢＲ＝“０ｈ”、ＲＣＡ＝“０００１ｈ”）を発行する（ステップＡ−１１）。なお、メモリデバイス１１に対するＡＣＭＤ８の発行は、すでにステップＡ−２で行われている。つまり、内蔵デバイス１１の電圧チェックは、一度、既に済んでいる。従って、ステップＡ−１１は省略しても構わない。引き続きコントローラ３は、ＡＣＭＤ４１（但し、ＥＣＡ＝“０００１ｈ”）を発行する（ステップＡ−１２）。ＡＣＭＤ４１は、ＣＭＤ５５とＣＭＤ４１とを含むコマンドであり、ＣＭＤ４１はメモリデバイスの初期化を命令するコマンドである。以上により、メモリデバイス１１がinitializeされる。
【０１５２】
Initializeされることによりメモリデバイス１１がready状態になると（ステップＡ−１３、ＹＥＳ）、すなわち、ready状態になった旨のレスポンスをメモリデバイス１１から受け取ると、コントローラ３は、次にメモリデバイス１２の初期化を行う。メモリデバイス１２の初期化処理は、メモリデバイス１２の場合と同様である（ステップＡ−１４〜Ａ−１６）。
【０１５３】
その後、コントローラ３はＡＣＭＤ２（但しＲＣＡ＝“ＦＦＦＦｈ”）を発行し（ステップＡ−１７）、引き続きＡＣＭＤ３（但しＲＣＡ＝“ＦＦＦＦｈ”）を発行する（ステップＡ−１８）。ＡＣＭＤ２は、ＣＭＤ５５とＣＭＤ２とを含み、ＣＭＤ２は、内蔵デバイス１１〜１４に対してＩＤ送信を要求するコマンドである。またＡＣＭＤ３は、ＣＭＤ５５とＣＭＤ３とを含み、ＣＭＤ３は、内蔵デバイス１１〜１４に対してアドレス送信を要求するコマンドである。以上のＡＣＭＤ２、ＡＣＭＤ３は、ＲＣＡ＝“ＦＦＦＦｈ”、すなわちブロードキャストとして送信される。以上の結果、内蔵デバイス１１〜１４はStandby Stateに遷移する。
【０１５４】
＜内蔵デバイス１１〜１４における初期化動作について＞  
次に、図１６で説明した初期化処理における内蔵デバイス１１〜１４の処理について説明する。まず、内蔵デバイス１１〜１４の備えるフラグについて説明する。
【０１５５】
内蔵デバイス１１〜１４は、２つのフラグを有する。すなわち、フラグFirstCMD55と、フラグCompatibleModeである。フラグFirstCMD55は、既にＣＭＤ５５をコントローラ３から受信したか否かを示すフラグである。そしてフラグFirstCMD55は、ＣＭＤ５５を受け取るまでは“１ｂ”とされ、最初にＣＭＤ５５を受信すると、以後“０ｂ”とされる。
【０１５６】
フラグCompatibleModeは、内蔵デバイス１１〜１４の動作モードを切り替えるためのフラグであり、電源投入直後は“１ｂ”とされている。“１ｂ”とされている期間、内蔵デバイス１１〜１４は、従来のＳＤＴＭコマンドを用いた手順により初期化を行う。つまり、上記実施形態で説明したＡＣＭＤ８、ＡＣＭＤ２、ＡＣＭＤ３、ＡＣＭＤ５は使用されない。以下、この動作モードを互換モードと呼ぶ。
【０１５７】
他方、最初に受信したＣＭＤ５５に含まれる引数に含まれる１６ビットのＲＣＡ番号（以下、これをＣＲＣＡと呼ぶ）が“００００ｈ”で無い場合には、フラグCompatibleModeは“１ｂ”から“０ｂ”にセットされる。つまり、最初に受信したコマンドＣＭＤ５５が、内蔵デバイス１１〜１４のいずれかを選択させるための命令であれば、フラグCompatibleModeは“０ｂ”とされる。そして“０ｂ”とされると、内蔵デバイス１１〜１４は、上記実施形態で説明した拡張されたＳＤＴＭコマンドを用いた手順により初期化を行う。つまり、ＡＣＭＤ８、ＡＣＭＤ２、ＡＣＭＤ３、ＡＣＭＤ５等が使用可能となる。以下、この動作モードを拡張モードと呼ぶ。
【０１５８】
上記フラグFirstCMD55、CompatibleModeは、内蔵デバイス１１〜１４自身が保持しても良い。この場合には、例えば内蔵デバイス１１〜１４のレジスタ等に、これらのフラグが保持される。しかし内蔵デバイス１１〜１４は、これらのフラグそのものを有している必要はない。つまり内蔵デバイス１１〜１４は、これらのフラグに応じて動作モードが変化するような構成であれば十分である。更に、こららのフラグをコントローラ３が保持しても良い。
【０１５９】
次に、内蔵デバイス１１〜１４の動作について、メモリデバイス１１の場合を例に挙げて、図１７を用いて説明する。図１７は、メモリデバイス１１の処理の流れを示すフローチャートである。内蔵デバイス１１〜１４は、コントローラ３からコマンドを受信して、その内容によってどの様な動作するかを決める。そのため、内蔵デバイス１１〜１４の動作は、コマンド受信とその処理のループから形成される。図１７に示すフローチャートは、初期化期間のみに有効なフローチャートであり、内蔵デバイス１１〜１４が、図１３におけるIdle State及びInitializationにおいて有効である。なお、下記に説明する処理は、各デバイス１１〜１４がそれぞれ有するコントローラ１１ｂ〜１４ｂによって実行され、下記機能はソフトウェアで実現されても良いし、ハードウェア、例えばwired logic等により実現されても良い。
【０１６０】
まずメモリデバイス１１は、フラグCompatibleMode、FirstCMD55として、それぞれ“１ｂ”をセットする（ステップＥ−１）。次にメモリデバイス１１は、コントローラ３からコマンドを受信すると（ステップＥ−２）、それがＣＭＤ５５であるか否かを判定する（ステップＥ−３）。
【０１６１】
ＣＭＤ５５でなかった場合（ステップＥ−３、ＮＯ）、メモリデバイス１１は、そのコマンドのレスポンスを送信すると共に、定義に従ってコマンドを実行する（ステップＥ−４）。
【０１６２】
ＣＭＤ５５であった場合（ステップＥ−３、ＹＥＳ）、メモリデバイス１１はこのＣＭＤ５５が最初に受信したＣＭＤ５５であるか否かを判定する（ステップＥ−５）。これは、フラグFirstCMD55が“１ｂ”であるか否かによって判定出来る。つまり、フラグFirstCMD55が“１ｂ”であれば、受信したＣＭＤ５５は最初のＣＭＤ５５であるし、“０ｂ”であれば当該ＣＭＤ５５は最初のＣＭＤ５５では無い。
【０１６３】
最初のＣＭＤ５５であった場合（ステップＥ−５、ＹＥＳ）、メモリデバイス１１はフラグFirstCMD55を“０ｂ”にセットする。この際、ＣＭＤ５５を受信した全ての内蔵デバイス１１〜１４が、フラグFirstCMD55を“０ｂ”にセットする。引き続きメモリデバイス１１は、ＣＭＤ５５内のＲＣＡ、すなわちＣＲＣＡをチェックする（ステップＥ−７）。
【０１６４】
ＣＲＣＡ＝“００００ｈ”でなかった場合（ステップＥ−７、ＮＯ）、つまりいずれかの内蔵デバイス１１〜１４が選択されていた場合には、メモリデバイス１１はフラグCompatibleModeを“０ｂ”とする。これにより、メモリデバイス１１は拡張モードで動作する。
【０１６５】
他方、ＣＲＣＡ＝“００００ｈ”であった場合（ステップＥ−７、ＹＥＳ）、メモリデバイス１１はフラグCompatibleModeを“１ｂ”のままとする。つまり、互換モードを維持する。なお、これ以降、ＣＭＤ５５を受信したとしても、ステップＥ−６〜Ｅ−８の処理は行われない（なぜなら、ステップＥ−５、ＮＯだから）。つまり、ステップＥ−８で拡張モードが設定されない限り、メモリデバイス１１は以降、常時互換モードとして動作する。また、ＣＭＤ５５を受信した全ての内蔵デバイス１１〜１４が、フラグCompatibleModeを“０ｂ”にセットする。
【０１６６】
ステップＥ−５においてフラグFirstCMD55＝“０ｂ”である場合、ステップＥ−７においてＣＲＣＡ＝“００００ｈ”である場合、またはステップＥ−８においてフラグCompatibleModeが“０ｂ”にセットされた場合、次に内蔵デバイス１１は、自身が拡張モードであるか否かを判定する（ステップＥ−９）。
【０１６７】
拡張モードである場合、すなわちフラグCompatibleMode＝“０ｂ”である場合（ステップＥ−９、ＮＯ）、メモリデバイス１１はＣＲＣＡと、自身がレジスタ保持するＲＣＡの値（これを以下ＤＲＣＡと呼ぶ）とを比較する（ステップＥ−１０）。
【０１６８】
両者が一致した場合、すなわちＣＲＣＡ＝ＤＲＣＡの場合（ステップＥ−１０、ＹＥＳ）、メモリデバイス１１は、当該ＣＭＤ５５が自分宛であることを認識し、コントローラ３に対してレスポンスを返す（ステップＥ−１１）。
【０１６９】
その後、コントローラ３から後続するコマンドを受信すると（ステップＥ−１２）、当該コマンドが初期化処理において実行可能なコマンドであるか否かを判定する（ステップＥ−１３）。実行可能なコマンドであれば（ステップＥ−１３、ＹＥＳ）、メモリデバイス１１はコントローラ３に対して、当該コマンドについてのレスポンスを返し（ステップＥ−１４）、コマンドを実行する（ステップＥ−１５）。そして、ステップＥ−２へ戻る。
【０１７０】
実行不能なコマンドであれば（ステップＥ−１３、ＮＯ）、メモリデバイス１１は何も行わず（レスポンスも返さず）、ステップＥ−２へ戻る。また、ステップＥ−１０においてＣＲＣＡとＤＲＣＡとが一致しない場合（ステップＥ−１０、ＮＯ）、メモリデバイス１１は当該ＣＭＤ５５が自分宛で無いことを認識する。そして、次に発行されるコマンドは受信するが（ステップＥ−１６）、そのコマンドを無視し、レスポンスも返さず、ステップＥ−２へ戻る。
【０１７１】
ステップＥ−９において互換モードである場合、すなわちフラグCompatibleMode＝“１ｂ”である場合（ステップＥ−９、ＹＥＳ）、メモリデバイス１１はコントローラ３に対して、ＣＭＤ５５のレスポンスを返す（ステップＥ−１７）。そして後続するコマンドを受信する（ステップＥ−１８）。ステップＥ−１８で受信したコマンドがＣＭＤ４１であれば（ステップＥ−１９、ＮＯ）、メモリデバイス１１はコントローラ３に対して、ＡＣＭＤ４１に関するレスポンスを返し（ステップＥ−２０）、ＡＣＭＤ４１を実行する（ステップＥ−２１）。
【０１７２】
ステップＥ−１９においてＣＭＤ４１でなければ（ステップＥ−１９、ＮＯ）、メモリデバイス１１はレスポンスを返さず、また処理も行わずにステップＥ−２に戻る。なぜなら、ＣＭＤ５５を含むコマンドのうち（ステップＥ−３、ＹＥＳ）、互換モードにおいて初期化処理時に認識可能なコマンドはＣＭＤ４１だけだからである。
【０１７３】
以下、ステップＥ−２に戻ると、次のコマンドを受信して、初期化が完了するまで同様の処理を繰り返す。なお、図１７のフローチャートは、メモリデバイス１２でも同様である。また内蔵デバイス１３、１４でも同様であり、内蔵デバイス１３、１４の場合にはステップＳ１９で判定されるコマンドがＣＭＤ５（＝ＡＣＭＤ５）である点が異なるのみである。
【０１７４】
なお、ＱＢＲ＝“１ｂ”とされたＣＭＤ８、またはＱＢＲ＝“１ｂ”、ＣＲＣＡ＝“０００１ｈ”とされたＡＣＭＤ８をメモリデバイス１１が受信した場合には、メモリデバイス１１はステップＥ−１５においてクイックブートを実行する。つまり、図１７に示すシーケンスは一時中断され、ブートコード領域からのブートコード読み出しが実行される。ブートコードの読み出しが完了すれば、ステップＥ−２に戻る。
【０１７５】
ＳＤＴＭインターフェースにおいては、上記のようにして第１の実施形態が適用出来る。
【０１７６】
（第６の実施形態）  
次に、この発明の第６の実施形態について説明する。本実施形態は、上記第２の実施形態をＳＤＴＭインターフェースに適用した際の、より具体的な動作に関するものである。
【０１７７】
本実施形態に係るコントローラ３による内蔵デバイス１１〜１４の初期化動作について、図１８を用いて説明する。図１８は、コントローラ３の処理の流れを示すフローチャートである。
【０１７８】
図示するようにコントローラ３は、内蔵デバイス１１〜１４に電源を投入する（ステップＢ−０）。その後コントローラ３は、ステップＢ−１〜Ｂ−１７の処理を行う。ステップＢ−１〜Ｂ−１７の処理は、第２の実施形態で説明した図９におけるステップＳ２〜Ｓ５、Ｓ３１〜Ｓ３３、Ｓ１２、Ｓ１５、Ｓ２２、Ｓ２３、Ｓ２５〜Ｓ２８にそれぞれ対応している。
【０１７９】
まずコントローラ３は、ステップＢ−１〜Ｂ−４の処理を行う。ステップＢ−１〜Ｂ−４は、第５の実施形態で説明したステップＡ−１〜Ａ−４と同様である。次にコントローラ３は、内蔵デバイス１１〜１４につき、一括して初期化命令を発行する。
【０１８０】
すなわちコントローラ３は、まずＡＣＭＤ８（ＱＢＲ＝“０ｂ”、ＲＣＡ＝“ＦＦＦＦｈ”）を発行する（ステップＢ−５）。すなわち、拡張電圧チェックコマンドを、ブロードキャストで送信する。ブロードキャストで送信されるため、内蔵デバイス１１〜１４はレスポンスを返さない。引き続きコントローラ３は、ＡＣＭＤ５（ＲＣＡ＝“ＦＦＦＦｈ”）を発行する（ステップＢ−６）。これにより内蔵デバイス１３、１４は初期化を開始する。引き続きコントローラ３は、ＡＣＭＤ４１（ＲＣＡ＝“ＦＦＦＦｈ”）を発行する（ステップＢ−７）。これによりメモリデバイス１１、１２は初期化を開始する。
【０１８１】
その後は、コントローラ３は内蔵デバイス１１〜１４の初期化の完了を確認するための処理を行なう。すなわち、ステップＢ−８〜Ｂ１５の処理を行う。これらの処理は、第５の実施形態で説明したステップＡ−６、Ａ−７、Ａ−９、Ａ−１０、Ａ−１２、Ａ−１３、Ａ−１５、Ａ−１６の処理と同様である。従って説明は省略する。
【０１８２】
そして、最後にＡＣＭＤ２（ＲＣＡ＝“ＦＦＦＦｈ”）及びＡＣＭＤ３（ＲＣＡ＝“ＦＦＦＦｈ”）を発行して（ステップＢ−１６、Ｂ−１７）、初期化を完了する。
【０１８３】
ＳＤＴＭインターフェースにおいては、上記のようにして第２の実施形態が適用出来る。
【０１８４】
（第７の実施形態）
次に、この発明の第７の実施形態について説明する。本実施形態は、上記第３の実施形態をＳＤＴＭインターフェースに適用した際の、より具体的な動作に関するものである。
【０１８５】
本実施形態に係るコントローラ３による内蔵デバイス１１〜１４の初期化動作について、図１９を用いて説明する。図１９は、コントローラ３の処理の流れを示すフローチャートである。
【０１８６】
図示するように、コントローラ３は、内蔵デバイス１１〜１４に電源を投入する（ステップＣ−０）。その後、コントローラ３はステップＣ−１〜Ｃ−１３の処理を行う。ステップＣ−１〜Ｂ−３の処理は、第３の実施形態で説明した図１１におけるステップＳ４１、Ｓ２、Ｓ４２にそれぞれ対応する。またステップＣ−４の処理は、図１１におけるブート読み出しからＩＤ、アドレス要求までに相当するものであって、上記したステップＡ−２〜Ａ−１８、またはＢ−２〜Ｂ−１７の処理に相当する。ステップＣ−５、Ｃ−６は、図１１におけるステップＳ４３、Ｓ４４に相当する。ステップＣ−７〜Ｃ−１０は、図１１におけるステップＳ４５、Ｓ４６に相当する。そしてステップＣ−１１〜Ｃ１３は、図１１におけるステップＳ５１〜Ｓ５３に相当する。
【０１８７】
上記ステップＣ−６においては、コントローラ３は、ＣＭＤ８（ＱＢＲ＝“０ｂ”）を発行する（Ｃ−６）。これにより、カードデバイス５の電圧チェックが実行される。引き続きコントローラ３は、ＣＭＤ５を発行して（ステップＣ−７）、カードデバイス５の初期化を行う。その後、コントローラ３はＡＣＭＤ９、ＣＭＤ２、ＣＭＤ３を順次発行することで、初期化を完了させる。
【０１８８】
（第８の実施形態）
次に、この発明の第８の実施形態について説明する。本実施形態は、上記第４の実施形態をＳＤＴＭインターフェースに適用した際の、より具体的な動作に関するものである。
【０１８９】
本実施形態に係るコントローラ３によるブートコードの読み出し動作について、図２０を用いて説明する。図２０は、コントローラ３の処理の流れを示すフローチャートである。
【０１９０】
図示するように、コントローラ３は、内蔵デバイス１１〜１４に電源を投入する（ステップＤ−０）。その後、コントローラ３はステップＤ−１〜Ｄ−１６の処理を行う。ステップＤ−１〜Ｄ−１６の処理は、第４の実施形態で説明した図１２におけるステップＳ２〜Ｓ、Ｓ６１〜Ｓ６６、Ｓ７１〜Ｓ７６、Ｓ８１、Ｓ８２、Ｓ５にそれぞれ対応する。なお、ステップＤ−３においてレスポンスを得られない場合には、ステップＤ−１６に進んでも良い。また、ステップＤ−２においてはＣＭＤ８の代わりにＡＣＭＤ８を使用することが出来る。
【０１９１】
（第９の実施形態）
次に、この発明の第９の実施形態について説明する。本実施形態は、上記第１乃至第８の実施形態におけるクイックブートの詳細に関するものであり、クイックブートを行う際にオペレーティングシステム（ＯＳ）の読み出しを行うものである。以下では、第１乃至第８の実施形態と異なる点についてのみ説明する。
【０１９２】
＜ホスト装置１の構成＞  
図２１は、本実施形態に係るホスト装置１のブロック図であり、その主要部のみを示している。本実施形態に係る構成は、第１の実施形態で説明した図１において、更にＲＯＭ８及びＲＡＭ９が設けられた構成を有している。また、メモリデバイス１１におけるフラッシュメモリ１１ｃの構成が異なっている。それ以外の構成及び動作は、図２１では図示を省略している部分もあるが、全て同一である。
【０１９３】
ＲＯＭ８及びＲＡＭ９は、例えば図１におけるシステムメモリ７に含まれるものであっても良い。ＲＯＭ８は例えば半導体メモリであって、プライマリローダー（Primary Loader）２０を保持する。Primary Loader２０は、ＣＰＵ６で実行されるプログラムであり、上記第１乃至第８の実施形態における内蔵デバイス１１〜１４の初期化及びクイックブートを行う際に実行される。
【０１９４】
ＲＡＭ９は、例えばＤＲＡＭ等の半導体メモリであって、ＣＰＵ６の作業領域として使用される。例えばＣＰＵ６は、Primary Loader２０をＲＡＭ９に読み出し、ＲＡＭ９において必要なテーブル等を作成する。また、後述するオペレーティングシステム（ＯＳ：Operating system）も、ＲＡＭ９に読み出されてＣＰＵ６により実行される。
【０１９５】
メモリデバイス１１は、ＮＡＮＤ型フラッシュメモリ１１ｃを備えている。ＮＡＮＤ型フラッシュメモリ１１ｃは、保護領域（Security area）３０、システム領域（System area）３１、ユーザ領域（User area）３２、システムパーティション（System partition）３３、第１ブートパーティション（First boot partition）３４、及び第２ブートパーティション（Second boot partition）３５を備えている。保護領域３０、システム領域３１、及びユーザ領域３２はそれぞれ、第１の実施形態で説明した図２におけるシステム領域１１ｃ４、保護領域１１ｃ３、及びユーザ領域１１ｃ１に相当する。
【０１９６】
システムパーティション３３は、任意のファイルシステム（例えばＦＡＴファイルシステム）により管理され、ＯＳを保持する。また第１、第２ブートパーティション３４、３５はファイルシステムにより管理される領域では無く、それぞれセカンダリローダー（Secondary Loader）３６を保持する。Secondary Loader３６は、ＣＰＵ６で実行されるプログラムであり、システムパーティション３３からＯＳを読み出す際に実行される。これらのシステムパーティション３３、第１ブートパーティション３４、及び第２ブートパーティション３５はそれぞれ、ユーザ領域３２とは物理的に区切られた独立したパーティションである。従ってＣＰＵ６は、これらのパーティション３３〜３５を、ユーザ領域３２とは物理的に異なる領域として認識する。また、第１、第２ブートパーティション３４、３５は、第１の実施形態で説明した図２におけるブートコード領域１１ｃ２に相当する。
【０１９７】
ＮＡＮＤ型フラッシュメモリ１１ｃにおいて、上記ユーザ領域３２、システムパーティション３３、及び第１、第２ブートパーティション３４、３５は、ＣＰＵ６によって任意にアクセス可能な領域である。他方、保護領域３０及びシステム領域３１は、ＣＰＵ６が任意にアクセス出来る領域では無く、保護領域３０は所定の条件を満たした場合にのみアクセス可能であるが、システム領域３１はメモリデバイス１１のコントローラ１１ａのみがアクセス可能である。
【０１９８】
メモリデバイス１２は、メモリデバイス１１において、システムパーティション３３及び第１、第２ブートパーティション３４、３５を排した構成を有している。デバイス１３、１４は、第１の実施形態で説明した通りである。
【０１９９】
＜内蔵デバイス１１〜１４の初期化動作の大まかな流れについて＞  
次に、ＣＰＵ６及びコントローラ３による内蔵デバイス１１〜１４の初期化動作の大まかな流れについて、図２２を用いて説明する。図２２は、ＣＰＵ６及びコントローラ３の動作を示すタイミングチャートである。
【０２００】
図示するように、まずＣＰＵ６がＲＯＭ８からPrimary Loader２０をＲＡＭ９に読み出し、Primary Loader２０を実行する（ステップＳ９０）。これによりＣＰＵ６は、Primary Loader２０に従って、各デバイス１１〜１４の初期化と、ＯＳの立ち上げ動作を開始する（ステップＳ９１）。
【０２０１】
初期化及びＯＳ立ち上げにあたってＣＰＵ６は、コントローラ３に対してSecondary Loader３６の読み出しを命令する。するとコントローラ３は、ＣＰＵ６の命令に従って、メモリデバイス１１の第１、第２ブートパーティション３３、３５のいずれかからSecondary Loader３６を読み出し、ＲＡＭ９に格納する。そしてＣＰＵ６は、ＲＡＭ９に格納されたSecondary Loader３６を実行する（ステップＳ９２）。
【０２０２】
次にＣＰＵ６は、Secondary Loader３６に従って、コントローラ３に対してＯＳの読み出しを命令する。するとコントローラ３は、ＣＰＵ６の命令に従って、メモリデバイス１１のシステムパーティション３３にアクセスし、ＯＳ３７を読み出し、ＲＡＭ９に格納する。そしてＣＰＵ６は、ＲＡＭ９に格納されたＯＳを実行する（ステップＳ９３）。ＯＳが実行されたことで、Secondary Loader３６に基づく処理は完了する。
【０２０３】
引き続きＣＰＵ６は、Primary Loader３６に従って、コントローラ３に対してデバイス１１〜１４の初期化を命令する。するとコントローラ３は、ＣＰＵ６の命令に従って、デバイス１１〜１４に対して電圧チェック等を行い、初期化のための処理を行う（ステップＳ９４）。
【０２０４】
デバイス１１〜１４の各々は、初期化によりStandby Stateに遷移し、ＣＰＵ６はPrimary Loader２０に基づく処理を完了する（ステップＳ９５）。
【０２０５】
＜内蔵デバイス１１〜１４状態遷移について＞  
次に、メモリデバイス１１の状態遷移について、図２３を用いて説明する。図２３は、メモリデバイス１１の状態遷移図である。図２３は、基本的には図１５と同様であるので、以下では図１５と異なる点についてのみ説明する。
【０２０６】
メモリデバイス１１は、コントローラ３からクイックブートを命令されることにより、Idle StateからBoot and System Partition Read Stateに遷移する。Boot and System Partition Read Stateは、図１５においてクイックブート命令（ＱＢＲ＝“１ｂ”とされたＡＣＭＤ８またはＣＭＤ８）によって遷移したBoot Read Stateに相当する。Boot and System Partition Read Stateでは、コントローラ３は第１、第２ブートパーティション３４、３５及びシステムパーティション３３にアクセス出来る。
【０２０７】
Idle StateからBoot and System Partition Read Stateへ遷移する条件は、ＱＢＲ＝“１ｂ”とされたＡＣＭＤ８またはＣＭＤ８がコントローラ３によって発行され、これに対してＱＢＡ（Quick Boot Accepted）＝“１ｂ”とされたレスポンスをメモリデバイス１１が返した場合である。ＡＣＭＤ８またはＣＭＤ８に対するレスポンスは、図１４に示したＣＭＤ８の構成において、ＱＢＲをＱＢＡに置き換えた構成を有している。ＱＢＡは、クイックブート命令を受け入れたか否かを示す情報であり、ＱＢＡ＝“１ｂ”であればクイックブート命令が受け入れられ、“０ｂ”であれば受け入れられなかったことを示す。
【０２０８】
Boot and System Partition Read Stateでは、コントローラ３がＣＭＤ１２、ＣＭＤ１７〜ＣＭＤ１９を用いることで、ＯＳ３７及びSecondary Loader３６の読み出しを行う。ＣＭＤ１９は、第１、第２ブートパーティション３３、３４及びシステムパーティション３３を選択するためのコマンドである。勿論、これらのＣＭＤ１２、ＣＭＤ１７〜ＣＭＤ１９は、ＣＭＤ５５が付加された拡張コマンドであっても良い。
【０２０９】
Boot and System Partition Read Stateにあるメモリデバイス１１は、コントローラ３からＡＣＭＤ４１またはＣＭＤ０を発行されることで、Idle Stateに遷移する。この際、ＣＭＤ０によってIdle Stateに遷移した場合には、再度の電圧チェック（ＡＣＭＤ８またはＣＭＤ８）が必要となる。
【０２１０】
Idle Stateにあるメモリデバイス１１は、コントローラ３がＡＣＭＤ４１を発行することにより、Ready Stateに遷移する。Ready Stateは、デバイス固有の固体番号を送信可能な状態である。すなわちＡＣＭＤ２またはＣＭＤ２を受け付け可能な状態である。
【０２１１】
Ready Stateにあるメモリデバイス１１は、コントローラ３がＡＣＭＤ２またはＣＭＤ２を発行することで、Ident Stateに遷移する。Ident Stateは、自身のアドレスを送信可能な状態である。すなわち、ＡＣＭＤ３またはＣＭＤ３を受け付け可能な状態である。
【０２１２】
Ident Stateにあるメモリデバイス１１は、コントローラ３がＡＣＭＤ３またはＣＭＤ３を発行することで、Standby Stateに遷移する。Ident StateからStandby Stateに遷移することで、メモリデバイス１１の初期化が完了する。Standby Stateは、図１５におけるStandby Stateと同様である。
【０２１３】
Standby Stateにあるメモリデバイス１１は、コントローラ３からＡＣＭＤ７またはＣＭＤ７を発行されることで、Transfer Stateに遷移する。勿論、この際に発行されるＣＭＤ７の引数には、メモリデバイス１１の保持するＲＣＡが含まれていなければならない。そしてTransfer Stateにおいては、コントローラ３はＡＣＭＤ１９またはＣＭＤ１９を使用することで、システムパーティション３３及び第１、第２ブートパーティション３４、３５にアクセス出来る。しかし、Transfer Stateにおいてシステムパーティション３３及び第１、第２ブートパーティション３４、３５にアクセスしても、メモリデバイス１１がBoot and System Partition Read Stateに遷移するわけでは無い。Boot and System Partition Read Stateはあくまで、クイックブート命令によって遷移出来る状態である。
【０２１４】
＜メモリデバイス１１の初期化動作について＞  
次に、コントローラ３による内蔵デバイス１１〜１４の初期化動作について、特にクイックブートに着目して、図２４を用いて説明する。図２４は、コントローラ３の処理の流れを示すフローチャートであり、Primary Loader２０に従った処理を示している。
【０２１５】
まず、コントローラ３はＲＯＭ８からPrimary Loader２０を読み出し実行する。Primary Loader２０に従ってコントローラ３は、図１６で説明したステップＡ−０〜Ａ−２を実行する。通常、デバイス１１〜１４は、デフォルトでＳＤＴＭモードにあるので、ステップＡ−１のＣＭＤ０は省略することが出来る。またステップＡ−２では、ＣＭＤ８をサポートしているデバイスが複数あればＡＣＭＤ８を発行し、１つだけであればＡＣＭＤ８またはＣＭＤ８を発行する。この際、クイックブートを必要とする場合には、コントローラ３はＡＣＭＤ８またはＣＭＤ８の引数ＱＢＲに“１ｂ”を設定し、必要としない場合にはＱＢＲ＝“０ｂ”を設定する。
【０２１６】
デバイス１１〜１４は、ＡＣＭＤ８またはＣＭＤ８を受け取ると、ＱＢＡを含むレスポンスを返す。クイックブートが要求されていない場合、またはデバイスがクイックブートをサポートしていない場合は、レスポンスにおけるＱＢＡは“０ｂ”とされる。またＣＭＤ８自体をサポートしていないデバイスは、レスポンスを返さない。従ってコントローラ３は、ステップＡ−２で発行したクイックブート命令に対して、ＱＢＡ＝“０ｂ”とされたレスポンスを受信した場合、またはレスポンスを受信できなかった場合（ステップＡ−１９、QBA=0 or NO Response）、デバイス１１〜１４はクイックブートをサポートしていないと判断する（ステップＡ−２０）。そして、図１６におけるステップＡ−５、または図１８におけるステップＢ−５に進み、通常の初期化処理を行う。
【０２１７】
他方、ＱＢＡ＝“１ｂ”とされたレスポンスを受信した場合（ステップＡ−１９、QBA=1）、コントローラ３はクイックブート処理を開始する。なお、クイックブートをサポートするデバイスは、ＱＢＲ＝“１ｂ”とされたＡＣＭＤ８またはＣＭＤ８に応答して、ＡＣＭＤ８またはＣＭＤ８のレスポンスの送信終了から８クロック以内に、４ビットバスモードに切り替える（ステップＡ−２１）。ＳＤＴＭインターフェースでは、２つのバスモードが使用可能である。一方は１ビットバスモードであり、この場合のバス幅は１ビットであり、最大で４００ｋＨｚの周波数での動作（これをNormal Speed Modeと呼ぶ）が可能である。もう一方は４ビットバスモードであり、この場合のバス幅は４ビットであり、最大で５０ＭＨｚでの動作（これをHigh Speed Modeと呼ぶ）が可能である。１ビットバスモードではNormal Speed Modeでの動作のみが可能であるが、４ビットバスモードではNormal Speed ModeとHigh Speed Modeとの両方の動作が可能である。
【０２１８】
デバイス１１〜１４が４ビットバスモードに切り替わるのと同様に、コントローラ３も４ビットバスモードに切り替わる（ステップＡ−２１）。この際バスの動作周波数もNormal Speed ModeからHigh Speed Modeに切り替わっても良いし、またはコントローラ３とデバイス１１〜１４との間の取り決めによって、High Speed Modeに切り替わるか否かが決定されても良い。
【０２１９】
次にコントローラ３は、ＡＣＭＤ１８またはＣＭＤ１８を発行して、第１ブートパーティション３４にアクセスして、Secondary Loader３６を読み出す（ステップＡ−２２）。ＣＭＤ１８は、データの読み出しコマンドである。なお、第１、第２ブートパーティション３４、３５は、ＣＭＤ１８が発行されてから１００ｍｓ以内にデータ読み出し可能な状態となる。コントローラ３は、第１ブートパーティション３４からSecondary Loader３６を読み出せたか否かを、Error Flagを参照することにより判定する。Error Flagは、コントローラ３がデバイス１１〜１４について各種のチェック（例えば電圧チェック）を行った際に、エラーが発生したか否かを記憶しておくためのフラグである。
【０２２０】
ステップＡ−２２の詳細について、図２５を用いて説明する。図２５はステップＡ−２２を実行する際の処理を示すフローチャートである。
【０２２１】
まず、コントローラ３においてError Flagは“０ｂ”とされている（ステップＦ−０）。そしてコントローラ３はＣＭＤ１８（またはＡＣＭＤ１８、ＣＲＣＡはSecondary Loader３６を保持するデバイスのＲＣＡ、本例ではＲＣＡ＝“０００１ｈ”）を発行する（ステップＦ−１）。ＣＭＤ１８は、マルチプルブロックリードコマンド（multiple block read command）である。すなわち、複数のブロックについて読み出しを行うコマンドである。
【０２２２】
ＣＭＤ１８に対するデバイス１１からのレスポンスにエラーが無いことを確認すると（ステップＦ−２、ＮＯ）、コントローラ３は、ＮＡＮＤ型フラッシュメモリ１１ｃにおける最初のブロックを読み出す（ステップＦ−３）。最初のブロックの先頭アドレスには、読み出しを制御するためのヘッダー情報が含まれている。そこでコントローラ３は、ヘッダー情報を参照することにより、Secondary Loader３６が存在するかどうかを判定する。Secondary Loader３６が存在する場合（ステップＦ−４、Data Exists）、ヘッダーにはSecondary Loader３６の大きさ（ブロック数）が書かれているので、それを取得する（ステップＦ−５）。これにより、リードコマンドＣＭＤ１８の終了タイミングが計算できる。その後コントローラ３は、最初のブロックをシステムメモリ、例えばＲＡＭ９へ転送する（ステップＦ−６）。
【０２２３】
第１、第２ブートパーティション３４、３５はファイルシステムで管理されない領域であり、Secondary Loader３６はＮＡＮＤ型フラッシュメモリ１１ｃにアドレス順に順次書き込まれている。そのため、一回のマルチプルブロックリードコマンド（ＣＭＤ１８）で、Secondary Loader３６を読み出すことができる。ＣＭＤ１８は、アドレスを順次増加させながら順番にブロックを読み出すコマンドである。よってコントローラ３は、前記Secondary Loader３６の大きさに相当するブロック数だけ、第１ブートパーティション３４にアクセスしてデータを読み出し、ＲＡＭ９へ転送していく（ステップＦ−７）。
【０２２４】
データの転送途中でリードエラーが発生した場合は、デバイス１１はデータを出力しない状態を保持する。そこでコントローラ３は、リードタイムアウトを設定しておくことで、リードエラーを検出する。すなわち、一定の期間、データが出力されなかった場合には（ステップＦ−８、ＹＥＳ）、コントローラ３はError Flagを“１ｂ”にセットする（ステップＦ−１０）。
【０２２５】
なお、ステップＦ−２においてＣＭＤ１８に対するレスポンスがエラーだった場合（ステップＦ−２、ＹＥＳ）、及びステップＦ−４においてSecondary Loader３６が存在しなかった場合（ステップＦ−４、Data Not Exists）にも、コントローラ３は、Error Flagを“１ｂ”にセットする。
【０２２６】
データの転送途中でタイムアウトせずに（ステップＦ−８、ＮＯ）、Secondary Loader３６を最後まで読み出させた場合（ステップＦ−９、ＹＥＳ）、コントローラ３はＣＭＤ１２を発行する（ステップＦ−１１）。ＣＭＤ１２を発行することで、コントローラ３は読み出し動作を終了する。また、ステップＦ−１０でError Flag＝“１ｂ”とされた場合も、コントローラ３はＣＭＤ１２を発行して（ステップＦ−１１）、Secondary Loader３６の読み出しを中断する。
【０２２７】
図２４に戻って説明を続ける。ステップＡ−２２において以上のようにして、Secondary Loader３６の読み出しが行われた後、コントローラ３はError Flagをチェックする。Error Flag＝“０ｂ”であった場合、すなわちSecondary Loader３６の読み出しに成功した場合（ステップＡ−２３）、コントローラ３は読み出したSecondary Loader３６を実行する（ステップＡ−２９）。本ステップについては後述する。
【０２２８】
Error Flag=“１ｂ”、すなわち読み出しに失敗した場合（ステップＡ−２３、ＹＥＳ）、コントローラ３はＣＭＤ１９（またはＡＣＭＤ１９、ＣＲＣＡはSecondary Loader３６を保持するデバイスのＲＣＡ、本例ではＲＣＡ＝“０００１ｈ”）を発行する（ステップＡ−２４）。ＣＭＤ１９はパーティションを選択するためのコマンドであり、これにより第２ブートパーティション３５を選択する。
【０２２９】
ＣＭＤ１９を実行する際にエラーが無ければ（ステップＡ−２５、ＮＯ）、コントローラ３は第２ブートパーティション３５からのSecondary Loader３６の読み出しを試みる（ステップＡ−２７）。ステップＡ−２７の処理は、前述した図２４の通りである。
【０２３０】
他方、ＣＭＤ１９を実行する際にエラーが発生すれば（ステップＡ−２５、ＹＥＳ）、コントローラ３は第２ブートパーティション３５が存在しないと判断し（ステップＡ−２６）、図１６におけるステップＡ−５、または図１８におけるステップＢ−５に進み、通常の初期化処理を行う。
【０２３１】
ステップＡ−２７の結果、第２ブートパーティション３５からSecondary Loader３６を読み出せた場合（ステップＡ−２８、ＮＯ）、ステップＡ−２９に進む。他方、Secondary Loader３６の読み出しに失敗した場合（ステップＡ−２８、ＹＥＳ）には、図１６におけるステップＡ−５、または図１８におけるステップＢ−５に進み、通常の初期化処理を行う。
【０２３２】
次にステップＡ−２９の詳細について、図２６を用いて説明する。図２６は、Secondary Loader３６に従ったコントローラ３の処理の流れを示すフローチャートである。
【０２３３】
図示するように、Secondary Loader３６の実行を開始したコントローラ３は、まずＣＭＤ１９（またはＡＣＭＤ１９）を発行して、システムパーティション３３を選択する（ステップＧ−０）。前述の通り、システムパーティション３３はＯＳ３７がインストールされている領域である。
【０２３４】
システムパーティション３３の選択に失敗した場合（ステップＧ−１、ＹＥＳ）、コントローラ３はＯＳ３７が存在しないと判断し（ステップＧ−２）、図１６におけるステップＡ−５、または図１８におけるステップＢ−５に進み、通常の初期化処理を行う。
【０２３５】
他方、システムパーティション３３の選択に成功すると（ステップＧ−１、ＮＯ）、コントローラ３はシステムパーティション３３からＯＳ３７の読み出しを行う（ステップＧ−３）。システムバーティション３３はファイルシステムによって管理される領域であるため、ファイルシステムの管理に従って、複数のリードコマンド（ＣＭＤ１８またはＡＣＭＤ１８）を使って、複数のファイルから構成されるＯＳ３７をロードする。ロードされたＯＳ３７は、例えばＲＡＭ９に格納される。
【０２３６】
ステップＧ−３において、エラーが発生することなくＯＳ３７のロードが完了すると（ステップＧ−４、ＮＯ）、ＣＰＵ６はＯＳ３７を実行する（ステップＧ−５）。ＯＳ３７が起動されると、ＣＰＵ６はＯＳ３７に従って初期化コマンド（ＡＣＭＤ４１）の発行をコントローラ３に命令し、メモリデバイス１１の初期化が行われる。その結果、メモリデバイス１１の全てのパーティションへのアクセスが可能となる。
【０２３７】
その後、他の図１６または図１８に示した方法にて、他のデバイス１２〜１４の初期化が行われる。
【０２３８】
以上のように、本実施形態に係る構成であると、他のデバイスの初期化に先立ち、クイックブートを用いてＯＳ３７を読み出すことが出来る。従って、ＯＳの起動を高速化出来る。ＳＤＴＭインターフェースでは、各デバイス１１〜１４の初期化には、比較的長い時間が必要である。従って、全デバイス１１〜１４の初期化を待ってからＯＳを起動するのでは、システムの立ち上げに長時間を要することになる。しかし、本実施形態であると、ＯＳの起動にあたって、全デバイス１１〜１４の初期化を待つ必要が無い。よって、ホスト装置１に電源を投入後、即座にＯＳを起動出来る。
【０２３９】
また本実施形態に係る構成であると、クイックブート命令（ＡＣＭＤ８またはＣＭＤ８）に応答して、バスが４ビットモードに移行し、またHigh Speed Modeに移行することも可能である。更に、バスのモード移行のためだけのコマンド入力（従来のＣＭＤ６、ＡＣＭＤ６）も不要となる。従って、Secondary Loader３６及びＯＳ３７の読み出し動作を高速化出来る。このことも、ＯＳの高速な起動に寄与する。
【０２４０】
また、メモリデバイス１１は複数（本実施形態では２つ）のブートパーティション３４、３５を備えている。従って、何らかの原因により第１ブートパーティション３４からSecondary Loader３６を読み出せなかったとしても、第２ブートパーティション３５からSecondary Loader３６を読み出せる。従って、システムの信頼性を向上出来る。ブートパーティションの数は３つ以上設けられても良い。
【０２４１】
更に本実施形態では、ＣＭＤ１９を使用することで、初期化前のデバイスにおけるパーティションを選択出来る。そしてこの際、ブートパーティション３４、３５及びシステムパーティション３３以外の選択は禁止される。換言すれば、ＣＭＤ１９はブートパーティション３４、３５及びシステムパーティション３３のみを選択可能なコマンドとされる。従って、初期化前にユーザ領域３２へアクセスされることを防止出来い、ユーザデータを保護出来る。
【０２４２】
なお、上記第１乃至第９の実施形態において、各メモリデバイス１１〜１４がレジスタ１１ｂ〜１４ｂに保持するＲＣＡは、製造時に予め書き込まれていても良いし、または外部とアクセス可能な接続ピンにより書き換え可能とされても良い。また上記ホスト装置１は、例えば携帯電話やパーソナルコンピュータに適用出来る。
【０２４３】
その他、本発明の思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の範囲に属するものと了解される。
【図面の簡単な説明】
【０２４４】
【図１】第１実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示す図。
【図２】内蔵デバイス内の構成をより詳細に示す図。
【図３】第１実施形態に係る内蔵メモリデバイスの状態遷移図。
【図４】ブート読み出し状態移行指示コマンドを概略的に示す図。
【図５】拡張電圧チェックコマンドを概略的に示す図。
【図６】第１実施形態に係るホスト装置の動作を示すフローチャート。
【図７】拡張電圧チェックコマンドをさらに拡張する例を概略的に示す図。
【図８】拡張電圧チェックコマンドをさらに拡張する他の例を概略的に示す図。
【図９】第２実施形態に係るホスト装置の動作を示すフローチャート。
【図１０】第３実施形態に係るデバイスと、このデバイスを内蔵するホスト装置の構成を概略的に示す図。
【図１１】第３実施形態に係るホスト装置の動作を示すフローチャート。
【図１２】第４実施形態に係るホスト装置による、内蔵デバイス内のブートコードの読み出し動作のフローチャート。
【図１３】本発明の実施形態に係るホスト装置を概略的に示すブロック図。
【図１４】第５の実施形態に係るホスト装置が使用するＡＣＭＤ８の概念図。
【図１５】第５の実施形態に係るデバイスの状態遷移図。
【図１６】第５実施形態に係るホスト装置の動作を示すフローチャート。
【図１７】第５実施形態に係るデバイスの動作を示すフローチャート。
【図１８】第６実施形態に係るホスト装置の動作を示すフローチャート。
【図１９】第７実施形態に係るホスト装置の動作を示すフローチャート。
【図２０】第８実施形態に係るホスト装置の動作を示すフローチャート。
【図２１】第９実施形態に係るホスト装置のブロック図。
【図２２】第９実施形態に係るホスト装置の動作を示すフローチャート。
【図２３】第９の実施形態に係るデバイスの状態遷移図。
【図２４】第９実施形態に係るホスト装置の動作を示すフローチャート。
【図２５】第９実施形態に係るホスト装置の動作を示すフローチャート。
【図２６】第９実施形態に係るホスト装置の動作を示すフローチャート。
【符号の説明】
【０２４５】
１…ホスト装置、２、３…コントローラ、４…スロット、５…カードデバイス、６…ＣＰＵ、７…システムメモリ、１１乃至１４…内蔵デバイス、１１ａ、１２ａ、１３ａ、１４ａ…コントローラ、１１ｂ、１２ｂ、１３ｂ、１４ｂ…アドレスレジスタ、１１ｃ、１２ｃ、１３ｃ、１４ｃ…デバイス部、８…ＲＯＭ、９…ＲＡＭ、２０…Primary Loader、３０…保護領域、３１…システム領域、３２…ユーザ領域、３３…システムパーティション、３４、３５…ブートパーティション、３６…Secondary Loader、３７…ＯＳ
【図１】
2009026296.tif 000003
【図２】
2009026296.tif 000004
【図３】
2009026296.tif 000005
【図４】
2009026296.tif 000006
【図５】
2009026296.tif 000007
【図６】
2009026296.tif 000008
【図７】
2009026296.tif 000009
【図８】
2009026296.tif 000010
【図９】
2009026296.tif 000011
【図１０】
2009026296.tif 000012
【図１１】
2009026296.tif 000013
【図１２】
2009026296.tif 000014
【図１３】
2009026296.tif 000015
【図１４】
2009026296.tif 000016
【図１５】
2009026296.tif 000017
【図１６】
2009026296.tif 000018
【図１７】
2009026296.tif 000019
【図１８】
2009026296.tif 000020
【図１９】
2009026296.tif 000021
【図２０】
2009026296.tif 000022
【図２１】
2009026296.tif 000023
【図２２】
2009026296.tif 000024
【図２３】
2009026296.tif 000025
【図２４】
2009026296.tif 000026
【図２５】
2009026296.tif 000027
【図２６】
2009026296.tif 000028