(57)【要約】【課題】コマンドタイプの異なるフラッシュメモリに対しての書き込み／消去を１つのファームウェアにて実現する。【解決手段】フラッシュメモリをCFIコマンドで照会し（Ｓ１１）、フラッシュメモリのコマンドタイプを示すコマンドセットIDを取得し（Ｓ１２）、取得したコマンドセットIDに基づいてフラッシュメモリのコマンドタイプを判定する（Ｓ１３）。また、CFIコマンドで照会不能なフラッシュメモリをステータスレジスタクリアコマンドで照会し（Ｓ１４）、ステータスレジスタコマンドで照会した可否の結果に基づいてフラッシュメモリのコマンドタイプを判定する（Ｓ１５、Ｓ１６）。【選択図】図１
2007334646.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリのコマンドタイプを判定する方法であって、
前記フラッシュメモリをＣＦＩコマンドで照会し、前記フラッシュメモリのコマンドタイプを示すコマンドセットIDを取得し、取得したコマンドセットIDに基づいて前記フラッシュメモリのコマンドタイプを判定するコマンドタイプ判定方法。
【請求項２】
前記ＣＦＩコマンドで照会不能なフラッシュメモリをステータスレジスタクリアコマンドで照会し、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する請求項１記載のコマンドタイプ判定方法。
【請求項３】
フラッシュメモリのコマンドタイプを判定する方法であって、
前記フラッシュメモリをステータスレジスタクリアコマンドで照会し、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定するコマンドタイプ判定方法。
【請求項４】
フラッシュメモリのコマンドタイプを判定するプログラムであって、
前記フラッシュメモリをＣＦＩコマンドで照会する手段、前記フラッシュメモリのコマンドタイプを示すコマンドセットIDを取得する手段、取得したコマンドセットIDに基づいて前記フラッシュメモリのコマンドタイプを判定する手段としてコンピュータを機能させるプログラム。
【請求項５】
前記ＣＦＩコマンドで照会不能なフラッシュメモリをステータスレジスタクリアコマンドで照会する手段、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する手段を含む請求項４記載のプログラム。
【請求項６】
フラッシュメモリのコマンドタイプを判定するプログラムであって、
前記フラッシュメモリをステータスレジスタクリアコマンドで照会する手段、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する手段としてコンピュータを機能させるプログラム。
【請求項７】
請求項１ないし３の何れか一項記載の方法により判定した結果に基づいて選択した制御プログラムで前記フラッシュメモリを制御する制御方法。
【請求項８】
請求項４ないし６の何れか一項記載のプログラムの実行により判定した結果に基づいて選択した制御プログラムで前記フラッシュメモリを制御する手段としてコンピュータを機能させるプログラム。
【請求項９】
異なるコマンドタイプに対応し、フラッシュメモリを制御する複数のドライバプログラムと、請求項１ないし３の何れか一項記載の方法により判定したコマンドタイプに対応するドライバプログラムを選択する手段とを備える制御装置。
【請求項１０】
異なるコマンドタイプに対応し、フラッシュメモリを制御する複数のドライバプログラムと、請求項４ないし６の何れか一項記載のプログラムの実行により判定したコマンドタイプに対応するドライバプログラムを選択する手段とを備える制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリのコマンドタイプを判定する技術およびフラッシュメモリの書き込み／消去を制御する技術に関する。
【背景技術】
【０００２】
プリンタ、スキャナ等の情報機器においては、ファームウェアがフラッシュメモリに格納されている。例えば、プリンタの場合、プリンタの通常モードを制御するプログラムであるメインプログラムがメインプログラムセクタに格納されている。プリンタの起動処理を実行する起動プログラムや、プリンタの書き換えモードを制御してフラッシュメモリを書き換える書き換えモードプログラムなどはブートセクタに格納されている。
【０００３】
フラッシュメモリの書き換えは、セクタ単位で行われる。通常、情報機器への新しい機能の追加や、ファームウェアのバグ修正や、特定顧客向けのカスタマイズなどのために、情報機器のファームウェアはバージョンアップされるので、フラッシュメモリの書き換えは比較的頻繁に行われる（例えば、特許文献１参照）。
【特許文献１】特開２００４−１３５３６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
フラッシュメモリの書き換え／消去を制御するためには、制御コマンド（ライトコマンド、イレースコマンド等）が用いられるが、現在、フラッシュメモリのコマンドタイプには大きくＡＭＤ系（コマンド体系がＡＭＤ社製のＲＯＭに準拠しているもの））とＩＮＴＥＬ系（コマンド体系がＩＮＴＥＬ社製のＲＯＭに準拠しているもの）の２つがある。しかしながら、プリンタのファームウェアからコマンドを送ることによってフラッシュメモリへの書き込み／消去をおこなうにあたり、フラッシュメモリのコマンドタイプをファームウェアから認識する技術が確立されておらず、１つのファームウェアからは決め打ちしたどちらか１種類のコマンドタイプにしか対応できなかった。
【０００５】
本発明は、コマンドタイプをファームウェアから判定することを目的とする。また、コマンドタイプの異なるフラッシュメモリに対する書き込み／消去の制御を１つのファームウェアにて実現することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、フラッシュメモリのコマンドタイプを判定する方法であって、前記フラッシュメモリをCFIコマンドで照会し、前記フラッシュメモリのコマンドタイプを示すコマンドセットIDを取得し、取得したコマンドセットIDに基づいて前記フラッシュメモリのコマンドタイプを判定する。また、フラッシュメモリのコマンドタイプを判定する方法であって、前記フラッシュメモリをステータスレジスタクリアコマンドで照会し、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する。この構成によれば、ＣＦＩコマンドまたはステータスレジスタクリアコマンドでの照会を行い、照会可否の結果を利用してフラッシュメモリのコマンドタイプを判定することが可能となる。
【０００７】
本発明において、前記ＣＦＩコマンドで照会不能なフラッシュメモリをステータスレジスタクリアコマンドで照会し、前記ステータスレジスタクリアコマンドで照会した可否の結果に基づいて前記フラッシュメモリのコマンドタイプを判定する。この構成によれば、ＣＦＩコマンドに準拠していないフラッシュメモリであっても、さらに、ステータスレジスタクリアコマンドでの照会を行うことで、フラッシュメモリのコマンドタイプを判定することができる。
【０００８】
本発明は、上記フラッシュメモリのコマンド判定の結果に基づいて選択した制御プログラムで前記フラッシュメモリを制御する。この構成によれば、コマンド判定の結果に基づいてフラッシュメモリを制御する制御プログラムを選択することができるので、コマンドタイプの異なるフラッシュメモリに対する制御の自動化を図ることができる。
【０００９】
本発明は、異なるコマンドタイプに対応し、フラッシュメモリを制御する複数のドライバプログラムと、上記フラッシュメモリのコマンド判定の結果に基づいて判定したコマンドタイプに対応するドライバプログラムを選択する手段とを備える。この構成によれば、コマンド判定の結果に基づいて判定したコマンドタイプに対応するドライバプログラムを選択することで、コマンドタイプの異なるフラッシュメモリに対する書き込み／消去の制御を１つのファームウェアにて実現することが可能となる。
【発明の効果】
【００１０】
本発明によれば、ＣＦＩコマンドまたはステータスレジスタクリアコマンドでの照会を行い、照会可否の結果を利用してフラッシュメモリのコマンドタイプを判定することが可能となる。また、本発明によれば、コマンド判定の結果に基づいて判定したコマンドタイプに対応するドライバプログラムを選択することで、コマンドタイプの異なるフラッシュメモリに対する書き込み／消去の制御を１つのファームウェアにて実現することが可能となる。
【００１１】
例えば、プリンタ生産開始当初はＡＭＤ系のコマンドタイプをもったフラッシュメモリが安価であったが、途中からＩＮＴＥＬ系のコマンドタイプをもったフラッシュメモリの方が安価になったと言う場合に、従来であれば実装するフラッシュメモリのファームウェアを変更しないと後者に切り替えることができなかったが、この発明によりファームウェアの変更なしに後者に切り替えることが可能になる。
【発明を実施するための最良の形態】
【００１２】
図１は本発明の実施形態におけるコマンドタイプ判定プログラムのフロー図を示す。本実施形態では、実装されているフラッシュメモリがＣＦＩ（Common Flash Interface）に準拠している場合は、ＣＦＩコマンドを利用してフラッシュメモリのコマンドタイプを判定する。ＣＦＩに準拠していない場合は、ステータスレジスタクリアコマンドを利用してフラッシュメモリのコマンドタイプを判定する。このように本実施形態では、この２段構成およびステータスレジスタクリアコマンドを使ってフラッシュメモリのコマンドタイプを判定する。
【００１３】
ＣＦＩコマンドは、全フラッシュメモリ共通のコマンド群であるが、これに準拠していないフラッシュメモリも普通にある。また、ＣＦＩコマンドに対応したフラッシュメモリは、自分がどのコマンドタイプに該当するかをコマンドセットＩＤとしてもっており、ＣＦＩコマンドにて取得することができる。
【００１４】
図１に示すように、本実施形態のコマンドタイプ判定プログラムでは、まず、対象となるフラッシュメモリをＣＦＩコマンドで照会可能か否かを判定する（ステップＳ１１）。ＣＦＩコマンドでの照会が可能な場合（ステップＳ１１：Ｙｅｓ）、ＣＦＩコマンドにてコマンドセットＩＤを取得する（ステップＳ１２）。そして、コマンドセットＩＤからコマンドタイプを判定する（ステップＳ１３）。コマンドタイプは、コマンドセットＩＤから一意に決まる。
【００１５】
ＣＦＩコマンドでの照会が不能な場合（ステップＳ１１：Ｎｏ）は、ステータスレジスタクリアコマンドでの照会が可能か否かを判定する（ステップＳ１４）。そして、ステータスレジスタクリアコマンドでの照会が不能な場合（ステップＳ１４：Ｎｏ）、コマンドタイプはＡＭＤ系と判断し（ステップＳ１５）、ステータスレジスタクリアコマンドでの照会が可能な場合（ステップＳ１４：Ｙｅｓ）、コマンドタイプはＩＮＴＥＬ系と判断する（ステップＳ１６）。
【００１６】
次に、コマンドタイプ判定の具体例について説明する。ここではＲＯＭへのアクセスはワードアクセスであるとして説明する。
【００１７】
図２は本実施形態のコマンドタイプ判定フローを示す。本実施形態では、まず、ＣＦＩクエリストラクチャ読み出しを行う（ステップＳ２１）。この場合、読み出しアドレスは、格納データがＱ，Ｒ，Ｙ以外であることを保証できる領域のアドレスとする。書き換え対象セクタは、セクタイレーズ中に電源断されると値が不安定となるため書き換え非対象セクタのアドレスとするのが望ましい。
【００１８】
次に、ＣＦＩクエリストラクチャ読み出しによりＱ，Ｒ，Ｙの読み出しが出来たか否か判定する（ステップＳ２２）。ＣＦＩに準拠しているＲＯＭであれば、Ｑ，Ｒ，Ｙを読み出すことができる。
【００１９】
Ｑ，Ｒ，Ｙの読み出しが出来た場合（ステップS２２：ＹＥＳ）は、ＣＦＩコマンドセットＩＤ読み出しを行う（ステップＳ２３）。そして、コマンドセットＩＤの値を調べる（ステップＳ２４）。ＣＦＩに準拠していれば、コマンドセットＩＤによってコマンドタイプを一意に特定できる。すなわち、コマンドセットＩＤに従って、コマンドタイプがＡＭＤ系（ステップＳ２５）、Ｉｎｔｅｌ系（ステップＳ２６）と識別する。Ｑ，Ｒ，Ｙの読み出しが不可能な場合（ステップＳ２２：ＮＯ）は、ＣＦＩに準拠していない場合であり、ＣＦＩコマンドを使用せずにＡＭＤ系／Ｉｎｔｅｌ系判断処理を行う（ステップＳ２９）。
【００２０】
ＣＦＩコマンドを使用しないＡＭＤ系／Ｉｎｔｅｌ系の判定処理は以下の手順にて行う。判定はＩｎｔｅｌ系のＲＯＭにしかないステータスレジスタ読み出しコマンドを利用して行う。すなわち、ステータスレジスタ読み出しコマンドを利用して、ステータスレジスタ読み出しコマンドでステータスレジスタが読み出せた場合は、Ｉｎｔｅｌ系（ステップＳ３１）と識別し、ステータスレジスタ読み出しコマンドでステータスレジスタが読み出せない場合はＡＭＤ系（ステップＳ３２）と識別する。
【００２１】
図３は図２のステップＳ２９のＣＦＩコマンドを使用しないＡＭＤ系／Ｉｎｔｅｌ系判定処理の詳細フローチャートを示す。このフローでは、Ｉｎｔｅｌ系コマンドのステータスレジスタクリアコマンド（５０Ｈ）を送る（ステップＳ４２）。すなわち、ＲＯＭのステータスレジスタをクリアする。これによりＲＯＭのステータス値は必ずＦＦｈ以外の値になる。そして、格納データがＦＦｈであるＲＯＭ上のアドレスを取得する（ステップＳ４３）。ここで取得したアドレスが「ａｄｒ」であるとする。
【００２２】
次に、Ｉｎｔｅｌ系コマンドのステータスレジスタ読み出しコマンド（７０Ｈ）を送りステータスをアドレスａｄｒから読み出す（ステップＳ４４）。読み出したステータスが「ｄａｔａ」であるとする。すなわち、ステップＳ４３で取得したアドレスａｄｒからＲＯＭのステータスを読み出す。ＲＯＭのステータス値はステータスレジスタ読み出しコマンドを送ればＲＯＭ上の任意のアドレスから読み出せる。そして、Ｉｎｔｅｌ系コマンドのリセットコマンドを送る（ステップＳ４５）。
【００２３】
次に、ｄａｔａ＝ＦＦｈかどうか判定する（ステップＳ４６）。すなわち、ステップ４４でＦＦｈが読めたということはステータスレジスタ読み出しコマンドをサポートしていないということであり、つまりＩｎｔｅｌ系のＲＯＭではなくＡＭＤ系のＲＯＭであるということが分かる。逆にＦＦｈ以外が読めればステータスレジスタ読み出しコマンドをサポートしており、Ｉｎｔｅｌ系のＲＯＭであると判断できる。すなわち、判定結果に応じて、Ｉｎｔｅｌ系（ステップＳ４７）またはＡＭＤ系（ステップＳ４８）と識別する。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態におけるコマンドタイプ識別プログラムのフロー図
【図２】本発明の実施形態におけるコマンドタイプ認識フロー図
【図３】本発明の実施形態におけるＣＦＩコマンドを使用しないＡＭＤ系／Ｉｎｔｅｌ系判定処理の詳細フローチャート
【図１】
2007334646.tif 000003
【図２】
2007334646.tif 000004
【図３】
2007334646.tif 000005