JP2008293076A - エラー判定プログラム、エラー判定方法、及び、電子機器 - Google Patents
エラー判定プログラム、エラー判定方法、及び、電子機器 Download PDFInfo
- Publication number
- JP2008293076A JP2008293076A JP2007135257A JP2007135257A JP2008293076A JP 2008293076 A JP2008293076 A JP 2008293076A JP 2007135257 A JP2007135257 A JP 2007135257A JP 2007135257 A JP2007135257 A JP 2007135257A JP 2008293076 A JP2008293076 A JP 2008293076A
- Authority
- JP
- Japan
- Prior art keywords
- command
- error determination
- response
- information
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
【課題】処理速度の向上等が可能なエラー判定プログラム等を提供する。
【解決手段】メインCPU2は、カードスロット6に装着されたカードが実行可能な複数のコマンドの中の所望のコマンドをカードに発行することをSDMMCホストコントローラ10に指示し、カードのデバイスの様式と所望のコマンドとの組み合わせに関連付けられたチェックパターンをレスポンスチェックビットテーブルの中から取得し、カードの所望のコマンドに対するレスポンス内のカードステータスをSDMMCホストコントローラ10から取得し、チェックパターン及びカードステータスに基づいて、レスポンスにおけるエラーの有無を判定する。
【選択図】図8
【解決手段】メインCPU2は、カードスロット6に装着されたカードが実行可能な複数のコマンドの中の所望のコマンドをカードに発行することをSDMMCホストコントローラ10に指示し、カードのデバイスの様式と所望のコマンドとの組み合わせに関連付けられたチェックパターンをレスポンスチェックビットテーブルの中から取得し、カードの所望のコマンドに対するレスポンス内のカードステータスをSDMMCホストコントローラ10から取得し、チェックパターン及びカードステータスに基づいて、レスポンスにおけるエラーの有無を判定する。
【選択図】図8
Description
本発明は、様式が異なる複数のデバイスを装着可能な電子機器、そのような電子機器において実行されるエラー判定プログラム、及び、エラー判定方法に関する。
パーソナルコンピュータや多機能端末機などの外部記憶メディアの1つとして、標準化団体であるMMCA(MultiMedia Card Association)が標準化したマルチメディアカード(登録商標)やSDA(SD Card Association)が標準化したSD(Secure Digital)カード(登録商標)などが広く知られており、デジタルビデオカメラの静止画像記録、携帯電話装置のデータ記録、携帯音楽プレーヤの音楽記録などに用いられている。
なお、関連する技術として、下記の特許文献1には、インタフェース制御対象機器のコマンド仕様などに代表されるインタフェース仕様の追加・変更に対して対処が容易なデータプロセッサ等が開示されている。
特開2002−342256号公報
上記したように、現在、種々のカードが用いられており、また、これらのカードの仕様の各々には、複数のバージョンが存在している。さらに、カードの仕様、バージョンの各々において、多数のコマンドが規定されている。そのため、上記したカードを装着可能な電子機器等において、カードの種類、バージョン、コマンド等の組み合わせに応じてレスポンスのエラー判定処理を行わなければならず、判定箇所も多くなるため、処理が複雑となり、処理速度が遅くなるという問題があった。
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、上記したカードを装着可能な電子機器等における処理を簡素化するとともに、処理負荷を軽減すること等が可能なエラー判定プログラム、エラー判定方法、及び、電子機器を提供することにある。
上記課題を解決するために本発明は、情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部と、情報処理装置と前記デバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、デバイス装着部に装着可能な複数のデバイスの複数の様式とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、デバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する記憶回路と、を含む電子機器において情報処理装置に実行させるためのプログラムであって、デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドをデバイス装着部に装着されたデバイスに発行することをホストコントローラに指示する手順と、デバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報をエラー判定情報テーブルの中から取得する手順と、デバイス装着部に装着されたデバイスの所望のコマンドに対する応答の内容に関する応答内容情報をホストコントローラから取得する手順と、エラー判定情報及び応答内容情報に基づいて、応答におけるエラーの有無を判定する手順と、を情報処理装置に実行させるためのエラー判定プログラムに関係する。
本発明によれば、デバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報及び所望のコマンドに対する応答の内容に関する応答内容情報に基づいて、応答におけるエラーの有無を容易に判定することができるようになる。これにより、処理を簡素化でき、コード量を減らすことができ、プログラムの可読性を向上させることができ、処理速度を向上させることができる。
また本発明に係るエラー判定プログラムでは、エラー判定情報が、応答内容情報内のエラーに関する1つ又は複数の部分を特定する情報であり、情報処理装置が、応答内容情報内のエラー判定情報によって特定される1つ又は複数の部分に基づいて、応答におけるエラーの有無を判定するようにしても良い。
本発明によれば、応答内容情報内のエラーに関係する部分に対して処理を行うことで、エラーの有無を確実に判定することができる。
また本発明に係るエラー判定プログラムでは、デバイス装着部が、複数の種類、仕様、規格、及び/又は、バージョンのデバイスを装着可能であり、記憶回路に記憶されているエラー判定情報テーブルが、デバイス装着部に装着可能な複数のデバイスの種類、仕様、規格、及び/又は、バージョンとデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、デバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含み、情報処理装置が、デバイス装着部に装着されたデバイスの種類、仕様、規格、及び/又は、バージョンと所望のコマンドとの組み合わせに関連付けられたエラー判定情報をエラー判定情報テーブルの中から取得するようにしても良い。
本発明によれば、複数の種類、仕様、規格、及び/又は、バージョンのデバイスに関してもエラー判定を容易に行うことができ、幅広い用途に対応可能となる。
また本発明に係るエラー判定プログラムでは、記憶回路に記憶されているエラー判定情報テーブルに含まれている複数のエラー判定情報の内の少なくとも1つが、デバイス装着部に装着可能な複数のデバイスの様式とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの複数の組み合わせに関連付けられているようにしても良い。
本発明によれば、複数の様式及び/又はコマンド間でエラー判定情報を共通化でき、エラー判定情報テーブルのサイズを小さくすることができ、記憶回路の回路規模を削減することができる。
また本発明に係るエラー判定プログラムでは、記憶回路が、デバイス装着部に装着可能な複数のデバイスの様式をそれぞれ特定する複数の様式特定情報とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドをそれぞれ特定する複数のコマンド特定情報との組み合わせに関連付けて、エラー判定情報テーブル内の複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを更に記憶し、情報処理装置が、デバイス装着部に装着されたデバイスの様式を特定する様式特定情報と所望のコマンドを特定するコマンド特定情報との組み合わせに関連付けられたエラー判定情報特定情報をエラー判定情報特定情報テーブルの中から取得し、当該エラー判定情報特定情報によって特定されるエラー判定情報をエラー判定情報テーブルの中から取得するようにしても良い。
本発明によれば、様式特定情報とコマンド特定情報との組み合わせに関連付けられたエラー判定情報を迅速且つ容易に取得することができるので、処理速度を向上させることができる。
また本発明に係るエラー判定プログラムでは、応答におけるエラーが有ったものと判定された場合に、エラー判定情報及び応答内容情報に基づいて、応答におけるエラーの内容を特定する手順を情報処理装置に更に実行させるようにしても良い。
本発明によれば、まずエラーの有無を判定し、エラーが有った場合にエラーの内容を特定することができるので、エラーが無い場合に無駄な処理を行わずに済ませることができ、処理速度を向上させることができる。
また本発明に係るエラー判定プログラムでは、エラー判定情報がビットパターンであり、情報処理装置が、エラー判定情報と応答内容情報とに論理積演算処理を行い、その結果がゼロであるか否かによって、応答におけるエラーの有無を判定するようにしても良い。
本発明によれば、簡易な演算処理でエラーの有無を判定することができ、処理速度を向上させることができる。
また本発明に係るエラー判定プログラムでは、記憶回路が、デバイス装着部に装着可能な複数のデバイスの複数の様式にそれぞれ対応し、デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報をそれぞれ含む複数のエラー判定情報テーブルを記憶し、情報処理装置が、複数のエラー判定情報テーブルの中からデバイス装着部に装着されたデバイスの様式に対応するエラー判定情報テーブルを選択し、当該エラー判定情報テーブルの中から所望のコマンドに対する応答におけるエラーの有無の判定に利用するためのエラー判定情報を取得し、当該エラー判定情報及び応答内容情報に基づいて、応答におけるエラーの有無を判定するようにしても良い。
本発明によれば、少ないテーブル参照回数、時間、及び、コード量で、応答におけるエラーの有無を判定することができる。
また本発明に係るエラー判定プログラムでは、記憶回路が、デバイス装着部に装着可能な複数のデバイスの複数の様式に関連付けて、デバイス装着部に装着可能な複数のデバイスに複数のコマンドが発行される場合に複数のコマンドの内の1つのコマンドに対する応答における複数のコマンドの内の1つのコマンドの直前に発行されるコマンドに対するエラーの有無の判定に利用するための複数の直前コマンドエラー判定情報を含む直前コマンドエラー判定情報テーブルを更に記憶し、情報処理装置が、デバイス装着部に装着されたデバイスの様式に関連付けられた直前コマンドエラー判定情報を直前コマンドエラー判定情報テーブルの中から取得し、デバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報、応答内容情報、直前コマンドエラー判定情報、及び、デバイス装着部に装着されたデバイスの様式と所望のコマンドの直前に発行されたコマンドとの組み合わせに関連付けられたエラー判定情報に基づいて、所望のコマンドに対する応答におけるエラーの有無を判定するようにしても良い。
本発明によれば、所望のコマンドの直前に発行されたコマンドに対するエラーが所望のコマンドに対する応答にセットされた場合であっても、エラーの有無を迅速且つ容易に判定することができる。
また本発明に係るエラー判定プログラムでは、情報処理装置が、所望のコマンドの直前に発行されたコマンドに対する応答におけるエラーの有無を判定した後に、デバイス装着部に装着されたデバイスの様式と所望のコマンドの直前に発行されたコマンドとの組み合わせに関連付けられたエラー判定情報とデバイス装着部に装着されたデバイスの様式に関連付けられた直前コマンドエラー判定情報とに基づいて所望のコマンドに対する応答における所望のコマンドの直前に発行されたコマンドに対するエラーの有無の判定に利用するための直前発行コマンドチェック情報を作成又は更新して記憶し、デバイス装着部に装着されたデバイスの所望のコマンドに対する応答の内容に関する応答内容情報をホストコントローラから取得した後に、デバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報、応答内容情報、及び、直前発行コマンドチェック情報に基づいて、所望のコマンドに対する応答におけるエラーの有無を判定するようにしても良い。
本発明によれば、所望のコマンドの直前に発行されたコマンドに対するエラーの有無をより迅速に判定することができる。
また本発明は、情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部と、情報処理装置とデバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、デバイス装着部に装着可能な複数のデバイスの様式とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、デバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する記憶回路と、を含む電子機器において情報処理装置が実行する方法であって、デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドをデバイス装着部に装着されたデバイスに発行することをホストコントローラに指示する工程と、デバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報をエラー判定情報テーブルの中から取得する工程と、デバイス装着部に装着されたデバイスからの所望のコマンドに対する応答の内容に関する応答内容情報をホストコントローラから取得する工程と、エラー判定情報及び応答内容情報に基づいて、応答におけるエラーの有無を判定する工程と、を含むエラー判定方法に関係する。
また本発明は、情報処理装置と、様式が異なる複数のデバイスを装着可能なデバイス装着部と、情報処理装置とデバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、デバイス装着部に装着可能な複数のデバイスの複数の様式とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、デバイス装着部に装着可能な複数のデバイスの複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する記憶回路と、を含む電子機器であって、情報処理装置が、デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドをデバイス装着部に装着されたデバイスに発行することをホストコントローラに指示する工程と、デバイス装着部に装着されたデバイスの様式と所望のコマンドとの組み合わせに関連付けられたエラー判定情報をエラー判定情報テーブルの中から取得する工程と、デバイス装着部に装着されたデバイスからの所望のコマンドに対する応答の内容に関する応答内容情報をホストコントローラから取得する工程と、エラー判定情報及び応答内容情報に基づいて、応答におけるエラーの有無を判定する工程と、を実行することを特徴とする電子機器に関係する。
また本発明に係る電子機器では、記憶回路が、デバイス装着部に装着可能な複数のデバイスの複数の様式をそれぞれ特定する複数の様式特定情報とデバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドをそれぞれ特定する複数のコマンド特定情報との組み合わせに関連付けて、エラー判定情報テーブル内の複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを更に記憶し、情報処理装置が、デバイス装着部に装着されたデバイスの様式を特定する様式特定情報と所望のコマンドを特定するコマンド特定情報との組み合わせに関連付けられたエラー判定情報特定情報をエラー判定情報特定情報テーブルの中から取得し、当該エラー判定情報特定情報によって特定されるエラー判定情報をエラー判定情報テーブルの中から取得するようにしても良い。
また本発明に係る電子機器では、通信回路を更に含み、通信回路を介して記憶回路に記憶されているエラー判定情報テーブル及び/又はエラー判定情報特定情報テーブルを更新及び/又は書き換え可能としても良い。
本発明によれば、デバイスの様式の追加・変更や、コマンドの追加・変更や、エラー判定情報テーブル及び/又はエラー判定情報特定情報テーブルのデバッグ等に柔軟に対応可能となる。
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
1. コマンド及びレスポンス
1.1 コマンド
まず、SDカード(登録商標)の仕様におけるコマンドについて説明する。
図1(a)は、SDカード(登録商標)の仕様におけるコマンドのフォーマットを示す図である。図1(a)に示すように、コマンドは、スタートビット(1ビット)、転送方向ビット(1ビット)、コマンドインデックス(6ビット)、アーギュメント(32ビット)、CRC(7ビット)、及び、エンドビット(1ビット)を含み、計48ビットである。この48ビットのコマンドが、CMD信号線を介して、ホスト側回路からカードにシリアル転送される。
1.1 コマンド
まず、SDカード(登録商標)の仕様におけるコマンドについて説明する。
図1(a)は、SDカード(登録商標)の仕様におけるコマンドのフォーマットを示す図である。図1(a)に示すように、コマンドは、スタートビット(1ビット)、転送方向ビット(1ビット)、コマンドインデックス(6ビット)、アーギュメント(32ビット)、CRC(7ビット)、及び、エンドビット(1ビット)を含み、計48ビットである。この48ビットのコマンドが、CMD信号線を介して、ホスト側回路からカードにシリアル転送される。
転送方向ビットは、コマンドのようにホスト側回路からカードへ転送される場合には「1」であり、後述するレスポンスのようにカードからホスト側回路へ転送される場合には「0」である。
コマンドインデックスは、6ビットであり、0(0x00)〜63(0x3F)までの値をとり得る。このコマンドインデックスにより特定されるコマンドが、カードにおいて実行される。
アーギュメントは、32ビットであり、コマンドインデックスにより特定されるコマンドの実行に必要な各種の情報を含む。
CRC(Cyclic Redundancy Code)は、ホスト側回路とカードとの間の転送エラーをチェックするために、スタートビット、転送方向ビット、コマンドインデックス、及び、アーギュメントの計40ビットに基づいて算出され、アーギュメントの後ろに付加される。
なお、MMC(MultiMedia Card)(登録商標)規格におけるコマンドのフォーマットも、図1(a)に示すフォーマットと同様である。但し、コマンドインデックスにより特定されるコマンドの処理内容がSDカード(登録商標)と異なるものもある。
1.2 レスポンス
次に、SDカード(登録商標)の仕様におけるレスポンスについて説明する。
図1(b)は、SDカード(登録商標)の仕様におけるレスポンスの内の「R1」というタイプのレスポンスのフォーマットを示す図である。図1(b)に示すように、レスポンスは、スタートビット(1ビット)、転送方向ビット(1ビット)、コマンドインデックス(6ビット)、カードステータス(32ビット)、CRC(7ビット)、及び、エンドビット(1ビット)を含み、計48ビットである。この48ビットのレスポンスが、CMD信号線を介して、カードからホスト側回路にシリアル転送される。
次に、SDカード(登録商標)の仕様におけるレスポンスについて説明する。
図1(b)は、SDカード(登録商標)の仕様におけるレスポンスの内の「R1」というタイプのレスポンスのフォーマットを示す図である。図1(b)に示すように、レスポンスは、スタートビット(1ビット)、転送方向ビット(1ビット)、コマンドインデックス(6ビット)、カードステータス(32ビット)、CRC(7ビット)、及び、エンドビット(1ビット)を含み、計48ビットである。この48ビットのレスポンスが、CMD信号線を介して、カードからホスト側回路にシリアル転送される。
転送方向ビットは、レスポンスのようにカードからホスト側回路へ転送される場合には「0」である。
コマンドインデックスは、6ビットであり、ホスト側回路からカードに転送されたコマンド内のコマンドインデックスを復唱したものである。
カードステータスは、32ビットであり、コマンドインデックスにより特定されるコマンドを実行したカード内のステータスに関する情報を含む。
CRCは、カードとホスト側回路との間の転送エラーをチェックするために、スタートビット、転送方向ビット、コマンドインデックス、及び、カードステータスの計40ビットに基づいて算出され、カードステータスの後ろに付加される。
SDカード(登録商標)の仕様において、コマンドのフォーマットは上記した1つ(図1(a)参照)が規定されているが、レスポンスのタイプは、上記した「R1」というタイプのほか、「R1b」、「R2」、「R3」、「R6」、及び、「R7」というタイプが規定されている。そして、これら6種類のタイプの内のどのタイプのレスポンスが返されるかは、コマンド毎に規定されている。多数のコマンドに対しては、「R1」というタイプのレスポンスが返されることとして規定されており、少数のコマンドに対して、「R1b」、「R2」、「R3」、「R6」、「R7」というタイプのレスポンスが返されることとして規定されている。なお、レスポンスが返されないこととして規定されているコマンドもある。
「R1b」というタイプのレスポンスは、そのフォーマットは上記した「R1」というタイプのレスポンスのフォーマット(図1(b)参照)と同様であるが、オプショナルのビジー信号がデータ線D0上に出力される点で、「R1」というタイプのレスポンスと異なっている。
「R2」というタイプのレスポンスは、カード内部のCIDレジスタ(128ビット)又はCSDレジスタ(128ビット)を読み出すためのコマンドに対して返されるレスポンスであり、そのフォーマットは、計136ビット長である。
「R3」というタイプのレスポンスは、カード内部のOCRレジスタ(32ビット)を読み出すためのコマンドに対して返されるレスポンスであり、そのフォーマットは、計48ビット長である。
「R6」というタイプのレスポンスは、新たに発行されたRCA(Relative Card Address)を返すためのレスポンスであり、そのフォーマットは、計48ビット長である。
「R7」というタイプのレスポンスは、カードがサポートする電圧の情報を返すためのレスポンスであり、そのフォーマットは、計48ビット長である。
なお、MMC(MultiMedia Card)(登録商標)規格におけるレスポンスのフォーマットも、SDカード(登録商標)規格におけるフォーマットと同様である。
1.3 エラー判定
図1(b)に示すカードステータス(32ビット)の内の幾つかのビットは、未使用又はリザーブ(将来の使用のために留保)されているが、他のビットは、カード内の各種のステータスをそれぞれ表すものとして規定されている。そして、コマンドの実行によりカード内に1つ又は複数のエラー(以下、「カードステータスエラー」という。)が発生した場合には、発生したエラーに対応する1つ又は複数のビットが「1」にセットされる。コマンドの実行によりどのようなカードステータスエラーが発生し得て、その結果としてどのビットが「1」にセットされ得るのかは、コマンド毎に異なっており、全てのコマンドで同一ではない。そのため、ホスト側回路は、カードに発行したコマンドに応じた数及び位置のビット(以下、「エラービット」という。)を逐次チェックすることでカードステータスエラーの判定を行う必要があり、判定箇所も多くなるため、処理が複雑となり、処理速度が遅くなってしまっていた。特に、種類やバージョンの異なるカードを装着可能な電子機器の場合、種類やバージョンによってエラービットの位置が異なることが多いため、処理が更に複雑となり、処理負荷が更に重く、処理時間が更に掛かってしまっていた。
図1(b)に示すカードステータス(32ビット)の内の幾つかのビットは、未使用又はリザーブ(将来の使用のために留保)されているが、他のビットは、カード内の各種のステータスをそれぞれ表すものとして規定されている。そして、コマンドの実行によりカード内に1つ又は複数のエラー(以下、「カードステータスエラー」という。)が発生した場合には、発生したエラーに対応する1つ又は複数のビットが「1」にセットされる。コマンドの実行によりどのようなカードステータスエラーが発生し得て、その結果としてどのビットが「1」にセットされ得るのかは、コマンド毎に異なっており、全てのコマンドで同一ではない。そのため、ホスト側回路は、カードに発行したコマンドに応じた数及び位置のビット(以下、「エラービット」という。)を逐次チェックすることでカードステータスエラーの判定を行う必要があり、判定箇所も多くなるため、処理が複雑となり、処理速度が遅くなってしまっていた。特に、種類やバージョンの異なるカードを装着可能な電子機器の場合、種類やバージョンによってエラービットの位置が異なることが多いため、処理が更に複雑となり、処理負荷が更に重く、処理時間が更に掛かってしまっていた。
2. 構成
図2に、以上のような問題を解決できる本実施形態の電子機器1の構成例を示す。図2に示すように、この電子機器1は、各種コマンドの発行指示やデータの転送指示やプログラムの実行を行うメインCPU(広義には、情報処理装置)2と、プログラムやデータを記憶するROM3と、データを記憶するRAM(広義には、記憶回路)4と、複数の様式(種類、仕様、規格、及び/又は、バージョンを含む。)のカード(広義には、デバイス)を挿入可能なカードスロット(広義には、デバイス装着部)6と、メインCPU2からの指示に応じてカードスロット6に装着されたカードへのコマンド発行やデータ転送等を行うカードコントローラ5と、外部機器との間で有線又は無線通信を行うための通信回路7とを含む。メインCPU2、ROM3、RAM4、カードコントローラ5、及び、通信回路7は、バスB1によって接続されている。
図2に、以上のような問題を解決できる本実施形態の電子機器1の構成例を示す。図2に示すように、この電子機器1は、各種コマンドの発行指示やデータの転送指示やプログラムの実行を行うメインCPU(広義には、情報処理装置)2と、プログラムやデータを記憶するROM3と、データを記憶するRAM(広義には、記憶回路)4と、複数の様式(種類、仕様、規格、及び/又は、バージョンを含む。)のカード(広義には、デバイス)を挿入可能なカードスロット(広義には、デバイス装着部)6と、メインCPU2からの指示に応じてカードスロット6に装着されたカードへのコマンド発行やデータ転送等を行うカードコントローラ5と、外部機器との間で有線又は無線通信を行うための通信回路7とを含む。メインCPU2、ROM3、RAM4、カードコントローラ5、及び、通信回路7は、バスB1によって接続されている。
ROM3は、例えば、リアルタイムOS(オペレーティングシステム)プログラムや、各種のアプリケーションプログラムや、カードコントローラ5を操作するためのドライバプログラム等を記憶しており、メインCPU2は、これらのプログラムを適宜実行する。
RAM4は、メインCPU2がワークエリアとして使用する作業領域や、カードスロット6に挿入されたカードとの間のデータのDMA転送のために用いられるDMA転送領域や、カードスロット6に装着可能なカードの様式及びカードスロット6に装着可能なカードが実行可能な複数のコマンドに関連付けて、カードスロット6に装着可能なカードの複数のコマンドに対するカードステータスエラーの判定に利用可能な複数のチェックパターン(広義には、エラー判定情報)を格納したレスポンスチェックビットテーブル(広義には、エラー判定情報テーブル)や、レスポンスチェックビットテーブル内の所要のテーブル要素を迅速に決定するためのルックアップテーブル(広義には、エラー判定情報特定情報テーブル)等を記憶するテーブル記憶領域を有する。なお、これらのテーブルについては、後で詳細に説明する。
カードスロット6は、MMC(MultiMedia Card)(登録商標)のバージョン1.0〜1.2又は1.4の仕様に準拠したカード(以下、「第1の様式のカード」という。)C1、MMC(登録商標)のバージョン2.0〜2.2の仕様に準拠したカード(以下、「第2の様式のカード」という。)C2、MMC(登録商標)のバージョン3.0〜3.31の仕様に準拠したカード(以下、「第3の様式のカード」という。)C3、MMC(登録商標)のバージョン4.0〜4.2の仕様に準拠したカード(以下、「第4の様式のカード」という。)C4、SD(登録商標)のバージョン1.01の仕様に準拠したカード(以下、「第5の様式のカード」という。)C5、SD(登録商標)のバージョン1.10又は2.00の仕様に準拠したカード(以下、「第6の様式のカード」という。)C6を装着可能である。なお、本願においては、これらのカードを総称する場合に、SDMMCカードと言う。
本実施形態においては、上記第1〜第6の様式のカードC1〜C6を装着可能としているが、更に他の種類、仕様、規格、及び/又は、バージョンのデバイス(例えば、SDIOデバイス、CE−ATAデバイス等)を装着可能とすることも可能である。
なお、カードスロット6に装着されたカードの様式は、イニシエートで得られる情報やカード内部のレジスタ(CIDレジスタ、CSDレジスタ等)を読み出して得られる情報に基づいて、特定可能である。メインCPU2は、イニシエート時又は初期時において、そのようにして特定したカードの様式を表すデータを、RAM4に書き込む。例えば、第6の様式のカードC6がカードスロット6に装着されている場合には、メインCPU2は、初期時において、コマンド「CMD2」(コマンドインデックス2(0x02))等を第6の様式のカードC6に発行することで、CIDレジスタ等を読み出すことができる。このようなカードの様式の特定はそれぞれの仕様に基づいて可能であるので、ここでは詳細な説明を省略する。
カードコントローラ5は、メインCPU2からの指示に応じて、メインCPU2とカードスロット6に装着されたカードとの間の媒介を行う。カードコントローラ5とカードスロット6との間は、CLK線(クロック供給用信号線)、CMD線(コマンド用信号線)、及び、DAT線(データ用信号線)によって接続されている。
CLK線は、カードコントローラ5から第1〜第6の様式のカードC1〜C6へクロック信号を送信するための信号線である。カードコントローラ5から第1〜第6の様式のカードC1〜C6へのコマンドの転送、及びカードコントローラ5と第1〜第6の様式のカードC1〜C6との間のデータ転送等は、このクロック信号に同期して実行される。
CMD線は、カードコントローラ5から第1〜第6の様式のカードC1〜C6へのコマンドの転送、及び第1〜第6の様式のカードC1〜C6からカードコントローラ5へのレスポンスの転送に使用される1ビット幅の信号線である。
DAT線は、カードコントローラ5と第1〜第6の様式のカードC1〜C6のDAT端子との間のデータ転送に使用される双方向信号線である。なお、カードのDAT端子の数(ビット幅)は、第1〜第4の様式のカードC1〜C4の場合、1、4、又は、8個であり、第5〜第6の様式のカードC5〜C6の場合、1又は4個である。
DAT線は、カードコントローラ5と第1〜第6の様式のカードC1〜C6のDAT端子との間のデータ転送に使用される双方向信号線である。なお、カードのDAT端子の数(ビット幅)は、第1〜第4の様式のカードC1〜C4の場合、1、4、又は、8個であり、第5〜第6の様式のカードC5〜C6の場合、1又は4個である。
なお、電子機器1が、入力装置、表示装置(LCD、有機ELディスプレイ等)、DMAコントローラ等を更に含んでいても良い。
図3は、カードコントローラ5の内部構成を示すブロック図である。図3に示すように、カードコントローラ5は、SDMMCホストコントローラ(広義には、ホストコントローラ)10と、SDMMCホストコントローラ10とメインCPU2(図2参照)との間の信号の送受信を行うCPUインタフェース11と、SDMMCホストコントローラ10とRAM4(図2参照)との間の信号の送受信を行うDMAインタフェース12と、SDMMCホストコントローラ10とカードスロット6(図2参照)に装着されたカードとの間の信号の送受信を行うカードインタフェース13とを含む。
SDMMCホストコントローラ10は、クロック出力部21と、レジスタ制御部22と、SDMMC制御部23と、DMA制御部24とを含んでいる。なお、SDMMCホストコントローラ10を半導体チップ上に集積して、半導体集積回路としても良い。
クロック出力部21は、クロック信号SDCLKをカードインタフェース13を介してカードスロット6に装着されたカードに供給する。カードに供給するクロック信号SDCLKは、例えば、発振回路(図示せず)によって発生され或いは外部から供給されるシステムクロック信号をそのまま或いは分周して取得することができる。なお、クロック出力部21のクロック信号SDCLKのカードへの出力の供給開始及び供給停止を、メインCPU2やSDMMC制御部23等から制御可能としても良い。
レジスタ制御部22は、メインCPU2から書き込み及び/又は読み出し可能な複数のレジスタを有しており、これらのレジスタの制御を行う。メインCPU2は、これらのレジスタにCPUインタフェース11を介して情報を書き込むことにより、カードへのコマンド発行をSDMMCコントローラ10に行わせることができる。また、メインCPU2は、これらのレジスタからCPUインタフェース11を介して情報を読み出すことにより、発行したコマンドに対するカードからのレスポンスを取得することができる。なお、レジスタ制御部22内のレジスタは、SDMMCホストコントローラ10内の他の回路ブロックから書き込み及び/又は読み出し可能としても良い。
図4は、レジスタ制御部22内のレジスタマップの一例を示す図である。図4に示す複数のレジスタの内のレジスタ22a〜22iは、メインCPU2によって書き込まれ、SDMMCホストコントローラ10内の回路によって読み出されるレジスタであり、レジスタ22l〜22oは、SDMMCホストコントローラ10内の回路によって書き込まれ、メインCPU2によって読み出されるレジスタである。
レジスタ22aは、発行するコマンドのコマンドインデックス(広義には、コマンド特定情報又は指示情報)を書き込むためのレジスタであり、レジスタ22bは、発行するコマンドのアーギュメント(広義には、指示情報)を書き込むためのレジスタである。
レジスタ22cは、発行するコマンドのタイプ(Normal、Suspend、Resume、Abort等)(広義には、指示情報)を書き込むためのレジスタであり、レジスタ22dは、発行するコマンドに対するレスポンスのタイプ(レスポンス無し、136ビットレスポンス(前述した「R2」タイプに相当)、48ビットレスポンス(前述した「R1」、「R3」等のタイプに相当)、RespBusy(前述した「R1b」等のタイプに相当)等)(広義には、指示情報)を書き込むためのレジスタである。
レジスタ22e〜22hは、発行するコマンドがデータ転送を伴うコマンドである場合に用いられるレジスタである。レジスタ22eは、データ転送タイプ(Single、Infinite、Multiple、Stream等)(広義には、指示情報)を書き込むためのレジスタであり、レジスタ22fは、データ転送のためにDAT線を使用することを表すフラグ(以下、「DAT線使用フラグ」という)(広義には、指示情報)を書き込むためのレジスタであり、レジスタ22gは、転送ブロックサイズ(広義には、指示情報)を書き込むためのレジスタであり、レジスタ22hは、転送ブロック数(広義には、指示情報)を書き込むためのレジスタである。
レジスタ22iは、カードステータスエラー以外のエラー(インデックスエラー、エンドビットエラー、CRCエラー、タイムアウトエラー等。以下、「伝送エラー」という。)のいずれか又は全部のチェックを行うか否かを指定するデータ(広義には、指示情報)を書き込むためのレジスタである。
レジスタ22lは、コマンドが完了したことを表すフラグ(以下、「コマンド完了フラグ」という)を書き込むためのレジスタである。
レジスタ22mは、レスポンスのカードステータス(広義には、応答内容情報)を書き込むためのレジスタである。なお、先に説明したように、レスポンスのカードステータス長は、レスポンスのタイプ即ちコマンドによって異なる。例えば、レスポンスのタイプが「R1」(48ビット)の場合、レスポンスのカードステータスは32ビットであり、レスポンスのタイプが「R2」(136ビット)の場合、レスポンスのカードステータスは120ビットである。そこで、例えば、レジスタ22mを長め(例えば、128ビット程度)に確保しておき、その中の所定位置にレスポンスのカードステータスを書き込むようにしても良い。
レジスタ22nは、伝送エラーのチェックを行うことを指定するデータがレジスタ22iに書き込まれている場合に、指定されたエラーのチェックの結果を表すデータを書き込むためのレジスタである。なお、伝送エラーのチェックの結果を表すデータは、伝送エラーの種類に応じた位置のビットがセットされるようにしても良いし、伝送エラーの種類がコード化されるようにしても良い。メインCPU2は、伝送エラーのチェックを行うことを指定した場合に、このレジスタ22nを読み出すことで、伝送エラーの発生の有無を取得することができる。
レジスタ22oは、CMD線を使用中であるか否かを表すフラグ(以下、「CMD線使用中フラグ」という)を書き込むためのレジスタである。CMD線使用中フラグは、SDMMCホストコントローラ10がコマンドの発行を開始するとセットされ、SDMMCホストコントローラ10がレスポンスの受信を完了するとクリアされる。メインCPU2は、このレジスタ22oを読み出すことで、コマンドの実行中か否か、すなわち、次のコマンドの発行を指示することが可能か否かを判断することができる。
なお、図4に示すレジスタマップは一例であり、種々の変形実施も可能である。例えば、全レジスタのビット幅を32ビット長とし、32ビットに満たないビット長を有する複数のデータを結合して1つのレジスタに格納するようにしても良い。また、例えば、クロック信号SDCLKの出力又は停止をクロック出力部21に行わせるためのフラグを格納するためのレジスタを設けて、メインCPU2がクロック信号SDCLKの出力又は停止をクロック出力部21に行わせるようにしても良い。また、例えば、カードステータスエラー、伝送エラーが発生した場合に、割り込み信号をメインCPU2に出力するか否かを指示するためのデータを格納するためのレジスタを設けて、カードステータスエラー、伝送エラーが発生した場合に割り込み信号がメインCPU2に出力されるようにしても良い。
再び図3を参照すると、SDMMC制御部23は、コマンド・レスポンス送受信部23aと、データ送受信部23bとを含む。
コマンド・レスポンス送受信部23aは、メインCPU2によってレジスタ22a〜22iに書き込まれた情報に基づいてコマンドをカードに発行し、当該コマンドに対するレスポンスをカードから受け取って、レスポンスに基づく情報をレジスタ22l〜22oに書き込む。
コマンド・レスポンス送受信部23aは、メインCPU2によってレジスタ22a〜22iに書き込まれた情報に基づいてコマンドをカードに発行し、当該コマンドに対するレスポンスをカードから受け取って、レスポンスに基づく情報をレジスタ22l〜22oに書き込む。
なお、本実施形態においては、コマンド・レスポンス送受信部23aは、コマンドを発行する信号線CMD_outとレスポンスを受信する信号線CMD_inとを別個に有している。そして、カードインタフェース13は、コマンド発行時には、コマンド・レスポンス送受信部23aによって信号線CMD_out上に供給されるコマンドをカードとの間のCMD線に出力し、レスポンス受信時には、カードとの間のCMD線上に供給されるレスポンスを信号線CMD_inに出力する。
データ送受信部23bは、レジスタ22aに書き込まれたインデックスで表されるコマンドがデータ転送を伴うコマンドである場合に動作を行い、レジスタ22aに書き込まれたインデックスで表されるコマンドがデータ転送を伴わないコマンドである場合には動作を行わない。
レジスタ22aに書き込まれたインデックスで特定されるコマンドがカードへのデータ書き込みを伴うコマンドである場合には、コマンド・レスポンス送受信部23aが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスの受信完了後に、カードへのデータ書き込みの開始をデータ送受信部23bに指示する。また、レジスタ22aに書き込まれたインデックスで特定されるコマンドがカードからのデータ読み出しを伴うコマンドである場合には、コマンド・レスポンス送受信部23aが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスを受信するとともに、カードからのデータ読み出しの開始をデータ送受信部23bに指示する。
DMA制御部24は、レジスタ22aに書き込まれたコマンドインデックスで特定されるコマンドがデータ転送を伴うコマンドである場合に動作を行い、レジスタ22aに書き込まれたコマンドインデックスで特定されるコマンドがデータ転送を伴わないコマンドである場合には動作を行わない。
メインCPU2は、カードへのデータ書き込みを伴うコマンドの実行を指示する場合には、まず、カードに書き込むためのデータをRAM4(図2参照)のDMA転送領域内に書き込み、その後、レジスタ22a〜22hに当該コマンドのインデックス等を書き込む。これを受けて、SDMMCホストコントローラ10のSDMMC制御部23内のコマンド・レスポンス送受信部23aが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスの受信完了後に、カードへのデータ書き込みの開始をデータ送受信部23bに指示する。データ送受信部23bは、コマンド・レスポンス送受信部23aからの指示を受けると、DMA制御部24にRAM4のDMA転送領域内のデータのDMA転送を指示する。DMA制御部24は、FIFOバッファ24aを有しており、データ送受信部23bからの指示を受けると、RAM4のDMA転送領域内のデータをFIFOバッファ24aに順次DMA転送する。そして、データ送受信部23bが、FIFOバッファ24a内のデータを順次読み出し、カードインタフェース13を介してカードに順次書き込む。
一方、メインCPU2は、カードからのデータ読み出しを伴うコマンドの実行を指示する場合には、レジスタ22a〜22hに当該コマンドのインデックス等を書き込む。これを受けて、SDMMCホストコントローラ10のSDMMC制御部23内のコマンド・レスポンス送受信部23aが、当該コマンドをカードに発行し、当該コマンドに対するレスポンスを受信するとともに、カードからのデータ読み出しの開始をデータ送受信部23bに指示する。データ送受信部23bは、コマンド・レスポンス送受信部23aからの指示を受けると、カードインタフェース13を介してカードからデータを順次読み出してFIFOバッファ24aに順次書き込むとともに、DMA制御部24にFIFOバッファ24a内のデータのDMA転送を指示する。DMA制御部24は、データ送受信部23bからの指示を受けると、FIFOバッファ24a内のデータをRAM4のDMA転送領域に順次DMA転送する。
なお、本実施形態においては、データ送受信部23bは、カードに書き込むデータを出力する8ビット幅の信号線DAT_out[7:0]とカードからデータを読み出す信号線DAT_in[7:0]とを別個に有している。そして、カードインタフェース13は、カードへのデータ書き込み時には、データ送受信部23bによって信号線DAT_out[7:0]上に供給されるデータをカードとの間のDAT線(1、4、又は、8ビット幅)に出力し、カードからのデータ読み出し時には、カードとの間のDAT線上に供給されるデータを信号線DAT_in[7:0]に出力する。なお、カードのDAT端子のビット幅が8ビット幅ではない場合には、カードインタフェース13が、データのビット幅を適宜変換する。
次に、RAM4(図2参照)のテーブル記憶領域内のレスポンスチェックビットテーブル及びルックアップテーブルについて説明する。
図5は、レスポンスチェックビットテーブルCheckBit[k](0≦k≦49)を示す図であり、図6〜図7は、ルックアップテーブルLookup[m][n](0≦m≦6、0≦n≦63)を示す図である。
図5は、レスポンスチェックビットテーブルCheckBit[k](0≦k≦49)を示す図であり、図6〜図7は、ルックアップテーブルLookup[m][n](0≦m≦6、0≦n≦63)を示す図である。
先に説明したように、レスポンスのカードステータス内のエラービットの位置は、全てのコマンドで同一ではない。しかしながら、本発明者は、以下の事柄を見出した。
第1に、本発明者は、コマンドを実行したときにカード内においてエラーが発生する場合はエラーが発生じない場合よりも少なく、従って、どのようなエラーが発生したかを判定するよりも、まず、何らかのエラーが発生したのか否かを判定することが、処理速度の点で好適であることを見出した。そして、必要であれば、何らかのエラーが発生したと判定した後に、どのようなエラーが発生したかを判定することが、処理速度の点で好適であることを見出した。
第2に、本発明者は、レスポンスのカードステータス内のエラービットの位置は全てのコマンドで同一ではないものの、レスポンスのカードステータス内のエラービットの位置が共通するコマンドが存在することを見出した。
例えば、第6の様式のカードC6におけるコマンド「CMD7」(コマンドインデックス「7」(0x07))に対するレスポンスのカードステータス内のエラービットの位置は、カードステータスのMSB(Most Significant Bit)を第31ビットとし、LSB(Least Significant Bit)を第0ビットとすると、第27ビット、第26ビット、及び、第24〜第16ビットの計11ビットである。すなわち、第6の様式のカードC6において、コマンド「CMD7」を実行したときにカード内において何らかのエラーが発生したのか否かは、上記11ビットの1つ以上が「1」にセットされているか否かによって判定できる。そして、第6の様式のカードC6におけるコマンド「CMD7」に対するカードステータス内の第27ビット、第26ビット、及び、第24〜第16ビットの1つ以上が「1」にセットされているか否かは、後述するように、第6の様式のカードC6におけるコマンド「CMD7」に対するカードステータス(32ビット)とチェックパターン(ビットパターン)「0x0DFF0000」(32ビット)との論理積(AND)演算処理(広義には、演算処理)を行い、その結果が「0」(0x0000)であるか否かによって容易且つ迅速に判定可能である。
また、第6の様式のカードC6におけるコマンド「CMD26」(コマンドインデックス「26」(0x1A))に対するレスポンスのカードステータス内のエラービットも、上記した第6の様式のカードC6におけるコマンド「CMD7」に対するレスポンスのカードステータス内のエラービットの位置と共通する。すなわち、第6の様式のカードC6において、コマンド「CMD26」を実行したときにカード内において何らかのエラーが発生したのか否かは、第6の様式のカードC6におけるコマンド「CMD26」に対するカードステータス(32ビット)とチェックパターン「0x0DFF0000」(上記第6の様式のカードC6におけるコマンド「CMD7」に対するレスポンスのカードステータスのチェックパターンと同一)との論理積(AND)演算処理を行い、その結果が「0」(0x0000)であるか否かによって容易且つ迅速に判定可能である。
また、第5の様式のカードC5におけるコマンド「CMD7」(コマンドインデックス「7」(0x07))に対するレスポンスのカードステータス内のエラービットも、上記した第6の様式のカードC6におけるコマンド「CMD7」に対するレスポンスのカードステータス内のエラービットの位置と共通する。すなわち、第5の様式のカードC5において、コマンド「CMD7」を実行したときにカード内において何らかのエラーが発生したのか否かは、第5の様式のカードC5におけるコマンド「CMD7」に対するカードステータス(32ビット)とチェックパターン「0x0DFF0000」(上記第6の様式のカードC6におけるコマンド「CMD7」に対するレスポンスのカードステータスのチェックパターンと同一)との論理積(AND)演算処理を行い、その結果が「0」(0x0000)であるか否かによって容易且つ迅速に判定可能である。
また、第6の様式のカードC6においては、コマンド「CMD55」(コマンドインデックス「55」(0x37))に引き続いて発行される複数の拡張コマンド「ACMD」が規定されている。そして、そのような複数の拡張コマンドの内の1つである拡張コマンド「ACMD13」(コマンドインデックス「13」(0x0D))に対するレスポンスのカードステータス内のエラービットも、上記した第6の様式のカードC6におけるコマンド「CMD7」(コマンドインデックス「7」(0x07))に対するレスポンスのカードステータス内のエラービットの位置と共通する。すなわち、第6の様式のカードC6において、拡張コマンド「ACMD13」を実行したときにカード内において何らかのエラーが発生したのか否かは、第6の様式のカードC6における拡張コマンド「ACMD13」に対するカードステータス(32ビット)とチェックパターン「0x0DFF0000」(上記第6の様式のカードC6におけるコマンド「CMD7」に対するレスポンスのカードステータスのチェックパターンと同一)との論理積(AND)演算処理を行い、その結果が「0」(0x0000)であるか否かによって容易且つ迅速に判定可能である。
そして、本発明者は、第1〜第6の様式のカードC1〜C6における全コマンドのレスポンスのカードステータス内のエラービットの位置を調べたところ、図5に示す50個のチェックパターンを用意すれば、何れの様式のカードにおいて何れのコマンドを実行した場合であっても、何らかのエラーが発生したのか否かを、レスポンスのカードステータスとチェックパターンとの論理積演算処理を行うことにより、容易且つ迅速に判定可能であることを見出した。
そこで、本実施形態では、RAM4(図2参照)のテーブル記憶領域内に、図5に示す50通りのチェックパターン(広義には、エラー判定情報)を含むレスポンスチェックビットテーブル(広義には、エラー判定情報テーブル)を配することで、何れかの様式のカードにおいて何れかのコマンドを実行したときに当該カード内において何らかのエラーが発生したのか否かを容易且つ迅速に判定できるようにした。これにより、処理を簡素化でき、コード量を減らすことができ、プログラムの可読性を向上させることができ、処理速度を向上させることができる。
また、本実施形態では、或る様式のカードにおいて或るコマンドを実行させた場合に図5に示すレスポンスチェックビットテーブル内の50個のチェックパターンの内の何れのチェックパターンを用いれば良いかということを迅速に決定可能とするために、RAM4(図2参照)のテーブル記憶領域内に、図6〜図7に示すルックアップテーブル(広義には、エラー判定情報特定情報テーブル)を更に配することとした。これにより、処理速度を更に向上させることができる。
例えば、先に挙げたカードの様式が第6の様式であり且つカードに発行したコマンドがコマンド「CMD7」である例の場合には、メインCPU2(図2参照)は、RAM4(図2参照)のテーブル記憶領域内のルックアップテーブルの第6番目の列(列方向の要素番号「0d5」)且つ第8番目の行(行方向の要素番号「0d07」)を参照することで、ルックアップ値(広義には、エラー判定情報特定情報)「0d41」を取得することができる。そして、メインCPU2は、ルックアップ値が「0d41」であるので、レスポンスチェックビットテーブルの第42番目の行(行方向の要素番号「0d41」)を参照することで、チェックパターン「0x0DFF0000」を迅速に取得することができる。
また、先に挙げたカードの様式が第6の様式であり且つカードに発行したコマンドがコマンド「CMD26」である例の場合には、メインCPU2は、RAM4のテーブル記憶領域内のルックアップテーブルの第6番目の列(列方向の要素番号「0d5」)且つ第27番目の行(行方向の要素番号「0d26」)を参照することで、ルックアップ値「0d41」を取得することができる。そして、メインCPU2は、ルックアップ値が「0d41」であるので、RAM4のテーブル記憶領域内のレスポンスチェックビットテーブルの第42番目の行(行方向の要素番号「0d41」)を参照することで、チェックパターン「0x0DFF0000」を迅速に取得することができる。
また、先に挙げたカードの様式が第5の様式であり且つカードに発行したコマンドがコマンド「CMD7」である例の場合には、メインCPU2は、RAM4のテーブル記憶領域内のルックアップテーブルの第5番目の列(列方向の要素番号「0d4」)且つ第8番目の行(行方向の要素番号「0d07」)を参照することで、ルックアップ値「0d41」を取得することができる。そして、メインCPU2は、ルックアップ値が「0d41」であるので、RAM4のテーブル記憶領域内のレスポンスチェックビットテーブルの第42番目の行(行方向の要素番号「0d41」)を参照することで、チェックパターン「0x0DFF0000」を迅速に取得することができる。
また、先に挙げたカードの様式が第6の様式であり且つカードに発行したコマンドが拡張コマンド「ACMD13」である例の場合には、メインCPU2は、RAM4のテーブル記憶領域内のルックアップテーブルの第7番目の列(列方向の要素番号「0d6」)且つ第14番目の行(行方向の要素番号「0d13」)を参照することで、ルックアップ値「0d41」を取得することができる。そして、メインCPU2は、ルックアップ値が「0d41」であるので、RAM4のテーブル記憶領域内のレスポンスチェックビットテーブルの第42番目の行(行方向の要素番号「0d41」)を参照することで、チェックパターン「0x0DFF0000」を迅速に取得することができる。
レスポンスチェックビットテーブルの各テーブル要素(チェックパターン)は、カードステータスが32ビットであるため、32ビットとすると好適である。ルックアップテーブルの各テーブル要素(ルックアップ値)は、レスポンスチェックビットテーブルのテーブル要素数が「50」であるため、最低6ビットで実現可能であるが、データとしての扱いやすさを考慮すると、1バイト(8ビット)とすると好適である。
なお、レスポンスチェックビットテーブル及びルックアップテーブルの一方又は両方をROM3(フラッシュメモリ等の書き換え可能なROMであっても良い)内に作成しても良い。また、レスポンスチェックビットテーブル及びルックアップテーブルの一方又は両方をROM3内に作成しておき、初期時等において、メインCPU2やDMAコントローラ(図示せず)等がRAM4内に転送するようにしても良い。
また、通信回路7を用いて、レスポンスチェックビットテーブル及び/又はルックアップテーブルを参照したり、これらのテーブルの一部又は全部を適宜更新するようにしても良い。このようにすれば、カードやデバイスの様式(例えば、SDIOデバイス、CE−ATAデバイス等)の追加・変更や、コマンドの追加・変更や、これらのテーブルのデバッグ等に柔軟に対応可能となる。なお、様式やコマンドの追加の場合には、テーブルの要素数を増やすことで対応可能である。
例えば、第6の様式のカードC6において、現在はリザーブとされているコマンド「CMD1」(コマンドインデックス「1」(0x01))の処理内容が仕様上新たに規定された場合に、当該コマンドを実行したときに第6の様式のカードC6内において何らかのエラーが発生したのか否かを判定するためのチェックパターンが図5に示すレスポンスチェックビットテーブル内の50通りのチェックパターンの何れとも合致しないときには、当該コマンドを実行したときに第6の様式のカードC6内において何らかのエラーが発生したのか否かを判定するための新たなチェックパターンをレスポンスチェックビットテーブルに第51番目のテーブル要素として追加すれば良い。そして、このようなテーブル要素の追加を通信回路7を介して行うことにより、カードの仕様のバージョンアップ等に柔軟に対応可能となる。
カードやデバイスの様式(例えば、SDIOデバイス、CE−ATAデバイス等)を追加する場合には、ルックアップテーブルの列を増やすとともに、必要であればレスポンスチェックビットテーブルに新たなテーブル要素を追加すれば良い。
通信回路7をインターネットに接続することとすれば、テーブルの更新をインターネットを経由して行うことが可能となる。
また、通信回路7をデバッガに接続することとすれば、これらのテーブルのデバッグを容易に行うことが可能となる。
また、通信回路7をデバッガに接続することとすれば、これらのテーブルのデバッグを容易に行うことが可能となる。
3. 動作
次に、本実施形態の動作について説明する。
図8は、コマンドをカードに発行する場合における本実施形態の動作を示すフローチャートである。ここでは、第6の様式のカードC6がカードスロット6に装着されており、カードC6にコマンド「CMD7」(コマンドインデックス「7」(0x07))を発行するものとする。
次に、本実施形態の動作について説明する。
図8は、コマンドをカードに発行する場合における本実施形態の動作を示すフローチャートである。ここでは、第6の様式のカードC6がカードスロット6に装着されており、カードC6にコマンド「CMD7」(コマンドインデックス「7」(0x07))を発行するものとする。
まず、メインCPU2が、ROM3内のドライバプログラムを実行し、コマンドインデックス(ここでは、「7」(0x07))、アーギュメント、コマンドタイプ、レスポンスタイプ、データ転送タイプ、DAT線使用フラグ、転送ブロックサイズ、転送ブロック数、及び、レスポンスチェックをレジスタ22a〜22iに書き込むことにより、コマンドの発行をSDMMCホストコントローラ10に指示する(ステップS11)。
なお、メインCPU2は、発行しようとするコマンドがカードC6へのデータ書込みを伴うコマンドである場合には、コマンド発行の指示に先立って、カードC6へ書き込むデータをRAM4のDMA転送領域内に準備する。
SDMMC制御部23内のコマンド・レスポンス送受信部23aは、レジスタ制御部22からの信号及びデータに従って、カードC6にコマンドを発行する(ステップS21)。具体的には、コマンド・レスポンス送受信部23aは、スタートビットを「0」、転送方向ビットを「1」とする。次に、コマンド・レスポンス送受信部23aは、これらのスタートビット及び転送方向ビット、レジスタ22a内に格納されているコマンドインデックス(6ビット、ここでは、「7」(0x07))、並びに、レジスタ22b内に格納されているアーギュメント(32ビット)の計40ビットに基づいて、CRC(7ビット)を算出する。そして、コマンド・レスポンス送受信部23aは、スタートビット(ここでは、「0」)、転送方向ビット(ここでは、「1」)、コマンドインデックス(6ビット)、アーギュメント(32ビット)、CRC(7ビット)、及び、エンドビット(ここでは、「1」)を結合した計48ビットのコマンドを、カードインタフェース13を介してカードC6に送信する。
カードC6は、受信したコマンド(ここでは、コマンド「CMD7」)を実行して、レスポンス(ここでは、タイプ「R1」(48ビット))をコマンド・レスポンス送受信部23aに送信する(ステップS31)。
コマンド・レスポンス送受信部23aは、レスポンス(ここでは、タイプ「R1」(48ビット))をカードインタフェース13を介してカードC6から受信すると、受信したレスポンスのカードステータス(ここでは、32ビット)をレジスタ22mに書き込むとともに、コマンド完了フラグをレジスタ22lにセットして、コマンドの完了をメインCPU2に通知する(ステップS22)。このとき、レジスタ制御部22が、コマンドの完了を通知するための割込み信号をメインCPU2に出力するようにしても良い。また、このとき、コマンド・レスポンス送受信部23aは、伝送エラーが発生していた場合に、伝送エラーのエラー情報をレジスタ22nに書き込む。
なお、コマンド・レスポンス送受信部23aは、カードC6に発行したコマンドがカードC6へのデータ書込みを伴うコマンドである場合には、カードC6からレスポンスを受信したときに、カードC6へのデータ書込みの開始をデータ送受信部23bに指示する。また、コマンド・レスポンス送受信部23aは、カードC6に発行した通常コマンドがカードC6からのデータ読出しを伴うコマンドである場合には、カードC6からレスポンスを受信したときに、カードC6からのデータ読出しの開始をデータ送受信部23bに指示する。
一方、メインCPU2は、ステップS11においてコマンドの発行をSDMMCホストコントローラ10に指示した後に、カードの様式(ここでは、第6の様式)及びコマンドインデックス(ここでは、「7」(0x07))に基づいて、チェックパターンを取得する(ステップS12)。具体的には、メインCPU2は、ルックアップテーブルの第6番目の列(列方向の要素番号「0d5」)且つ第8番目の行(行方向の要素番号「0d07」)を参照し、ルックアップ値「0d41」を取得することができる。そして、ルックアップ値が「0d41」であるので、レスポンスチェックビットテーブルの第42番目の行(行方向の要素番号「0d41」)を参照し、チェックパターン「0x0DFF0000」を取得することができる。
なお、上記のようなチェックパターンの取得処理は、C言語においては、例えば、
CheckBit[Lookup[CMDindex][ver]]
のように少ないコードで簡単に記述することができる。
CheckBit[Lookup[CMDindex][ver]]
のように少ないコードで簡単に記述することができる。
ここで、「CheckBit」は、レスポンスチェックビットテーブル(図5参照)のテーブル名であり、「Lookup」は、ルックアップテーブル(図6〜図7参照)のテーブル名であり、「ver」は、カードの様式を表す列方向の要素番号(広義には、様式特定情報、ここでは、「0d5」)を表す変数であり、「CMDindex」は、コマンドインデックスと同値の行方向の要素番号(ここでは、「0x07」)を表す変数である。なお、変数「ver」が0〜5となる場合、カードの様式に応じて、初期時に変数「ver」の値を決定可能である。変数「ver」が6となる場合、カードスロット6に装着されているカードが第6の様式のカードC6であり且つ第6の様式のカードC6に発行しようとしているコマンドが「ACMD」(拡張コマンド)であることが判明したときに変数「ver」の値を決定可能である。
そして、メインCPU2は、SDMMCホストコントローラ10からコマンドの完了の通知を受けると、レジスタ制御部22のレジスタ22m内に格納されているカードステータスを読み出し、カードステータスとステップS12にて取得したチェックパターン(ここでは、「0x0DFF0000」)との論理積(AND)演算処理(広義には、演算処理)を行う(ステップS13)。
先に説明したように、コマンド「CMD7」を実行したカードC6内において何らのエラーも発生していない場合には、カードステータスとチェックパターン(ここでは、「0x0DFF0000」)との論理積演算の結果は「0」(0x00000000)となる。一方、コマンド「CMD7」を実行したカードC6内において何らかのエラーが発生している場合には、カードステータスとチェックパターンとの論理積演算の結果は「0」以外となる。
そこで、メインCPU2は、カードステータスとチェックパターン(ここでは、「0x0DFF0000」)との論理積演算の結果が「0」である場合には、処理を終了する(ステップS14)。
一方、メインCPU2は、カードステータスとチェックパターンとの論理積演算の結果が「0」以外である場合(ステップS14)には、エラー処理を実行する(ステップS15)。エラー処理としては、例えば、コマンド「CMD7」を実行したカードC6内においてどのようなエラーが発生したのかというエラーの内容を特定する処理を含むことが考えられる。これは、カードステータスの第27ビット、第26ビット、及び、第24〜第16ビットの計11ビットを順次調べることで実現可能である。
なお、ステップS14のような条件分岐処理は、アセンブラ言語においては、例えば、
AND r1,r2
BNZ $error_routine
のように少ないコードで簡単に記述することができる。
AND r1,r2
BNZ $error_routine
のように少ないコードで簡単に記述することができる。
ここで、「AND」は、CPUにおいて広く一般に実装されている論理積演算処理命令であり、「r1」は、レジスタ制御部22(図3参照)内のレジスタ22m(図4参照)から読み出したカードステータスを格納したメインCPU2の内部レジスタであり、「r2」は、ステップS12にて取得したチェックパターンを格納したメインCPU2の内部レジスタである。また、「BNZ」は、CPUにおいて広く一般に実装されている条件分岐命令であり、CPU内部のゼロフラグ(一般に、直前の命令(ここでは、「AND」)の結果によりセット又はクリアされる)がセットされていない場合に分岐する命令である。また、「$error_routine」は、エラー処理(ステップS15)の先頭アドレスを示すラベルである。
以上説明したように、本実施形態によれば、様式特定情報とコマンド特定情報との組み合わせに関連付けられたエラー判定情報を取得し、エラー判定情報及び応答内容情報に基づいて、応答におけるエラーの有無を容易に判定することができるようになる。これにより、処理を簡素化でき、コード量を減らすことができ、プログラムの可読性を向上させることができ、処理速度を向上させることができる。
また、本実施形態によれば、応答内容情報内のエラーに関係する部分に対して処理を行うことで、エラーの有無を確実に判定することができる。
また、本実施形態によれば、複数の種類、仕様、規格、及び/又は、バージョンのデバイスに関してもエラー判定を容易に行うことができ、幅広い用途に対応可能となる。
また、本実施形態によれば、複数の様式特定情報と複数のコマンド特定情報との組み合わせに関連付けて、複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを用いることで、様式特定情報とコマンド特定情報との組み合わせに関連付けられたエラー判定情報を迅速且つ容易に取得することができ、処理速度を向上させることができる。
また、本実施形態によれば、まずエラーの有無を判定し、エラーが有った場合にエラーの内容を特定することができるので、エラーが無い場合に無駄な処理を行わずに済ませることができ、処理速度を向上させることができる。
また、本実施形態によれば、簡易な演算処理でエラーの有無を判定することができ、コード量を減らすことができ、プログラムの可読性を向上させることができ、処理速度を向上させることができる。
4. 第1変形例
次に、本実施形態の第1変形例について説明する。
カード内部のCSDレジスタのSPEC_VERSフィールドの値に基づいて、MMC(登録商標)を、(1)MMC(登録商標)バージョン1.0〜1.2、(2)MMC(登録商標)バージョン1.4、(3)MMC(登録商標)バージョン2.0〜2.2、(4)MMC(登録商標)バージョン3.0〜3.31、(5)MMC(登録商標)バージョン4.0〜4.2の5バージョンに分類することができる。そして、上記(1)〜(5)のカードの各々において、最大で64種類のコマンドが発行され得る。
次に、本実施形態の第1変形例について説明する。
カード内部のCSDレジスタのSPEC_VERSフィールドの値に基づいて、MMC(登録商標)を、(1)MMC(登録商標)バージョン1.0〜1.2、(2)MMC(登録商標)バージョン1.4、(3)MMC(登録商標)バージョン2.0〜2.2、(4)MMC(登録商標)バージョン3.0〜3.31、(5)MMC(登録商標)バージョン4.0〜4.2の5バージョンに分類することができる。そして、上記(1)〜(5)のカードの各々において、最大で64種類のコマンドが発行され得る。
また、カード内部のCSDレジスタのSPEC_VERSフィールドの値に基づいて、SDカード(登録商標)を、(6)SDカード(登録商標)バージョン1.01、(7)SDカード(登録商標)バージョン1.10、(8)SDカード(登録商標)バージョン2.00の3バージョンに分類することができる。そして、上記(6)〜(8)のカードの各々において、最大で64種類のコマンド「CMD」が発行され得る。さらに、上記(6)〜(8)のカードの各々においては、拡張コマンド「ACMD」が発行され得る。
そこで、先に説明した図5に示すレスポンスチェックビットテーブル及び図6〜図7に示すルックアップテーブルに代えて、図9〜図17に示すレスポンスチェックビットテーブルがRAM4(図2参照)のテーブル記憶領域に記憶されるようにしても良い。
図9は、カードスロット6に装着されているカードが上記(1)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit1[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(1)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2(図2参照)は、カードスロット6に装着されているカードが上記(1)のカードである場合に、カードコントローラ5(図2参照)に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図10は、カードスロット6に装着されているカードが上記(2)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit2[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(2)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2は、カードスロット6に装着されているカードが上記(2)のカードである場合に、カードコントローラ5に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図11は、カードスロット6に装着されているカードが上記(3)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit3[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(3)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2は、カードスロット6に装着されているカードが上記(3)のカードである場合に、カードコントローラ5に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図12は、カードスロット6に装着されているカードが上記(4)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit4[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(4)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2は、カードスロット6に装着されているカードが上記(4)のカードである場合に、カードコントローラ5に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図13は、カードスロット6に装着されているカードが上記(5)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit5[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(5)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2は、カードスロット6に装着されているカードが上記(5)のカードである場合に、カードコントローラ5に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図14は、カードスロット6に装着されているカードが上記(6)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit6[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(6)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2は、カードスロット6に装着されているカードが上記(6)のカードである場合に、カードコントローラ5に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図15は、カードスロット6に装着されているカードが上記(7)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit7[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(7)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2は、カードスロット6に装着されているカードが上記(7)のカードである場合に、カードコントローラ5に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図16は、カードスロット6に装着されているカードが上記(8)のカードである場合に用いられるレスポンスチェックビットテーブルCheckBit8[k](0≦k≦63)を示す図である。このレスポンスチェックビットテーブルは、上記(8)のカードに発行され得る最大で64種類のコマンド(「CMD0」〜「CMD63」)に関連付けて64個のチェックパターン(各4バイト)を格納している。メインCPU2は、カードスロット6に装着されているカードが上記(8)のカードである場合に、カードコントローラ5に発行を指示するコマンドのコマンドインデックスに基づいて、このレスポンスチェックビットテーブルの中からチェックパターンを読み出す。なお、このレスポンスチェックビットテーブルのサイズは、64(コマンドの種類の数)×4(バイト)=256(バイト)である。
図17は、カードスロット6に装着されているカードが上記(6)〜(8)の内のいずれかのカードであり、これらのカードに拡張コマンド「ACMD」が発行される場合に用いられるレスポンスチェックビットテーブルCheckBit9[k](0≦k≦1)を示す図である。なお、拡張コマンドの種類は最大64種類まであり得るが、現時点においては、拡張コマンド「ACMD6」以外の拡張コマンドに対するレスポンスのカードステータス内のエラービットの位置は同じである。そのため、現時点においては、拡張コマンド「ACMD6」に対するレスポンスのカードステータスのチェックパターン(図17に示すレスポンスチェックビットテーブルの第1レコード(4バイト))と、拡張コマンド「ACMD6」以外の拡張コマンドに対するレスポンスのカードステータスのチェックパターン(図17に示すレスポンスチェックビットテーブルの第2レコード(4バイト))との2つのチェックパターンを用意すれば足りる。メインCPU2は、カードスロット6に装着されているカードが上記(8)のカードであり、カードコントローラ5に発行を指示する拡張コマンドのコマンドインデックスが「6」の場合には、このレスポンスチェックビットテーブルの第1レコードをチェックパターンとして読み出し、カードコントローラ5に発行を指示する拡張コマンドのコマンドインデックスが「6」以外の場合には、このレスポンスチェックビットテーブルの第2レコードをチェックパターンとして読み出す。このレスポンスチェックビットテーブルのサイズは、8バイトである。
なお、図9〜図17に示すレスポンスチェックビットテーブルCheckBit1〜CheckBit9を1個のテーブルに纏めても良い。
図9〜図16に示す8個のレスポンスチェックビットテーブルCheckBit1〜CheckBit8のサイズの総和は、256(バイト)×8=2048(バイト)である。また、図17に示すレスポンスチェックビットテーブルCheckBit9のサイズは、8(バイト)である。従って、図9〜図17に示す9個のレスポンスチェックビットテーブルCheckBit1〜CheckBit9のサイズの総和は、2048(バイト)+8(バイト)=2056(バイト)である。
一方、先に説明した図5に示すレスポンスチェックビットテーブルCheckBitのサイズは、50(行数)×4(バイト)=200(バイト)である。また、図6〜図7に示すルックアップテーブルLookupのサイズは、64(行数)×7(列数)×1(ルックアップ値1つ当たりのバイト数)=448(バイト)となる。従って、図5に示すレスポンスチェックビットテーブルCheckBitと図6〜図7に示すルックアップテーブルLookupとのサイズの総和は、200(バイト)+448(バイト)=648(バイト)となる。
このように、図5に示すレスポンスチェックビットテーブルCheckBit及び図6〜図7に示すルックアップテーブルLookupのサイズの総和は、図9〜図17に示すレスポンスチェックビットテーブルCheckBit1〜CheckBit9のサイズの総和よりも小さい。そこで、RAM4(図2参照)のテーブル記憶領域の容量を減らしたい場合には、図5に示すレスポンスチェックビットテーブルCheckBit及び図6〜図7に示すルックアップテーブルLookupを用いるようにすれば良い。
一方、図5に示すレスポンスチェックビットテーブルCheckBit及び図6〜図7に示すルックアップテーブルLookupを用いる場合には、まずルックアップテーブルLookupの中からルックアップ値を取得し、そのルックアップ値を用いてレスポンスチェックビットテーブルCheckBitの中からビットパターンを取得する必要がある。すなわち、テーブルを2回参照する必要がある。そこで、テーブルを参照する回数を減らし、ビットパターンを取得する時間及びコード量を減らしたい場合には、図5に示すレスポンスチェックビットテーブルCheckBit及び図6〜図7に示すルックアップテーブルLookupに代えて、図9〜図17に示すレスポンスチェックビットテーブルCheckBit1〜CheckBit9を用いるようにすれば良い。
図5に示すレスポンスチェックビットテーブルCheckBit及び図6〜図7に示すルックアップテーブルLookupと、図9〜図17に示すレスポンスチェックビットテーブルCheckBit1〜CheckBit9とのいずれを用いるかは、電子機器1のハードウェア的又はソフトウェア的要求に応じて決定すれば良い。
また、図5に示すレスポンスチェックビットテーブルCheckBit、図6〜図7に示すルックアップテーブルLookup、及び、図9〜図17に示すレスポンスチェックビットテーブルCheckBit1〜CheckBit9をROM3内に作成しておき、初期時等において、メインCPU2やDMAコントローラ(図示せず)等が、図5に示すレスポンスチェックビットテーブルCheckBit及び図6〜図7に示すルックアップテーブルLookupか、図9〜図17に示すレスポンスチェックビットテーブルCheckBit1〜CheckBit9かのいずれかをRAM4内に転送するようにしても良い。また、通信回路7を用いて、レスポンスチェックビットテーブルCheckBit1〜CheckBit9を参照したり、これらのテーブルの一部又は全部を適宜更新するようにしても良い。
なお、本変形例の動作は、先に説明した本実施形態が様式特定情報とコマンドインデックスとに基づいてルックアップテーブルからルックアップ値を取得し、取得したルックアップ値を用いてレスポンスチェックビットテーブルからチェックパターンを取得していたのに対し、様式特定情報とコマンドインデックスとに基づいてレスポンスチェックビットテーブルからチェックパターンを取得する点で異なり、他の点は同じであるので、説明を省略する。
以上説明したように、本変形例によれば、少ないテーブル参照回数、時間、及び、コード量で、レスポンスにおけるエラーの有無を判定することができる。
5. 第2変形例
次に、本実施形態の第2変形例について説明する。
第1〜第6の様式のカードC1〜C6に対して或るコマンドを発行し、当該コマンドの実行によりカードC1〜C6内においてエラーが発生した場合に、当該エラーを表すエラービットが当該コマンドに対するレスポンス内のカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンス内のカードステータスにセットされる場合がある。そして、そのような場合が起こり得るビットは、カードの様式によって異なる。本変形例は、このような場合においても迅速にエラーの有無を判定することを可能とするものである。
次に、本実施形態の第2変形例について説明する。
第1〜第6の様式のカードC1〜C6に対して或るコマンドを発行し、当該コマンドの実行によりカードC1〜C6内においてエラーが発生した場合に、当該エラーを表すエラービットが当該コマンドに対するレスポンス内のカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンス内のカードステータスにセットされる場合がある。そして、そのような場合が起こり得るビットは、カードの様式によって異なる。本変形例は、このような場合においても迅速にエラーの有無を判定することを可能とするものである。
本変形例では、RAM4(図2参照)のテーブル記憶領域内に、図5に示すレスポンスチェックビットテーブルCheckBit及び図6〜図7に示すルックアップテーブルLookup(又は、これらに代えて図9〜図17に示すレスポンスチェックビットテーブルCheckBit1〜CheckBit9)に加えて、図18に示す直前コマンドレスポンスチェックビットマスクテーブルMask[m](0≦m≦6)(広義には、直前コマンドエラー判定情報テーブル)を更に記憶する。
例えば、第1の様式のカードC1において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、カードステータスのMSBを第31ビットとし、LSBを第0ビットとすると、エラービットが第30ビット、第27ビット、第26ビット、及び、第21〜第17ビットの場合である。これらのビットの位置は、ビットパターン「0x4C3E0000」(広義には、直前コマンドエラー判定情報、図18の直前コマンドレスポンスチェックビットマスクテーブルMaskの第1番目の列参照)で表すことができる。
また、第2の様式のカードC2において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第30ビット、第27ビット、第26ビット、第24ビット、及び、第21〜第16ビットの場合である。これらのビットの位置は、ビットパターン「0x4D3F0000」(広義には、直前コマンドエラー判定情報、図18の直前コマンドレスポンスチェックビットマスクテーブルMaskの第2番目の列参照)で表すことができる。
また、第3の様式のカードC3において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第30ビット、第27ビット、第26ビット、第24ビット、及び、第21〜第16ビットの場合である。これらのビットの位置は、ビットパターン「0x4D3F0000」(広義には、直前コマンドエラー判定情報、図18の直前コマンドレスポンスチェックビットマスクテーブルMaskの第3番目の列参照)で表すことができる。
また、第4の様式のカードC4において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第31ビット、第30ビット、第27ビット、第26ビット、第24ビット、及び、第21ビット、第19〜第15ビット、及び、第6ビットの場合である。これらのビットの位置は、ビットパターン「0xCD2F8040」(広義には、直前コマンドエラー判定情報、図18の直前コマンドレスポンスチェックビットマスクテーブルMaskの第4番目の列参照)で表すことができる。
また、第5の様式のカードC5において、或るコマンドに対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第31ビット、第27ビット、第26ビット、第24ビット、及び、第21〜第19ビット、及び、第16ビットの場合である。これらのビットの位置は、ビットパターン「0x8D390000」(広義には、直前コマンドエラー判定情報、図18の直前コマンドレスポンスチェックビットマスクテーブルMaskの第5番目の列参照)で表すことができる。
また、第6の様式のカードC6において、或る通常コマンド(CMD)に対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第31〜第29ビット、第27ビット、第26ビット、第24ビット、及び、第21〜第19ビット、第16ビット、及び、第15ビットの場合である。これらのビットの位置は、ビットパターン「0xED398000」(広義には、直前コマンドエラー判定情報、図18の直前コマンドレスポンスチェックビットマスクテーブルMaskの第6番目の列参照)で表すことができる。
また、第6の様式のカードC6において、或る拡張コマンド(ACMD)に対するエラービットが当該コマンドに対するレスポンスのカードステータスではなく当該コマンドの次に発行されるコマンドに対するレスポンスのカードステータスにセットされ得るのは、エラービットが第31〜第29ビット、第27ビット、第26ビット、第24ビット、及び、第21〜第19ビット、第16ビット、及び、第15ビットの場合である。これらのビットの位置は、チェックパターン「0xED398000」(広義には、直前コマンドエラー判定情報、図18の直前コマンドレスポンスチェックビットマスクテーブルMaskの第7番目の列参照)で表すことができる。
図18に示す直前コマンドレスポンスチェックビットマスクテーブルMaskは、カードの様式に関連付けて上記のチェックパターンを記憶したものである。なお、直前コマンドレスポンスチェックビットマスクテーブルMaskをROM3内に作成しておき、初期時等において、メインCPU2やDMAコントローラ(図示せず)等が、直前コマンドレスポンスチェックビットマスクテーブルMaskをRAM4内に転送するようにしても良い。また、通信回路7を用いて、直前コマンドレスポンスチェックビットマスクテーブルMaskを参照したり、その一部又は全部を適宜更新するようにしても良い。
図19は、コマンドをカードに発行する場合における本変形例の動作を示すフローチャートである。ここでは、第1の様式のカードC1がカードスロット6に装着されているものとする。
まず、メインCPU2が、ROM3内のドライバプログラムを実行し、コマンドインデックス、アーギュメント、コマンドタイプ、レスポンスタイプ、データ転送タイプ、DAT線使用フラグ、転送ブロックサイズ、転送ブロック数、及び、レスポンスチェックをレジスタ22a〜22iに書き込むことにより、コマンド(以下、「今回コマンド」という。)の発行をSDMMCホストコントローラ10に指示する(ステップS41)。
なお、メインCPU2は、今回コマンドがカードC1へのデータ書込みを伴うコマンドである場合には、今回コマンドの発行の指示に先立って、カードC1へ書き込むデータをRAM4のDMA転送領域内に準備する。
SDMMC制御部23内のコマンド・レスポンス送受信部23aは、レジスタ制御部22からの信号及びデータに従って、カードC1に今回コマンドを発行する(ステップS51)。
カードC1は、受信した今回コマンドを実行して、レスポンス(以下、「今回レスポンス」という。)をコマンド・レスポンス送受信部23aに送信する(ステップS61)。
コマンド・レスポンス送受信部23aは、今回レスポンスをカードインタフェース13を介してカードC1から受信すると、受信した今回レスポンスのカードステータスをレジスタ22mに書き込むとともに、コマンド完了フラグをレジスタ22lにセットして、今回コマンドの完了をメインCPU2に通知する(ステップS52)。このとき、レジスタ制御部22が、今回コマンドの完了を通知するための割込み信号をメインCPU2に出力するようにしても良い。また、このとき、コマンド・レスポンス送受信部23aは、伝送エラーが発生していた場合に、伝送エラーのエラー情報をレジスタ22nに書き込む。
なお、コマンド・レスポンス送受信部23aは、カードC1に発行した今回コマンドがカードC1へのデータ書込みを伴うコマンドである場合には、カードC1から今回レスポンスを受信したときに、カードC1へのデータ書込みの開始をデータ送受信部23bに指示する。また、コマンド・レスポンス送受信部23aは、カードC1に発行した今回コマンドがカードC1からのデータ読出しを伴うコマンドである場合には、カードC1から今回レスポンスを受信したときに、カードC1からのデータ読出しの開始をデータ送受信部23bに指示する。
一方、メインCPU2は、ステップS41においてコマンドの発行をSDMMCホストコントローラ10に指示した後に、カードの様式(ここでは、第1の様式)及びコマンドインデックスに基づいて、レスポンスチェックビットテーブルCheckBit(図5参照)の中からチェックパターンを取得する(ステップS42)。
先に説明したように、今回レスポンスのカードステータスには、今回コマンドのエラービットの他、直前コマンドのエラービットがセットされ得る。そこで、メインCPU2は、ステップS42にて取得した今回コマンドに対するエラービットの位置を表すチェックパターンと、今回コマンドの直前に発行を指示したコマンド(以下、「直前コマンド」という。)に対するエラービットの位置を表す直前発行コマンドチェックパターン(広義には、直前発行コマンドチェック情報)との論理和演算を実行する(ステップS43)。この論理和演算によって得られたチェックパターンは、今回コマンドに対するエラービットと直前コマンドに対するエラービットの両方を表すことになる。なお、直前発行コマンドチェックパターンは、後で詳細に説明するステップS47〜S48において更新され、次のコマンド発行時に利用される。直前発行コマンドチェックパターンは、RAM4(図2参照)のワーク領域やメインCPU2の内部レジスタ等に記憶するようにしても良い。また、直前発行コマンドチェックパターンの初期値は、初期時には直前コマンドが存在しないため、「0x00000000」とされる。さらにまた、直前発行コマンドチェックパターンは、システムリセット時等にも、ゼロクリアされる。
そして、メインCPU2は、SDMMCホストコントローラ10からコマンドの完了の通知を受けると、レジスタ制御部22のレジスタ22m内に格納されているカードステータスを読み出し、カードステータスとステップS43にて取得したチェックパターンとの論理積演算処理を行う(ステップS44)。
直前コマンドを実行し、続いて今回コマンドを実行したカードC1内において何らのエラーも発生していない場合には、カードステータスとステップS43にて取得したチェックパターンとの論理積演算の結果は「0」(0x00000000)となる。一方、直前コマンドを実行し、続いて今回コマンドを実行したカードC1内において何らかのエラーが発生している場合には、カードステータスとステップS43にて取得したチェックパターンとの論理積演算の結果は「0」以外となる。
そこで、メインCPU2は、カードステータスとステップS43にて取得したチェックパターンとの論理積演算の結果が「0」以外である場合(ステップS45)には、エラー処理を実行する(ステップS46)。エラー処理としては、例えば、直前コマンド及び今回コマンドを実行したカードC1内においてどのようなエラーが発生したのかというエラーの内容を特定する処理を含むことが考えられる。これは、カードステータス内のビットを調べること等で実現可能である。
次に、メインCPU2は、カードの様式(ここでは、第1の様式)及び今回コマンドのコマンドインデックスに基づいて、今回コマンドの次にカードC1に発行されるコマンド(以下、「次回コマンド」という。)に対するレスポンスにおける今回コマンドに対するエラーの有無を判定するための直前発行コマンドチェックパターンを更新して記憶する(ステップS47〜S48)。
具体的には、メインCPU2は、直前コマンドレスポンスチェックビットマスクテーブル(図18参照)からカードの様式(ここでは、第1の様式)に関連付けられたチェックパターン(ここでは、「0x4C3E0000」)を取得し、このチェックパターンとステップS42にて取得したチェックパターン(今回コマンドのエラービットの位置を表す)との論理積演算を行う(ステップS47)。そして、メインCPU2は、ステップS47にて得られた論理積演算結果(チェックパターン)を新たな直前発行コマンドチェックパターンとして記憶する(ステップS48)。なお、先に説明したように、直前発行コマンドチェックパターンは、RAM4(図2参照)のワーク領域やメインCPU2の内部レジスタ等に記憶するようにしても良い。また、直前発行コマンドチェックパターンの初期値は、初期時には直前コマンドが存在しないため、「0x00000000」とされる。さらにまた、直前発行コマンドチェックパターンは、システムリセット時等にも、ゼロクリアされる。
以上説明したように、本変形例によれば、直前コマンドに対するエラービットが今回レスポンスにセットされた場合であっても、エラーの有無を迅速且つ容易に判定することが可能である。
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の要旨の範囲内で種々の変形実施が可能である。また図2〜図4の各図において、すべてのブロックを含める必要はなく、その一部のブロックを省略する構成にしてもよい。
例えば、電子機器、ホストコントローラの構成は、図2〜図4等で説明した構成に限定されず、種々の変形実施が可能である。また本発明のエラー判定手法も本実施形態で説明したものに限定されるものではなく、種々の変形実施が可能である。
また、明細書又は図面中の記載において広義な用語(電子機器、ホストコントローラ、デバイス、情報処理装置等)として引用された用語(SDMMCホストコントローラ、SDカード(登録商標)、CPU等)は、明細書又は図面中の他の記載においても広義な用語に置き換えることができる。
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の1の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
また、本発明は、MMC(登録商標)及びSDカード(登録商標)を発展した仕様やこれらのカードと同様の思想に基づく種類、仕様、規格、及び/又は、バージョンに準拠したカードのエラー判定にも適用できる。
1 電子機器、2 メインCPU、3 ROM、4 RAM、5 カードコントローラ、6 カードスロット、7 通信回路、10 SDMMCホストコントローラ、11 CPUインタフェース、12 DMAインタフェース、13 カードインタフェース、21 クロック出力部、22 レジスタ制御部、22a〜22o レジスタ、23 SDMMC制御部、23a コマンド・レスポンス送受信部、23b データ送受信部、24 DMA制御部、24a FIFOバッファ、C1〜C6 カード
Claims (14)
- 情報処理装置と、
様式が異なる複数のデバイスを装着可能なデバイス装着部と、
前記情報処理装置と前記デバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する記憶回路と、
を含む電子機器において前記情報処理装置に実行させるためのプログラムであって、
前記デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドを前記デバイス装着部に装着されたデバイスに発行することを前記ホストコントローラに指示する手順と、
前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報を前記エラー判定情報テーブルの中から取得する手順と、
前記デバイス装着部に装着されたデバイスの前記所望のコマンドに対する応答の内容に関する応答内容情報を前記ホストコントローラから取得する手順と、
前記エラー判定情報及び前記応答内容情報に基づいて、前記応答におけるエラーの有無を判定する手順と、
を前記情報処理装置に実行させるためのエラー判定プログラム。 - 請求項1において、
前記エラー判定情報が、前記応答内容情報内のエラーに関する1つ又は複数の部分を特定する情報であり、
前記情報処理装置が、前記応答内容情報内の前記エラー判定情報によって特定される前記1つ又は複数の部分に基づいて、前記応答におけるエラーの有無を判定することを特徴とするエラー判定プログラム。 - 請求項1又は2において、
前記デバイス装着部が、
複数の種類、仕様、規格、及び/又は、バージョンのデバイスを装着可能であり、
前記記憶回路に記憶されている前記エラー判定情報テーブルが、
前記デバイス装着部に装着可能な複数のデバイスの種類、仕様、規格、及び/又は、バージョンと前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含み、
前記情報処理装置が、
前記デバイス装着部に装着されたデバイスの種類、仕様、規格、及び/又は、バージョンと前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報を前記エラー判定情報テーブルの中から取得することを特徴とするエラー判定プログラム。 - 請求項1乃至3のいずれかにおいて、
前記記憶回路に記憶されている前記エラー判定情報テーブルに含まれている前記複数のエラー判定情報の内の少なくとも1つが、前記デバイス装着部に装着可能な複数のデバイスの様式と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの複数の組み合わせに関連付けられていることを特徴とするエラー判定プログラム。 - 請求項1乃至4のいずれかにおいて、
前記記憶回路が、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式をそれぞれ特定する複数の様式特定情報と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドをそれぞれ特定する複数のコマンド特定情報との組み合わせに関連付けて、前記エラー判定情報テーブル内の前記複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを更に記憶し、
前記情報処理装置が、
前記デバイス装着部に装着されたデバイスの様式を特定する前記様式特定情報と前記所望のコマンドを特定する前記コマンド特定情報との組み合わせに関連付けられた前記エラー判定情報特定情報を前記エラー判定情報特定情報テーブルの中から取得し、当該エラー判定情報特定情報によって特定される前記エラー判定情報を前記エラー判定情報テーブルの中から取得することを特徴とするエラー判定プログラム。 - 請求項1乃至5のいずれかにおいて、
前記応答におけるエラーが有ったものと判定された場合に、前記エラー判定情報及び前記応答内容情報に基づいて、前記応答におけるエラーの内容を特定する手順を前記情報処理装置に更に実行させることを特徴とするエラー判定プログラム。 - 請求項1乃至6のいずれかにおいて、
前記エラー判定情報がビットパターンであり、
前記情報処理装置が、
前記エラー判定情報と前記応答内容情報とに論理積演算処理を行い、その結果がゼロであるか否かによって、前記応答におけるエラーの有無を判定することを特徴とするエラー判定プログラム。 - 請求項1乃至3のいずれかにおいて、
前記記憶回路が、前記デバイス装着部に装着可能な複数のデバイスの複数の様式にそれぞれ対応し、前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報をそれぞれ含む複数のエラー判定情報テーブルを記憶し、
前記情報処理装置が、
前記複数のエラー判定情報テーブルの中から前記デバイス装着部に装着されたデバイスの様式に対応するエラー判定情報テーブルを選択し、当該エラー判定情報テーブルの中から前記所望のコマンドに対する応答におけるエラーの有無の判定に利用するための前記エラー判定情報を取得し、当該エラー判定情報及び前記応答内容情報に基づいて、前記応答におけるエラーの有無を判定することを特徴とするエラー判定プログラム。 - 請求項1乃至8のいずれかにおいて、
前記記憶回路が、前記デバイス装着部に装着可能な複数のデバイスの複数の様式に関連付けて、前記デバイス装着部に装着可能な複数のデバイスに複数のコマンドが発行される場合に前記複数のコマンドの内の1つのコマンドに対する応答における前記複数のコマンドの内の前記1つのコマンドの直前に発行されるコマンドに対するエラーの有無の判定に利用するための複数の直前コマンドエラー判定情報を含む直前コマンドエラー判定情報テーブルを更に記憶し、
前記情報処理装置が、
前記デバイス装着部に装着されたデバイスの様式に関連付けられた前記直前コマンドエラー判定情報を前記直前コマンドエラー判定情報テーブルの中から取得し、前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報、前記応答内容情報、前記直前コマンドエラー判定情報、及び、前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドの直前に発行されたコマンドとの組み合わせに関連付けられた前記エラー判定情報に基づいて、前記所望のコマンドに対する応答におけるエラーの有無を判定することを特徴とするエラー判定プログラム。 - 請求項9において、
前記情報処理装置が、
前記所望のコマンドの直前に発行されたコマンドに対する応答におけるエラーの有無を判定した後に、前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドの直前に発行されたコマンドとの組み合わせに関連付けられた前記エラー判定情報と前記デバイス装着部に装着されたデバイスの様式に関連付けられた前記直前コマンドエラー判定情報とに基づいて前記所望のコマンドに対する応答における前記所望のコマンドの直前に発行されたコマンドに対するエラーの有無の判定に利用するための直前発行コマンドチェック情報を作成又は更新して記憶し、前記デバイス装着部に装着されたデバイスの前記所望のコマンドに対する応答の内容に関する応答内容情報を前記ホストコントローラから取得した後に、前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報、前記応答内容情報、及び、前記直前発行コマンドチェック情報に基づいて、前記所望のコマンドに対する応答におけるエラーの有無を判定することを特徴とするエラー判定プログラム。 - 情報処理装置と、
様式が異なる複数のデバイスを装着可能なデバイス装着部と、
前記情報処理装置と前記デバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用するための複数のエラー判定情報を含むエラー判定情報テーブルを記憶する記憶回路と、
を含む電子機器において前記情報処理装置が実行する方法であって、
前記デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドを前記デバイス装着部に装着されたデバイスに発行することを前記ホストコントローラに指示する工程と、
前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報を前記エラー判定情報テーブルの中から取得する工程と、
前記デバイス装着部に装着されたデバイスからの前記所望のコマンドに対する応答の内容に関する応答内容情報を前記ホストコントローラから取得する工程と、
前記エラー判定情報及び前記応答内容情報に基づいて、前記応答におけるエラーの有無を判定する工程と、
を含むエラー判定方法。 - 情報処理装置と、
様式が異なる複数のデバイスを装着可能なデバイス装着部と、
前記情報処理装置と前記デバイス装着部に装着されたデバイスとの間の媒介を行うホストコントローラと、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドとの組み合わせに関連付けて、前記デバイス装着部に装着可能な複数のデバイスの前記複数のコマンドに対する複数の応答におけるエラーの有無の判定に利用可能な複数のエラー判定情報を含むエラー判定情報テーブルを記憶する記憶回路と、
を含む電子機器であって、
前記情報処理装置が、
前記デバイス装着部に装着されたデバイスが実行可能な複数のコマンドの中の所望のコマンドを前記デバイス装着部に装着されたデバイスに発行することを前記ホストコントローラに指示する工程と、
前記デバイス装着部に装着されたデバイスの様式と前記所望のコマンドとの組み合わせに関連付けられた前記エラー判定情報を前記エラー判定情報テーブルの中から取得する工程と、
前記デバイス装着部に装着されたデバイスからの前記所望のコマンドに対する応答の内容に関する応答内容情報を前記ホストコントローラから取得する工程と、
前記エラー判定情報及び前記応答内容情報に基づいて、前記応答におけるエラーの有無を判定する工程と、
を実行することを特徴とする電子機器。 - 請求項12において、
前記記憶回路が、
前記デバイス装着部に装着可能な複数のデバイスの複数の様式をそれぞれ特定する複数の様式特定情報と前記デバイス装着部に装着可能な複数のデバイスが実行可能な複数のコマンドをそれぞれ特定する複数のコマンド特定情報との組み合わせに関連付けて、前記エラー判定情報テーブル内の前記複数のエラー判定情報を特定するための複数のエラー判定情報特定情報を含むエラー判定情報特定情報テーブルを更に記憶し、
前記情報処理装置が、
前記デバイス装着部に装着されたデバイスの様式を特定する前記様式特定情報と前記所望のコマンドを特定する前記コマンド特定情報との組み合わせに関連付けられた前記エラー判定情報特定情報を前記エラー判定情報特定情報テーブルの中から取得し、当該エラー判定情報特定情報によって特定される前記エラー判定情報を前記エラー判定情報テーブルの中から取得することを特徴とする電子機器。 - 請求項12又は13において、
通信回路を更に含み、
前記通信回路を介して前記エラー判定情報テーブル及び/又は前記エラー判定情報特定情報テーブルを更新及び/又は書き換え可能であることを特徴とする電子機器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007135257A JP2008293076A (ja) | 2007-05-22 | 2007-05-22 | エラー判定プログラム、エラー判定方法、及び、電子機器 |
US12/124,214 US7921334B2 (en) | 2007-05-22 | 2008-05-21 | Program and method for error determination, and electronic apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007135257A JP2008293076A (ja) | 2007-05-22 | 2007-05-22 | エラー判定プログラム、エラー判定方法、及び、電子機器 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008293076A true JP2008293076A (ja) | 2008-12-04 |
Family
ID=40073518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007135257A Withdrawn JP2008293076A (ja) | 2007-05-22 | 2007-05-22 | エラー判定プログラム、エラー判定方法、及び、電子機器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7921334B2 (ja) |
JP (1) | JP2008293076A (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2435531A (en) * | 2006-02-27 | 2007-08-29 | Sharp Kk | Control Flow Protection Mechanism |
US9003259B2 (en) * | 2008-11-26 | 2015-04-07 | Red Hat, Inc. | Interleaved parallel redundancy check calculation for memory devices |
JP2011096163A (ja) * | 2009-11-02 | 2011-05-12 | Fujitsu Ltd | レジスタアクセス制御方法およびレジスタアクセス制御回路 |
US20130060880A1 (en) * | 2011-09-01 | 2013-03-07 | Chengdu Haicun Ip Technology Llc | Hybrid Content-Distribution System and Method |
JP2015219643A (ja) * | 2014-05-15 | 2015-12-07 | キヤノン株式会社 | 画像処理装置、情報処理方法及びプログラム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7676640B2 (en) * | 2000-01-06 | 2010-03-09 | Super Talent Electronics, Inc. | Flash memory controller controlling various flash memory cells |
JP2002342256A (ja) | 2001-05-14 | 2002-11-29 | Hitachi Ltd | データプロセッサ及びデータテーブルの更新方法 |
US7162549B2 (en) * | 2001-10-29 | 2007-01-09 | Onspec Electronics, Inc. | Multimode controller for intelligent and “dumb” flash cards |
JP3655597B2 (ja) | 2002-03-25 | 2005-06-02 | 株式会社東芝 | 電子機器、電子カード、及びカード識別方法 |
JP2002324223A (ja) | 2002-03-25 | 2002-11-08 | Oki Electric Ind Co Ltd | Icカード及びicカードシステム |
JP4734838B2 (ja) | 2004-03-24 | 2011-07-27 | 凸版印刷株式会社 | 情報記録媒体とプログラム、及びコマンド実行制御方法 |
JP2006139556A (ja) | 2004-11-12 | 2006-06-01 | Toshiba Corp | メモリカード及びそのカードコントローラ |
JP2007122241A (ja) | 2005-10-26 | 2007-05-17 | Renesas Technology Corp | メモリカードコントローラ及びメモリカード |
-
2007
- 2007-05-22 JP JP2007135257A patent/JP2008293076A/ja not_active Withdrawn
-
2008
- 2008-05-21 US US12/124,214 patent/US7921334B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7921334B2 (en) | 2011-04-05 |
US20080294945A1 (en) | 2008-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4846493B2 (ja) | デバッグシステム及びデバッグ回路 | |
US20150025656A1 (en) | Support device, recording medium having support program recorded thereon, and method for generating executable program | |
JP2011133473A (ja) | 試験装置、試験方法およびプログラム | |
CN111414325B (zh) | 一种Avalon总线转Axi4总线的方法 | |
JP2008293076A (ja) | エラー判定プログラム、エラー判定方法、及び、電子機器 | |
US6708289B1 (en) | Microcomputer, electronic equipment and debugging system | |
JP4373255B2 (ja) | ダイレクトメモリアクセス制御装置および方法 | |
JP4644569B2 (ja) | 複数チップの起動方法 | |
US7844754B2 (en) | Data transfer apparatus and data transfer method | |
US20100153622A1 (en) | Data Access Controller and Data Accessing Method | |
JP2008198060A (ja) | 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法 | |
US20170192838A1 (en) | Cpu system including debug logic for gathering debug information, computing system including the cpu system, and debugging method of the computing system | |
JP4471947B2 (ja) | データ処理装置及びデータ処理方法 | |
EP2194458A2 (en) | Request processing device, request processing system, and access testing method | |
US20060284876A1 (en) | Method and apparatus for programming an input/output device over a serial bus | |
JP2008293077A (ja) | ホストコントローラ、電子機器、及び、エラー判定方法 | |
KR101574406B1 (ko) | 묘화 제어 장치 | |
CN101562007A (zh) | 可自动更新韧件的显示控制装置及其更新方法 | |
JP2009205366A (ja) | チャネル装置、情報処理システム、及びデータ転送方法 | |
JP2001357023A (ja) | 半導体集積回路及びそれに内蔵された不揮発性メモリへの書き込み方法 | |
CN111158658B (zh) | 指令处理方法、装置、终端设备及存储介质 | |
JP3741182B2 (ja) | マイクロコンピュータ、電子機器及びデバッグシステム | |
JP4716929B2 (ja) | プログラムデバッグ支援処理装置及び通信用アダプタ並びにプログラムデバッグ支援処理プログラム | |
JP2005251217A (ja) | マイクロコンピュータ、電子機器及びデバッグシステム | |
US7325085B2 (en) | Motherboard and control method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090415 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090428 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090603 |