(57)【要約】【課題】処理速度を向上させること等が可能なホストコントローラ等を提供する。【解決手段】カードスロット６に装着されたカードが実行可能な所望のコマンドをカードに発行する旨の指示情報及びカードの様式と所望のコマンドとの組み合わせに関連付けられたチェックパターンを特定するためのルックアップ値を受け取るレジスタ制御部２２と、カードに所望のコマンドを発行し、カードから所望のコマンドに対する応答を受け取るＳＤＭＭＣ制御部２３と、テーブル記憶部３１に記憶されたレスポンスチェックビットテーブルの中からルックアップ値によって特定されるチェックパターンを取得し、当該チェックパターン及びカードのレスポンスのカードステータスに基づいて、応答におけるエラーの有無を判定するカードステータスエラー判定部３２とを含む。【選択図】図３
2008293077.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部に装着されたデバイスと、の間の媒介を行うホストコントローラであって、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する第１の回路と、
前記情報処理装置から前記デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドを前記デバイス装着部に装着されたデバイスに発行する旨の指示情報及び前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報を特定するためのエラー判定情報特定情報を受け取る第２の回路と、
前記情報処理装置からの前記所望のコマンドを前記デバイス装着部に装着されたデバイスに発行する旨の指示情報に基づいて、前記デバイス装着部に装着されたデバイスに前記所望のコマンドを発行し、前記デバイス装着部に装着されたデバイスから前記所望のコマンドに対する応答を受け取る第３の回路と、
前記エラー判定情報テーブル内の前記複数のエラー判定情報の中から前記エラー判定情報特定情報によって特定される前記エラー判定情報を取得し、当該エラー判定情報及び前記デバイス装着部に装着されたデバイスの前記所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、前記応答におけるエラーの有無を判定する第４の回路と、
を含むホストコントローラ。
【請求項２】
請求項１において、
前記エラー判定情報が、前記応答内容情報内のエラーに関する１つ又は複数の部分を特定する情報であり、
前記第４の回路が、前記応答内容情報内の前記エラー判定情報によって特定される前記１つ又は複数の部分に基づいて、前記応答におけるエラーの有無を判定することを特徴とするホストコントローラ。
【請求項３】
請求項１又は２において、
前記デバイス装着部が、
複数の種類、仕様、規格、及び／又は、バージョンのデバイスを装着可能であり、
前記第１の回路に記憶されている前記エラー判定情報テーブルが、
前記デバイス装着部に装着可能な複数のデバイスの種類、仕様、規格、及び／又は、バージョンと前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定にそれぞれ利用するための複数のエラー判定情報を含み、
前記情報処理装置が、
前記デバイス装着部に装着されたデバイスの種類、仕様、規格、及び／又は、バージョンと前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報を前記エラー判定情報テーブルの中から取得することを特徴とするホストコントローラ。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記第１の回路に記憶されている前記エラー判定情報テーブルに含まれている前記複数のエラー判定情報の内の少なくとも１つが、前記デバイス装着部に装着可能な複数のデバイスの複数の様式と前記デバイス装着部に装着可能な複数のデバイスとの複数の組み合わせに関連付けられていることを特徴とするホストコントローラ。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記エラー判定情報がビットパターンであり、
前記第４の回路が、
前記エラー判定情報と前記応答内容情報とに論理積演算処理を行い、その結果がゼロであるか否かによって、前記応答におけるエラーの有無を判定することを特徴とするホストコントローラ。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記第２の回路が、
前記情報処理装置から前記デバイス装着部に装着されたデバイスに複数のコマンドが発行される場合に前記複数のコマンドの内の１つのコマンドに対する応答における前記複数のコマンドの内の前記１つのコマンドの直前に発行されるコマンドに対するエラーの有無の判定に利用するための直前コマンドエラー判定情報を更に受け取り、
前記第４の回路が、
前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報、前記応答内容情報、前記直前コマンドエラー判定情報、及び、前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドの直前に発行されたコマンドとの組み合わせに関連付けられた前記エラー判定情報に基づいて、前記所望のコマンドに対する応答におけるエラーの有無を判定することを特徴とするホストコントローラ。
【請求項７】
請求項６において、
前記第４の回路が、
前記所望のコマンドの直前に発行されたコマンドに対する応答におけるエラーの有無を判定した後に、前記所望のコマンドの直前に発行されたコマンドの前記エラー判定情報を記憶し、前記デバイス装着部に装着されたデバイスの前記所望のコマンドに対する応答の内容に関する応答内容情報を前記ホストコントローラから取得した後に、前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報、前記応答内容情報、前記所望のコマンドの直前に発行されたコマンドの前記エラー判定情報、及び、前記直前コマンドエラー判定情報に基づいて、前記所望のコマンドに対する応答におけるエラーの有無を判定することを特徴とするホストコントローラ。
【請求項８】
請求項６又は７のいずれかにおいて、
前記直前コマンドエラー判定情報が、前記応答内容情報内の前記所望のコマンドの直前に発行されたコマンドに対するエラーに関する１つ又は複数の部分を特定するビットパターンであり、
前記第４の回路が、
前記所望のコマンドの直前に発行されたコマンドの前記エラー判定情報と前記直前コマンドエラー判定情報とに論理積演算処理を行い、その結果と前記エラー判定情報とに論理和演算処理を行い、その結果と前記応答内容情報とに論理積演算処理を行い、その結果がゼロであるか否かによって、前記応答におけるエラーの有無を判定することを特徴とするホストコントローラ。
【請求項９】
情報処理装置と、
様式が異なる複数のデバイスを装着可能なデバイス装着部と、
前記情報処理装置と前記デバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、
を含む電子機器であって、
前記ホストコントローラが、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する第１の回路と、
前記情報処理装置から前記デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドを前記デバイス装着部に装着されたデバイスに発行する旨の指示情報及び前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報を特定するためのエラー判定情報特定情報を受け取る第２の回路と、
前記情報処理装置からの前記所望のコマンドを前記デバイス装着部に装着されたデバイスに発行する旨の指示情報に基づいて、前記デバイス装着部に装着されたデバイスに前記所望のコマンドを発行し、前記デバイス装着部に装着されたデバイスから前記所望のコマンドに対する応答を受け取る第３の回路と、
前記エラー判定情報テーブル内の前記複数のエラー判定情報の中から前記エラー判定情報特定情報によって特定される前記エラー判定情報を取得し、当該エラー判定情報及び前記デバイス装着部に装着されたデバイスの前記所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、前記応答におけるエラーの有無を判定する第４の回路と、
を含むことを特徴とする電子機器。
【請求項１０】
請求項９において、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式をそれぞれ特定する複数の様式特定情報と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドをそれぞれ特定する複数のコマンド特定情報との組み合わせに関連付けて、前記エラー判定情報テーブル内の前記複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを記憶する記憶回路を更に含み、
前記情報処理装置が、
前記デバイス装着部に装着されたデバイスの様式を特定する前記様式特定情報と前記所望のコマンドを特定する前記コマンド特定情報との組み合わせに関連付けられた前記エラー判定情報特定情報を前記エラー判定情報特定情報テーブルの中から取得して、前記ホストコントローラに送ることを特徴とする電子機器。
【請求項１１】
請求項９又は１０において、
前記情報処理装置が、
前記ホストコントローラの前記第４の回路が前記応答におけるエラーが有ったものと判定した場合に、前記応答におけるエラーの内容を特定する処理を実行することを特徴とする電子機器。
【請求項１２】
請求項９乃至１１のいずれかにおいて、
通信回路を更に含み、
前記通信回路を介して前記エラー判定情報テーブル及び／又は前記エラー判定情報特定情報テーブルを更新及び／又は書き換え可能であることを特徴とする電子機器。
【請求項１３】
情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部に装着されたデバイスと、の間の媒介を行うホストコントローラが実行する方法であって、
前記情報処理装置から前記デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドを前記デバイス装着部に装着されたデバイスに発行する旨の指示情報及び前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられたエラー判定情報を特定するためのエラー判定情報特定情報を受け取る工程と、
前記情報処理装置からの前記所望のコマンドを前記デバイス装着部に装着されたデバイスに発行する旨の指示情報に基づいて、前記デバイス装着部に装着されたデバイスに前記所望のコマンドを発行し、前記デバイス装着部に装着されたデバイスから前記所望のコマンドに対する応答を受け取る工程と、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための可能な複数のエラー判定情報を含むエラー判定情報テーブルの中から、前記エラー判定情報特定情報によって特定される前記エラー判定情報を取得し、当該エラー判定情報及び前記デバイス装着部に装着されたデバイスの前記所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、前記応答におけるエラーの有無を判定する工程と、
を含むエラー判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置とデバイスとの間の媒介を行うホストコントローラ、そのようなホストコントローラを含む電子機器、及び、そのようなホストコントローラが実行するエラー判定方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータや多機能端末機などの外部記憶メディアの１つとして、標準化団体であるＭＭＣＡ（MultiMedia Card Association）が標準化したマルチメディアカード（登録商標）やＳＤＡ（SD Card Association）が標準化したＳＤ（Secure Digital）カード（登録商標）などが広く知られており、デジタルビデオカメラの静止画像記録、携帯電話装置のデータ記録、携帯音楽プレーヤの音楽記録などに用いられている。
【０００３】
なお、関連する技術として、下記の非特許文献１には、上記カードのホストコントローラ技術が記載されている。
【非特許文献１】Ｉｎｔｅｒｆａｃｅ編集部  編，ＴＥＣＨ  Ｉ  シリーズ  ｖｏｌ．１４  ＰＣカード／メモリカードの徹底研究，初版，ＣＱ出版社，２００２年１０月，ｐ.２１６−２５６
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記したように、現在、種々のカードが用いられており、また、これらのカードの仕様の各々には、複数のバージョンが存在している。さらに、カードの仕様、バージョンの各々において、多数のコマンドが規定されている。そのため、上記したカードを装着可能な電子機器等において、カードの種類、バージョン、コマンド等の組み合わせに応じたレスポンスのエラー判定処理をＣＰＵとプログラム（ソフトウェア）で行っていた。しかしながら、カードの種類、バージョン、コマンド等の組み合わせは多岐にわたるため、判定箇所も多くなり、ＣＰＵの処理負荷が大きく、エラー判定に時間がかかってしまうという問題があった。
【０００５】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、上記したカードを装着可能な電子機器等における処理速度を向上させること等が可能なホストコントローラ、電子機器、及び、エラー判定方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために本発明は、情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部に装着されたデバイスと、の間の媒介を行うホストコントローラであって、デバイス装着部に装着可能な複数のデバイスの複数の様式とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、デバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する第１の回路と、情報処理装置からデバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドをデバイス装着部に装着されたデバイスに発行する旨の指示情報及びデバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報を特定するためのエラー判定情報特定情報を受け取る第２の回路と、情報処理装置からの所望のコマンドをデバイス装着部に装着されたデバイスに発行する旨の指示情報に基づいて、デバイス装着部に装着されたデバイスに所望のコマンドを発行し、デバイス装着部に装着されたデバイスから所望のコマンドに対する応答を受け取る第３の回路と、エラー判定情報テーブル内の複数のエラー判定情報の中からエラー判定情報特定情報によって特定されるエラー判定情報を取得し、当該エラー判定情報及びデバイス装着部に装着されたデバイスの所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、応答におけるエラーの有無を判定する第４の回路と、を含むホストコントローラに関係する。
【０００７】
本発明によれば、デバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報及び所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、応答におけるエラーの有無をハードウェアにより容易に判定することができるようになる。これにより、処理速度を向上させることができる。
【０００８】
また本発明に係るホストコントローラでは、エラー判定情報が、応答内容情報内のエラーに関する１つ又は複数の部分を特定する情報であり、第４の回路が、応答内容情報内のエラー判定情報によって特定される１つ又は複数の部分に基づいて、応答におけるエラーの有無を判定するようにしても良い。
【０００９】
本発明によれば、応答内容情報内のエラーに関係する部分に対して処理を行うことで、エラーの有無を確実に判定することができる。
【００１０】
また本発明に係るホストコントローラでは、デバイス装着部が、複数の種類、仕様、規格、及び／又は、バージョンのデバイスを装着可能であり、第１の回路に記憶されているエラー判定情報テーブルが、デバイス装着部に装着可能な複数のデバイスの種類、仕様、規格、及び／又は、バージョンとデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、デバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定にそれぞれ利用するための複数のエラー判定情報を含み、情報処理装置が、デバイス装着部に装着されたデバイスの種類、仕様、規格、及び／又は、バージョンと所望のコマンドとの組み合わせに関連付けられたエラー判定情報をエラー判定情報テーブルの中から取得するようにしても良い。
【００１１】
本発明によれば、複数の種類、仕様、規格、及び／又は、バージョンのデバイスに関してもエラー判定を容易に行うことができ、幅広い用途に対応可能となる。
【００１２】
また本発明に係るホストコントローラでは、第１の回路に記憶されているエラー判定情報テーブルに含まれている複数のエラー判定情報の内の少なくとも１つが、デバイス装着部に装着可能な複数のデバイスの複数の様式とデバイス装着部に装着可能な複数のデバイスとの複数の組み合わせに関連付けられていることとしてもよい。
【００１３】
本発明によれば、複数の様式及び／又はコマンド間でエラー判定情報を共通化でき、エラー判定情報テーブルのサイズを小さくすることができ、回路規模を削減することができる。
【００１４】
また本発明に係るホストコントローラでは、エラー判定情報がビットパターンであり、第４の回路が、エラー判定情報と応答内容情報とに論理積演算処理を行い、その結果がゼロであるか否かによって、応答におけるエラーの有無を判定することとしてもよい。
【００１５】
本発明によれば、簡易な演算処理でエラーの有無を判定することができ、処理速度を向上させることができる。
【００１６】
また本発明に係るホストコントローラでは、第２の回路が、情報処理装置からデバイス装着部に装着されたデバイスに複数のコマンドが発行される場合に複数のコマンドの内の１つのコマンドに対する応答における複数のコマンドの内の１つのコマンドの直前に発行されるコマンドに対するエラーの有無の判定に利用するための直前コマンドエラー判定情報を更に受け取り、第４の回路が、デバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報、応答内容情報、直前コマンドエラー判定情報、及び、デバイス装着部に装着されたデバイスの様式と所望のコマンドの直前に発行されたコマンドとの組み合わせに関連付けられたエラー判定情報に基づいて、所望のコマンドに対する応答におけるエラーの有無を判定するようにしても良い。
【００１７】
本発明によれば、所望のコマンドの直前に発行されたコマンドに対するエラーが所望のコマンドに対する応答内にセットされ得る場合であっても、エラーの有無を迅速且つ容易に判定することができる。
【００１８】
また本発明に係るホストコントローラでは、第４の回路が、所望のコマンドの直前に発行されたコマンドに対する応答におけるエラーの有無を判定した後に、所望のコマンドの直前に発行されたコマンドのエラー判定情報を記憶し、デバイス装着部に装着されたデバイスの所望のコマンドに対する応答の内容に関する応答内容情報をホストコントローラから取得した後に、デバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報、応答内容情報、所望のコマンドの直前に発行されたコマンドのエラー判定情報、及び、直前コマンドエラー判定情報に基づいて、所望のコマンドに対する応答におけるエラーの有無を判定するようにしても良い。
【００１９】
本発明によれば、所望のコマンドの直前に発行されたコマンドに対するエラーが所望のコマンドに対する応答内にセットされ得る場合に、エラーの有無を迅速且つ容易に判定することができる実装を実現することができる。
【００２０】
また本発明に係るホストコントローラでは、直前コマンドエラー判定情報が、応答内容情報内の所望のコマンドの直前に発行されたコマンドに対するエラーに関する１つ又は複数の部分を特定するビットパターンであり、第４の回路が、所望のコマンドの直前に発行されたコマンドのエラー判定情報と直前コマンドエラー判定情報とに論理積演算処理を行い、その結果とエラー判定情報とに論理和演算処理を行い、その結果と応答内容情報とに論理積演算処理を行い、その結果がゼロであるか否かによって、応答におけるエラーの有無を判定するようにしても良い。
【００２１】
本発明によれば、所望のコマンドの直前に発行されたコマンドに対するエラーが所望のコマンドに対する応答内にセットされ得る場合に、簡易な演算処理でエラーの有無を判定することができ、処理速度を向上させることができる。
【００２２】
また本発明は、情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部と、情報処理装置とデバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、を含む電子機器であって、ホストコントローラが、デバイス装着部に装着可能な複数のデバイスの複数の様式とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、デバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する第１の回路と、情報処理装置からデバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドをデバイス装着部に装着されたデバイスに発行する旨の指示情報及びデバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報を特定するためのエラー判定情報特定情報を受け取る第２の回路と、情報処理装置からの所望のコマンドをデバイス装着部に装着されたデバイスに発行する旨の指示情報に基づいて、デバイス装着部に装着されたデバイスに所望のコマンドを発行し、デバイス装着部に装着されたデバイスから所望のコマンドに対する応答を受け取る第３の回路と、エラー判定情報テーブル内の複数のエラー判定情報の中からエラー判定情報特定情報によって特定されるエラー判定情報を取得し、当該エラー判定情報及びデバイス装着部に装着されたデバイスの所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、応答におけるエラーの有無を判定する第４の回路と、を含むことを特徴とする電子機器に関係する。
【００２３】
また本発明に係る電子機器では、デバイス装着部に装着可能な複数のデバイスの複数の様式をそれぞれ特定する複数の様式特定情報とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドをそれぞれ特定する複数のコマンド特定情報との組み合わせに関連付けて、エラー判定情報テーブル内の複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを記憶する記憶回路を更に含み、情報処理装置が、デバイス装着部に装着されたデバイスの様式を特定する様式特定情報と所望のコマンドを特定するコマンド特定情報との組み合わせに関連付けられたエラー判定情報特定情報をエラー判定情報特定情報テーブルの中から取得して、ホストコントローラに送ることとしてもよい。
【００２４】
本発明によれば、様式特定情報とコマンド特定情報との組み合わせに関連付けられたエラー判定情報を迅速且つ容易に取得することができるので、処理速度を更に向上させることができる。
【００２５】
また本発明に係る電子機器では、情報処理装置が、ホストコントローラの第４の回路が応答におけるエラーが有ったものと判定した場合に、応答におけるエラーの内容を特定する処理を実行するようにしても良い。
【００２６】
本発明によれば、まずエラーの有無をハードウェアで判定し、エラーが有った場合にエラーの内容をＣＰＵとプログラム（ソフトウェア）で特定することができるので、エラーが無い場合にＣＰＵが無駄な処理を行わずに済ませることができ、処理速度を向上させることができる。
【００２７】
また本発明に係る電子機器では、通信回路を更に含み、通信回路を介してエラー判定情報テーブル及び／又はエラー判定情報特定情報テーブルを更新及び／又は書き換え可能であることとしても良い。
【００２８】
本発明によれば、デバイスの様式の追加・変更や、コマンドの追加・変更や、エラー判定情報テーブル及び／又はエラー判定情報特定情報テーブルのデバッグ等に柔軟に対応可能となる。
【００２９】
また、本発明は、情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部に装着されたデバイスと、の間の媒介を行うホストコントローラが実行する方法であって、情報処理装置からデバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドをデバイス装着部に装着されたデバイスに発行する旨の指示情報及びデバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報を特定するためのエラー判定情報特定情報を受け取る工程と、情報処理装置からの所望のコマンドをデバイス装着部に装着されたデバイスに発行する旨の指示情報に基づいて、デバイス装着部に装着されたデバイスに所望のコマンドを発行し、デバイス装着部に装着されたデバイスから所望のコマンドに対する応答を受け取る工程と、デバイス装着部に装着可能な複数のデバイスの複数の様式とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けてデバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための可能な複数のエラー判定情報を含むエラー判定情報テーブルの中から、エラー判定情報特定情報によって特定されるエラー判定情報を取得し、当該エラー判定情報及びデバイス装着部に装着されたデバイスの所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、応答におけるエラーの有無を判定する工程と、を含むエラー判定方法に関係する。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【００３１】
１．  コマンド及びレスポンス
１．１  コマンド
まず、ＳＤカード（登録商標）の仕様におけるコマンドについて説明する。
図１（ａ）は、ＳＤカード（登録商標）の仕様におけるコマンドのフォーマットを示す図である。図１（ａ）に示すように、コマンドは、スタートビット（１ビット）、転送方向ビット（１ビット）、コマンドインデックス（６ビット）、アーギュメント（３２ビット）、ＣＲＣ（７ビット）、及び、エンドビット（１ビット）を含み、計４８ビットである。この４８ビットのコマンドが、ＣＭＤ信号線を介して、ホスト側回路からカードにシリアル転送される。
【００３２】
転送方向ビットは、コマンドのようにホスト側回路からカードへ転送される場合には「１」であり、後述するレスポンスのようにカードからホスト側回路へ転送される場合には「０」である。
【００３３】
コマンドインデックスは、６ビットであり、０（０ｘ００）〜６３（０ｘ３Ｆ）までの値をとり得る。このコマンドインデックスにより特定されるコマンドが、カードにおいて実行される。
【００３４】
アーギュメントは、３２ビットであり、コマンドインデックスにより特定されるコマンドの実行に必要な各種の情報を含む。
【００３５】
ＣＲＣ（Cyclic Redundancy Code）は、ホスト側回路とカードとの間の転送エラーをチェックするために、スタートビット、転送方向ビット、コマンドインデックス、及び、アーギュメントの計４０ビットに基づいて算出され、アーギュメントの後ろに付加される。
【００３６】
なお、ＭＭＣ（MultiMedia Card）（登録商標）規格におけるコマンドのフォーマットも、図１（ａ）に示すフォーマットと同様である。但し、コマンドインデックスにより特定されるコマンドの処理内容がＳＤカード（登録商標）と異なるものもある。
【００３７】
１．２  レスポンス
次に、ＳＤカード（登録商標）の仕様におけるレスポンスについて説明する。
図１（ｂ）は、ＳＤカード（登録商標）の仕様におけるレスポンスの内の「Ｒ１」というタイプのレスポンスのフォーマットを示す図である。図１（ｂ）に示すように、レスポンスは、スタートビット（１ビット）、転送方向ビット（１ビット）、コマンドインデックス（６ビット）、カードステータス（３２ビット）、ＣＲＣ（７ビット）、及び、エンドビット（１ビット）を含み、計４８ビットである。この４８ビットのレスポンスが、ＣＭＤ信号線を介して、カードからホスト側回路にシリアル転送される。
【００３８】
転送方向ビットは、レスポンスのようにカードからホスト側回路へ転送される場合には「０」である。
【００３９】
コマンドインデックスは、６ビットであり、ホスト側回路からカードに転送されたコマンド内のコマンドインデックスを復唱したものである。
【００４０】
カードステータスは、３２ビットであり、コマンドインデックスにより特定されるコマンドを実行したカード内のステータスに関する情報を含む。
【００４１】
ＣＲＣは、カードとホスト側回路との間の転送エラーをチェックするために、スタートビット、転送方向ビット、コマンドインデックス、及び、カードステータスの計４０ビットに基づいて算出され、カードステータスの後ろに付加される。
【００４２】
ＳＤカード（登録商標）の仕様において、コマンドのフォーマットは上記した１つ（図１（ａ）参照）が規定されているが、レスポンスのタイプは、上記した「Ｒ１」というタイプのほか、「Ｒ１ｂ」、「Ｒ２」、「Ｒ３」、「Ｒ６」、及び、「Ｒ７」というタイプが規定されている。そして、これら６種類のタイプの内のどのタイプのレスポンスが返されるかは、コマンド毎に規定されている。多数のコマンドに対しては、「Ｒ１」というタイプのレスポンスが返されることとして規定されており、少数のコマンドに対して、「Ｒ１ｂ」、「Ｒ２」、「Ｒ３」、「Ｒ６」、「Ｒ７」というタイプのレスポンスが返されることとして規定されている。なお、レスポンスが返されないこととして規定されているコマンドもある。
【００４３】
「Ｒ１ｂ」というタイプのレスポンスは、そのフォーマットは上記した「Ｒ１」というタイプのレスポンスのフォーマット（図１（ｂ）参照）と同様であるが、オプショナルのビジー信号がデータ線Ｄ０上に出力される点で、「Ｒ１」というタイプのレスポンスと異なっている。
【００４４】
「Ｒ２」というタイプのレスポンスは、カード内部のＣＩＤレジスタ（１２８ビット）又はＣＳＤレジスタ（１２８ビット）を読み出すためのコマンドに対して返されるレスポンスであり、そのフォーマットは、計１３６ビット長である。
【００４５】
「Ｒ３」というタイプのレスポンスは、カード内部のＯＣＲレジスタ（３２ビット）を読み出すためのコマンドに対して返されるレスポンスであり、そのフォーマットは、計４８ビット長である。
【００４６】
「Ｒ６」というタイプのレスポンスは、新たに発行されたＲＣＡ（Relative Card Address）を返すためのレスポンスであり、そのフォーマットは、計４８ビット長である。
【００４７】
「Ｒ７」というタイプのレスポンスは、カードがサポートする電圧の情報を返すためのレスポンスであり、そのフォーマットは、計４８ビット長である。
【００４８】
なお、ＭＭＣ（MultiMedia Card）（登録商標）規格におけるレスポンスのフォーマットも、ＳＤカード（登録商標）規格におけるフォーマットと同様である。
【００４９】
１．３  エラー判定
図１（ｂ）に示すカードステータス（３２ビット）の内の幾つかのビットは、未使用又はリザーブ（将来の使用のために確保）されているが、他のビットは、カード内の各種のステータスをそれぞれ表すものとして規定されている。そして、コマンドの実行によりカード内に１つ又は複数のエラー（以下、「カードステータスエラー」という。）が発生した場合には、発生したエラーに対応する１つ又は複数のビットが「１」にセットされる。コマンドの実行によりどのようなカードステータスエラーが発生し得て、その結果としてどのビットが「１」にセットされ得るのかは、コマンド毎に異なっており、全てのコマンドで同一ではない。そのため、ホスト側回路は、カードに発行したコマンドに応じた数及び位置のビット（以下、「エラービット」という。）を逐次チェックすることでカードステータスエラーの判定を行う必要があり、判定箇所も多くなるため、処理が複雑となり、処理速度が遅くなってしまっていた。特に、種類やバージョンの異なるカードを装着可能な電子機器の場合、種類やバージョンによってエラービットの位置が異なることが多いため、処理が更に複雑となり、処理負荷が更に重く、処理時間が更に掛かってしまっていた。
【００５０】
２．  構成
図２に、以上のような問題を解決できる本実施形態の電子機器１の構成例を示す。図２に示すように、この電子機器１は、各種コマンドの発行指示やデータの転送指示やプログラムの実行を行うメインＣＰＵ（広義には、情報処理装置）２と、プログラムやデータを記憶するＲＯＭ３と、データを記憶するＲＡＭ（広義には、記憶回路）４と、複数の様式（種類、仕様、規格、及び／又は、バージョンを含む。）のカード（広義には、デバイス）を挿入可能なカードスロット（広義には、デバイス装着部）６と、メインＣＰＵ２からの指示に応じてカードスロット６に装着されたカードへのコマンド発行やデータ転送等を行うカードコントローラ５と、外部機器との間で有線又は無線通信を行うための通信回路７とを含む。メインＣＰＵ２、ＲＯＭ３、ＲＡＭ４、カードコントローラ５、及び、通信回路７は、バスＢ１によって接続されている。
【００５１】
ＲＯＭ３は、例えば、リアルタイムＯＳ（オペレーティングシステム）プログラムや、各種のアプリケーションプログラムや、カードコントローラ５を操作するためのドライバプログラム等を記憶しており、メインＣＰＵ２は、これらのプログラムを適宜実行する。
【００５２】
ＲＡＭ４は、メインＣＰＵ２がワークエリアとして使用する作業領域や、カードスロット６に挿入されたカードとの間のデータのＤＭＡ転送のために用いられるＤＭＡ転送領域や、カードスロット６に装着可能な複数の様式のカードの複数のコマンドに対するカードステータスエラーの判定に利用可能な複数のチェックパターン（広義には、エラー判定情報）を格納したレスポンスチェックビットテーブル（広義には、エラー判定情報テーブル。カードコントローラ５内に記憶されており、後述する。）内の所要のチェックパターンを、カードスロット６に装着されたカードの様式及びカードスロット６に装着されたカードに発行するコマンドに基づいて迅速に決定するための複数のルックアップ値（広義には、エラー判定情報特定情報）を含むルックアップテーブル（広義には、エラー判定情報特定情報テーブル）等を記憶するテーブル記憶領域を有する。なお、ルックアップテーブルについても、後で詳細に説明する。
【００５３】
カードスロット６は、ＭＭＣ（MultiMedia Card）（登録商標）のバージョン１．０〜１．２又は１．４の仕様に準拠したカード（以下、「第１の様式のカード」という。）Ｃ１、ＭＭＣ（登録商標）のバージョン２．０〜２．２の仕様に準拠したカード（以下、「第２の様式のカード」という。）Ｃ２、ＭＭＣ（登録商標）のバージョン３．０〜３．３１の仕様に準拠したカード（以下、「第３の様式のカード」という。）Ｃ３、ＭＭＣ（登録商標）のバージョン４．０〜４．２の仕様に準拠したカード（以下、「第４の様式のカード」という。）Ｃ４、ＳＤ（登録商標）のバージョン１．０１の仕様に準拠したカード（以下、「第５の様式のカード」という。）Ｃ５、ＳＤ（登録商標）のバージョン１．１０又は２．００の仕様に準拠したカード（以下、「第６の様式のカード」という。）Ｃ６を装着可能である。なお、本願においては、これらのカードを総称する場合に、ＳＤＭＭＣカードと言う。
【００５４】
本実施形態においては、上記第１〜第６の様式のカードＣ１〜Ｃ６を装着可能としているが、更に他の種類、仕様、規格、及び／又は、バージョンのデバイス（例えば、ＳＤＩＯデバイス、ＣＥ−ＡＴＡデバイス等）を装着可能とすることも可能である。
【００５５】
なお、カードスロット６に装着されたカードの様式は、イニシエートで得られる情報やカード内部のレジスタ（ＣＩＤレジスタ、ＣＳＤレジスタ等）を読み出して得られる情報に基づいて、特定可能である。メインＣＰＵ２は、イニシエート時又は初期時において、そのようにして特定したカードの様式を表すデータを、ＲＡＭ４に書き込む。例えば、第６の様式のカードＣ６がカードスロット６に装着されている場合には、メインＣＰＵ２は、初期時において、コマンド「ＣＭＤ２」（コマンドインデックス２（０ｘ０２））等を第６の様式のカードＣ６に発行することで、ＣＩＤレジスタ等を読み出すことができる。このようなカードの様式の特定はそれぞれの仕様に基づいて可能であるので、ここでは詳細な説明を省略する。
【００５６】
カードコントローラ５は、メインＣＰＵ２からの指示に応じて、メインＣＰＵ２とカードスロット６に装着されたカードとの間の媒介を行う。カードコントローラ５とカードスロット６との間は、ＣＬＫ線（クロック供給用信号線）、ＣＭＤ線（コマンド用信号線）、及び、ＤＡＴ線（データ用信号線）によって接続されている。
【００５７】
ＣＬＫ線は、カードコントローラ５から第１〜第６の様式のカードＣ１〜Ｃ６へクロック信号を送信するための信号線である。カードコントローラ５から第１〜第６の様式のカードＣ１〜Ｃ６へのコマンドの転送、及びカードコントローラ５と第１〜第６の様式のカードＣ１〜Ｃ６との間のデータ転送等は、このクロック信号に同期して実行される。
【００５８】
ＣＭＤ線は、カードコントローラ５から第１〜第６の様式のカードＣ１〜Ｃ６へのコマンドの転送、及び第１〜第６の様式のカードＣ１〜Ｃ６からカードコントローラ５へのレスポンスの転送に使用される１ビット幅の信号線である。
ＤＡＴ線は、カードコントローラ５と第１〜第６の様式のカードＣ１〜Ｃ６のＤＡＴ端子との間のデータ転送に使用される双方向信号線である。なお、カードのＤＡＴ端子の数（ビット幅）は、第１〜第４の様式のカードＣ１〜Ｃ４の場合、１、４、又は、８個であり、第５〜第６の様式のカードＣ５〜Ｃ６の場合、１又は４個である。
【００５９】
なお、電子機器１が、入力装置、表示装置（ＬＣＤ、有機ＥＬディスプレイ等）、ＤＭＡコントローラ等を更に含んでいても良い。
【００６０】
図３は、カードコントローラ５の内部構成を示すブロック図である。図３に示すように、カードコントローラ５は、ＳＤＭＭＣホストコントローラ（広義には、ホストコントローラ）１０と、ＳＤＭＭＣホストコントローラ１０とメインＣＰＵ２（図２参照）との間の信号の送受信を行うＣＰＵインタフェース１１と、ＳＤＭＭＣホストコントローラ１０とＲＡＭ４（図２参照）との間の信号の送受信を行うＤＭＡインタフェース１２と、ＳＤＭＭＣホストコントローラ１０とカードスロット６（図２参照）に装着されたカードとの間の信号の送受信を行うカードインタフェース１３とを含む。
【００６１】
ＳＤＭＭＣホストコントローラ１０は、クロック出力部２１と、レジスタ制御部２２と、ＳＤＭＭＣ制御部２３（広義には、第３の回路）と、ＤＭＡ制御部２４とを含んでいる。なお、ＳＤＭＭＣホストコントローラ１０を半導体チップ上に集積して、半導体集積回路としても良い。
【００６２】
クロック出力部２１は、クロック信号ＳＤＣＬＫをカードインタフェース１３を介してカードスロット６に装着されたカードに供給する。カードに供給するクロック信号ＳＤＣＬＫは、例えば、発振回路（図示せず）によって発生され或いは外部から供給されるシステムクロック信号をそのまま或いは分周して取得することができる。なお、クロック出力部２１のクロック信号ＳＤＣＬＫのカードへの出力の供給開始及び供給停止を、メインＣＰＵ２やＳＤＭＭＣ制御部２３等から制御可能としても良い。
【００６３】
レジスタ制御部２２は、メインＣＰＵ２から書き込み及び／又は読み出し可能な複数のレジスタを有しており、これらのレジスタの制御を行う。メインＣＰＵ２は、これらのレジスタにＣＰＵインタフェース１１を介して情報を書き込むことにより、カードへのコマンド発行をＳＤＭＭＣコントローラ１０に行わせることができる。また、メインＣＰＵ２は、これらのレジスタからＣＰＵインタフェース１１を介して情報を読み出すことにより、発行したコマンドに対するカードからのレスポンスを取得することができる。なお、レジスタ制御部２２内のレジスタは、ＳＤＭＭＣホストコントローラ１０内の他の回路ブロックから書き込み及び／又は読み出し可能としても良い。
【００６４】
さらに、レジスタ制御部２２は、カードスロット６に装着可能なカードの様式及びカードスロット６に装着可能なカードが実行可能な複数のコマンドに関連付けて、カードスロット６に装着可能なカードの複数のコマンドに対するカードステータスエラーの判定に利用可能な複数のチェックパターンを格納したレスポンスチェックビットテーブルを記憶するテーブル記憶部３１（広義には、第１の回路）と、レスポンスチェックビットテーブルに基づいてカードステータスエラーの有無を判定するカードステータスエラー判定部３２（広義には、第４の回路）とを含む。なお、テーブル記憶部３１は、オンチップＲＯＭ、オンチップＲＡＭ等で構成可能である。
【００６５】
図４は、レジスタ制御部２２内のレジスタマップの一例を示す図である。図４に示す複数のレジスタの内のレジスタ２２ａ〜２２ｊ（広義には、第２の回路）は、メインＣＰＵ２によって書き込まれ、ＳＤＭＭＣホストコントローラ１０内の回路によって読み出されるレジスタであり、レジスタ２２ｋ〜２２ｏは、ＳＤＭＭＣホストコントローラ１０内の回路によって書き込まれ、メインＣＰＵ２によって読み出されるレジスタである。
【００６６】
レジスタ２２ａは、発行するコマンドのコマンドインデックス（広義には、コマンド特定情報又は指示情報）を書き込むためのレジスタであり、レジスタ２２ｂは、発行するコマンドのアーギュメント（広義には、指示情報）を書き込むためのレジスタである。
【００６７】
レジスタ２２ｃは、発行するコマンドのタイプ（Ｎｏｒｍａｌ、Ｓｕｓｐｅｎｄ、Ｒｅｓｕｍｅ、Ａｂｏｒｔ等）（広義には、指示情報）を書き込むためのレジスタであり、レジスタ２２ｄは、発行するコマンドに対するレスポンスのタイプ（レスポンス無し、１３６ビットレスポンス（前述した「Ｒ２」タイプに相当）、４８ビットレスポンス（前述した「Ｒ１」、「Ｒ３」等のタイプに相当）、ＲｅｓｐＢｕｓｙ（前述した「Ｒ１ｂ」等のタイプに相当）等）（広義には、指示情報）を書き込むためのレジスタである。
【００６８】
レジスタ２２ｅ〜２２ｈは、発行するコマンドがデータ転送を伴うコマンドである場合に用いられるレジスタである。レジスタ２２ｅは、データ転送タイプ（Ｓｉｎｇｌｅ、Ｉｎｆｉｎｉｔｅ、Ｍｕｌｔｉｐｌｅ、Ｓｔｒｅａｍ等）（広義には、指示情報）を書き込むためのレジスタであり、レジスタ２２ｆは、データ転送のためにＤＡＴ線を使用することを表すフラグ（以下、「ＤＡＴ線使用フラグ」という）（広義には、指示情報）を書き込むためのレジスタであり、レジスタ２２ｇは、転送ブロックサイズ（広義には、指示情報）を書き込むためのレジスタであり、レジスタ２２ｈは、転送ブロック数（広義には、指示情報）を書き込むためのレジスタである。
【００６９】
レジスタ２２ｉは、カードステータスエラー以外のエラー（インデックスエラー、エンドビットエラー、ＣＲＣエラー、タイムアウトエラー等。以下、「伝送エラー」という。）のチェックを行うか否かを指定するデータ（広義には、指示情報）を書き込むためのレジスタである。
【００７０】
レジスタ２２ｊは、レスポンスチェックビットテーブル（レジスタ制御部２２のテーブル記憶部３１内に記憶されており、後述する。）内の所要のチェックパターンを決定するためのカードステータスエラー選択情報（ルックアップ値、広義には、エラー判定情報特定情報）を書き込むためのレジスタである。レジスタ２２ｊに書き込まれたカードステータスエラー選択情報（ルックアップ値）は、カードステータスエラー判定部３２（図３参照）において、カードステータスエラーの有無の判定に用いられる。
【００７１】
レジスタ２２ｋは、コマンドが完了したことを表すフラグ（以下、「コマンド完了フラグ」という）を書き込むためのレジスタである。
レジスタ２２ｋは、カードステータスエラーの有無を表すカードステータスエラー有無情報をカードステータスエラー判定部３２が書き込むためのレジスタである。
【００７２】
レジスタ２２ｍは、レスポンスのカードステータス（広義には、応答内容情報）を書き込むためのレジスタである。なお、先に説明したように、レスポンスのカードステータス長は、レスポンスのタイプ即ちコマンドによって異なる。例えば、レスポンスのタイプが「Ｒ１」（４８ビット）の場合、レスポンスのカードステータスは３２ビットであり、レスポンスのタイプが「Ｒ２」（１３６ビット）の場合、レスポンスのカードステータスは１２０ビットである。そこで、例えば、レジスタ２２ｍを長め（例えば、１２８ビット程度）に確保しておき、その中の所定位置にレスポンスのカードステータスを書き込むようにしても良い。
【００７３】
レジスタ２２ｎは、伝送エラーのチェックを行うことを指定するデータがレジスタ２２ｉに書き込まれている場合に、指定されたエラーのチェックの結果を表すデータを書き込むためのレジスタである。なお、伝送エラーのチェックの結果を表すデータは、伝送エラーの種類に応じた位置のビットがセットされるようにしても良いし、伝送エラーの種類がコード化されるようにしても良い。メインＣＰＵ２は、伝送エラーのチェックを行うことを指定した場合に、このレジスタ２２ｎを読み出すことで、伝送エラーの発生の有無を取得することができる。
【００７４】
レジスタ２２ｏは、ＣＭＤ線を使用中であるか否かを表すフラグ（以下、「ＣＭＤ線使用中フラグ」という）を書き込むためのレジスタである。ＣＭＤ線使用中フラグは、ＳＤＭＭＣホストコントローラ１０がコマンドの発行を開始するとセットされ、ＳＤＭＭＣホストコントローラ１０がレスポンスの受信を完了するとクリアされる。メインＣＰＵ２は、このレジスタ２２ｏを読み出すことで、コマンドの実行中か否か、すなわち、次のコマンドの発行を指示することが可能か否かを判断することができる。
【００７５】
なお、図４に示すレジスタマップは一例であり、種々の変形実施も可能である。例えば、全レジスタのビット幅を３２ビット長とし、３２ビットに満たないビット長を有する複数のデータを結合して１つのレジスタに格納するようにしても良い。また、例えば、クロック信号ＳＤＣＬＫの出力又は停止をクロック出力部２１に行わせるためのフラグを格納するためのレジスタを設けて、メインＣＰＵ２がクロック信号ＳＤＣＬＫの出力又は停止をクロック出力部２１に行わせるようにしても良い。また、例えば、カードステータスエラー、伝送エラーが発生した場合に、割り込み信号をメインＣＰＵ２に出力するか否かを指示するためのデータを格納するためのレジスタを設けて、カードステータスエラー、伝送エラーが発生した場合に割り込み信号がメインＣＰＵ２に出力されるようにしても良い。
【００７６】
次に、レジスタ制御部２２（図３参照）のテーブル記憶部３１内のレスポンスチェックビットテーブルＣｈｅｃｋＢｉｔ［ｋ］（０≦ｋ≦４９）、ＲＡＭ４（図２参照）のテーブル記憶領域内のルックアップテーブルＬｏｏｋｕｐ［ｍ］［ｎ］（０≦ｍ６、０≦ｎ≦６３）、及び、これらのテーブルに基づいてカードステータスエラーの有無を判定するカードステータスエラー判定部３２（図３参照）について説明する。
【００７７】
まず、レジスタ制御部２２のテーブル記憶部３１内のレスポンスチェックビットテーブル及びＲＡＭ４のテーブル記憶領域内のルックアップテーブルについて説明し、その後に、カードステータスエラー判定部３２について説明する。
【００７８】
図５は、レスポンスチェックビットテーブルを示す図であり、図６〜図７は、ルックアップテーブルを示す図である。
先に説明したように、レスポンスのカードステータス内のエラービットの位置は、全てのコマンドで同一ではない。しかしながら、本発明者は、以下の事柄を見出した。
【００７９】
第１に、本発明者は、コマンドを実行したときにカード内においてエラーが発生する場合はエラーが発生じない場合よりも少なく、従って、どのようなエラーが発生したかを判定するよりも、まず、何らかのエラーが発生したのか否かを判定することが、処理速度の点で好適であることを見出した。そして、必要であれば、何らかのエラーが発生したと判定した後に、どのようなエラーが発生したかを判定することが、処理速度の点で好適であることを見出した。
【００８０】
第２に、本発明者は、レスポンスのカードステータス内のエラービットの位置は全てのコマンドで同一ではないものの、レスポンスのカードステータス内のエラービットの位置が共通するコマンドが存在することを見出した。
【００８１】
例えば、第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」（コマンドインデックス「７」（０ｘ０７））に対するレスポンスのカードステータス内のエラービットの位置は、カードステータスのＭＳＢ（Most Significant Bit）を第３１ビットとし、ＬＳＢ（Least Significant Bit）を第０ビットとすると、第２７ビット、第２６ビット、及び、第２４〜第１６ビットの計１１ビットである。すなわち、第６の様式のカードＣ６において、コマンド「ＣＭＤ７」を実行したときにカード内において何らかのエラーが発生したのか否かは、上記１１ビットの１つ以上が「１」にセットされているか否かによって判定できる。そして、第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」に対するカードステータス内の第２７ビット、第２６ビット、及び、第２４〜第１６ビットの１つ以上が「１」にセットされているか否かは、後述するように、第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」に対するカードステータス（３２ビット）とチェックパターン（ビットパターン）「０ｘ０ＤＦＦ００００」（３２ビット）との論理積（ＡＮＤ）演算処理（広義には、演算処理）を行い、その結果が「０」（０ｘ００００）であるか否かによって容易且つ迅速に判定可能である。
【００８２】
また、第６の様式のカードＣ６におけるコマンド「ＣＭＤ２６」（コマンドインデックス「２６」（０ｘ１Ａ））に対するレスポンスのカードステータス内のエラービットも、上記した第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」に対するレスポンスのカードステータス内のエラービットの位置と共通する。すなわち、第６の様式のカードＣ６において、コマンド「ＣＭＤ２６」を実行したときにカード内において何らかのエラーが発生したのか否かは、第６の様式のカードＣ６におけるコマンド「ＣＭＤ２６」に対するカードステータス（３２ビット）とチェックパターン「０ｘ０ＤＦＦ００００」（上記第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」に対するレスポンスのカードステータスのチェックパターンと同一）との論理積（ＡＮＤ）演算処理を行い、その結果が「０」（０ｘ００００）であるか否かによって容易且つ迅速に判定可能である。
【００８３】
また、第５の様式のカードＣ５におけるコマンド「ＣＭＤ７」（コマンドインデックス「７」（０ｘ０７））に対するレスポンスのカードステータス内のエラービットも、上記した第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」に対するレスポンスのカードステータス内のエラービットの位置と共通する。すなわち、第５の様式のカードＣ５において、コマンド「ＣＭＤ７」を実行したときにカード内において何らかのエラーが発生したのか否かは、第５の様式のカードＣ５におけるコマンド「ＣＭＤ７」に対するカードステータス（３２ビット）とチェックパターン「０ｘ０ＤＦＦ００００」（上記第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」に対するレスポンスのカードステータスのチェックパターンと同一）との論理積（ＡＮＤ）演算処理を行い、その結果が「０」（０ｘ００００）であるか否かによって容易且つ迅速に判定可能である。
【００８４】
また、第６の様式のカードＣ６においては、コマンド「ＣＭＤ５５」（コマンドインデックス「５５」（０ｘ３７））に引き続いて発行される複数の拡張コマンド「ＡＣＭＤ」が規定されている。そして、そのような複数の拡張コマンドの内の１つである拡張コマンド「ＡＣＭＤ１３」（コマンドインデックス「１３」（０ｘ０Ｄ））に対するレスポンスのカードステータス内のエラービットも、上記した第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」（コマンドインデックス「７」（０ｘ０７））に対するレスポンスのカードステータス内のエラービットの位置と共通する。すなわち、第６の様式のカードＣ６において、拡張コマンド「ＡＣＭＤ１３」を実行したときにカード内において何らかのエラーが発生したのか否かは、第６の様式のカードＣ６における拡張コマンド「ＡＣＭＤ１３」に対するカードステータス（３２ビット）とチェックパターン「０ｘ０ＤＦＦ００００」（上記第６の様式のカードＣ６におけるコマンド「ＣＭＤ７」に対するレスポンスのカードステータスのチェックパターンと同一）との論理積（ＡＮＤ）演算処理を行い、その結果が「０」（０ｘ００００）であるか否かによって容易且つ迅速に判定可能である。
【００８５】
そして、本発明者は、第１〜第６の様式のカードＣ１〜Ｃ６における全コマンドのレスポンスのカードステータス内のエラービットの位置を調べたところ、図５に示す５０個のチェックパターンを用意すれば、何れの様式のカードにおいて何れのコマンドを実行した場合であっても、何らかのエラーが発生したのか否かを、レスポンスのカードステータスとチェックパターンとの論理積演算処理を行うことにより、容易且つ迅速に判定可能であることを見出した。
【００８６】
そこで、本実施形態では、レジスタ制御部２２（図２参照）のテーブル記憶部３１内に、図５に示す５０通りのチェックパターン（広義には、エラー判定情報）を含むレスポンスチェックビットテーブル（広義には、エラー判定情報テーブル）を配することで、何れかのカードにおいて何れかのコマンドを実行したときにカード内において何らかのエラーが発生したのか否かを容易且つ迅速に判定できるようにした。これにより、処理を簡素化でき、ＣＰＵとプログラム（ソフトウェア）ではなくハードウェアによるエラーの有無の判定を実現でき、エラー判定処理をＣＰＵとプログラム（ソフトウェア）で行った場合と比較して非常に高速にすることができる。
【００８７】
また、本実施形態では、或る様式のカードにおいて或るコマンドを実行させた場合に図５に示すレスポンスチェックビットテーブル内の５０個のチェックパターンの内の何れのチェックパターンを用いれば良いかということを迅速に決定可能とするために、ＲＡＭ４（図２参照）のテーブル記憶領域内に、図６〜図７に示すルックアップテーブル（広義には、エラー判定情報特定情報テーブル）を配することとした。これにより、処理速度を更に向上させることができる。
【００８８】
次に、レジスタ制御部２２のテーブル記憶部３１内のレスポンスチェックビットテーブルに基づいてカードステータスエラーの有無を判定するカードステータスエラー判定部３２について説明する。
【００８９】
図８は、カードステータスエラー判定部３２の内部構成を示す図である。
図８に示すように、カードステータスエラー判定部３２は、セレクタ３２ａと、論理積（ＡＮＤ）演算器３２ｂ（広義には、演算器）とを含む。
【００９０】
例えば、先に挙げたカードの様式が第６の様式であり且つカードに発行したコマンドがコマンド「ＣＭＤ７」である例の場合には、メインＣＰＵ２（図２参照）が、ＲＡＭ４（図２参照）のテーブル記憶領域内のルックアップテーブルの第６番目の列（列方向の要素番号「０ｄ５」）且つ第８番目の行（行方向の要素番号「０ｄ０７」）を参照することで、ルックアップ値「０ｄ４１」を取得し、レジスタ２２ｊに書き込む。そして、カードステータスエラー判定部３２のセレクタ３２ａが、レジスタ２２ｊ内のルックアップ値が「０ｄ４１」であるので、レジスタ制御部２２のテーブル記憶部３１内のレスポンスチェックビットテーブルの第４２番目の行（行方向の要素番号「０ｄ４１」）を選択することで、チェックパターン「０ｘ０ＤＦＦ００００」を迅速に取得することができる。
【００９１】
また、先に挙げたカードの様式が第６の様式であり且つカードに発行したコマンドがコマンド「ＣＭＤ２６」である例の場合には、メインＣＰＵ２が、ＲＡＭ４のテーブル記憶領域内のルックアップテーブルの第６番目の列（列方向の要素番号「０ｄ５」）且つ第２７番目の行（行方向の要素番号「０ｄ２６」）を参照することで、ルックアップ値「０ｄ４１」を取得し、レジスタ２２ｊに書き込む。そして、カードステータスエラー判定部３２のセレクタ３２ａが、レジスタ２２ｊ内のルックアップ値が「０ｄ４１」であるので、レジスタ制御部２２のテーブル記憶部３１内のレスポンスチェックビットテーブルの第４２番目の行（行方向の要素番号「０ｄ４１」）を選択することで、チェックパターン「０ｘ０ＤＦＦ００００」を迅速に取得することができる。
【００９２】
また、先に挙げたカードの様式が第５の様式であり且つカードに発行したコマンドがコマンド「ＣＭＤ７」である例の場合には、メインＣＰＵ２が、ＲＡＭ４のテーブル記憶領域内のルックアップテーブルの第５番目の列（列方向の要素番号「０ｄ４」）且つ第８番目の行（行方向の要素番号「０ｄ０７」）を参照することで、ルックアップ値「０ｄ４１」を取得し、レジスタ２２ｊに書き込む。そして、カードステータスエラー判定部３２のセレクタ３２ａが、レジスタ２２ｊ内のルックアップ値が「０ｄ４１」であるので、レジスタ制御部２２のテーブル記憶部３１内のレスポンスチェックビットテーブルの第４２番目の行（行方向の要素番号「０ｄ４１」）を選択することで、チェックパターン「０ｘ０ＤＦＦ００００」を迅速に取得することができる。
【００９３】
また、先に挙げたカードの様式が第６の様式であり且つカードに発行したコマンドが拡張コマンド「ＡＣＭＤ１３」である例の場合には、メインＣＰＵ２が、ＲＡＭ４のテーブル記憶領域内のルックアップテーブルの第７番目の列（列方向の要素番号「０ｄ６」）且つ第１４番目の行（行方向の要素番号「０ｄ１３」）を参照することで、ルックアップ値「０ｄ４１」を取得し、レジスタ２２ｊに書き込む。そして、カードステータスエラー判定部３２のセレクタ３２ａが、レジスタ２２ｊ内のルックアップ値が「０ｄ４１」であるので、レスポンスチェックビットテーブルの第４２番目の行（行方向の要素番号「０ｄ４１」）を選択することで、チェックパターン「０ｘ０ＤＦＦ００００」を迅速に取得することができる。
【００９４】
なお、ルックアップテーブルをＲＯＭ３（フラッシュメモリ等の書き換え可能なＲＯＭであっても良い。）内に作成しても良い。また、レスポンスチェックビットテーブル及びルックアップテーブルの一方又は両方をＲＯＭ３内に作成しておき、初期時等において、メインＣＰＵ２やＤＭＡコントローラ（図示せず）等がレジスタ制御部２２のテーブル記憶部３１内又はＲＡＭ４のテーブル記憶領域内に転送するようにしても良い。
【００９５】
また、通信回路７を用いて、レスポンスチェックビットテーブル及び／又はルックアップテーブルを参照したり、これらのテーブルの一部又は全部を適宜更新するようにしても良い。このようにすれば、カードやデバイスの様式（例えば、ＳＤＩＯデバイス、ＣＥ−ＡＴＡデバイス等）の追加・変更や、コマンドの追加・変更や、これらのテーブルのデバッグ等に柔軟に対応可能となる。なお、様式やコマンドの追加の場合には、テーブルの要素数を増やすことで対応可能である。
【００９６】
例えば、第６の様式のカードＣ６において、現在はリザーブとされているコマンド「ＣＭＤ１」（コマンドインデックス「１」（０ｘ０１））の処理内容が仕様上新たに規定された場合に、当該コマンドを実行したときに第６の様式のカードＣ６内において何らかのエラーが発生したのか否かを判定するためのチェックパターンが図５に示すレスポンスチェックビットテーブル内の５０通りのチェックパターンの何れとも合致しないときには、当該コマンドを実行したときに第６の様式のカードＣ６内において何らかのエラーが発生したのか否かを判定するための新たなチェックパターンをレスポンスチェックビットテーブルに第５１番目のテーブル要素として追加すれば良い。そして、このようなテーブル要素の追加を通信回路７を介して行うことにより、カードの仕様のバージョンアップ等に柔軟に対応可能となる。
【００９７】
カードやデバイス（例えば、ＳＤＩＯデバイス、ＣＥ−ＡＴＡデバイス等）の様式を追加する場合には、ルックアップテーブルの列を増やすとともに、必要であればレスポンスチェックビットテーブルに新たなテーブル要素を追加すれば良い。
【００９８】
通信回路７をインターネットに接続することとすれば、テーブルの更新をインターネットを介して行うことが可能となる。
また、通信回路７をデバッガに接続することとすれば、これらのテーブルのデバッグを容易に行うことが可能となる。
【００９９】
再び図３を参照すると、ＳＤＭＭＣ制御部２３は、コマンド・レスポンス送受信部２３ａと、データ送受信部２３ｂとを含む。
コマンド・レスポンス送受信部２３ａは、メインＣＰＵ２によってレジスタ２２ａ〜２２ｉに書き込まれた情報に基づいてコマンドをカードに発行し、当該コマンドに対するレスポンスをカードから受け取って、レスポンスに基づく情報をレジスタ２２ｋ〜２２ｏに書き込む。
【０１００】
なお、本実施形態においては、コマンド・レスポンス送受信部２３ａは、コマンドを発行する信号線ＣＭＤ＿ｏｕｔとレスポンスを受信する信号線ＣＭＤ＿ｉｎとを別個に有している。そして、カードインタフェース１３は、コマンド発行時には、コマンド・レスポンス送受信部２３ａによって信号線ＣＭＤ＿ｏｕｔ上に供給されるコマンドをカードとの間のＣＭＤ線に出力し、レスポンス受信時には、カードとの間のＣＭＤ線上に供給されるレスポンスを信号線ＣＭＤ＿ｉｎに出力する。
【０１０１】
データ送受信部２３ｂは、レジスタ２２ａに書き込まれたインデックスで表されるコマンドがデータ転送を伴うコマンドである場合に動作を行い、レジスタ２２ａに書き込まれたインデックスで表されるコマンドがデータ転送を伴わないコマンドである場合には動作を行わない。
【０１０２】
レジスタ２２ａに書き込まれたインデックスで特定されるコマンドがカードへのデータ書き込みを伴うコマンドである場合には、コマンド・レスポンス送受信部２３ａが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスの受信完了後に、カードへのデータ書き込みの開始をデータ送受信部２３ｂに指示する。また、レジスタ２２ａに書き込まれたインデックスで特定されるコマンドがカードからのデータ読み出しを伴うコマンドである場合には、コマンド・レスポンス送受信部２３ａが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスを受信するとともに、カードからのデータ読み出しの開始をデータ送受信部２３ｂに指示する。
【０１０３】
ＤＭＡ制御部２４は、レジスタ２２ａに書き込まれたコマンドインデックスで特定されるコマンドがデータ転送を伴うコマンドである場合に動作を行い、レジスタ２２ａに書き込まれたコマンドインデックスで特定されるコマンドがデータ転送を伴わないコマンドである場合には動作を行わない。
【０１０４】
メインＣＰＵ２は、カードへのデータ書き込みを伴うコマンドの実行を指示する場合には、まず、カードに書き込むためのデータをＲＡＭ４（図２参照）のＤＭＡ転送領域内に書き込み、その後、レジスタ２２ａ〜２２ｈに当該コマンドのインデックス等を書き込む。これを受けて、ＳＤＭＭＣホストコントローラ１０のＳＤＭＭＣ制御部２３内のコマンド・レスポンス送受信部２３ａが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスの受信完了後に、カードへのデータ書き込みの開始をデータ送受信部２３ｂに指示する。データ送受信部２３ｂは、コマンド・レスポンス送受信部２３ａからの指示を受けると、ＤＭＡ制御部２４にＲＡＭ４のＤＭＡ転送領域内のデータのＤＭＡ転送を指示する。ＤＭＡ制御部２４は、ＦＩＦＯバッファ２４ａを有しており、データ送受信部２３ｂからの指示を受けると、ＲＡＭ４のＤＭＡ転送領域内のデータをＦＩＦＯバッファ２４ａに順次ＤＭＡ転送する。そして、データ送受信部２３ｂが、ＦＩＦＯバッファ２４ａ内のデータを順次読み出し、カードインタフェース１３を介してカードに順次書き込む。
【０１０５】
一方、メインＣＰＵ２は、カードからのデータ読み出しを伴うコマンドの実行を指示する場合には、レジスタ２２ａ〜２２ｈに当該コマンドのインデックス等を書き込む。これを受けて、ＳＤＭＭＣホストコントローラ１０のＳＤＭＭＣ制御部２３内のコマンド・レスポンス送受信部２３ａが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスを受信するとともに、カードからのデータ読み出しの開始をデータ送受信部２３ｂに指示する。データ送受信部２３ｂは、コマンド・レスポンス送受信部２３ａからの指示を受けると、カードインタフェース１３を介してカードからデータを順次読み出してＦＩＦＯバッファ２４ａに順次書き込むとともに、ＤＭＡ制御部２４にＦＩＦＯバッファ２４ａ内のデータのＤＭＡ転送を指示する。ＤＭＡ制御部２４は、データ送受信部２３ｂからの指示を受けると、ＦＩＦＯバッファ２４ａ内のデータをＲＡＭ４のＤＭＡ転送領域に順次ＤＭＡ転送する。
【０１０６】
なお、本実施形態においては、データ送受信部２３ｂは、カードに書き込むデータを出力する８ビット幅の信号線ＤＡＴ＿ｏｕｔ［７：０］とカードからデータを読み出す信号線ＤＡＴ＿ｉｎ［７：０］とを別個に有している。そして、カードインタフェース１３は、カードへのデータ書き込み時には、データ送受信部２３ｂによって信号線ＤＡＴ＿ｏｕｔ［７：０］上に供給されるデータをカードとの間のＤＡＴ線（１、４、又は、８ビット幅）に出力し、カードからのデータ読み出し時には、カードとの間のＤＡＴ線上に供給されるデータを信号線ＤＡＴ＿ｉｎ［７：０］に出力する。なお、カードのＤＡＴ端子のビット幅が８ビット幅ではない場合には、カードインタフェース１３が、データのビット幅を適宜変換する。
【０１０７】
３．  動作
次に、本実施形態の動作について説明する。
図９は、コマンドをカードに発行する場合における本実施形態の動作を示すフローチャートである。ここでは、第６の様式のカードＣ６がカードスロット６に装着されており、カードＣ６にコマンド「ＣＭＤ７」（コマンドインデックス「７」（０ｘ０７））を発行するものとする。
【０１０８】
まず、メインＣＰＵ２が、ＲＯＭ３内のドライバプログラムを実行し、カードの様式（ここでは、第６の様式）及び発行しようとするコマンドのコマンドインデックス（ここでは、「７」（０ｘ０７））に基づいてカードステータスエラー選択情報（ルックアップ値）を取得し、取得したカードステータスエラー選択情報（ルックアップ値）をレジスタ２２ｊに書き込む（ステップＳ１１）。具体的には、メインＣＰＵ２は、ルックアップテーブル（図６〜図７参照）の第６番目の列（列方向の要素番号「０ｄ５」）且つ第８番目の行（行方向の要素番号「０ｄ０７」）を参照して、カードステータスエラー選択情報（ルックアップ値）「０ｄ４１」を取得することができる。
【０１０９】
なお、上記のようなカードステータスエラー選択情報（ルックアップ値）の取得処理は、Ｃ言語においては、例えば、
Ｌｏｏｋｕｐ［ＣＭＤｉｎｄｅｘ］［ｖｅｒ］
のように記述することができる。
【０１１０】
ここで、「Ｌｏｏｋｕｐ」は、ルックアップテーブル（図６〜図７参照）のテーブル名であり、「ｖｅｒ」は、ルックアップテーブルにおいてカードの様式を表す列方向の要素番号（広義には、様式特定情報、ここでは、「０ｄ５」）を表す変数であり、「ＣＭＤｉｎｄｅｘ」は、ルックアップテーブルにおいてコマンドインデックスを表す行方向の要素番号（ここでは、「０ｘ０７」）を表す変数である。なお、変数「ｖｅｒ」が０〜５となる場合、カードの様式に応じて、初期時に変数「ｖｅｒ」の値を決定可能である。変数「ｖｅｒ」が６となる場合、カードスロット６に装着されているカードが第６の様式のカードＣ６であり且つ第６の様式のカードＣ６に発行しようとしているコマンドが「ＡＣＭＤ」（拡張コマンド）であることが判明したときに変数「ｖｅｒ」の値を決定可能である。
【０１１１】
また、メインＣＰＵ２は、コマンドインデックス（ここでは、「７」（０ｘ０７））、アーギュメント、コマンドタイプ、レスポンスタイプ、データ転送タイプ、ＤＡＴ線使用フラグ、転送ブロックサイズ、転送ブロック数、及び、レスポンスチェックをレジスタ２２ａ〜２２ｉに書き込む。以上のような複数のレジスタへの複数のデータの書き込みにより、メインＣＰＵ２は、コマンドの発行をＳＤＭＭＣホストコントローラ１０に指示する（ステップＳ１２）。
【０１１２】
なお、メインＣＰＵ２は、発行しようとするコマンドがカードＣ６へのデータ書込みを伴うコマンドである場合には、コマンド発行の指示に先立って、カードＣ６へ書き込むデータをＲＡＭ４のＤＭＡ転送領域内に準備する。
【０１１３】
ＳＤＭＭＣ制御部２３内のコマンド・レスポンス送受信部２３ａは、レジスタ制御部２２からの信号及びデータに従って、カードＣ６にコマンドを発行する（ステップＳ２１）。具体的には、コマンド・レスポンス送受信部２３ａは、スタートビットを「０」、転送方向ビットを「１」とする。次に、コマンド・レスポンス送受信部２３ａは、これらのスタートビット及び転送方向ビット、レジスタ２２ａ内に格納されているコマンドインデックス（６ビット、ここでは、「７」（０ｘ０７））、並びに、レジスタ２２ｂ内に格納されているアーギュメント（３２ビット）の計４０ビットに基づいて、ＣＲＣ（７ビット）を算出する。そして、コマンド・レスポンス送受信部２３ａは、スタートビット（ここでは、「０」）、転送方向ビット（ここでは、「１」）、コマンドインデックス（６ビット）、アーギュメント（３２ビット）、ＣＲＣ（７ビット）、及び、エンドビット（ここでは、「１」）を結合した計４８ビットのコマンドを、カードインタフェース１３を介してカードＣ６に送信する。
【０１１４】
カードＣ６は、受信したコマンド（ここでは、コマンド「ＣＭＤ７」）を実行して、レスポンス（ここでは、タイプ「Ｒ１」（４８ビット））をコマンド・レスポンス送受信部２３ａに送信する（ステップＳ３１）。
【０１１５】
コマンド・レスポンス送受信部２３ａは、レスポンス（ここでは、タイプ「Ｒ１」（４８ビット））をカードインタフェース１３を介してカードＣ６から受信すると、受信したレスポンスのカードステータス（ここでは、３２ビット）をレジスタ２２ｍに書き込む。このとき、コマンド・レスポンス送受信部２３ａは、伝送エラーが発生していた場合に、伝送エラーのエラー情報をレジスタ２２ｎに書き込む。なお、この場合に、ＳＤＭＭＣホストコントローラ１０が、伝送エラーが発生したことを表す割込み信号をメインＣＰＵ２に送信するようにしても良い（ステップＳ２２）。
【０１１６】
ところで、このとき、カードステータスエラー判定部３２内のセレクタ３２ａは、メインＣＰＵ２がステップＳ１１にてレジスタ２２ｊに書き込んだカードステータスエラー選択情報（ルックアップ値）が「０ｄ４１」であるので、レジスタ制御部２２のテーブル記憶部３１内のレスポンスチェックビットテーブルの第４２番目の行（行方向の要素番号「０ｄ４１」）を参照し、チェックパターン「０ｘ０ＤＦＦ００００」を選択している。
【０１１７】
そこで、カードステータスエラー判定部３２内の論理積演算器３２ｂは、チェックパターン「０ｘ０ＤＦＦ００００」と、コマンド・レスポンス送受信部２３ａによってレジスタ２２ｍに書き込まれたカードステータスとの論理積演算（広義には、演算処理）を実行し、その演算結果としてのカードステータスエラー有無情報をレジスタ２２ｌに書き込む（ステップＳ２３）。
【０１１８】
なお、コマンド「ＣＭＤ７」を実行したカードＣ６内において何らのエラーも発生していない場合には、カードステータスとチェックパターン（ここでは、「０ｘ０ＤＦＦ００００」）との論理積演算の結果は「０」（０ｘ００００００００）となる。
一方、コマンド「ＣＭＤ７」を実行したカードＣ６内において何らかのエラーが発生している場合には、カードステータスとチェックパターンとの論理積演算の結果は「０」以外となる。なお、この場合に、ＳＤＭＭＣホストコントローラ１０が、カードステータスエラーが発生したことを表す割込み信号をメインＣＰＵ２に送信するようにしても良い（ステップＳ２４）。
【０１１９】
そして、レジスタ制御部２２は、コマンド完了フラグをレジスタ２２ｋにセットして、コマンドの完了をメインＣＰＵ２に通知する（ステップＳ２５）。このとき、レジスタ制御部２２が、コマンドの完了を通知するための割込み信号をメインＣＰＵ２に出力するようにしても良い。
【０１２０】
なお、コマンド・レスポンス送受信部２３ａは、カードＣ６に発行したコマンドがカードＣ６へのデータ書込みを伴うコマンドである場合には、カードＣ６からレスポンスを受信したときに、カードＣ６へのデータ書込みの開始をデータ送受信部２３ｂに指示する。また、コマンド・レスポンス送受信部２３ａは、カードＣ６に発行した通常コマンドがカードＣ６からのデータ読出しを伴うコマンドである場合には、カードＣ６からレスポンスを受信したときに、カードＣ６からのデータ読出しの開始をデータ送受信部２３ｂに指示する。
【０１２１】
メインＣＰＵ２は、ＳＤＭＭＣホストコントローラ１０からコマンドの完了の通知を受けると、レジスタ制御部２２のレジスタ２２ｌ内に格納されているカードステータスエラー有無情報を読み出す。
【０１２２】
先に説明したように、コマンド「ＣＭＤ７」を実行したカードＣ６内において何らのエラーも発生していない場合には、カードステータスとチェックパターン（ここでは、「０ｘ０ＤＦＦ００００」）との論理積演算の結果は「０」となる。一方、コマンド「ＣＭＤ７」を実行したカードＣ６内において何らかのエラーが発生している場合には、カードステータスとチェックパターンとの論理積演算の結果は「０」以外となる。
【０１２３】
そこで、メインＣＰＵ２は、レジスタ制御部２２内のレジスタ２２ｌから読み出したカードステータスエラー有無情報が「０」である場合には、処理を終了する（ステップＳ１３）。
【０１２４】
一方、メインＣＰＵ２は、レジスタ制御部２２内のレジスタ２２ｌから読み出したカードステータスエラー有無情報が「０」以外である場合（ステップＳ１３）には、エラー処理を実行する（ステップＳ１４）。エラー処理としては、例えば、コマンド「ＣＭＤ７」を実行したカードＣ６内においてどのようなエラーが発生したのかというエラーの内容を特定する処理を含むことが考えられる。これは、カードステータスの第２７ビット、第２６ビット、及び、第２４〜第１６ビットの計１１ビットを順次調べることで実現可能である。
【０１２５】
なお、ステップＳ１３のような条件分岐処理は、アセンブラ言語においては、例えば、
ＬＤ      ＄ｒｅｇ＿２２ｌ，ｒ１
ＢＮＺ    ＄ｅｒｒｏｒ＿ｒｏｕｔｉｎｅ
のように記述することができる。
【０１２６】
ここで、「ＬＤ」は、ＣＰＵにおいて広く一般に実装されているデータ読み込み命令であり、「＄ｒｅｇ＿２２ｌ」は、レジスタ制御部２２内のレジスタ２２ｌのアドレスであり、「ｒ１」は、メインＣＰＵ２の内部レジスタである。また、「ＢＮＺ」は、ＣＰＵにおいて広く一般に実装されている条件分岐命令であり、ＣＰＵ内部のゼロフラグ（一般に、直前の命令（ここでは、「ＬＤ」）の結果によりセット又はクリアされる）がセットされていない場合に分岐する命令である。また、「＄ｅｒｒｏｒ＿ｒｏｕｔｉｎｅ」は、エラー処理（ステップＳ１４）の先頭アドレスを示すラベルである。
【０１２７】
また、ステップＳ１３において、カードステータスエラー有無情報が「０」であるか否かを判定するのに代えて、カードステータスエラーがあったことを表す割込み信号をＳＤＭＭＣホストコントローラ１０から受信したか否かを判定するようにしても良い。
【０１２８】
以上説明したように、本実施形態によれば、様式特定情報とコマンド特定情報との組み合わせに関連付けられたエラー判定情報を取得し、エラー判定情報及び応答内容情報に基づいて、応答におけるエラーの有無をハードウェアで判定することができるようになる。これにより、ソフトウェアでエラー判定を行う場合に比べて処理速度を大幅に向上させることができる。
【０１２９】
また、本実施形態によれば、応答内容情報内のエラーに関係する部分に対して処理を行うことで、エラーの有無を確実に判定することができる。
【０１３０】
また、本実施形態によれば、複数の種類、仕様、規格、及び／又は、バージョンのデバイスに関してもエラー判定を容易に行うことができ、幅広い用途に対応可能となる。
【０１３１】
また、本実施形態によれば、複数の様式特定情報と複数のコマンド特定情報との組み合わせに関連付けて、複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを用いることで、様式特定情報とコマンド特定情報との組み合わせに関連付けられたエラー判定情報を迅速且つ容易に取得することができ、処理速度を向上させることができる。また、エラー判定情報特定情報の取得をＣＰＵとプログラム（ソフトウェア）で、エラー判定をハードウェアでそれぞれ分担することにより、コード量及びＣＰＵ負荷とハードウェア量とのバランスを適切にしながら、処理速度を向上させることができる。
【０１３２】
また、本実施形態によれば、まずエラーの有無を判定し、エラーが有った場合にエラーの内容を特定することができるので、エラーが無い場合に無駄な処理を行わずに済ませることができ、処理速度を向上させることができる。
【０１３３】
また、本実施形態によれば、簡易な演算処理でエラーの有無を判定することができ、ハードウェアの増加量を抑えながら、処理速度を向上させることができる。
【０１３４】
４．  変形例
次に、本実施形態の変形例について説明する。
第１〜第６の様式のカードＣ１〜Ｃ６に対して或るコマンドを発行し、当該コマンドの実行によりカードＣ１〜Ｃ６内においてエラーが発生した場合に、当該エラーを表すエラービットが当該コマンドに対するレスポンス内のカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンス内のカードステータスにセットされる場合がある。そして、そのような場合が起こり得るビットは、カードの様式によって異なる。本変形例は、このような場合においても迅速にエラーの有無を判定することを可能とするものである。
【０１３５】
本変形例では、ＲＡＭ４（図２参照）のテーブル記憶領域内に、図６〜図７に示すルックアップテーブルＬｏｏｋｕｐに加えて、図１０に示す直前コマンドレスポンスチェックマスクビットテーブルＭａｓｋ［ｍ］（０≦ｍ≦６）（広義には、直前コマンドエラー判定情報テーブル）を更に記憶する。
【０１３６】
例えば、第１の様式のカードＣ１において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、カードステータスのＭＳＢを第３１ビットとし、ＬＳＢを第０ビットとすると、エラービットが第３０ビット、第２７ビット、第２６ビット、及び、第２１〜第１７ビットの場合である。これらのビットの位置は、チェックパターン「０ｘ４Ｃ３Ｅ００００」（広義には、直前コマンドエラー判定情報、図１０の第１番目の列参照）で表すことができる。
【０１３７】
また、第２の様式のカードＣ２において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第３０ビット、第２７ビット、第２６ビット、第２４ビット、及び、第２１〜第１６ビットの場合である。これらのビットの位置は、チェックパターン「０ｘ４Ｄ３Ｆ００００」（広義には、直前コマンドエラー判定情報、図１０の第２番目の列参照）で表すことができる。
【０１３８】
また、第３の様式のカードＣ３において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第３０ビット、第２７ビット、第２６ビット、第２４ビット、及び、第２１〜第１６ビットの場合である。これらのビットの位置は、チェックパターン「０ｘ４Ｄ３Ｆ００００」（広義には、直前コマンドエラー判定情報、図１０の第３番目の列参照）で表すことができる。
【０１３９】
また、第４の様式のカードＣ４において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第３１ビット、第３０ビット、第２７ビット、第２６ビット、第２４ビット、及び、第２１ビット、第１９〜第１５ビット、及び、第６ビットの場合である。これらのビットの位置は、チェックパターン「０ｘＣＤ２Ｆ８０４０」（広義には、直前コマンドエラー判定情報、図１０の第４番目の列参照）で表すことができる。
【０１４０】
また、第５の様式のカードＣ５において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第３１ビット、第２７ビット、第２６ビット、第２４ビット、及び、第２１〜第１９ビット、及び、第１６ビットの場合である。これらのビットの位置は、チェックパターン「０ｘ８Ｄ３９００００」（広義には、直前コマンドエラー判定情報、図１０の第５番目の列参照）で表すことができる。
【０１４１】
また、第６の様式のカードＣ６において、或る通常コマンド（ＣＭＤ）に対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第３１〜第２９ビット、第２７ビット、第２６ビット、第２４ビット、及び、第２１〜第１９ビット、第１６ビット、及び、第１５ビットの場合である。これらのビットの位置は、チェックパターン「０ｘＥＤ３９８０００」（広義には、直前コマンドエラー判定情報、図１０の第６番目の列参照）で表すことができる。
【０１４２】
また、第６の様式のカードＣ６において、或る拡張コマンド（ＡＣＭＤ）に対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第３１〜第２９ビット、第２７ビット、第２６ビット、第２４ビット、及び、第２１〜第１９ビット、第１６ビット、及び、第１５ビットの場合である。これらのビットの位置は、チェックパターン「０ｘＥＤ３９８０００」（広義には、直前コマンドエラー判定情報、図１０の第７番目の列参照）で表すことができる。
【０１４３】
図１０に示す直前コマンドレスポンスチェックマスクビットテーブルは、カードの様式に関連付けて上記のチェックパターンを記憶したものである。なお、直前コマンドレスポンスチェックビットマスクテーブルをＲＯＭ３内に作成しておき、初期時等において、メインＣＰＵ２やＤＭＡコントローラ（図示せず）等が、直前コマンドレスポンスチェックマスクビットテーブルをＲＡＭ４内に転送するようにしても良い。また、通信回路７を用いて、直前コマンドレスポンスチェックマスクビットテーブルを参照したり、その一部又は全部を適宜更新するようにしても良い。
【０１４４】
図１１は、本変形例が、先に説明したレジスタ制御部２２（図８参照）に代えて含むレジスタ制御部４１を示す図である。
このレジスタ制御部４１は、レジスタ制御部２２と同様に、先に説明したレジスタ２２ｊ、２２ｌ、２２ｍ、及び、テーブル記憶部３１を含む。
【０１４５】
また、レジスタ制御部４１は、レジスタ制御部２２におけるカードステータスエラー判定部３２に代えて、カードステータスエラー判定部４２を含む。
さらに、レジスタ制御部４１は、レジスタ２２ｐを更に含む。
【０１４６】
レジスタ２２ｐには、イニシエート時又は初期時において、直前コマンドレスポンスチェックマスクビットテーブルの中のカードスロット６（図２参照）に装着されたカードの様式に応じたマスクパターン（チェックパターン）である直前コマンドマスク情報（広義には、直前コマンドエラー判定情報）が、メインＣＰＵ２（図２参照）により書き込まれる。例えば、カードスロット６（図２参照）に装着されたカードが第１の様式のカードＣ１である場合には、レジスタ２２ｐには、イニシエート時又は初期時において、マスクビットパターン「０ｘ４Ｃ３Ｅ００００」（図１０の第１番目の列参照）が、メインＣＰＵ２により書き込まれる。
【０１４７】
カードステータスエラー判定部４２は、カードステータスエラー判定部３２と同様に、先に説明したセレクタ３２ａ、及び、論理積演算着３２ｂを含む。
【０１４８】
また、カードステータスエラー判定部４２は、直前コマンドチェックパターン記憶部４２ａ（広義には、直前コマンドチェック情報記憶部）、論理積演算器４２ｂ、及び、論理和演算器４２ｃを更に含む。
【０１４９】
直前コマンドチェックパターン記憶部４２ａは、後に詳細に説明するようにカードステータスのエラー判定後のタイミングで、セレクタ３２ａから出力されるチェックパターンを記憶する。すなわち、直前コマンドチェックパターン記憶部４２ａには、現在発行している（又はこれから発行しようとしている）コマンド（以下、「今回コマンド」という。）の直前に発行されたコマンド（以下、「直前コマンド」という。）のチェックパターンが記憶されていることになる。また、直前コマンドチェックパターン記憶部４２ａの初期値は、初期時には直前コマンドが存在しないため、「０ｘ００００００００」とされる。さらにまた、直前発行コマンドチェックパターンは、システムリセット時等にも、ゼロクリアされる。
【０１５０】
論理積演算器４２ｂは、直前コマンドチェックパターン記憶部４２ａに記憶されている直前コマンドのチェックパターンとレジスタ２２ｐに記憶されているマスクパターンとの論理積演算を行う。この論理積演算の演算結果（以下、直前発行コマンドチェックパターンという。）は、直前コマンドのエラービットの内の今回コマンドに対するカードステータスにセットされ得るエラービットを表すことになる。
【０１５１】
論理和演算器４２ｃは、セレクタ３２ａから出力される今回コマンドのチェックパターンと論理積演算器４２ｂから出力される直前発行コマンドチェックパターンとの論理和演算を行う。この論理和演算の結果は、今回コマンドのエラービット及び直前コマンドのエラービットの内の今回コマンドに対するカードステータスにセットされ得るエラービットを表すことになる。
【０１５２】
論理積演算器３２ｂは、論理和演算器４２ｃから出力されるチェックパターンとカードステータス２２ｍに書き込まれる今回コマンドに対するカードステータスとの論理積演算を行う。
本変形例のその他の部分は、図２〜図４と同様である。
【０１５３】
図１２は、今回コマンドをカードに発行する場合における本変形例の動作を示すフローチャートである。ここでは、第１の様式のカードＣ１がカードスロット６に装着されているものとする。なお、この場合には、先に説明したように、レジスタ２２ｐには、イニシエート時又は初期時において、チェックパターン「０ｘ４Ｃ３Ｅ００００」（図１０の直前コマンドレスポンスチェックビットマスクテーブルＭａｓｋの第１番目の列参照）が、メインＣＰＵ２により書き込まれている。
【０１５４】
まず、メインＣＰＵ２（図２参照）が、ＲＯＭ３（図２参照）内のドライバプログラムを実行し、カードの様式（ここでは、第１の様式）及び今回コマンドのコマンドインデックスに基づいてカードステータスエラー選択情報（ルックアップ値）を取得し、取得したカードステータスエラー選択情報（ルックアップ値）をレジスタ２２ｊに書き込む（ステップＳ４１）。
【０１５５】
次に、メインＣＰＵ２は、コマンドインデックス、アーギュメント、コマンドタイプ、レスポンスタイプ、データ転送タイプ、ＤＡＴ線使用フラグ、転送ブロックサイズ、転送ブロック数、及び、レスポンスチェックをレジスタ２２ａ〜２２ｉに書き込むことにより、今回コマンドの発行をＳＤＭＭＣホストコントローラ１０に指示する（ステップＳ４２）。
【０１５６】
なお、メインＣＰＵ２は、今回コマンドがカードＣ１へのデータ書込みを伴うコマンドである場合には、今回コマンドの発行の指示に先立って、カードＣ１へ書き込むデータをＲＡＭ４のＤＭＡ転送領域内に準備する。
【０１５７】
ＳＤＭＭＣ制御部２３内のコマンド・レスポンス送受信部２３ａ（図３参照）は、レジスタ制御部２２からの信号及びデータに従って、カードＣ１に今回コマンドを発行する（ステップＳ５１）。
【０１５８】
カードＣ１は、受信した今回コマンドを実行して、レスポンス（以下、「今回レスポンス」という。）をコマンド・レスポンス送受信部２３ａに送信する（ステップＳ６１）。
【０１５９】
コマンド・レスポンス送受信部２３ａは、今回レスポンスをカードインタフェース１３を介してカードＣ１から受信すると、受信した今回レスポンスのカードステータスをレジスタ２２ｍ（図１１参照）に書き込む。このとき、コマンド・レスポンス送受信部２３ａは、伝送エラーが発生していた場合に、伝送エラーのエラー情報をレジスタ２２ｎ（図４参照）に書き込む。なお、この場合に、ＳＤＭＭＣホストコントローラ１０が、伝送エラーが発生したことを表す割込み信号をメインＣＰＵ２に送信するようにしても良い（ステップＳ５２）。
【０１６０】
ところで、このとき、カードステータスエラー判定部４２（図１１参照）内のセレクタ３２ａは、メインＣＰＵ２がステップＳ４１にてレジスタ２２ｊに書き込んだカードステータスエラー選択情報（ルックアップ値）に基づいて、テーブル記憶部３１内のレスポンスチェックビットテーブルの中の今回コマンドに応じた１つのチェックパターンを選択する。
【０１６１】
また、論理積演算器４２ｂは、直前コマンドチェックパターン記憶部４２ａに記憶されている直前コマンドのチェックパターンとレジスタ２２ｐに記憶されているマスクパターンとの論理積演算を行い、直前発行コマンドチェックパターンを出力している。また、論理和演算器４２ｃは、セレクタ３２ａから出力される今回コマンドのチェックパターンと論理積演算器４２ｂから出力される直前発行コマンドチェックパターンとの論理和演算を行い、コマンドチェックパターンを出力する。
【０１６２】
そして、論理積演算器３２ｂは、コマンドチェックパターンと、コマンド・レスポンス送受信部２３ａによってレジスタ２２ｍに書き込まれたカードステータスとの論理積演算を行い、その演算結果としてのカードステータスエラー有無情報をレジスタ２２ｌに書き込む（ステップＳ５３）。
【０１６３】
なお、直前コマンド及び今回コマンドを実行したカードＣ１内において何らのエラーも発生していない場合には、コマンドチェックパターンとカードステータスとの論理積演算の結果は「０」（０ｘ００００００００）となる。
一方、直前コマンド及び今回コマンドを実行したカードＣ１内において何らかのエラーが発生している場合には、コマンドチェックパターンとカードステータスとの論理積演算の結果は「０」以外となる。なお、この場合に、ＳＤＭＭＣホストコントローラ１０が、カードステータスエラーが発生したことを表す割込み信号をメインＣＰＵ２に送信するようにしても良い（ステップＳ５４）。
【０１６４】
その後、レジスタ制御部２２は、セレクタ３２ａが出力している今回コマンドのチェックパターンを直前コマンドチェックパターン４２ａに格納する（ステップＳ５５）。このチェックパターンは、今回コマンドの次のコマンドの発行時に利用されることになる。
【０１６５】
そして、レジスタ制御部２２は、コマンド完了フラグをレジスタ２２ｋ（図４参照）にセットして、コマンドの完了をメインＣＰＵ２に通知する（ステップＳ５６）。このとき、レジスタ制御部２２が、コマンドの完了を通知するための割込み信号をメインＣＰＵ２に出力するようにしても良い。
【０１６６】
なお、コマンド・レスポンス送受信部２３ａは、カードＣ１に発行したコマンドがカードＣ１へのデータ書込みを伴うコマンドである場合には、カードＣ１からレスポンスを受信したときに、カードＣ１へのデータ書込みの開始をデータ送受信部２３ｂに指示する。また、コマンド・レスポンス送受信部２３ａは、カードＣ１に発行した通常コマンドがカードＣ１からのデータ読出しを伴うコマンドである場合には、カードＣ１からレスポンスを受信したときに、カードＣ１からのデータ読出しの開始をデータ送受信部２３ｂ（図３参照）に指示する。
【０１６７】
メインＣＰＵ２は、ＳＤＭＭＣホストコントローラ１０からコマンドの完了の通知を受けると、レジスタ制御部２２のレジスタ２２ｌ内に格納されているカードステータスエラー有無情報を読み出す。
【０１６８】
先に説明したように、直前コマンド及び今回コマンドを実行したカードＣ１内において何らのエラーも発生していない場合には、コマンドチェックパターンとカードステータスとの論理積演算の結果は「０」となる。一方、直前コマンド及び今回コマンドを実行したカードＣ１内において何らかのエラーが発生している場合には、コマンドチェックパターンとカードステータスとの論理積演算の結果は「０」以外となる。
【０１６９】
そこで、メインＣＰＵ２は、レジスタ制御部２２内のレジスタ２２ｌから読み出したカードステータスエラー有無情報が「０」である場合には、処理を終了する（ステップＳ４３）。
【０１７０】
一方、メインＣＰＵ２は、レジスタ制御部２２内のレジスタ２２ｌから読み出したカードステータスエラー有無情報が「０」以外である場合（ステップＳ４３）には、エラー処理を実行する（ステップＳ４４）。エラー処理としては、例えば、直前コマンド及び今回コマンドを実行したカードＣ１内においてどのようなエラーが発生したのかというエラーの内容を特定する処理を含むことが考えられる。これは、カードステータス内のビットを順次調べることで実現可能である。
【０１７１】
また、ステップＳ４３において、カードステータスエラー有無情報が「０」であるか否かを判定するのに代えて、カードステータスエラーがあったことを表す割込み信号をＳＤＭＭＣホストコントローラ１０から受信したか否かを判定するようにしても良い。
【０１７２】
以上説明したように、本変形例によれば、直前コマンドに対するエラービットが今回レスポンスにセットされた場合であっても、エラーの有無を迅速且つ容易に判定することが可能である。
【０１７３】
また、本変形例によれば、簡易な演算処理で直前コマンドのエラーの有無を判定することができ、ハードウェアの増加量を抑えながら、処理速度を向上させることができる。
【０１７４】
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。また図２〜図４、図８、及び、図１１の各図において、すべてのブロックを含める必要はなく、その一部のブロックを省略する構成にしてもよい。
【０１７５】
例えば、電子機器、ホストコントローラの構成は、図２〜図４、図８、及び、図１１等で説明した構成に限定されず、種々の変形実施が可能である。また本発明のエラー判定手法も本実施形態で説明したものに限定されるものではなく、種々の変形実施が可能である。
【０１７６】
また、明細書又は図面中の記載において広義な用語（電子機器、ホストコントローラ、デバイス、情報処理装置、記憶回路、第１の回路等）として引用された用語（ＳＤＭＭＣホストコントローラ、ＳＤカード（登録商標）、ＣＰＵ、ＲＡＭ等）は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
【０１７７】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０１７８】
また、本発明は、ＭＭＣ（登録商標）及びＳＤカード（登録商標）を発展した仕様やこれらのカードと同様の思想に基づく種類、仕様、規格、及び／又は、バージョンに準拠したカードのエラー判定にも適用できる。
【図面の簡単な説明】
【０１７９】
【図１】コマンド及びレスポンスのフォーマットの一例を示す図。
【図２】本実施形態の電子機器の構成例の図。
【図３】図１のカードコントローラの内部構成のブロック図。
【図４】図２のレジスタ制御部内のレジスタマップを示す図。
【図５】図２のＲＡＭ内に記憶されるレスポンスチェックビットテーブルを示す図。
【図６】図２のＲＡＭ内に記憶されるルックアップテーブルを示す図。
【図７】図２のＲＡＭ内に記憶されるルックアップテーブルを示す図。
【図８】図３のカードステータスエラー判定部の内部構成のブロック図。
【図９】本実施形態の動作例のフロー図。
【図１０】図２のＲＡＭ内に記憶される直前コマンドレスポンスチェックマスクビッ    トテーブルを示す図。
【図１１】本実施形態の変形例に含まれるレジスタ制御部の内部構成のブロック図。
【図１２】本実施形態の変形例の動作例のフロー図。
【符号の説明】
【０１８０】
１  電子機器、２  メインＣＰＵ、３  ＲＯＭ、４  ＲＡＭ、５  カードコントローラ、６  カードスロット、７  通信回路、１０  ＳＤＭＭＣホストコントローラ、１１  ＣＰＵインタフェース、１２  ＤＭＡインタフェース、１３  カードインタフェース、２１  クロック出力部、２２  レジスタ制御部、２２ａ〜２２ｐ  レジスタ、２３  ＳＤＭＭＣ制御部、２３ａ  コマンド・レスポンス送受信部、２３ｂ  データ送受信部、２４  ＤＭＡ制御部、２４ａ  ＦＩＦＯバッファ、３１  テーブル記憶領域、３２、４２  カードステータスエラー判定部、３２ａ  セレクタ、３２ｂ、４２ｂ  論理積演算器、４２ａ  直前コマンドチェックパターン記憶部、４２ｃ  論理和演算器、Ｃ１〜Ｃ６  カード
【図１】
2008293077.tif 000003
【図２】
2008293077.tif 000004
【図３】
2008293077.tif 000005
【図４】
2008293077.tif 000006
【図５】
2008293077.tif 000007
【図６】
2008293077.tif 000008
【図７】
2008293077.tif 000009
【図８】
2008293077.tif 000010
【図９】
2008293077.tif 000011
【図１０】
2008293077.tif 000012
【図１１】
2008293077.tif 000013
【図１２】
2008293077.tif 000014