(57)【要約】【課題】複数のデバイスを制御するホストといった半導体装置において、開発コストの低減を実現する。【解決手段】例えば、複数のポートＰＴ［１］〜ＰＴ［Ｎ］と、これらにアクセスする複数のコントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］を設ける。または、ＰＴ［１］〜ＰＴ［Ｎ］と、１個のコントローラＣＴＬ［１］と、ＰＴ［１］〜ＰＴ［Ｎ］とＣＴＬ［１］の接続を選択するポート選択コントローラＰＴＳＥＬを設ける。更に、このようなコントローラを制御する１個のドライバＤＲＶをメモリＭＥＭに格納し、ＤＲＶ内に複数の制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］を設ける。制御領域には、ＣＴＬ［１］〜ＣＴＬ［Ｎ］やＰＴ［１］〜ＰＴ［Ｎ］を特定するための情報を格納し、これによって、コントローラの構成に関わらず、１個のＤＲＶで対応可能となる。【選択図】図１
2008134701.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスに対応して設けられた複数のポートと、
前記複数のポートにそれぞれアクセスする複数のコントローラと、
前記複数のコントローラに対する共通の制御プログラムとなるデバイスドライバが格納されたメモリと、
前記デバイスドライバを実行し、前記複数のポートにアクセスを行うプロセッサとを具備し、
前記デバイスドライバは、前記複数のコントローラをそれぞれ特定するための識別情報を保持し、
前記プロセッサは、前記識別情報を参照することで、前記複数のコントローラのいずれかを制御し、このコントローラに対応するポートに対してアクセスを行うことを特徴とする半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記複数のデバイスは、メモリカードであることを特徴とする半導体装置。
【請求項３】
請求項１記載の半導体装置において、
前記複数のポートは、第１および第２デバイスに対応する第１および第２ポートを含み、
前記複数のコントローラは、第１および第２コントローラを含み、
前記第１コントローラは、第１レジスタを備え、前記第１レジスタの制御に基づいて前記第１ポートにアクセスし、
前記第２コントローラは、第２レジスタを備え、前記第２レジスタの制御に基づいて前記第２ポートにアクセスし、
前記デバイスドライバは、前記第１および前記第２ポートに対応して第１および第２メモリ領域を確保し、
前記第１メモリ領域には、前記第１レジスタを特定するための前記識別情報となる第１レジスタアドレスが格納され、
前記第２メモリ領域には、前記第２レジスタを特定するための前記識別情報となる第２レジスタアドレスが格納され、
前記プロセッサは、
前記第１ポートにアクセスする際に、前記第１メモリ領域を参照することで前記第１レジスタを制御し、
前記第２ポートにアクセスする際に、前記第２メモリ領域を参照することで前記第２レジスタを制御することを特徴とする半導体装置。
【請求項４】
請求項３記載の半導体装置において、
前記第１メモリ領域には、更に、前記第１デバイスが前記第１ポートに接続された際に取得した前記第１デバイスのアクセス情報が格納され、
前記第２メモリ領域には、更に、前記第２デバイスが前記第２ポートに接続された際に取得した前記第２デバイスのアクセス情報が格納されることを特徴とする半導体装置。
【請求項５】
請求項３記載の半導体装置において、
前記第１メモリ領域は、前記第１ポートに前記第１デバイスが接続された際に確保され、前記第１ポートから前記第１デバイスが削除された際に解放され、
前記第２メモリ領域は、前記第２ポートに前記第２デバイスが接続された際に確保され、前記第２ポートから前記第２デバイスが削除された際に解放されることを特徴とする半導体装置。
【請求項６】
複数のデバイスに対応して設けられた複数のポートと、
前記複数のポートを制御するコントローラと、
ポート番号が設定された際に、前記コントローラを前記複数のポートの中の前記ポート番号に対応するポートに接続するポート選択コントローラと、
前記コントローラおよび前記ポート選択コントローラの制御プログラムとなるデバイスドライバが格納されたメモリと、
前記デバイスドライバを実行し、前記複数のポートにアクセスを行うプロセッサとを具備し、
前記デバイスドライバは、前記コントローラを特定するための識別情報と、前記ポート番号とを保持し、
前記プロセッサは、前記識別情報を参照することで前記コントローラを制御し、かつ前記ポート番号を参照して前記ポート選択コントローラを設定することで前記複数のポートのいずれかに対してアクセスを行うことを特徴とする半導体装置。
【請求項７】
請求項６記載の半導体装置において、
前記複数のデバイスは、メモリカードであることを特徴とする半導体装置。
【請求項８】
請求項６記載の半導体装置において、
前記複数のポートは、第１および第２デバイスに対応する第１および第２ポートを含み、
前記コントローラは、レジスタを備え、前記レジスタの制御に基づいて前記第１または前記第２ポートにアクセスし、
前記ポート選択コントローラは、第１ポート番号が設定された際に前記コントローラを前記第１ポートに接続し、第２ポート番号が設定された際に前記コントローラを前記第２ポートに接続し、
前記デバイスドライバは、前記第１および前記第２ポートに対応して第１および第２メモリ領域を確保し、
前記第１メモリ領域には、前記レジスタを特定するための前記識別情報となるレジスタアドレスと、前記第１ポート番号とが格納され、
前記第２メモリ領域には、前記レジスタアドレスと前記第２ポート番号とが格納され、
前記プロセッサは、
前記第１ポートにアクセスする際に、前記第１メモリ領域を参照することで前記レジスタの制御と前記ポート選択コントローラに対する設定を行い、
前記第２ポートにアクセスする際に、前記第２メモリ領域を参照することで前記レジスタの制御と前記ポート選択コントローラに対する設定を行うことを特徴とする半導体装置。
【請求項９】
請求項８記載の半導体装置において、
前記第１メモリ領域には、更に、前記第１デバイスが前記第１ポートに接続された際に取得した前記第１デバイスのアクセス情報が格納され、
前記第２メモリ領域には、更に、前記第２デバイスが前記第２ポートに接続された際に取得した前記第２デバイスのアクセス情報が格納されることを特徴とする半導体装置。
【請求項１０】
請求項８記載の半導体装置において、
前記第１メモリ領域は、前記第１ポートに前記第１デバイスが接続された際に確保され、前記第１ポートから前記第１デバイスが削除された際に解放され、
前記第２メモリ領域は、前記第２ポートに前記第２デバイスが接続された際に確保され、前記第２ポートから前記第２デバイスが削除された際に解放されることを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、特に、複数のメモリカードを接続可能なマイクロコンピュータなどの半導体装置に適用して有益な技術に関するものである。
【背景技術】
【０００２】
例えば、特許文献１には、容量の比較的小さいリムーバブルな蓄積メディアを複数個用い、ＡＶデータのような大容量データを連続して記録する場合、複数ファイルを１つのファイルとみなして分割記録できるようにしたデータ記録再生装置が示されている。このデータ記録再生装置では、一方のＳＤメモリカードの最終論理セクタアドレスに、他方のＳＤメモリカードの先頭論理セクタアドレスを、上記最終論理セクタアドレスのオフセットが加算された形で連続的にマッピングしている。これによって、仮想的にメディアの大容量化を図ることができる。
【０００３】
また、特許文献２には、複数の機能の同時動作を可能にする、ＰＤＡデバイス、およびＰＤＡマイクロプロセッサ・コントローラが示されている。具体的には、機能デバイス群のすべてをホスト・コントローラに接続し、ホスト・コントローラと個々のデバイスの間でやり取りされるコマンド信号およびコンテンツ・データを多重化することによって複数の機能の同時動作を実現している。なお、この多重化を実現するため、ホスト・コントローラが機能デバイス群からの信号応答を使用して動的スイッチング・マトリックスを切り替える仕組みが備わっている。
【特許文献１】特開２００５−００４５１４号公報
【特許文献２】特開２００６−０２４２１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
例えば、デジタルカメラや各種モバイル機器等を代表に、ＳＤ（Secure Digital）カードやＭＭＣ（MultiMediaCard）（登録商標）等といった各種メモリカードが広く使用されている。近年では、メモリカード間のコピーやメモリカードの拡張などの要求に伴い、１台のホストで複数のメモリカードを制御できる、複数カードシステムが必要とされている。このような複数カードシステムを実現する場合、例えば、複数のホストコントローラ（以下、コントローラ）で複数のメモリカードを制御する構成や、１個のコントローラで複数のメモリカードを制御する構成が考えられる。
【０００５】
図１０は、本発明の前提として検討した半導体装置において、その構成の一例を示す概略図である。図１０に示す半導体装置（ホストＨＳＴ２０）は、複数のコントローラで複数のデバイスを制御する構成となっており、各デバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］（Ｎ≧２）に対応してコントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］とデバイスドライバ（以下、ドライバ）ＤＲＶ［１］〜ＤＲＶ［Ｎ］が備わっている。図１０のＣＴＬ［１］〜ＣＴＬ［Ｎ］は、各コントローラが備えるレジスタ群に割り当てられた論理アドレス空間を示しており、各レジスタ群がＨＳＴ２０の互いに異なる論理アドレス空間に割り当てられることを示している。
【０００６】
ＤＥＶ［１］、ＤＥＶ［２］、…、ＤＥＶ［Ｎ］は、それぞれ、外部バスＢＵＳ［１］、ＢＵＳ［２］、…、ＢＵＳ［Ｎ］を介して、ＨＳＴ２０の各ポートＰＴ［１］、ＰＴ［２］、…、ＰＴ［Ｎ］に接続される。ＣＴＬ［１］およびＤＲＶ［１］は、ＰＴ［１］を介してＤＥＶ［１］を制御し、ＣＴＬ［２］およびＤＲＶ［２］は、ＰＴ［２］を介してＤＥＶ［２］を制御し、以下同様に、ＣＴＬ［Ｎ］およびＤＲＶ［Ｎ］は、ＰＴ［Ｎ］を介してＤＥＶ［Ｎ］を制御する。
【０００７】
図１１は、本発明の前提として検討した半導体装置において、その構成の他の一例を示す概略図である。図１１に示す半導体装置（ホストＨＳＴ２１）は、１個のコントローラで複数のデバイスを制御する構成となっており、各デバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］に対応して１個のコントローラＣＴＬおよびポート選択コントローラＰＴＳＥＬとＮ個のドライバＤＲＶ［１］〜ＤＲＶ［Ｎ］が備わっている。ＤＲＶ［１］は、自身が制御するポートの情報Ｉ＿ＰＴ［１］をＣＴＬおよびＰＴＳＥＬに伝達し、同様に、ＤＲＶ［Ｎ］は、自身が制御するポートの情報Ｉ＿ＰＴ［Ｎ］をＣＴＬおよびＰＴＳＥＬに伝達する。ＨＳＴ２１は、ＰＴＳＥＬにより各ポートＰＴ［１］〜ＰＴ［Ｎ］を切り替えながら、ＤＲＶ［１］〜ＤＲＶ［Ｎ］のいずれかとＣＴＬを組み合わせてＤＥＶ［１］〜ＤＥＶ［Ｎ］を制御する。
【０００８】
図１０と図１１のどちらの構成を適用するかは、例えば、ユーザが要求する性能や価格などに応じて使い分けられる。例えば、各ポート毎にそれぞれコントローラを備えた図１０の構成は、図１１の構成に比べて多様性や高速性といった点でメリットがある。一方、図１１の構成は、図１０の構成に比べて価格や消費電力といった点でメリットがある。したがって、このような半導体装置を提供する側では、ユーザの要求に応じて、前述した２種類の構成のいずれかが備わった製品を早期に又は低コストで開発する必要がある。
【０００９】
しかしながら、ユーザの要求があった際に、コントローラの仕様を図１０または図１１のどちらにするかによって、それぞれ別のドライバを開発する必要があるため、開発コストが増大する恐れがある。さらに、図１０および図１１のいずれの場合においても、デバイス数だけドライバを開発する必要があるため、開発コストの増大を招くと共に、デバイス数×ドライバサイズ（数１０Ｋバイト）のメモリ領域確保も必要となることから、メモリ使用の無駄も懸念される。
【００１０】
そこで、本発明の目的の一つは、複数のデバイスを制御するホストといった半導体装置において、開発コストの低減を実現することにある。なお、本発明の前記ならびにそれ以外の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本発明の一実施の形態による半導体装置は、複数のポートと、これらのポートにアクセスする複数のコントローラと、デバイスドライバが格納されたメモリと、デバイスドライバを実行するプロセッサとを備えたものとなっている。また、他の構成として、複数のポートと、このポートにアクセスするコントローラと、コントローラを複数のポートのいずれかに接続するポート選択コントローラと、デバイスドライバが格納されたメモリと、デバイスドライバを実行するプロセッサとを備えたものとなっている。そして、このような構成において、デバイスドライバに複数のコントローラや複数のポートを特定するための情報を保持させる。これによって、コントローラの構成に関わらず、１個のデバイスドライバで複数のポートへのアクセスが可能となる。
【発明の効果】
【００１２】
本発明の一実施の形態による半導体装置によると、１個のデバイスドライバをコントローラの構成に関わらず適用可能になり、開発コストの低減が実現可能になる。
【発明を実施するための最良の形態】
【００１３】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１４】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
（実施の形態１）
図１は、本発明の実施の形態１による半導体装置において、その構成の一例を示すブロック図である。図１の半導体装置（ホストＨＳＴ１）は、プロセッサＣＰＵと、メモリＭＥＭと、Ｎ（Ｎ≧２）個のコントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］（又は１個のコントローラＣＴＬ）と、ポート選択コントローラＰＴＳＥＬと、Ｎ個のポートＰＴ［１］〜ＰＴ［Ｎ］などを含んで構成される。なお、ＰＴＳＥＬは、１個ではなくＮ個のコントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］を備えている場合には省略可能である。ＰＴ［１］〜ＰＴ［Ｎ］は、それぞれ、Ｎ個の外部バスＢＵＳ［１］〜ＢＵＳ［Ｎ］を介してＮ個のデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］に接続される。
【００１７】
ここで、本実施の形態１の主要な特徴は、詳細は後述するが、メモリＭＥＭ内に１個のドライバＤＲＶが実装され、このＤＲＶ内にＮ個の制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］が設けられることである。ＣＰＵは、ＤＲＶの命令を実行し、ＣＴＬ［１］〜ＣＴＬ［Ｎ］（又はＣＴＬ）を制御する。ＣＴＬ［１］〜ＣＴＬ［Ｎ］（又はＣＴＬ）は、コマンド送信、レスポンス受信、データ送受信などの機能を持ち、ＤＥＶ［１］〜ＤＥＶ［Ｎ］を制御する。
【００１８】
ポート選択コントローラＰＴＳＥＬは、各ポートＰＴ［０］〜ＰＴ［Ｎ］をアクセス対象となるデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］にそれぞれ割り当てる機能を備える。ＤＥＶ［１］〜ＤＥＶ［Ｎ］は、それぞれ同種のデバイスとなっている。ＤＥＶ［１］〜ＤＥＶ［Ｎ］の一例として、ＳＤカード、ＭＭＣ（登録商標）カード、ＵＳＢデバイスなどが挙げられる。外部バスＢＵＳ［１］〜ＢＵＳ［Ｎ］は、それぞれ同じ構成となっており、例えば、ＳＤカードやＭＭＣ（登録商標）カード規格で定義されたコマンド、レスポンス、及びデータなどが転送される。
【００１９】
図２は、図１の半導体装置において、そのコントローラの構成例を示すブロック図である。図２に示すコントローラＣＴＬは、例えば、入出力部ＩＯ＿ＢＬＫ、制御部ＣＴ＿ＢＬＫ、ＦＩＦＯ部ＦＩＦＯ＿ＢＬＫ、データ変換部Ｓ／Ｐ＿ＢＬＫ、及びトランシーバ部ＴＲ＿ＢＬＫなどから構成される。ＩＯ＿ＢＬＫは、コントローラＣＴＬの各種レジスタＲＥＧが実装され、ＣＰＵは、ＲＥＧにアクセスすることでＣＴＬを制御する。ＣＴ＿ＢＬＫは、コマンド、レスポンス、及びデータの同期や抽出に使用するクロックの生成、コマンドの作成、受信したレスポンスの解析、データの送受信制御を行う。ＦＩＦＯ＿ＢＬＫは、送受信データを一時的に格納する。Ｓ／Ｐ＿ＢＬＫは、送信データのシリアル変換、及び受信したデータのパラレル変換を行う。ＴＲ＿ＢＬＫは、アナログ・デジタル変換器ＡＤＣなどを含み、Ｓ／Ｐ＿ＢＬＫとポートＰＴとの間で送受信データの伝達を行う。
【００２０】
図３は、図１の半導体装置において、その論理アドレス空間の一例を示す概略図である。図１のホストＨＳＴ１が備える論理アドレス空間内には、メモリ（ＭＥＭ）空間とレジスタ（ＲＥＧ）空間が含まれている。ＭＥＭ空間には、不揮発性メモリであるＦｌａｓｈ  ＲＯＭや揮発性メモリであるＳＤＲＡＭなどを持つメモリ空間が割り当てられ、ＲＥＧ空間には、周辺モジュール（ＤＭＡ（Direct Memory Access）や割り込みコントローラ等）に対して入出力を行うためのレジスタの空間などが含まれている。
【００２１】
図１の半導体装置では、ドライバＤＲＶの構成要素となるプログラム領域ＰＲＧ＿ＡＲが、ＭＥＭ空間のＦｌａｓｈ  ＲＯＭに格納され、ＤＲＶの他の構成要素となるデータ領域ＤＡＴ＿ＡＲや前述した制御領域ＣＴＬ＿ＡＲが、ＭＥＭ空間のＳＤＲＡＭに格納される。また、コントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］（又はＣＴＬ）とポート選択コントローラＰＴＳＥＬは、ＲＥＧ空間に割り当てられる。なお、図３におけるＣＴＬ［１］〜ＣＴＬ［Ｎ］は、図２のＩＯ＿ＢＬＫ内の各レジスタＲＥＧに割り当てられたアドレス空間に該当し、図示はしないが、ＰＴＳＥＬも同様に内部のレジスタに割り当てられたアドレス空間に該当する。
【００２２】
図４は、図１の半導体装置において、そのドライバに含まれる制御領域の機能の一例を説明するための概略図である。図４は、図１に示したホストＨＳＴ１の主要部を抽出したものとなっており、Ｎ個のコントローラでＮ個のデバイスを制御する構成となっている。図４に示すホストＨＳＴ１０は、１個のドライバＤＲＶと、Ｎ個のコントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］と、ＣＴＬ［１］〜ＣＴＬ［Ｎ］にそれぞれ１対１で対応したＮ個のポートＰＴ［１］〜ＰＴ［Ｎ］を含んでいる。ＰＴ［１］〜ＰＴ［Ｎ］は、図１と同様に外部バスＢＵＳ［１］〜ＢＵＳ［Ｎ］を介してデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］に接続されている。
【００２３】
ここで、ＤＲＶには、Ｎ個の制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］が設けられ、各制御領域には、コントローラに対応するアドレス空間の先頭アドレス（以下、アドレス）と、ポート番号と、データ転送単位などデバイスアクセスに必要なパラメータ（以下、アクセス情報）が格納される。例えば、ＣＴＬ＿ＡＲ［１］のアドレスは、ＣＴＬ［１］に対応するアドレス空間（レジスタに割り当てられたアドレス空間）の先頭アドレスとなっている。同様に、ＣＴＬ＿ＡＲ［２］のアドレスは、ＣＴＬ［２］に対応するアドレス空間の先頭アドレスとなっており、ＣＴＬ＿ＡＲ［Ｎ］のアドレスは、ＣＴＬ［Ｎ］に対応するアドレス空間の先頭アドレスとなっている。
【００２４】
このような構成を用いた場合の動作概要は、例えば次のようになる。まず、ホストＨＳＴ１０が、ドライバＤＲＶの起動時に、コントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］の先頭アドレスを、制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のアドレスにそれぞれ設定する。その後、ＨＳＴ１０は、ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のアドレスを参照してＣＴＬ［１］〜ＣＴＬ［Ｎ］にアクセスすることで、ＣＴＬ［１］〜ＣＴＬ［Ｎ］にそれぞれ関連付けられたデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］にアクセスする。
【００２５】
図５は、図１の半導体装置において、そのドライバに含まれる制御領域の他の機能の一例を説明するための概略図である。図５は、図１に示したホストＨＳＴ１の主要部を抽出したものとなっており、図４と異なり１個のコントローラでＮ個のデバイスを制御する構成となっている。図５に示すホストＨＳＴ１１は、１個のドライバＤＲＶと、１個のコントローラＣＴＬおよびポート選択コントローラＰＴＳＥＬと、Ｎ個のポートＰＴ［１］〜ＰＴ［Ｎ］を含んでいる。ＰＴ［１］〜ＰＴ［Ｎ］は、図１と同様に外部バスＢＵＳ［１］〜ＢＵＳ［Ｎ］を介してデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］に接続されている。
【００２６】
ここで、図４と同様に、ＤＲＶには、Ｎ個の制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］が設けられ、各制御領域には、アドレスと、ポート番号と、アクセス情報が格納される。但し、図４と異なり、ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のアドレスは全て共通であり、ＣＴＬに対応するアドレス空間（レジスタに割り当てられたアドレス空間）の先頭アドレスとなっている。一方、ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のポート番号は、それぞれ異なる値が格納される。例えば、ＣＴＬ＿ＡＲ［１］のポート番号は［１］であり、ポート選択コントローラＰＴＳＥＬには、このポート番号の情報Ｉ＿ＰＴ［１］が伝達されることになる。同様に、ＣＴＬ＿ＡＲ［２］，ＣＴＬ＿ＡＲ［Ｎ］のポート番号はそれぞれ［２］，［Ｎ］であり、ＰＴＳＥＬには、このポート番号の情報Ｉ＿ＰＴ［２］，Ｉ＿ＰＴ［Ｎ］が伝達されることになる。
【００２７】
このような構成を用いた場合の動作概要は、例えば次のようになる。まず、ホストＨＳＴ１１が、ドライバＤＲＶの起動時に、ポート番号［１］〜［Ｎ］を順番に制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のポート番号に設定する。その後、ＨＳＴ１１はＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のポート番号を参照し、ポート選択コントローラＰＴＳＥＬによるポート切り替え機能を利用しながら、各ポートＰＴ［１］〜ＰＴ［Ｎ］にそれぞれ関連付けられたデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］にアクセスする。
【００２８】
以上、図４および図５から判るように、ドライバ内にデバイスを選択する制御領域を持たせることで、同一の共通ドライバを用いて複数のコントローラ搭載時と１個のコントローラ搭載時の制御が可能になる。したがって、図１０および図１１の場合のように、それぞれ個別にドライバを開発する必要がなくなり、ドライバ開発期間の短縮ならびに開発コストの低減が実現可能となる。
【００２９】
さらに、１個のドライバでＮ個のデバイスを制御可能になるため、図１０および図１１のようにデバイスの数に応じた数のドライバを実装する必要が無くなり、開発コストの低減が可能になる。また、１個のデバイスドライバのサイズは例えば数１０Ｋバイト程度であり、そのうち制御領域のサイズは数１００バイト程度（＜＜数１０Ｋバイト）で足りる。したがって、図１０および図１１と比べて、デバイス１個あたり数１０Ｋバイト程度の省メモリ化が得られる。なお、省メモリ化の程度は、接続されるデバイスの数に比例するので、本実施の形態１の半導体装置は、１台のホストに規格上多くのデバイスを接続できる、ＳＤカードやＭＭＣカードなどのホスト製品や、ＵＳＢのホスト製品などに適用して特に有益な効果が得られる。
【００３０】
図６は、図４および図５の半導体装置において、そのドライバの詳細な動作の一例を示すフロー図である。まず、ドライバ起動後、ポート数だけの制御領域を確保する（Ｓ６０１）。ここでは、ポート数をＮ（Ｎ≧２）とし、これに応じてＮ個の制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］を確保することにする。次に、コントローラ数を判定する（Ｓ６０２）。この判定は、例えばホストＨＳＴが通常備えている構成レジスタなどを参照して行う。コントローラが複数の場合、制御領域ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のアドレスを、それぞれコントローラＣＴＬ［１］〜ＣＴＬ［Ｎ］の先頭アドレスに設定する（Ｓ６０３）。一方、コントローラが１個の場合、ＣＴＬ＿ＡＲ［１］〜ＣＴＬ＿ＡＲ［Ｎ］のポート番号を、それぞれ［１］〜［Ｎ］に設定する（Ｓ６０４）。
【００３１】
続いて、新規にデバイスが接続されたかを判定する（Ｓ６０５）。接続の有無は、例えばコントローラのデバイス検出レジスタなどを参照することで行う。デバイスが接続された場合、接続ポートを判定する（Ｓ６０６）。ここで、ポートＰＴ［Ｘ］（１≦Ｘ≦Ｎ）にデバイスが接続されたとする。この場合、ＰＴ［Ｘ］に接続されたデバイスＤＥＶ［Ｘ］のアクセス情報を取得し、それを制御領域ＣＴＬ＿ＡＲ［Ｘ］のアクセス情報に設定する（Ｓ６０６）。
【００３２】
次いで、アプリケーションなど上位ソフトウェアからのアクセス要求の有無を判定する（Ｓ６０７）。この判定は、例えばドライバのリード関数やライト関数等が上位ソフトウェアから呼び出されたか否かによって行う。アクセス要求があった場合、アクセスポートを判定する。アクセスポートの判定は、上位ソフトウェアがデバイスを認識するドライブ番号等により行う。ここでは、ポートＰＴ［Ｙ］（１≦Ｙ≦Ｎ）にアクセスがあったとする。この場合、制御領域ＣＴＬ＿ＡＲ［Ｙ］のアクセス情報が設定済みであるかを判定する（Ｓ６０８）。
【００３３】
アクセス情報が設定済みでない場合、デバイスの準備が未完でありアクセス不可となるので、上位ソフトウェアにエラーを通知する（Ｓ６１４）。逆に、アクセス情報が設定済みの場合、コントローラ数を判定する（Ｓ６０９）。コントローラが複数の場合、ＣＴＬ＿ＡＲ［Ｙ］のアドレスを参照し、対応するコントローラＣＴＬ［Ｙ］にアクセスする（Ｓ６１０）。この場合、コントローラＣＴＬ［Ｙ］がデバイスＤＥＶ［Ｙ］に関連付けられているので、目的のデバイスにアクセスすることになる（Ｓ６１１）。一方、Ｓ６０９において、コントローラが１個の場合、ＣＴＬ＿ＡＲ［Ｙ］のポート番号（ここでは［Ｙ］）を参照し、ホストのポート選択コントローラＰＴＳＥＬにアクセスすることで当該ポート番号（［Ｙ］）が有効なポートとなるよう設定変更する（Ｓ６１２）。この場合、ポートＰＴ［Ｙ］がデバイスＤＥＶ［Ｙ］に関連付けられているので、この１個のコントローラＣＴＬへアクセスすることにより、目的とするデバイスへのアクセスが可能となる（Ｓ６１３）。
【００３４】
続いて、デバイスが削除されたかを判定する（Ｓ６１５）。削除の有無は、例えばコントローラのデバイス削除レジスタなどを参照する。デバイスが削除された場合、削除ポートを判定する。ここで、ポートＰＴ［Ｚ］（１≦Ｚ≦Ｎ）のデバイスＤＥＶ［Ｚ］が削除されたとすると、制御領域ＣＴＬ＿ＡＲ［Ｚ］のアクセス情報を初期化する（Ｓ６１６）。その後、ドライバを終了しないのであれば、Ｓ６０５に戻り、デバイスの接続、アプリケーションなど上位ソフトウェアからのアクセス要求、及びデバイスの削除を待つ（Ｓ６１７）。
【００３５】
図７は、図１の半導体装置の適用例を示す説明図である。図１の半導体装置は、例えば図７に示すようなデジタルカメラ等の電子機器ＭＣに適用される。この電子機器ＭＣは、例えば、複数（ここでは２個）のメモリカードコネクタＣＮ［１］，ＣＮ［２］を備えており、このＣＮ［１］，ＣＮ［２］にＳＤメモリカードやＳＤＩＯカードなどが接続される。図１の半導体装置は、ＭＣ内部の例えばマイクロコンピュータとして適用され、そのマイクロコンピュータが備える複数のポートＰＴ［１］，ＰＴ［２］がそれぞれＣＮ［１］，ＣＮ［２］に接続される。
【００３６】
以上、本実施の形態１の半導体装置を用いることで、同一のドライバを用いて複数のコントローラ搭載時と１個のコントローラ搭載時の制御が可能になるため、開発コストの低減が実現可能になる。また、１個のドライバで複数のデバイスを制御可能になるため、開発コストの低減に加えて、省メモリ化が可能になる。
【００３７】
（実施の形態２）
前述した実施の形態１では、ドライバ内にデバイスの数に応じた数の制御領域を確保する例を示したが、本実施の形態２では、この制御領域をデバイス接続時に動的に確保する例を示す。本実施の形態２の半導体装置の構成は、図１において、例えばデバイスＤＥＶが１個接続されている場合は、１個の制御領域ＣＴＬ＿ＡＲが確保され、ＤＥＶがＮ個接続されている場合は、Ｎ個の制御領域ＣＴＬ＿ＡＲが確保されるようなものとなる。
【００３８】
図８は、本発明の実施の形態２による半導体装置において、そのドライバの詳細な動作の一例を示すフロー図である。まず、ドライバ起動後、新規にデバイスが接続されたかを判定する（Ｓ８０１）。デバイスが接続された場合、接続ポートを判定する。ここでは、ポート数をＮ（Ｎ≧２）とし、ポートＰＴ［Ｘ］（１≦Ｘ≦Ｎ）にデバイスＤＥＶ［Ｘ］が接続されたとする。これに伴い、制御領域ＣＴＬ＿ＡＲ［Ｘ］を動的に確保する（Ｓ８０２）。
【００３９】
続いて、コントローラ数を判定する（Ｓ８０３）。コントローラが複数の場合、Ｓ８０２で確保された制御領域ＣＴＬ＿ＡＲ［Ｘ］のアドレスをコントローラＣＴＬ［Ｘ］の先頭アドレスに設定する（Ｓ８０４）。一方、コントローラが１個の場合、ＣＴＬ＿ＡＲ［Ｘ］のポート番号を［Ｘ］に設定する（Ｓ８０５）。その後、ポートＰＴ［Ｘ］に接続されたデバイスＤＥＶ［Ｘ］のアクセス情報を取得し、それをＣＴＬ＿ＡＲ［Ｘ］のアクセス情報に設定する（Ｓ８０６）。
【００４０】
次いで、アプリケーションなど上位ソフトウェアからのアクセス要求の有無を判定する（Ｓ８０７）。アクセス要求があった場合、アクセスポートを判定する。ここでは、ポートＰＴ［Ｙ］（１≦Ｙ≦Ｎ）にアクセスがあったとする。この場合、制御領域ＣＴＬ＿ＡＲ［Ｙ］のアクセス情報が設定済みであるかを判定する（Ｓ８０８）。
【００４１】
アクセス情報が設定済みでない場合、デバイスの準備が未完でありアクセス不可となるので、上位ソフトウェアにエラーを通知する（Ｓ８１４）。逆に、アクセス情報が設定済みの場合、コントローラ数を判定する（Ｓ８０９）。コントローラが複数の場合、制御領域ＣＴＬ＿ＡＲ［Ｙ］のアドレスを参照し、対応するコントローラＣＴＬ［Ｙ］にアクセスする（Ｓ８１０）。この場合、コントローラＣＴＬ［Ｙ］がデバイスＤＥＶ［Ｙ］に関連付けられているので、目的のデバイスにアクセスすることになる（Ｓ８１１）。一方、Ｓ８０９においてコントローラが１個の場合、制御領域ＣＴＬ＿ＡＲ［Ｙ］のポート番号（ここでは［Ｙ］）を参照し、ポート選択コントローラＰＴＳＥＬにアクセスすることで当該ポート番号（［Ｙ］）が有効なポートとなるよう設定変更する（Ｓ８１２）。この場合、ポートＰＴ［Ｙ］がデバイスＤＥＶ［Ｙ］に関連付けられているので、この１個のコントローラＣＴＬへアクセスすることにより、目的とするデバイスへのアクセスが可能となる（Ｓ８１３）。
【００４２】
続いて、デバイスが削除されたかを判定する（Ｓ８１５）。デバイスが削除された場合、削除ポートを判定する。ここで、ポートＰＴ［Ｚ］（１≦Ｚ≦Ｎ）のデバイスＤＥＶ［Ｚ］が削除されたとすると、制御領域ＣＴＬ＿ＡＲ［Ｚ］のアクセス情報を初期化する（Ｓ８１６）。そして、ＣＴＬ＿ＡＲ［Ｚ］を解放し、Ｓ８１８へ移行する（Ｓ８１７）。この処理により、メモリ使用量が節約できる。一方、デバイスが削除されていない場合は、そのままＳ８１８へ移行する。
【００４３】
Ｓ８１８において、ドライバを終了しないのであれば、Ｓ８０１に戻り、デバイスの接続、アプリケーションなど上位ソフトウェアからのアクセス要求、及びデバイスの削除を待つ。したがって、例えば、１つ目のデバイスが接続された状態で２つ目のデバイスが接続された場合は、Ｓ８０２で２つ目の制御領域が確保され、この制御領域を利用して２つ目のデバイスへのアクセスが行われる。また、この２つ目のデバイスが削除された場合は、それに対応する制御領域がＳ８１７において解放される。
【００４４】
以上、本実施の形態２の半導体集積回路装置を用いることで、実施の形態１と同様に、開発コストの低減や、省メモリ化が実現可能となる。また、制御領域を動的に確保することによって、更なる省メモリ化を図ることが可能となる。
【００４５】
（実施の形態３）
本実施の形態３では、前述したようなドライバの機能を、ブロードキャスト型のシステムに応用した場合の例について説明する。図９は、本発明の実施の形態３による半導体装置において、その構成例を示す概略図であり、（ａ）は１対１接続のシステム構成例、（ｂ）は１対Ｎ接続のシステム構成例を示すものである。前述した実施の形態１および２では、図９（ａ）に示すように、ホストＨＳＴ１の各ポートＰＴ［１］〜ＰＴ［Ｎ］（Ｎ≧２）に対して１対１でデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］が接続されるシステムを例とした。
【００４６】
一方、例えば、マルチメディアカード（ＭＭＣ（登録商標））やＵＳＢなどでは、図９（ｂ）に示すように、ホストＨＳＴ１の単一ポートＰＴに外部バスＢＵＳを介して複数のデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］が接続される１対Ｎのシステムを構築できる。この１対Ｎのシステムはブロードキャスト型のシステムとも呼ばれる。このようなブロードキャスト型の構成で、１個のコントローラＣＴＬによりＮ個のデバイスＤＥＶ［１］〜ＤＥＶ［Ｎ］を制御する場合、ＨＳＴ１がドライバＤＲＶの制御領域を用いてポートを切り替える代わりに、例えば、制御領域のアドレスを使用してデバイス選択コマンドを使い分けるとよい。これによって、ＨＳＴ１が任意のデバイスを選択して制御することが可能となる。なお、このような構成は、メモリカードインタフェースを使用したＣＥ−ＡＴＡデバイスやＡＴＡ  Ｏｎ  ＭＭＣデバイス等のシステムにも応用できる。
【００４７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００４８】
例えば、本実施の形態の半導体装置は、ＰＣやマルチスロット対応のメモリカードリーダ・ライタなどにも適用可能である。また、ホストとデバイスという関係は持たないが、複数の機器間でネットワークを構成できる、ＩＥＥＥ１３９４製品などにも適用できる。
【産業上の利用可能性】
【００４９】
本発明の半導体装置は、複数のメモリカードを制御可能なマイクロコンピュータなどの半導体装置に適用して特に有益な技術であり、これに限らず、複数のデバイスを制御するコントローラ機能を含んだ半導体装置全般に対して広く適用可能である。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施の形態１による半導体装置において、その構成の一例を示すブロック図である。
【図２】図１の半導体装置において、そのコントローラの構成例を示すブロック図である。
【図３】図１の半導体装置において、その論理アドレス空間の一例を示す概略図である。
【図４】図１の半導体装置において、そのドライバに含まれる制御領域の機能の一例を説明するための概略図である。
【図５】図１の半導体装置において、そのドライバに含まれる制御領域の他の機能の一例を説明するための概略図である。
【図６】図４および図５の半導体装置において、そのドライバの詳細な動作の一例を示すフロー図である。
【図７】図１の半導体装置の適用例を示す説明図である。
【図８】本発明の実施の形態２による半導体装置において、そのドライバの詳細な動作の一例を示すフロー図である。
【図９】本発明の実施の形態３による半導体装置において、その構成例を示す概略図であり、（ａ）は１対１接続のシステム構成例、（ｂ）は１対Ｎ接続のシステム構成例を示すものである。
【図１０】本発明の前提として検討した半導体装置において、その構成の一例を示す概略図である。
【図１１】本発明の前提として検討した半導体装置において、その構成の他の一例を示す概略図である。
【符号の説明】
【００５１】
ＨＳＴ  ホスト
ＣＰＵ  プロセッサ
ＭＥＭ  メモリ
ＤＲＶ  ドライバ
ＣＴＬ  コントローラ
ＰＴＳＥＬ  ポート選択コントローラ
ＣＴＬ＿ＡＲ  制御領域
ＰＴ  ポート
ＢＵＳ  外部バス
ＤＥＶ  デバイス
ＲＥＧ  レジスタ
ＩＯ＿ＢＬＫ  入出力部
ＣＴ＿ＢＬＫ  制御部
ＦＩＦＯ＿ＢＬＫ  ＦＩＦＯ部
Ｓ／Ｐ＿ＢＬＫ  データ変換部
ＴＲ＿ＢＬＫ  トランシーバ部
ＡＤＣ  アナログ・デジタル変換器
ＰＲＧ＿ＡＲ  プログラム領域
ＤＡＴ＿ＡＲ  データ領域
ＣＮ  コネクタ
ＭＣ  電子機器
【図１】
2008134701.tif 000003
【図２】
2008134701.tif 000004
【図３】
2008134701.tif 000005
【図４】
2008134701.tif 000006
【図５】
2008134701.tif 000007
【図６】
2008134701.tif 000008
【図７】
2008134701.tif 000009
【図８】
2008134701.tif 000010
【図９】
2008134701.tif 000011
【図１０】
2008134701.tif 000012
【図１１】
2008134701.tif 000013