(57)【要約】【課題】カード装置への不揮発性メモリの実装後にその不揮発性メモリに対するファームウェアの書き込みまたは書き換えを安全に実行する仕組みを実現する。【解決手段】ファームウェアの制御無しでホスト装置１と通信可能なカード装置１０内のカードインタフェース部２１内に設けられたフラッシュＲＯＭレジスタ２１１を利用することにより、フラッシュメモリ３０の実装後において、カード装置１０内のフラッシュメモリ３０にファームウェアを書き込むことが出来る。さらに、カードインタフェース部２１内にはフラッシュメモリ３０の内容が誤って或いは作為的に書き換えられることを防止するための機構としてアクセスプロテクトレジスタ２１２が用意されており、ホスト装置１によるファームウェアの書き込み動作は、アクセスプロテクトレジスタ２１２にホスト装置１によってセットされたコードデータが予め決められた正当な値である場合にのみ許可される。【選択図】　図１
2004086353.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置に取り外し自在に装着されるカード装置内に設けられた不揮発性メモリに、前記カード装置に所定の機能を実行させるためのファームウェアを書き込むためのファームウェア書き込み制御方法であって、
前記カード装置内には、前記ファームウェアの制御無しで前記ホスト装置と通信可能なカードインタフェース部が設けられており、
前記カード装置の前記カードインタフェース部内に設けられた第１のレジスタに前記ホスト装置によってセットされたコードデータが予め決められた正当な値であるか否かを判定するステップと、
前記判定結果に応じて、前記不揮発性メモリを前記ホスト装置からアクセスするために前記カードインタフェース部内に設けられた第２のレジスタを介して実行される前記ホスト装置による前記不揮発性メモリへのファームウェアの書き込み動作を、許可又は禁止するステップとを具備することを特徴とするファームウェア書き込み制御方法。
【請求項２】
前記第１のレジスタは互いにアドレスが異なる複数のレジスタから構成されており、
前記判定ステップは、
前記ホスト装置によって前記複数のレジスタにそれぞれセットされる複数のデータの組み合わせから構成されるコードデータの値が予め決められた正当な値であるか否かを判定するステップを含むことを特徴とする請求項１記載のファームウェア書き込み制御方法。
【請求項３】
前記カード装置には、前記不揮発性メモリへの書き込みを禁止するライトプロテクト機能が設けられており、
前記カード装置の前記カードインタフェース部内に設けられた第３のレジスタに前記ホスト装置によって所定のデータがセットされた場合、前記ライトプロテクト機能を解除するステップをさらに具備することを特徴とする請求項１記載のファームウェア書き込み制御方法。
【請求項４】
前記第２のレジスタは、前記不揮発性メモリのデータ入出力端子およびアドレス入力端子にそれぞれ結合されたデータレジスタおよびアドレスレジスタを含むことを特徴とする請求項１記載のファームウェア書き込み制御方法。
【請求項５】
ホスト装置に取り外し自在に装着可能に構成され、不揮発性メモリに格納されたファームウェアに従って動作するカード装置において、
前記ファームウェアの制御無しで前記ホスト装置と通信可能なカードインタフェース部と、
前記カード装置の前記カードインタフェース部内に設けられた第１のレジスタに前記ホスト装置によってセットされたコードデータが予め決められた正当な値であるか否かを判定する手段と、
前記判定結果に応じて、前記不揮発性メモリを前記ホスト装置からアクセスするために前記カードインタフェース部内に設けられた第２のレジスタを介して実行される前記ホスト装置による前記不揮発性メモリへのファームウェアの書き込み動作を、許可又は禁止する手段とを具備することを特徴とするカード装置。
【請求項６】
前記第１のレジスタは互いにアドレスが異なる複数のレジスタから構成されており、
前記判定手段は、
前記ホスト装置によって前記複数のレジスタにそれぞれセットされる複数のデータの組み合わせから構成されるコードデータの値が予め決められた正当な値であるか否かを判定する手段を含むことを特徴とする請求項５記載のカード装置。
【請求項７】
前記不揮発性メモリへの書き込みを禁止するために前記不揮発性メモリをライトプロテクトするライトプロテクト手段と、
前記カードインタフェース部内に設けられた第３のレジスタに前記ホスト装置によって所定のデータがセットされた場合、前記ライトプロテクト手段によるライトプロテクトを解除する手段とをさらに具備することを特徴とする請求項５記載のカード装置。
【請求項８】
前記第２のレジスタは、前記不揮発性メモリのデータ入出力端子およびアドレス入力端子にそれぞれ結合されたデータレジスタおよびアドレスレジスタを含むことを特徴とする請求項５記載のカード装置。
【請求項９】
ホスト装置に装着可能なカード装置内に設けられた不揮発性メモリに、前記カード装置に所定の機能を実行させるためのファームウェアを書き込むためのファームウェア書き込み制御方法であって、
前記カード装置内には、前記ファームウェアの制御無しで前記ホスト装置と通信可能なカードインタフェース部が設けられており、
前記ホスト装置に、前記不揮発性メモリへのアクセスを可能にするためのコードデータを、前記カード装置の前記カードインタフェース部内に設けられた第１のレジスタにセットさせるコードデータ設定ステップと、
前記ホスト装置に、前記不揮発性メモリを前記ホスト装置からアクセスするために前記カードインタフェース部内に設けられた第２のレジスタに前記不揮発性メモリをアクセスするためのコマンドおよび書き込みデータをセットさせることにより、前記第２のレジスタを介した前記不揮発性メモリへのファームウェアの書き込み動作を前記ホスト装置に実行させるステップとを具備することを特徴とするファームウェア書き込み制御方法。
【請求項１０】
前記第１のレジスタは互いにアドレスが異なる複数のレジスタから構成されており、
前記コードデータ設定ステップは、
前記ホスト装置に、前記コードデータを構成する複数のデータを前記複数のレジスタにそれぞれセットさせるステップを含むことを特徴とする請求項９記載のファームウェア書き込み制御方法。
【請求項１１】
前記カード装置には、前記不揮発性メモリへの書き込みを禁止するライトプロテクト機能が設けられており、
前記ホスト装置に、前記ライトプロテクト機能を解除するためのデータを前記カード装置の前記カードインタフェース部内に設けられた第３のレジスタにセットさせるステップをさらに具備することを特徴とする請求項９記載のファームウェア書き込み制御方法。
【請求項１２】
前記第２のレジスタは、前記不揮発性メモリのデータ入出力端子およびアドレス入力端子にそれぞれ結合されたデータレジスタおよびアドレスレジスタを含むことを特徴とする請求項９記載のファームウェア書き込み制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はファームウェア書き込み制御方法および同書き込み制御方法が適用されるカード装置に関する。
【０００２】
【従来の技術】
近年、パーソナルコンピュータ、ＰＤＡ、カメラ、携帯電話等の様々な携帯型電子機器が開発されている。これら電子機器においては、リムーバブル記憶デバイスの１つであるメモリカードが多く用いられている。代表的なメモリカードとしては、例えば、ＰＣＭＣＩＡカード（ＰＣカード）が知られている。
【０００３】
メモリカードは携帯型電子機器から自由にアクセスすることが出来る。また、ユーザデータの読み出しおよび書き込みに保護機能を設けたメモリカードも知られている（特開平７−２００７６７号公報）。
【０００４】
メモリカードとしては、上述のＰＣＭＣＩＡカード（ＰＣカード）の他に、それよりも更に小型のＳＤ（Ｓｅｃｕｒｅ　Ｄｉｇｉｔａｌ）メモリカードも知られている。ＳＤメモリカードは不揮発性メモリを内蔵する切手サイズのメモリカードであり、小型化、容量、および高速化の要求に見合うように特に設計されている。
【０００５】
また、最近では、ＳＤメモリカードの応用製品として、例えば無線通信カードなどのＳＤＩＯカードが規格化され、各社から新規カードデバイスとして設計、開発、販売が開始されようとしている。ＳＤＩＯカードは、そのカード内に内蔵された不揮発性メモリに格納されているファームウェアに従って、例えば無線通信等の所定の周辺デバイスとしての機能を実行する。
【０００６】
【発明が解決しようとする課題】
しかし、ＳＤＩＯカードの製造に際しては、次のような問題がある。
【０００７】
すなわち、通常は、カードデバイスの製造に際しては、そのカードデバイスに搭載する部品についてはその実装前に部品単体で必要なデータの書き込みが行われた後にカードに実装される。
【０００８】
しかし、もしそのカードデバイスのパッケージング後の検査において書き込みデータにエラーが検出された場合には、その部品の取り外しおよびデータの書き直しといったいわゆる後戻り工程が必要となる。ＳＤＩＯカードは非常に小型のカードであるので、パッケージング後の部品の取り外し等の作業には多くの時間を要することとなる。
【０００９】
特に、ＳＤＩＯカードにおいてはファームウェアを格納した不揮発性メモリを搭載することが必要であるので、パッケージング後の検査においてファームウェアの一部にでもエラーが検出されると、その不揮発性メモリ自体を取り外してファームウェアを書き直すといった作業が必要となり、結果的に製造コストの増大を招くことになる。
【００１０】
本発明は上述の事情を考慮してなされたもので、カード装置への不揮発性メモリの実装後にその不揮発性メモリに対するファームウェアの書き込みまたは書き換えを安全に実行することが可能なファームウェア書き込み制御方法およびカード装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上述の課題を解決するため、本発明は、ホスト装置に取り外し自在に装着されるカード装置内に設けられた不揮発性メモリに、前記カード装置に所定の機能を実行させるためのファームウェアを書き込むためのファームウェア書き込み制御方法であって、前記カード装置内には、前記ファームウェアの制御無しで前記ホスト装置と通信可能なカードインタフェース部が設けられており、前記カード装置の前記カードインタフェース部内に設けられた第１のレジスタに前記ホスト装置によってセットされたコードデータが予め決められた正当な値であるか否かを判定するステップと、前記判定結果に応じて、前記不揮発性メモリを前記ホスト装置からアクセスするために前記カードインタフェース部内に設けられた第２のレジスタを介して実行される前記ホスト装置による前記不揮発性メモリへのファームウェアの書き込み動作を、許可又は禁止するステップとを具備することを特徴とする。
【００１２】
このファームウェア書き込み制御方法においては、カード装置への不揮発性メモリの実装後にその不揮発性メモリに対するファームウェアの書き込みまたは書き換えを安全に実行することが可能となる。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
図１には、本発明の一実施形態に係るカード装置１０とそれを装着して使用可能なホスト装置１との関係が示されている。以下では、カード装置１０としてＳＤＩＯカードを使用する場合を例示して説明する。
【００１４】
ＳＤＩＯカード１０は、例えばパーソナルコンピュータ、ＰＤＡ、カメラ、携帯電話等の各種ホスト装置１に設けられたＳＤカードスロット２に着脱自在に装着して使用されるカードデバイスである。ホスト装置１には、ＳＤＩＯカード１０を制御するホストコントローラ１１が設けられている。ＳＤＩＯカード１０とホストコントローラ１１との通信は、全てホストコントローラ１１からのコマンドによって制御される。
【００１５】
ホストコントローラ１１とＳＤＩＯカード１０との間を接続するＳＤバス５０は、６本の通信線（データＤＡＴ０−３，コマンドＣＭＤ，クロックＣＬＫ）と３本の電源供給線（ＶＤＤ，ＶＳＳ，ＶＳＳ）を含む。これに対応して、ＳＤメモリカード１０には、４本のデータピン［ＤＡＴ０−３］、コマンドピン［ＣＭＤ］、クロック信号ピン［ＣＬＫ］、電源ピン［ＶＤＤ］、２つのグランドピン［ＶＳＳ］が設けられている。
【００１６】
ＳＤＩＯカード１０は、例えば、無線通信カード、ＬＡＮカード、またはＧＰＳカード等として機能する。以下では、Ｂｌｕｅｔｏｏｔｈ（Ｒ）規格の近距離無線通信カード（Ｂｌｕｅｔｏｏｔｈカード）として実現した場合を想定することとする。
【００１７】
ＳＤＩＯカード１０には、図示のように、ＬＳＩ２０、フラッシュメモリ３０、およびＲＦ・アンテナ部４０が実装されている。
【００１８】
ＬＳＩ２０は、ＳＤＩＯ制御部２１とベースバンドコア２２とＭＰＵ２３とを１チップ化したＬＳＩである。フラッシュメモリ３０は、ＳＤＩＯカード１０の動作を規定するファームウェアおよびホスト装置１にカードを認識させるためのカード属性情報等の記憶のために用いられる不揮発性メモリである。フラッシュメモリ３０のデータ入出力端子およびアドレス入力端子はそれぞれＬＳＩ２０に直接接続されている。
【００１９】
フラッシュメモリ３０に格納されたファームウェアは、ＭＰＵ２３によって実行される。ＭＰＵ２３がファームウェアを実行することにより、ＳＤＩＯカード１０はＢｌｕｅｔｏｏｔｈカードとして機能することが出来る。
【００２０】
ＳＤＩＯ制御部２１はホストコントローラ１１と通信するためのカードインタフェースである。このＳＤＩＯ制御部２１はファームウェアの制御無しで、すなわちＭＰＵ２３の制御無しで、ホストコントローラ１１と通信できるように構成されている。すなわち、ＳＤＩＯ制御部２１にはカード識別動作等のために使用される共通ファンクションレジスタとして幾つかのレジスタが内蔵されており、ホスト装置１は、ホストコントローラ１１およびＳＤバス５０を介してＳＤＩＯカード１０に動作コマンド（ＳＤコマンド）を送信するだけで、ＳＤＩＯ制御部２１内の所望の共通ファンクションレジスタにアクセスすることが出来る。
【００２１】
本実施形態においては、フラッシュメモリ３０へのファームウェアおよびカード属性情報の書き込みは、フラッシュメモリ３０をＳＤＩＯカード１０に実装した後に行われる。すなわち、ラッシュメモリ３０へのファームウェアおよびカード属性情報の書き込みは、ＳＤＩＯカード１０の全ての部品実装およびパッケージングが完了した後に、ホスト装置１による制御によって実行される。この書き込み動作はＳＤＩＯカード１０の工場出荷前に実行されるものである。もちろんＳＤＩＯカード１０の出荷後においても、ユーザは、ホスト装置１によって実行される専用のプログラムを用いて、ＳＤＩＯカード１０のフラッシュメモリ３０に格納されているファームウェアを書き換えることが出来る。
【００２２】
このようなフラッシュメモリ３０の実装後におけるファームウェアの書き込み／更新を実現するため、ＳＤＩＯ制御部２１の共通ファンクションレジスタ内には、フラッシュＲＯＭアクセスレジスタ２１１およびアクセスプロテクトレジスタ２１２が設けられている。
【００２３】
フラッシュＲＯＭアクセスレジスタ２１１は、ホスト装置１からフラッシュメモリ３０をアクセスするために設けられたフラッシュＲＯＭ制御用レジスタである。ホスト装置１は、フラッシュＲＯＭアクセスレジスタ２１１をアクセスするためのＳＤコマンドをＳＤバス５０を介してＳＤＩＯカード１０に発行することにより、フラッシュＲＯＭアクセスレジスタ２１１にコマンドや書き込みデータをセットする。これにより、ホスト装置１による制御で、フラッシュメモリ３０へのファームウェアおよびカード属性情報の書き込み動作を実行する事が出来る。
【００２４】
アクセスプロテクトレジスタ２１２は、フラッシュメモリ３０をそれに対するアクセスから保護するために設けられたレジスタである。フラッシュＲＯＭアクセスレジスタ２１１を介したフラッシュメモリ３０に対するアクセスは、予め決められたコードデータがホスト装置１によってアクセスプロテクトレジスタ２１２にセットされた場合にのみ許可される。
【００２５】
ＭＰＵ２３はフラッシュメモリ３０に格納されたファームウェアを実行することにより、ベースバンドコア２２と共同して、近距離無線通信に必要な動作を実行する。
【００２６】
次に、図２および図３を参照して、フラッシュメモリ３０にファームウェアを書き込む動作について説明する。
【００２７】
図２はフラッシュメモリ３０にファームウェアを書き込むための基本手順を示しており、また図３はフラッシュＲＯＭアクセスレジスタ２１１の構成を示している。
【００２８】
図３に示されているように、フラッシュＲＯＭアクセスレジスタ２１１は、ホスト装置１からリード・ライト可能な８ｂｉｔ幅の１個のデータレジスタ（リード動作時はＦｌａｓｈ　Ｍｅｍｏｒｙ　Ｄａｔａ　Ｒｅａｄ　Ｒｅｇｉｓｔｅｒ、ライト動作時はＦｌａｓｈ　Ｍｅｍｏｒｙ　Ｄａｔａ　Ｗｒｉｔｅ　Ｒｅｇｉｓｔｅｒとして機能する）と、ホスト装置１からそれぞれリード・ライト可能な８ｂｉｔ幅の３個のアドレスレジスタ（下位８ｂｉｔのアドレス設定に用いられるＦｌａｓｈ　Ｍｅｍｏｒｙ　Ｌｏｗｅｒ　Ａｄｒｅｓｓ　Ｒｅｇｉｓｔｅｒ、中位８ｂｉｔのアドレス設定に用いられるＦｌａｓｈ　Ｍｅｍｏｒｙ　Ｍｉｄｄｌｅ　Ａｄｒｅｓｓ　Ｒｅｇｉｓｔｅｒ、上位８ｂｉｔのアドレス設定に用いられるＦｌａｓｈ　Ｍｅｍｏｒｙ　Ｈｉｇｈ　Ａｄｒｅｓｓ　Ｒｅｇｉｓｔｅｒ）とから構成されている。データレジスタは８ｂｉｔ幅のデータ線を介してフラッシュメモリ３０のデータ入出力端子に直接的に接続され、また３個のアドレスレジスタは２４ｂｉｔ幅のアドレス線を介してフラッシュメモリ３０のアドレス入力端子に直接的に接続されている。
【００２９】
以下、図２のフローチャートを参照して、ＳＤＩＯカード１０のパッケージング後において、フラッシュメモリ３０に何も書き込まれていない状態からファームウェアおよびカード属性情報を書き込むための基本手順について説明する。
【００３０】
ＳＤＩＯカード１０がホスト装置１のＳＤカードスロット２に装着されると（ステップＳ１１）、ホストコントローラ１１によって初期電源電圧がＳＤＩＯカード１０に印加され、これによりＳＤＩＯカード１０は初期化動作可能となる。ファームウェア書込み／更新プログラム１２は、ホストコントローラ１１を介してＳＤＩＯカード１０に初期化用のＳＤコマンドを発行することにより、ＳＤＩＯカード１０を初期化する（ステップＳ１２）。このとき、ＬＳＩ２０内で動作しているのはＳＤＩＯ制御部２１のみである。
【００３１】
次いで、ファームウェア書込み／更新プログラム１２は、初期化が完了したかどうかをＳＤＩＯ制御部２１からのレスポンスで確認する（ステップＳ１３）。初期化完了後、フラッシュＲＯＭレジスタ２１１（データレジスタおよびアドレスレジスタ）へのアクセスが可能となる。ファームウェア書込み／更新プログラム１２はフラッシュＲＯＭレジスタ２１１にアクセスする（ステップＳ１４）。このフラッシュＲＯＭレジスタ２１１へのアクセスもＳＤコマンドによって行われる。ファームウェア書込み／更新プログラム１２は、フラッシュＲＯＭレジスタ２１１にアクセスして、フラッシュＲＯＭレジスタ２１１に書込みコマンド（消去コマンドおよびプログラムコマンド）およびアドレス、さらには書き込みデータをセットすることによってフラッシュメモリ３０の書き込み動作を制御し、フラッシュメモリ３０にファームウェアを書き込む（ステップＳ１４，Ｓ１５）。
【００３２】
以上が基本手順である。ＳＤＩＯ制御部２１は初期印加電源電圧だけで動作し、ベースバンドコア２２、ＭＰＵ２３の動作、またはフラッシュメモリ３０に存在すべきファームウェアの動作を一切必要としない。またフラッシュＲＯＭレジスタ２１１のデータレジスタおよびアドレスレジスタからフラッシュメモリ３０へはアドレス、データが直接的に接続されているため、コマンド発行及び書き込みデータのセットというフラッシュＥＥＰＲＯＭにデータを書き込むための通常の手順をホスト装置１がフラッシュＲＯＭレジスタ２１１を用いて行うだけで、フラッシュメモリ３０の制御をＳＤＩＯカード１０が挿入されたホスト装置１側から行うことができる。
【００３３】
このように、ＳＤＩＯカード１０のパッケージング後に、そのＳＤＩＯカード１０に搭載されたフラッシュメモリ３０にファームウェアを書き込むことができるので、上述した後戻り工程の発生を防止することが可能となる。また、ＳＤＩＯカード１０の出荷後においても、上記と同様の基本手順でファームウェアの書き込みを行うことにより、ＳＤＩＯカード１０のファームウェアの更新を行うことも出来る。
【００３４】
なお、上述の基本手順のみではフラッシュＲＯＭレジスタ２１１のアドレスがわかってしまえば容易に読み出しや書きこみが行えてしまう。したがって製品出荷後に偶然のアクセスや解析によりファームウェアやカード属性情報の破壊や、書き換えが行われてしまう可能性がある。そこで、本実施形態においては、フラッシュメモリ３０へのアクセスを容易にはできないようにするための保護手段としてアクセスプロテクトレジスタ２１２が設けられており、このアクセスプロテクトレジスタ２１２に所定のコードデータがセットされない限り、フラッシュＲＯＭレジスタ２１１を介したフラッシュメモリ３０へのアクセスを禁止している。
【００３５】
アクセスプロテクトレジスタ２１２の構成を図４に示す。アクセスプロテクトレジスタ２１２は、アクセス認証用の３２ｂｉｔのコードデータをセットできるようにするために、それぞれ８ｂｉｔ幅の４個のレジスタ（Ｐｒｏｔｅｃｔ　Ｒｅｇｉｓｔｅｒ＜０７：００＞、Ｐｒｏｔｅｃｔ　Ｒｅｇｉｓｔｅｒ＜１５：０８＞、Ｐｒｏｔｅｃｔ　Ｒｅｇｉｓｔｅｒ＜２３：１６＞、Ｐｒｏｔｅｃｔ　Ｒｅｇｉｓｔｅｒ＜３１：２４＞）から構成されている。これら４個のレジスタは互いに異なるアドレスが割り当てられており、これら４個のレジスタそれぞれにセットされるデータの組み合わせからなる合計３２ｂｉｔのコードデータが予め決められた正当な値であるか否かが判定される。
【００３６】
正当な値のコードデータがセットされない限り、フラッシュＲＯＭレジスタ２１１の使用は無効化され、そのフラッシュＲＯＭレジスタ２１１を介したフラッシュメモリ３０へのアクセスは禁止される。これは、例えば、図５に示すように、フラッシュＲＯＭレジスタ２１１のデータレジスタ２１１ａおよびアドレスレジスタ２１１ｂそれぞれとフラッシュメモリ３０との間に配置されたフラッシュＲＯＭ制御用インタフェース３００内にゲート回路３０１を設け、このゲート回路３０１によってデータレジスタ２１１ａおよびアドレスレジスタ２１１ｂそれぞれとフラッシュメモリ３０のデータ入出力端子ＤＡＴＡおよびアドレス入力端子ＡＤＤＲとの間を接続または非接続するという構成によって実現することが出来る。フラッシュＲＯＭ制御用インタフェース３００は、フラッシュメモリ３０の制御端子ＣＯＮＴにライトイネーブル信号、アウトプットイネーブル信号等の制御信号を供給するためのメモリコントローラである。
【００３７】
正当な値のコードデータがアクセスプロテクトレジスタ２１２にセットされた場合、ゲート回路３０１はオンし、データレジスタ２１１ａおよびアドレスレジスタ２１１ｂそれぞれとフラッシュメモリ３０のデータ入出力端子ＤＡＴＡおよびアドレス入力端子ＡＤＤＲとの間を接続する。これにより、データレジスタ２１１ａおよびアドレスレジスタ２１１ｂが有効となり、これらレジスタを介したフラッシュメモリ３０のアクセスが許可される。
【００３８】
正当な値のコードデータがアクセスプロテクトレジスタ２１２にセットされない限りは、データレジスタ２１１ａおよびアドレスレジスタ２１１ｂは有効にならず、フラッシュメモリ３０のアクセスは禁止される。この場合、たとえホスト装置１が当該レジスタをリードしたとしても“０”しか読むことが出来ない。
【００３９】
以下、図６のフローチャートを参照して、アクセスプロテクトレジスタ２１２を利用したアクセス認証を追加した場合における書き込み処理の手順を説明する。
【００４０】
ＳＤＩＯカード１０がホスト装置１のＳＤカードスロット２に装着されると（ステップＳ２１）、ホストコントローラ１１によって初期電源電圧がＳＤＩＯカード１０に印加され、これによりＳＤＩＯカード１０は初期化動作可能となる。ファームウェア書込み／更新プログラム１２は、ホストコントローラ１１を介してＳＤＩＯカード１０に初期化用のＳＤコマンドを発行することにより、ＳＤＩＯカード１０を初期化する（ステップＳ２２）。このとき、ＬＳＩ２０内で動作しているのはＳＤＩＯ制御部２１のみである。
【００４１】
次いで、ファームウェア書込み／更新プログラム１２は、初期化が完了したかどうかをＳＤＩＯ制御部２１からのレスポンスで確認する（ステップＳ２３）。
【００４２】
初期化が完了するとこの時点で共通ファンクション（ファンクション番号０番）レジスタのアクセスが可能となる。ただしフラッシュＲＯＭレジスタ２１１はこの段階では保護状態のレジスタとなっており、当該レジスタをリードしても“０”が読めるだけである。ファームウェア書込み／更新プログラム１２は、アクセスプロテクトレジスタ２１２を構成する４個のレジスタそれぞれを順次アクセスし、予め決められた３２ｂｉｔの所定のコードデータ（ＫＥＹコード）をアクセスプロテクトレジスタ２１２にセットする（ステップＳ２４）。
【００４３】
ＳＤＩＯ制御部２１内では、コードデータが正しい値であるかどうかが判別される（ステップＳ２５）。この判別処理は、例えば、正しいコードデータ値とアクセスプロテクトレジスタ２１２にセットされたコードデータ値とを比較する回路をＳＤＩＯ制御部２１内に設けること等によって実現される。
【００４４】
アクセスプロテクトレジスタ２１２に正しいコードデータ値がセットされた場合、ゲート回路３０１がオンすることにより、ＳＤＩＯ制御部２１内のフラッシュＲＯＭレジスタ２１１と直結のアドレス、データ線が有効になり、フラッシュメモリ３０のアクセスが許可される。
【００４５】
ファームウェア書込み／更新プログラム１２は、フラッシュＲＯＭレジスタ２１１にアクセスして、フラッシュＲＯＭレジスタ２１１に書込みコマンド（消去コマンドおよびプログラムコマンド）およびアドレス、さらに書き込みデータをセットすることによってフラッシュメモリ３０の書き込み動作を制御し、フラッシュメモリ３０にファームウェアを書き込む（ステップＳ２６，Ｓ２７）。
【００４６】
アクセスプロテクトレジスタ２１２は１つのレジスタでも実現可能である。しかし、８ビットのデータの場合にはアクセスを可能にするコードデータの値が解析される恐れもある。さらに容易に特定できないようにするためにも３２ビット（複数レジスタ）にすることが好ましい。この場合、アドレスの異なる複数のレジスタにセットされるデータの組み合わせをコードデータの値とし、それが正しいがどうかを判別することにより、各レジスタとそれにセットされる値との関係をも考慮したアクセス認証が可能となる。
【００４７】
また、ＳＤＩＯカード１０の出荷後においても、上記と同様の手順で、ＳＤＩＯカード１０のファームウェアの更新を行うことが出来る。さらに、フラッシュメモリ３０に何も書かれていないＳＤＩＯカード１０であることを確認するために、図７のフローチャートに示すように、上述のステップＳ２３とＳ２４との間に、当該ＳＤＩＯカード１０が正常動作しているかどうかを判断するステップ１００を追加してもよい。
【００４８】
なお、アクセスプロテクトレジスタ２１２に加え、さらに、フラッシュメモリ３０の書き込み保護を行うためのライトプロテクトレジスタを設けることが好ましい。この場合、アクセスプロテクトレジスタ２１２に正しいコードデータがセットされた段階では、フラッシュメモリ３０に対して許可されるアクセスはリードオンリーとなり、ライトプロテクトレジスタに特定のライトプロテクト解除データがセットされた段階でフラッシュメモリ３０に対するライトアクセスが許可される。
【００４９】
ＳＤＩＯ制御部２１の共通ファンクションレジスタ内には、上述のフラッシュＲＯＭレジスタを構成するデータレジスタおよびアドレスレジスタと上述のアクセスプロテクトレジスタに加え、図８に示すように、ライトプロテクトレジスタ（Ｗｒｉｔｅ　Ｐｒｏｔｅｃｔ）も設けられることになる。
【００５０】
図９に示すように、ホスト装置１によってライトプロテクトレジスタ４０１にセットされる特定のライトプロテクト解除データは、フラッシュＲＯＭ制御用インタフェース３００内のライトイネーブル回路（ＷＥ回路）３０２に対して、ライトイネーブル信号の発生を許可する信号として供給される。これにより、フラッシュメモリ３０のライトプロテクトを解除することが出来る。
【００５１】
以下、図１０のフローチャートを参照して、アクセスプロテクトレジスタ２１２を利用したアクセス認証の他にライトプロテクトレジスタによる書き込み保護を利用した場合における書き込み処理の手順を説明する。
【００５２】
ＳＤＩＯカード１０がホスト装置１のＳＤカードスロット２に装着されると（ステップＳ３１）、ホストコントローラ１１によって初期電源電圧がＳＤＩＯカード１０に印加され、これによりＳＤＩＯカード１０は初期化可能となる。ファームウェア書込み／更新プログラム１２は、ホストコントローラ１１を介してＳＤＩＯカード１０に初期化用のＳＤコマンドを発行することにより、ＳＤＩＯカード１０を初期化する（ステップＳ３２）。このとき、ＬＳＩ２０内で動作しているのはＳＤＩＯ制御部２１のみである。
【００５３】
次いで、ファームウェア書込み／更新プログラム１２は、初期化が完了したかどうかをＳＤＩＯ制御部２１からのレスポンスで確認する（ステップＳ３３）。
【００５４】
初期化が完了するとこの時点で共通ファンクション（ファンクション番号０番）レジスタのアクセスが可能となる。ただしフラッシュＲＯＭレジスタ２１１はこの段階では保護状態のレジスタとなっており、当該レジスタをリードしても“０”が読めるだけである。ファームウェア書込み／更新プログラム１２は、アクセスプロテクトレジスタ２１２を構成する４個のレジスタそれぞれを順次アクセスし、予め決められた３２ｂｉｔの所定のコードデータ（ＫＥＹコード）をアクセスプロテクトレジスタ２１２にセットする（ステップＳ３４）。
【００５５】
ＳＤＩＯ制御部２１内では、コードデータが正しい値であるかどうかが判別される（ステップＳ３５）。この判別処理は、例えば、正しいコードデータ値とアクセスプロテクトレジスタ２１２にセットされたコードデータ値とを比較する回路をＳＤＩＯ制御部２１内に設けること等によって実現される。
【００５６】
アクセスプロテクトレジスタ２１２に正しいコードデータ値がセットされた場合、ゲート回路３０１がオンすることにより、ＳＤＩＯ制御部２１内のフラッシュＲＯＭレジスタ２１１と直結のアドレス、データ線が有効になり、フラッシュメモリ３０のアクセスが許可される。ただし、フラッシュメモリ３０はライトプロテクトされているので、フラッシュメモリ３０はリードオンリー状態となる。
【００５７】
ファームウェア書込み／更新プログラム１２は、ライトプロテクトレジスタにライトプロテクト解除用のデータをセットすることにより、フラッシュメモリ３０に対するライトプロテクトを解除する（ステップＳ３６，Ｓ３７）。この後、ファームウェア書込み／更新プログラム１２は、フラッシュＲＯＭレジスタ２１１にアクセスして、フラッシュＲＯＭレジスタ２１１に書込みコマンド（消去コマンドおよびプログラムコマンド）およびアドレス、さらに書き込みデータをセットすることによってフラッシュメモリ３０の書き込み動作を制御し、フラッシュメモリ３０にファームウェアを書き込む（ステップＳ３８，Ｓ３９）。
【００５８】
以上のように、本実施形態によれば、ファームウェアの制御無しでホスト装置１と通信可能なＳＤＩＯ制御部２１内に設けられたフラッシュＲＯＭレジスタ２１１を利用することにより、フラッシュメモリ３０の実装後に、ホスト装置１による制御で、ＳＤＩＯカード１０内のフラッシュメモリ３０にファームウェアを書き込むことが出来る。特に、ＳＤＩＯ制御部２１内に設けられたアクセスプロテクトレジスタ２１２、さらにはライトプロテクトレジスタを併用することで、ＳＤＩＯカード１０のパッケージング後におけるファームウェアの書き込み／更新を許容しつつ、ＳＤＩＯカード１０をその不用意なアクセス等に起因するファームウェアの破壊等から保護することが出来る。
【００５９】
【発明の効果】
以上詳述した如く本発明によれば、カード装置への不揮発性メモリの実装後にその不揮発性メモリに対するファームウェアの書き込みまたは書き換えを安全に実行することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るカード装置とそれを装着して使用可能なホスト装置との関係を示すブロックブロック図。
【図２】同実施形態におけるファームウェア書き込み動作の手順を示すフローチャート。
【図３】同実施形態におけるフラッシュＲＯＭアクセスレジスタの構成を示す図。
【図４】同実施形態におけるアクセスプロテクトレジスタの構成を示す図。
【図５】同実施形態においてアクセスプロテクトレジスタを用いてフラッシュＲＯＭアクセスレジスタの使用を制限するための構成例を示すブロック図。
【図６】同実施形態におけるファームウェア書き込み動作の手順の第２の例を示すフローチャート。
【図７】同実施形態におけるファームウェア書き込み動作の手順の第３の例を示すフローチャート。
【図８】同実施形態におけるライトプロテクトレジスタの構成を示す図。
【図９】同実施形態においてライトプロテクトレジスタを用いてフラッシュメモリを書き込み保護するための構成例を示すブロック図。
【図１０】同実施形態におけるファームウェア書き込み動作の手順の第４の例を示すフローチャート。
【符号の説明】
１…ホスト装置
１０…ＳＤＩＯカード
１１…ホストコントローラ
２１…ＳＤＩＯ制御部
２２…ベースバンドコア
２３…ＭＰＵ
２１１…フラッシュＲＯＭアクセスレジスタ
２１２…アクセスプロテクトレジスタ
【図１】
2004086353.tif 000003
【図２】
2004086353.tif 000004
【図３】
2004086353.tif 000005
【図４】
2004086353.tif 000006
【図５】
2004086353.tif 000007
【図６】
2004086353.tif 000008
【図７】
2004086353.tif 000009
【図８】
2004086353.tif 000010
【図９】
2004086353.tif 000011
【図１０】
2004086353.tif 000012