以下、本実施形態について説明する。なお、以下の実施形態はあくまで実施の一例を示したものであり、本発明は以下の実施形態に限定されるものではない。
(1)システムの構成
まず本実施形態において不揮発性メモリの制御を行うシステムの構成について説明する。図1は、本実施形態におけるメモリ制御装置の一例である、インクジェットプリンタ3を示す図である。なお、メモリ制御装置はインクジェットプリンタに限らず、例えば印刷のための記録剤としてトナーを用いる電子写真方式の印刷装置でもよいし、プリンタに加え、原稿を読み取るためのスキャナを備えた複合機であってもよい。またプリンタに限らず、PC(パーソナルコンピュータ)や、スマートフォンやタブレット、携帯電話、デジタルカメラなどの各種の装置であってもよい。
操作UI部301は、ユーザに対する各種の表示を行い、またユーザが操作を行って各種の指示を入力するためのユーザインタフェースである。上記の表示として、例えば印刷対象の画像やインクジェットプリンタ3の機能や状態が表示される。また、ユーザが操作するための操作デバイスとして、タッチパネルが表示画面上に設けられている。ただし、ボタン等の操作デバイスが設けられる場合であってもよい。
用紙積載部304は、画像が印刷される用紙を積載する。また排紙トレイ303は、印刷後の用紙を保持する。
さらにインクジェットプリンタ3の内部には、用紙積載部304から用紙をピックアップし、その用紙を搬送するための搬送機構、また着脱可能な記録ヘッドを装着するための装着部を含むプリントエンジン部302が設けられている。プリントエンジン部302はさらに、上記装着部をシート搬送方向と垂直方向に往復運動をするキャリッジ、キャリッジを駆動するキャリッジモータを備える。
そして、例えば操作UI部301や、外部装置から印刷が指示されると、上記プリントエンジン部302の搬送機構により搬送された用紙に対して、上記キャリッジが往復運動しながら記録ヘッドからインクが吐出される。これにより当該用紙にインクが付与されることで画像が印刷され、その用紙が排紙トレイ303に排紙される。
またプリントエンジン部302は、記録ヘッドにおけるインク吐出口で乾燥によりインクが固まるのを防ぐための回復部を備える。回復部は、記録ヘッドに取り付き記録ヘッドのインク吐出面を乾燥から保護するキャップ、記録ヘッドの表面をワイピングするワイパーなどを含む。記録ヘッドはインクを吐出するための微細な吐出口を有している。
印刷によりインクが吐出されると、その吐出口に残ったインクが乾燥によって固着する場合や、また吐出されたインクがミスト状になってインクが付着し、吐出面が汚れることがある。この場合、本来の吐出量とは異なる量のインクが吐出される場合や、また複数の色のインクが混ざり合うなど、適切な印刷ができない場合がある。
そこで回復部は、記録ヘッドの吐出口のインク詰まりや吐出面の汚れを解消するための動作を行う。具体的には、印刷が終了した後、記録ヘッドのインク吐出面をワイピングして吐出面に残存したインクを除去する(ワイピング)。そして、記録ヘッドがキャップの真上の位置になるようキャリッジを移動させて上記キャップを押し上げ、記録ヘッドの吐出面をキャッピングする(キャップクローズ)。そして、印刷動作を開始するときに、そのキャップを引き下げて、記録ヘッドのインク吐出面を露出させる動作(キャップオープン)を行う。
本実施形態のインクジェットプリンタ3は、不揮発性メモリに記憶された制御変数により、上記の回復動作の必要性を判断する。例えば、記録ヘッドがキャップされているか否かを示すキャッピングフラグ情報を不揮発性メモリに記憶させ、インクジェットプリンタ3が起動されたときにキャッピングフラグ情報を確認する。そして、キャッピングフラグ情報がキャップオープンの状態を示す場合、キャップクローズ動作を行い、さらにインク吐出口のインク詰まりを防ぐために、インクの吐出を行う。
本実施形態では、上記のキャッピングフラグ情報として、キャップオープンの状態であることを示す情報をより確実に不揮発性メモリに記憶させるための処理を説明する。具体的には、キャップオープンの情報を不揮発性メモリに書き込む処理が、キャップクローズの情報を不揮発性メモリに書き込む処理よりも高速に行われるように、上記キャッピングフラグ情報を設定する。以下、本実施形態の処理を詳細に説明する。
図2は、インクジェットプリンタ3の内部に組み込まれ、インクジェットプリンタ3を制御するための電子制御回路基板1を説明するための図である。
CPU101は、電子制御回路基板1、またインクジェットプリンタ3の全体を制御するための制御部である。フラッシュメモリ(Flash ROM)103は、不揮発性のメモリであり、インクジェットプリンタの各部を制御する制御プログラムや、各種の設定に関する制御情報を記憶する。揮発性メモリ102は、制御プログラムや各種制御情報を一時的に保持する揮発性のメモリであり、例えばRAMである。
CPU101は、フラッシュメモリ103に記憶されている上記の制御プログラムや各種の制御情報を揮発性メモリ102に読み出し、当該制御情報に従って制御プログラムを実行することで、インクジェットプリンタ3の全体を制御することができる。
入出力ポート104は、CPU101と、後述の操作UI部制御回路105、プリントエンジン部制御回路106とを接続するためのポートである。
操作UI部制御回路105は、入出力ポート104を介したCPU101の制御に従って、上記の操作UI部301に画像や各種の情報を表示させる。また操作UI部制御回路105は、操作UI部301に対するユーザの操作に応じて各種のユーザ指示を入力する。CPU101は、入出力ポートを介してユーザ指示を入力することで、当該ユーザ指示に応じた制御を行う。
プリントエンジン部制御回路106は、CPU101による制御に従って、印刷対象の画像をプリントエンジン部302に出力し、プリントエンジン部302に当該画像を印刷媒体へ印刷させる。
電源回路107は、AC電源等の外部電源2に電源ケーブルを介して接続することができる。電源回路107が外部電源2と接続されると外部電源2から電源回路107に電力が供給され、その電力が電子制御回路基板1の全体に供給される。そして、上記のように電子制御回路基板1に電力が供給可能な状態においてユーザが不図示の電源ボタンを押下することで、インクジェットプリンタ3を起動することができる。
なお本実施形態では、電源回路107から電力が電子制御回路基板1に電力が供給されたときに、フラッシュメモリ103に記憶されている制御プログラムや各種の制御情報が揮発性メモリ102に記憶される。またインクジェットプリンタ3が起動している状態においてユーザが上記不図示の電源ボタンを押下することで、インクジェットプリンタの電源を切ることができる。その際に、揮発性メモリ102に記憶されている各種の制御情報がフラッシュメモリ103に記憶される。そのため、ユーザが上記電源ボタンを押下してインクジェットプリンタ3の電源を切った後に電源ケーブルを外部電源2から外した場合、起動中に揮発性メモリ102に書き込まれたデータを不揮発性メモリであるフラッシュメモリ103に書き込むことができる。
またインクジェットプリンタ3は、不図示の読取エンジンによる原稿の読み取り、またファクシミリ通信や、LAN、インターネット等のネットワークを介したデータの送受信が可能であってもよい。
(2)フラッシュメモリ103に格納されるデータについて
次に、揮発性メモリ102からフラッシュメモリ103に書き込まれる、またフラッシュメモリ103から揮発性メモリ102に読み出されるデータについて説明する。図3は、揮発性メモリ102とフラッシュメモリ103の内部のデータマッピングの概略図である。
フラッシュメモリ103は、制御プログラムを格納するためのプログラム格納領域401と、後述する一般情報、制御フラグ情報を格納する保存情報格納領域402を含む。同様に揮発性メモリ102は、フラッシュメモリ103から読み出された制御プログラムが展開されるための、またプログラム実行時のワークメモリとして利用されるプログラム実行領域403を含む。また揮発性メモリ102は、フラッシュメモリ103から一般情報や制御フラグ情報を展開するための保存情報展開領域404を含む。
このようにフラッシュメモリ103における保存情報格納領域402には、大きく分けて、一般情報と制御フラグ情報が格納される。
一般情報とは、ユーザが設定する印刷品位や濃度の情報(図4における制御変数)や、インクジェットプリンタ3における印刷回数やインク消費量(図4における履歴情報)などである。これらの制御変数や履歴情報は、1つのデータセットとして纏められて記憶される。また上記のような各種の制御変数や履歴情報等が、図3において「データセット一般情報1、データセット一般情報2、データセット一般情報3・・」と区別されているように、その情報の種類に対応付けられて保存情報格納領域402に記憶されている。
例えばデータセット一般情報1は、印刷用の情報であり、設定可能な印刷部数、印刷品位、印刷濃度等の制御変数や、印刷回数やインク消費量などの履歴情報を含む。またインクジェットプリンタ3がファクシミリ通信を実行可能な装置の場合、データセット一般情報2には、例えばファクシミリ通信のための情報が含まれる。例えば、インクジェットプリンタ3のFAX番号、電話帳等の制御変数、ユーザが過去に設定した各種の履歴情報が含まれる。さらに、インクジェットプリンタ3がネットワーク通信を実行可能な装置の場合、データセット一般情報3には、インクジェットプリンタ3のIPアドレス、LANに接続するための設定情報等の制御変数が含まれる。また履歴情報には、ネットワーク通信を行ったアクセス先等が含まれる。
一方、制御フラグ情報はインクジェットプリンタ3の状態を示し、プリントエンジン部302の動作と同期しながらフラッシュメモリ103に確実に記憶する必要のある情報である。例えば、キャッピングフラグ情報が制御フラグ情報に該当する。
このように保存情報格納領域402では一般情報、制御フラグ情報のそれぞれがデータセットとして書き込まれる。またこれらの複数のデータセットのそれぞれにIDが設定されており、データセットの読み出しはこのIDに応じて行われる。
またフラッシュメモリ103の保存情報格納領域402は、複数のブロックに分割されており、各データセットを格納するためのメモリ領域としてブロック単位でメモリ領域が割り当てられている。本実施形態では、1ブロックが4Kbyteの領域であるとする。そして、データセットのそれぞれが、ブロックのそれぞれに個別に格納される。
保存情報格納領域402は、一般情報の各データセット(1、2、3・・)に対して複数のブロックが割り当てられている。例えば図3のデータセット一般情報1が既に書き込まれている場合にデータセット一般情報1を新たに書き込む場合、上書きするのではなく、別のブロックに書き込むことができる。これにより、例えば新たなデータセットの書き込みの途中で電源が遮断された場合など、当該書き込みに失敗した場合でも、電源再投入時に、過去に書き込んだ情報を読み出すことができる。
上記の書き込みについて具体的に説明する。例えば揮発性メモリ102に展開されているデータセット1がフラッシュメモリ103に書き込まれる場合、各ブロックを参照することで、各ブロックにデータが既に書き込まれているか、またデータの書き込みが古いブロックが判定される。そして、データが書き込まれていないブロックがあればそのブロックにデータが書き込まれ、またデータが書き込まれていないブロックがなければ、データ書き込みの古いブロックに書き込みが行われる。上記判定は、後述するカウンタに基づいて行われる。
次に揮発性メモリ102における記憶領域について説明する。
図3のプログラム実行領域403は、フラッシュメモリ103のプログラム格納領域401に格納されている制御プログラムが、例えばインクジェットプリンタ3の起動時に展開される領域である。CPU101は、このように展開された制御プログラムを実行することで各種の制御を行う。
図3の保存情報展開領域404は、1つ以上のブロック単位のセクションに分割されており、1つのブロック単位サイズのデータセットにつき1つのセクションが割り当てられている。ここでのブロック単位とは、前述のフラッシュメモリ103のブロック単位(4Kbyte)とする。また揮発性メモリ102のデータ容量はフラッシュメモリ103のデータ容量よりも小さいため、フラッシュメモリ103に書き込まれているデータセットの一部が揮発性メモリ102に読み出される。
インクジェットプリンタ3に電力が供給され、起動したときに、制御プログラムとともに、制御情報がフラッシュメモリ103から揮発性メモリ102に展開される。そして、インクジェットプリンタ3が稼働している状態では、様々なタイミングで制御変数や履歴情報に変更が発生し、その都度CPU101は、揮発性メモリ102の保存情報展開領域404の該当データを更新する。また、パワーオフ時や、ユーザが操作UI部301から印刷設定を変更したときや、印刷完了時などの特定のタイミングにおいて、CPU101は、揮発性メモリ102の制御情報データを、データセットごとにフラッシュメモリ103へ保存する。
(3)一般情報の詳細について
図4は、一般情報のデータセットを示す図である。1つのデータセットは、各種制御変数や履歴情報などの制御情報および、チェックサムデータを格納する保存情報領域と、データの書き込み回数を記憶したカウンタ値を格納する、2つのカウンタ領域を含む。カウンタ領域(上部)は、保存情報領域よりも上部にマッピングされ、保存情報領域よりも先に書き込みが行われる。もう1つのカウンタ領域は、保存情報領域よりも下部にマッピングされ、保存情報領域への書き込みが完了した後に書き込みが行われる。
上記2つのカウンタ領域には、当該データセットが書き込まれるブロックへの書き込み回数を示すカウント情報が記憶される。本実施形態においてはフラッシュメモリの書き換え上限回数が10万回であるため、カウンタ領域のサイズは、10万以上の値を記録可能な4byte以上とする。
本実施形態では、電源が切られる場合など揮発性メモリ102に記憶されているデータセットをフラッシュメモリ103に書き込む場合、そのデータセットが書き込まれるブロックの書き込み回数がカウント情報として2つのカウンタ領域に書き込まれる。
また、例えば起動時などにフラッシュメモリ103に記憶されているデータセットを揮発性メモリ102に展開する場合、2つのカウンタ領域に書き込まれているカウント情報を参照することで、揮発性メモリ102に展開されるデータセットを選択する。
本実施形態では、図4に示したように、カウント情報と制御情報の両方が同じブロックに格納される。よって、例えば制御情報とは別のブロックにカウント情報を書き込む場合に比べ、カウント情報の書き込み、読み出しを高速に行うことができる。
また上記のように、カウント情報のブロックと制御情報のブロックが異なる場合、その2つのブロックを対応付けなければならない。本実施形態では、カウント情報が制御情報と同じブロック内に書き込まれるため、カウント情報を容易に管理することができる。
さらに、カウント情報のブロックと制御情報のブロックが異なる場合、カウント情報のために4kbyteの領域を別途設けなければならず、またカウント情報の書き込みのために、ブロックへの書き込み回数が多くなってしまう。本実施形態では、カウント情報が制御情報と同じブロック内に書き込まれるため、制御情報、カウント情報の書き込みのためのメモリ容量、またブロックへの書き込み回数を削減することができる。
(4)制御フラグ情報の詳細について
制御フラグ情報はインクジェットプリンタ3の状態を示す情報である。前述したキャッピングフラグ情報が制御フラグ情報に該当する。この制御フラグ情報は、揮発性メモリ102およびフラッシュメモリ103において、各制御フラグ情報につき1つのデータセットで管理される。
また上記の一般情報は、例えばその内容に変更があったとしても揮発性メモリ102が更新されるが、フラッシュメモリ103では更新されなくてもよい。そして、例えばインクジェットプリンタ3の電源ボタンを押下したときに、揮発性メモリ102の内容がフラッシュメモリ103に格納される。
しかし制御フラグ情報は、フラッシュメモリ103により確実に記憶するために、内容に変更が生じるような動作をインクジェットプリンタ3が行う場合、その動作に同期して更新後の情報がフラッシュメモリ103に記憶される。
図5は、制御フラグ情報のデータセットを示す図である。2byteの特殊フラグ情報を含み、それ以外の領域の全てのビットに所定の値「1」が書き込まれている。なお、このように所定の値「1」が書き込まれビットが立っている状態を、本実施形態では、データ消去がされている状態とも呼ぶ。また一つのブロック(4Kbyte)に対して、一つの制御フラグ情報のみ割り当てられる。さらに、制御フラグ情報はプリントエンジン部302の動作と同期する必要があるため、揮発性メモリ102の保存情報展開領域404の該当データを更新した直後に、フラッシュメモリ103の該当データは更新される。
(5)本実施形態におけるフラッシュメモリへの書き込みについて
図6はフラッシュメモリ103への書き込み処理の一例を示す図である。なお、図6では、一般情報の書き込みを示す。
フラッシュメモリ103への書き込み処理は、ブロック単位で実行され、書き込み前の状態501であり書き込み対象のブロックに対し、ブロック内の全てのビットを立てることでデータ消去を実行する。そして、ブロック全体が消去状態502となった後に1byte単位のライト処理を繰り返すことで、書き込み終了状態503となる。
上記処理の実行時間として、ブロック全体の消去に約800ミリ秒、1byte単位の書き込み処理に数ミリ秒程度の時間を要する。そのため、フラッシュメモリ103への書き込み処理に要する時間は最大1秒程度となる。この書き込み処理の途中で、電源ケーブルが外部電源から抜かれた場合や停電等の電源遮断が発生した場合、フラッシュメモリ103への書き込み処理が終了せず、また書き込みの対象の情報が揮発性メモリ102から消去されてしまう。
特に、印刷開始時にキャッピングフラグ情報がフラッシュメモリ103に適切に書き込まれなかった場合、電源が再投入されたときに、キャッピングフラグ情報がキャップクローズを示していたとしても、キャップオープンの状態であることがある。この場合、記録ヘッドの回復処理が行われず、吐出口にインクが詰まったまま印刷が行われてしまう恐れがある。
そこで本実施形態では、キャップオープンの状態を示す情報を、より確実にフラッシュメモリ103に書き込むための処理を行う。この処理について図7〜図11を用いて詳細に説明する。
図7は、ブロックにおいて制御フラグ情報が書き込まれている状態を説明するための図である。なお、揮発性メモリ102に記憶されている制御フラグ情報が反転した場合、フラッシュメモリ103への書き込みが発生する。揮発性メモリ102において制御フラグ情報は、2値(0もしくは1)のいずれかの状態を示すものとする。
図7の601に示す状態では、制御フラグ情報として「5A5A」が書き込まれており、この状態を制御フラグ情報が示す「0」、「1」の状態のいずれかであるとする。具体的には、制御フラグ情報がキャッピングフラグ情報である場合、601の状態が、キャップオープン状態を示すものとする。
また601の状態においてフラグ情報を書き換える場合、ブロック内の全ビットを立てることで一括消去が実行され、602に示す状態となる。本実施形態では、この状態を、制御フラグ情報が示す、もう一方の状態であるとする。例えばキャッピングフラグ情報の場合、601の状態がキャップオープン状態であれば、602の状態をキャップクローズ状態であるとする。
即ち本実施形態では、フラッシュメモリ103に記憶される制御フラグ情報は、601の2byteデータのライト処理による「指定bitが落ちている状態」と、602のブロック単位の一括消去処理による「全bitが立っている状態」で表現される。この2つの状態は、揮発性メモリ102に記憶される2値の制御フラグ情報にそれぞれ対応する。
例えば、601のように「5A5A」が記述された状態を制御フラグ情報が「0」の状態とする。そして、「5A5A」とは異なる情報(例えば「4A4A」)が記述された状態を「1」の状態とした場合、「0」から「1」、または「1」から「0」に更新するためには、ブロックの一括消去、情報の書き込みの両方を行わなければならない。
一方、本実施形態では、一括消去が行われた状態である602を、制御フラグ情報の「0」または「1」の状態に割り当てるので、高速な書き込みを行うことができる。即ち、図7の601から602の状態に遷移させるためには、一括消去を実行するが、それに加えて情報の書き込みは行わなくてもよい。
逆に602から601の状態に遷移させるためには、先頭2byteへの書き込みを行うが、一括消去は行わなくてもよい。フラッシュメモリの各記憶セルは消去動作により各々の記憶セルが電気的にチャージされ、ビットセット状態となる。このため、所望のフラッシュメモリ上の特定のアドレスのビット状態を「1」から「0」にするために、一括消去動作を行わなくてもよい。
以上のことから本実施形態によれば、制御フラグ情報を「0」と「1」、または「1」から「0」に変化させるために、一括消去、データ書き込みのいずれかを実行すればよく、その両方を行わなくてもよいため、高速な書き込みを実行することができる。
特に、図7の602の状態から601の状態にするためには、先頭2Byteにおいて特定のアドレスのビット状態を落とす処理を行えばよい。そのため、先頭2Byte以外の、3998byteの領域については、ビットを立てる処理を行わなくても、601の状態に遷移させることができる。
よって「全bitが立っている状態」である602から、「指定bitが落ちている状態」である601へ遷移させる処理は、逆の場合よりもさらに高速に行うことができる。よって、より確実に記憶する必要のある情報を「指定bitが落ちている状態」601に対応付ける。これにより、停電等によって、その重要な情報の不揮発性メモリへの書き込みが完了しないまま、電源が遮断されてしまうことをより確実に防ぐことができる。
例えば制御フラグ情報が上述のキャッピングフラグ情報である場合、記録ヘッドがキャップされていないキャップオープン状態を、より確実に書き込む必要がある情報として、601の状態に割り当てる。仮に電源が再投入された際にキャップオープン状態であるにも関わらず、CPU101がそれを認識できない場合、記録ヘッドの回復動作が行われないまま印刷が実行されてしまうことがある。この場合、インク吐出口のインク詰まりなどにより、印刷結果に影響を与えてしまうことがある。一方、キャップクローズ状態であるにも関わらず、CPU101がキャップオープン状態と認識した場合、回復動作が行われるが、上記の場合に比べて印刷結果への影響は少ない。そのため、キャップオープン状態を、キャップクローズ状態よりも確実に記憶させる必要がある情報とする。
よって本実施形態では、図7の602の状態(キャップクローズ状態)から601の状態(キャップオープン状態)に高速に遷移させることができる。そのため、仮に印刷開始時に電源が遮断されたとしても、制御フラグ情報としてキャップオープン状態を示す情報より確実にフラッシュメモリ103に書き込むことができる。
また制御フラグ情報の別の例として、インクジェットプリンタ3が印刷用紙の両面に印刷する場合に、印刷用紙が搬送路に有るか否かを示すフラグ(紙有無フラグ情報)でもよい。このフラグ情報は、インクジェットプリンタ内部にあるモーターの回転方向を決定し、印刷用紙を所定の上記搬送路の所定の方向に搬送するための要因の一つである。そのため、両面搬送路に印刷用紙を引き込んだことを示す情報が失われると、誤った方向にモーターが回転し、印刷用紙を傷つける可能性がある。そのため、少なくとも印刷用紙を両面搬送路に引き込んだ状態を示す情報を、高速に書き込む必要がある。即ち、この場合は、印刷用紙が両面印刷のための搬送路に引き込まれていることを確実に記憶する必要がある。そのため、601の「指定bitが落ちている状態」を、印刷用紙を引き込んでいる状態とし、602の「全bitが立っている状態」を、印刷用紙を引き込んでいない状態として割り当てる。
さらに制御フラグ情報の別の例として、記録ヘッドが交換されたか否かを示す、ヘッド交換フラグ情報でもよい。このフラグ情報は、ヘッドを交換したかを示すフラグ情報であり、この情報を基にヘッド交換後の初期化処理の必要性を判断する。そのため、ヘッドを交換したことを示す情報が失われると、交換後に行われるべき初期化処理が行われず、印刷品質に影響が出る可能性がある。即ち、ヘッドが交換された状態であることを確実に記憶する必要がある。そのため、ヘッドが交換された状態を、601の「指定bitが落ちている状態」とし、ヘッドが交換されていない状態を、602の「全bitが立っている状態」に割り当てる。
本実施形態のメモリ制御装置による、不揮発性メモリの書き込み、読み込みの詳細について説明する。図8は、フラッシュメモリ103への書き込み処理を示すフローチャートである。図8に示す処理は、CPU101により実現される。
図8(a)のS001でCPU101は、書き込み対象のデータセットのIDを確認する。次に、S002で確認したIDを基に、データセットが一般情報を保存しているか、制御フラグ情報を保存しているかの判定を行う。データセットが一般情報である場合、S003においてCPU101は、図4に示したようにカウンタ値とデータの書き込みを行う。一方、データセットが制御フラグ情報である場合、S004においてCPU101は、制御フラグ情報の書き込み処理を行う。
S004の具体的な処理の内容を図8(b)に示す。
図8(b)におけるS101でCPU101は、揮発性メモリ102に保存されている制御フラグ情報を読み込むことで、当該制御フラグ情報を取得する。更新対象である情報は制御フラグ情報であるため、S102においてCPU101は、S101で読み込んだ制御フラグ情報を反転し、S103において、反転された制御フラグ情報を揮発性メモリ102に書き込む。このとき揮発性メモリ102に書き込まれる情報は、例えば「0」または「1」である。
次に、S104においてCPU101は、S103において揮発性メモリ102に書き込まれた「0」または「1」に対応する、フラッシュメモリ103に書き込まれる制御フラグ情報の値を判定する。
揮発性メモリ102に記憶されている制御フラグ情報が「値1」に更新されていた場合は、CPU101はS105に処理を進める。CPU101はS105において、フラッシュメモリ103の該当ブロックにブロック単位(4Kbyte)の一括消去処理を記憶制御処理として実行する。これにより、制御フラグ情報を「全bitが立っている状態」602に書き換えることができる。この「指定bitが落ちている状態」601から「全bitが立っている状態」602への書き換え処理は約800ミリ秒で終了する。
一方、揮発性メモリ102に記憶した制御フラグ情報が「値0」に更新されていた場合は、CPU101はS106に処理を進める。CPU101は、本実施形態における記憶制御処理として、S106でフラッシュメモリ103の制御フラグ情報を記憶しているブロックに1byte単位のライト処理を実行(図7において5A5Aをライト)する。そして、保存されている制御フラグ情報を「指定bitが落ちている状態」601に書き換える。この「全bitが立っている状態」602から「指定bitが落ちている状態」601への書き換えは、S105における処理よりも高速であり、数ミリ秒で終了する。
なお、例えば制御フラグ情報がキャッピングフラグ情報である場合、印刷結果への影響が大きいキャップオープン状態を、不揮発性メモリにおける制御フラグ「0」、フラッシュメモリ103における601の状態に割り当てる。これにより、キャップオープン状態をより高速に書き込むことができるため、電源遮断によりキャップオープン状態が書き込めなくなることをより確実に防ぐことができる。
次に、制御フラグ情報をフラッシュメモリ103から揮発性メモリ102に読み出す処理について説明する。この処理は、例えばインクジェットプリンタ3が電源オフ状態から電源オン状態へ遷移した際に、CPU101により実行される。
図9は、制御フラグ情報の読み出し処理を示すフローチャートである。図9に示す処理は、CPU101による処理により実現される。具体的には、フラッシュメモリ103に記憶されている制御フラグ情報を読み込み、そして、読み込んだ値に応じて揮発性メモリ102に値を書き込む処理を実行する。図9に示す処理は、例えばインクジェットプリンタ3に電源が供給されている状態で、不図示の電源ボタンがユーザにより押下されたときにCPU101により実行される。
S201でCPU101は、フラッシュメモリ103の制御フラグ情報を記憶しているブロックの先頭2byteを読み込む。次に、S202でCPU101は読み込んだデータを判定する。
S202で読み込まれたデータが制御フラグ情報の「全bitが立っている状態」602を表すデータ(図7においてFFFF)であった場合は、CPU101はS203に処理を進める。S203でCPU101は、揮発性メモリ102に制御フラグ情報として「値1」を書き込む。
一方、S202における判定において、フラッシュメモリ103から読み込んだ制御フラグ情報が「指定bitが落ちている状態」601を表すデータ(図7において5A5A)であった場合は、CPU101はS204に処理を進める。S204においてCPU101は、揮発性メモリ102に制御フラグ情報として「値0」を書き込む。
以上の図8、図9に示した処理により、揮発性メモリ102に記憶されている制御フラグ(「0」または「1」)のフラッシュメモリ103への書き込み、またフラッシュメモリ103に記憶されている制御フラグの揮発性メモリ102への読み込みが実行される。
またインクジェットプリンタ3は、制御フラグ情報としてキャッピングフラグ情報をフラッシュメモリ103に書き込む場合、図8(b)に示したような書き込み方法ではなく、以下図10で説明する方法により書き込みが行われてもよい。図10に示す処理では、CPU101の制御によりプリントエンジン部302が動作する場合に、その動作と同期させながら、CPU101が、揮発性メモリ102やフラッシュメモリ103に制御フラグ情報を記憶する。
図10は、キャッピングフラグ情報を書き込む処理の一例を示すフローチャートであり、図8(a)のS004の具体的内容を示す図である。
インクジェットプリンタ3は印刷処理を実行する際に、CPU101およびプリントエンジン部制御回路106は、S301でプリントエンジン部302に含まれる記録ヘッドのキャップオープン処理を開始する。具体的には、キャップ機構を引き下げて記録ヘッドのインク吐出面を露出させる。インク吐出面の露出が完了すると、CPU101はS302において、揮発性メモリ102に、キャップオープンを示すキャッピングフラグ情報の「(値0)」を書き込む。
次に、S303でCPU101は、本実施形態の記憶制御処理として、フラッシュメモリ103のキャッピングフラグ情報を記憶しているブロックに1byte単位のライト処理(図7において5A5Aをライト)を開始する。これにより制御フラグ情報が「指定bitが落ちている状態」601に書き換わる。1byte単位のライト処理は数ミリ秒で終了し、記録ヘッドの状態とフラッシュメモリ103に記憶するキャッピングフラグ情報は同期し、書き込み処理が終了する。
また、インクジェットプリンタ3が印刷処理を終了し、規定された時間が経過した際に、CPU101およびプリントエンジン部制御回路106は、S304でプリントエンジン部302に含まれる記録ヘッドのキャップクローズ処理を実行する。具体的には、キャップを押し上げて記録ヘッドのキャップが完了すると、CPU101はS305において、揮発性メモリ102に、キャップクローズ状態に対応するキャッピングフラグ情報の「(値1)」を書き込む。
次に、S306においてCPU101は、本実施形態の記憶制御処理として、フラッシュメモリ103の該当ブロックにブロック単位(4Kbyte)の消去処理を開始し、制御フラグ情報を「全bitが立っている状態」602に書き換える。ブロック単位の消去処理は約800ミリ秒で終了し、書き込み処理が終了する。キャップオープン処理での書き込み時間と比較し、キャップクローズ処理の書き込み時間は比較的長い。そのため、不意の電源遮断によりキャップクローズを示す情報がフラッシュメモリ103に書き込まれず、また揮発性メモリ102から消失する可能性がある。しかし、すでに記録ヘッドのキャップは閉じており、仮に電源投入時にキャップクローズを認識できなくても、印刷品質への影響は少ない。
一方、キャップオープンを示す状態がフラッシュメモリ103に書き込まれない場合、インクが吐出口に詰まっていたとしても回復動作が行われず、適切な印刷が行えない場合がある。よって、キャップオープンを示すフラグ情報は、キャップクローズを示すフラグ情報よりも優先してフラッシュメモリ103に書き込まれる情報である。本実施形態では、キャップオープン状態を示す情報を、キャップクローズを示す情報よりも高速に書き込める。そのため、不意な電源遮断によりその情報が書き込めず、印刷品質に影響が及んでしまう可能性を低くすることができる。加えて、キャップオープン状態を示す情報をより高速に書き込むことができるため、印刷開始時におけるフラッシュメモリ103への書き込み時間を短縮することができる。よって、キャッピングフラグ情報の書き込みによるメカ動作の遅延を抑えることができ、印刷処理を素早く早く行うことができる。
なお、本実施形態は、フラグ制御情報の一例としてキャッピングフラグ情報について説明しているが、キャッピングフラグ情報以外のフラッシュメモリ103に高速にデータを記憶する必要のあるデータについて、適用可能である。例えば、両面印刷において用紙が搬送される送路紙に用紙が有るか否かを示すフラグ情報の場合は、印刷用紙を両面搬送路に引き込んだ状態を示す情報がより優先され、より高速に書き込まれる必要がある。そのため、インクジェットプリンタ3が印刷用紙を両面搬送路に引き込んでいない状態の場合、フラッシュメモリ103は「全bitが立っている状態」602とし、揮発性メモリ102は「値1」とするようフラグを割り当てる。またヘッド交換中フラグ情報は、ヘッドを交換した状態を示す情報が、より優先され、より高速に書き込まれる必要がある。そのため、インクジェットプリンタ3がヘッドを交換した状態の場合、フラッシュメモリ103を「全bitが立っている状態」602とし、揮発性メモリ102は「(値1)」とするようフラグを割り当てる。
なお、図10に示した処理によりフラッシュメモリ103に1byte単位のライト処理もしくはブロック単位(4Kbyte)の一括消去処理を実行している最中に不意の電源遮断が起きる場合がある。そして、その後インクジェットプリンタ3が電源オフ状態から電源オン状態へ遷移した状況を想定する。例えばキャップオープン状態を示す情報をフラッシュメモリ103に書き込むために、図7に示す602の状態から601の状態に遷移させるよう「5A5A」を書き込む場合がある。そして、例えば「5A」を書き込んだ状態で電源が遮断されると、601、602のいずれにも該当しない状態でフラッシュメモリ103への書き込みが終了する。
図11は、フラッシュメモリ103への書き込み中の電源遮断を考慮した読み出し処理を示すフローチャートである。図11の処理は、例えばインクジェットプリンタ3に電源が供給されている状態で、不図示の電源ボタンがユーザにより押下されたときにCPU101により実行される。
S401〜S404は、図9のS201〜S204と同様であるため、詳細な説明は省略する。ただしS402では、フラッシュメモリ103に記憶されている制御フラグ情報が、602の「全bitが立っている状態」および601の「指定bitが落ちている状態」を表すデータでない場合を判定できる。
S402において上記判定が行われた場合、CPU101はS405、S406に処理を進めて、揮発性メモリ、またフラッシュメモリの該当ブロックの初期化処理を行う。S405においてCPU101は、揮発性メモリ102に初期値を書き込む。S406においてCPU101は、フラッシュメモリ103の制御フラグ情報を記憶しているブロックを揮発性メモリ102の値に対応した状態に変更する。
例えば、制御フラグ状態がキャッピングフラグ情報の場合、S405では初期値データとしてキャップオープン状態に対応する「値1」を揮発性メモリ102に書き込み、S506では、図7に示す601の状態に当該ブロックを更新する。これにより実際のキャップの状態がキャップオープン、クローズのいずれの状態であったとしても、キャップオープン状態を想定した回復動作が実行され、少なくとも印刷品質に影響を少なくすることができる。なお、S405で初期値データとしてキャップクローズ状態に対応する「値0」を揮発性メモリ102に書き込み、S506では、図7に示す602の状態に当該ブロックを更新してもよい。
なお、以上の実施形態はメモリ制御装置として、インクジェットプリンタに組み込まれた電子制御回路基板を例に説明しているがこれに限らない。例えば印刷のための記録剤としてのトナーを印刷媒体に付与する電子写真方式の印刷装置でもよいし、プリンタに加え、原稿を読み取るためのスキャナを備えた複合機であってもよい。またプリンタに限らず、PC(パーソナルコンピュータ)や、スマートフォンやタブレット、携帯電話、デジタルカメラなどの各種の装置であってもよい。
また、本実施形態におけるメモリ制御装置は、当該装置の内部に備える不揮発性メモリに対する書き込み、読み出しを行う場合に限らず、当該装置に接続された外部の不揮発性メモリに対して書き込み、読み出しを行う場合であってもよい。
さらに以上の実施形態では、不揮発性メモリとしてフラッシュメモリを例に説明したが、これに限らない。例えばEEPROM等の種々のメモリに本実施形態を適用することができる。
なお、本実施形態の機能は以下の構成によっても実現することができる。つまり、本実施形態の処理を行うためのプログラムコードをシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)がプログラムコードを実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も本実施形態の機能を実現することになる。
また、本実施形態の機能を実現するためのプログラムコードを、1つのコンピュータ(CPU、MPU)で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。