(57)【特許請求の範囲】
【請求項１】
不揮発性メモリーに格納されている起動プログラムによって起動制御を行う画像形成装置であって、
起動中フラグ及びリカバリーブートフラグが設定されているレジスタ手段と、
起動中に前記起動中フラグのオン・オフを所定時間毎に反転させる反転制御を行うと共に、前記リカバリーブートフラグがオフである場合には前記起動プログラムで、前記リカバリーブートフラグがオンである場合には前記不揮発性メモリーに格納されているリカバリープログラムでそれぞれ起動制御を行う制御手段と、
起動中に前記起動中フラグの反転制御が停止すると、前記リカバリーブートフラグをオンさせて、前記制御手段を再起動させる割り込み通知手段とを具備し、
前記制御手段による前記反転制御は、前記起動制御に先立って実行されるブートプログラムに記述されていることを特徴とする画像形成装置。
【請求項２】
不揮発性メモリーに格納されている起動プログラムによって起動制御を行う画像形成装置であって、
起動中フラグ及びリカバリーブートフラグが設定されているレジスタ手段と、 
起動中に前記起動中フラグのオン・オフを所定時間毎に反転させる反転制御を行うと共に、前記リカバリーブートフラグがオフである場合には前記起動プログラムで、前記リカバリーブートフラグがオンである場合には前記不揮発性メモリーに格納されているリカバリープログラムでそれぞれ起動制御を行う制御手段と、
起動中に前記起動中フラグの反転制御が停止すると、前記リカバリーブートフラグをオンさせて、前記制御手段を再起動させる割り込み通知手段とを具備し、
前記不揮発性メモリーに格納されている前記リカバリープログラムは、リカバリープログラム本体を判別するためのファイルシステムを起動するためのカーネルを含むプログラムであることを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、起動プログラムやファームウェアをＮＡＮＤ型フラッシュメモリー等の不揮発性メモリーに格納している画像形成装置に関するものである。
【背景技術】
【０００２】
近年、複写機、プリンタ、複合機等の画像形成装置においては、起動プログラムやファームウェアをフラッシュメモリー等の書き換え可能な不揮発性メモリーに格納することで、出荷後のアップデート（起動プログラムやファームウェアの更新・バージョンアップ）を以前よりも比較的容易に行えるようになっている。
【０００３】
フラッシュメモリーには、ＮＯＲ型とＮＡＮＤ型とが存在するが、ＮＡＮＤ型はビット単価がＮＯＲ型よりも安価なため、コストダウンを図るためにＮＡＮＤ型フラッシュメモリーに統一する流れがある。ところが、ＮＡＮＤ型フラッシュメモリーは、ＮＯＲ型フラッシュには見られないバッドブロックという書き込みエラーが発生する領域やリードディスターブと呼ばれるリードエラーが発生するケースがあり、リードディスターブや後天的にバッドブロックにより起動プログラムが破損され、起動エラーとなって復帰できなくなるケースが存在する。
【０００４】
起動プログラムの破損による起動エラーには、起動直後にフラッシュメモリー内の全データによるチェックサムを取ることで、データの破損を検知する方法や、特許文献１のように、監視装置が一定期間内に正常起動しないことを判別して、リカバリープログラムで復旧する方法が提案されている。
【０００５】
また、アップデート時の書き換え中に電源の遮断が発生した場合にも、起動プログラムが破損し、起動が途中で停止あるいは暴走することで正常に起動しないケースも考えられる。
【０００６】
アップデートによる起動プログラムの破損には、アップデートが正常に完了したか否かについて、フラッシュメモリー内にアップデート中のフラグを立て、書き込みが正常に完了した時点でクリアする手法が提案されている。この手法によれば、書き換え中の電源断が発生した際にはアップデート中のフラグが残っているため、その場合は再度アップデートを実施することができる（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−５４６１６号公報
【特許文献２】特開平８−１６４０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、チェックサムによるデータの破損検知には、バッドブロックを無視する必要があることや、ＮＡＮＤフラッシュメモリーの容量が増加していることにより、起動時間に影響を及ぼすため、起動時間の短縮を図っている近年の画像形成装置には有効な方法ではない。
【０００９】
また、特許文献１のように、時間により起動エラーを判別し、リカバリープログラムで復旧する方法は、起動プログラムのサイズが大きいと、その起動時間も数秒単位でかかることから、監視装置にどの程度の時間でアラームを上げるのかを設定する必要があるが、このタイマーの設定前に起動が停止した場合は復旧ができない恐れがある。
【００１０】
さらに、特許文献２のように、フラッシュメモリー内にアップデート中のフラグを立てる方法は、不揮発性メモリー内にアップデートプログラムを一時格納する領域が必要となり、通常使用しない機能に対してコストをかける必要が生じ、コストアップになってしまう。
【００１１】
本発明は、かかる点に鑑みてなされたものであり、その目的とするところは、起動エラーを素早く検出し、リカバリー動作を確実に実行することができる画像形成装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明の画像形成装置は、不揮発性メモリーに格納されている起動プログラムによって
起動制御を行う画像形成装置であって、起動中フラグ及びリカバリーブートフラグが設定
されているレジスタ手段と、起動中に前記起動中フラグのオン・オフを所定時間毎に反転
させる反転制御を行うと共に、前記リカバリーブートフラグがオフである場合には前記起
動プログラムで、前記リカバリーブートフラグがオンである場合には前記不揮発性メモリ
ーに格納されているリカバリープログラムでそれぞれ起動制御を行う制御手段と、起動中
に前記起動中フラグの反転制御が停止すると、前記リカバリーブートフラグをオンさせて
、前記制御手段を再起動させる割り込み通知手段とを具備し、前記制御手段による前記反転制御は、前記起動制御に先立って実行されるブートプログラムに記述されていることを特微とする。
また、本発明の画像形成装置は、不揮発性メモリーに格納されている起動プログラムによって起動制御を行う画像形成装置であって、起動中フラグ及びリカバリーブートフラグが設定されているレジスタ手段と、起動中に前記起動中フラグのオン・オフを所定時間毎に反転させる反転制御を行うと共に、前記リカバリーブートフラグがオフである場合には前記起動プログラムで、前記リカバリーブートフラグがオンである場合には前記不揮発性メモリーに格納されているリカバリープログラムでそれぞれ起動制御を行う制御手段と、起動中に前記起動中フラグの反転制御が停止すると、前記リカバリーブートフラグをオンさせて、前記制御手段を再起動させる割り込み通知手段とを具備し、前記不揮発性メモリーに格納されている前記リカバリープログラムは、リカバリープログラム本体を判別するためのファイルシステムを起動するためのカーネルを含むプログラムであることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、起動エラーが起こり、起動中フラグの反転制御が停止すると、制御手段が再起動され、リカバリープログラムで起動制御が行われるため、起動エラーを素早く検出し、リカバリー動作を確実に実行することができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】本発明に係る画像形成装置の実施の形態の概略構成を示すブロック図である。
【図２】図１に示す制御部のシステム構成例を示すブロック図である。
【図３】図２に示すレジスタの構成を示す図である。
【図４】本発明に係る画像形成装置の実施の形態における起動動作を説明するためのフローチャートである。
【図５】本発明に係る画像形成装置の実施の形態におけるアップデート動作を説明するためのフローチャートである。
【図６】本発明に係る画像形成装置の実施の形態におけるリカバリー動作を説明するためのフローチャートである。
【図７】本発明に係る画像形成装置の実施の形態におけるリカバリー動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
次に、本発明の実施の形態を、図面を参照して具体的に説明する。
本発明の実施の形態の画像形成装置１は、複写機能、スキャナー機能、ファクシミリ機能等を有する複合機であり、図１を参照すると、操作部２と、原稿読取部３と、記憶部４と、画像処理部５と、印刷部６と、ファクシミリ部７と、制御部１０とを備えている。
【００１６】
操作部２は、液晶表示パネルの表面に透明の感圧センサーが設けられたタッチパネル、印刷枚数等の数値を入力するためのテンキー、設定情報を初期化させる指示を入力するためのリセットキー、複写動作を停止させたり、入力された数値を消去させたりするためのストップキー、割り込みコピーを指示する割り込みキー、印刷動作を開始させる出力指示を入力するためのスタートキー等の各種操作キーを備えたユーザーインターフェースである。
【００１７】
原稿読取部３は、図示しない原稿給紙装置により給紙されてきた原稿や、ユーザーによってプラテンガラスに載置された原稿に対して光を照射し、その反射光等を受光して原稿画像を読み取るスキャナーである。
【００１８】
記憶部４は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の記憶手段であり、原稿読取部３によって読み取られた画像データ、ファクシミリ部７によって受信された画像データが蓄積される記憶手段である。
【００１９】
画像処理部５は、原稿読取部３によって読み取られた画像データに対して、濃度やカラー／モノクロの判別処理等の画像検出処理、画像データの変倍処理やフィルタ処理等の画像処理、２値化等の画像処理等を施し、さらにファイル形式（ＪＰＥＧ等）に圧縮処理して、記憶部４に出力する機能を有している。
【００２０】
印刷部６は、例えば、電子写真技術を用いて画像形成を行う画像形成手段である。印刷部６は、記憶部４から読み出した画像データに基づき感光体ドラムの表面に潜像を形成し、現像装置からのトナーによってその潜像をトナー像とする画像形成を行い、その感光体ドラムから記録紙にトナー像を転写させ、そのトナー像を記録紙に定着させて排紙する構成を有している。
【００２１】
ファクシミリ部７は、モデムを有し、原稿読取部３によって読み取られた画像データや、記憶部４に記憶されている画像データからファクシミリ信号を生成し、生成したファクシミリ信号を電話回線網等のネットワークを介して送信するファクシミリ送信機能と、電話回線網等のネットワークを介してファクシミリ信号を受信するファクシミリ受信機能とを備えている。
【００２２】
操作部２と、原稿読取部３と、記憶部４と、画像処理部５と、印刷部６と、ファクシミリ部７とは、制御部１０に接続され、操作部２から入力された所定の指示情報に応じて制御部１０によって動作制御される。
【００２３】
制御部１０は、マイクロコンピュータ等の情報処理部であり、図２を参照すると、ＣＰＵ２０と、ＡＳＩＣ３０と、ＳＤＲＡＭ等で構成されたシステムメモリー４０と、不揮発性メモリーであるＮＡＮＤ型フラッシュメモリー５０とを備えたコントローラー基板として構成されている。また、制御部１０には、外部からリムーバブルメディアであるＵＳＢメモリー６０が挿抜可能に構成されている。
【００２４】
ＡＳＩＣ３０は、複数の機能回路をまとめた集積回路であり、ＣＰＵ２０との間で情報のやり取りを行うＩ／Ｆ回路３１と、ウォッチドッグ回路３２と、レジスタ３３と、ＮＡＮＤ型フラッシュメモリー５０に格納されている情報の読み書きを制御するＮＡＮＤコントローラー３４と、システムメモリー４０に格納されている情報の読み書きを制御するＲＡＭコントローラー３５と、ＵＳＢメモリー６０に格納されている情報の読み書きを制御するＵＳＢＨｏｓｔコントローラー３６とを備えている。なお、ＡＳＩＣ３０には、操作部２、原稿読取部３、記憶部４、画像処理部５、印刷部６、ファクシミリ部７等を制御する多くのコントローラーが内蔵されているが、図２では省略されている。
【００２５】
ＮＡＮＤ型フラッシュメモリー５０は、データの書き込み・消去を行うことができ、電源を切ってもデータが消えることがない不揮発性の半導体メモリーであり、装置起動時に、ＮＡＮＤコントローラー３４内のバッファ領域（ＲＡＭ）にストアされ、ブート動作を実行させるブートプログラムと、装置起動時に読み出されて実行される起動プログラムと、起動プログラムが動作しない場合にリカバリーするために読み出されるリカバリープログラム１とが格納されている。
【００２６】
また、ＵＳＢメモリー６０には、ＮＡＮＤ型フラッシュメモリー５０に格納されている各種プログラムを更新するためのアップデートプログラムと、リカバリープログラム２とが格納されている。このように、リカバリープログラムは、ＮＡＮＤ型フラッシュメモリー５０とＵＳＢメモリー６０とに分割されている。ＮＡＮＤ型フラッシュメモリー５０に格納されているリカバリープログラム１は、ＵＳＢメモリー６０に特定のファイル（リカバリープログラム２）があるか否かを判別するためのファイルシステムを起動するための最低限のカーネルを含むプログラムで構成されており、ＮＡＮＤ型フラッシュメモリー５０の容量の増加が抑制されている。
【００２７】
レジスタ３３は、フラグによって状態を示すステータスレジスタであり、図３を参照すると、「起動完了フラグ」と、「起動中フラグ」と、「リカバリーブートフラグ」とで構成されている。「起動完了フラグ」は、起動完了を示すレジスタであり、初期値はオフで、正常に起動が完了した場合にオンされる。「起動中フラグ」は、起動中であることを示すレジスタであり、起動中は、所定時間毎、例えば数μｓｅｃ毎にオン・オフを反転させる反転制御が繰り返し実施される。「リカバリーブートフラグ」は、起動エラーが検出されたことを示すレジスタであり、起動エラーが検出されるとオンされる。
【００２８】
ウォッチドッグ回路３２は、レジスタ３３の「起動完了フラグ」と、「起動中フラグ」とを監視しており、「起動完了フラグ」がオフ時に、すなわち起動中に、繰り返し実施される「起動中フラグ」の反転制御が途絶えたことを検知すると、起動エラーを検出する。起動エラーを検出すると、ウォッチドッグ回路３２は、「リカバリーブートフラグ」をオンにした後、割り込み通知回路として機能してＣＰＵ２０のクロックカウンター（以下、ＣＰＵカウンターと称す）をゼロに戻して、再起動させる。なお、ウォッチドッグ回路３２は、ハードウェアで構成されており、起動制御の開始と同時に上述の動作を開始させる。
【００２９】
次に、本実施の形態における起動動作について図４を参照して詳細に説明する。
装置起動時には、まず、ＮＡＮＤ型フラッシュメモリー５０に格納されているブートプログラムがＮＡＮＤコントローラー３４内のバッファ領域（ＲＡＭ）にストアされ、ブートプログラムによってブート動作が実行される。
【００３０】
ブートプログラムに基づいてＣＰＵ２０が実行するブート動作には、少なくとも以下に示す２つの動作が含まれている。
ａ）レジスタ３３における「リカバリーブートフラグ」を確認し、オフであれば、ＮＡＮＤ型フラッシュメモリー５０に格納されている起動プログラを認識し、オンであれば、ＮＡＮＤ型フラッシュメモリー５０に格納されているリカバリープログラム１を認識する。
ｂ）起動中は、レジスタ３３における「起動中フラグ」の反転制御を所定時間毎に繰り返す。
【００３１】
通常の起動では、レジスタ３３における「リカバリーブートフラグ」は、オフである。従って、ブートプログラムに基づいて、ＣＰＵ２０は、レジスタ３３における「リカバリーブートフラグ」を確認し（ステップＡ１）、「リカバリーブートフラグ」がオフであるため、ＮＡＮＤ型フラッシュメモリー５０に格納されている起動プログラムを認識した後（ステップＡ２）、起動プログラムをシステムメモリー４０に展開させる起動制御を行う（ステップＡ３）。また、ＣＰＵ２０は、起動中、レジスタ３３における「起動中フラグ」の反転制御を所定時間毎に繰り返す。
【００３２】
起動プログラムがシステムメモリー４０に展開され、装置が起動されると、起動プログラムに基づいて、ＣＰＵ２０は、レジスタ３３における「起動完了フラグ」をオンにすると共に（ステップＡ４）、「起動中フラグ」の反転制御を停止し、起動動作を終了させる。
【００３３】
なお、ウォッチドッグ回路３２は、起動と同時にレジスタ３３の「起動完了フラグ」と、「起動中フラグ」との監視を開始するが、起動中は、レジスタ３３における「起動中フラグ」が反転制御され、正常に起動が完了した後は、レジスタ３３における「起動完了フラグ」がオンされるため、起動エラーが検出されることがない。
【００３４】
次に、本実施の形態におけるアップデート動作について図５を参照して詳細に説明する。
ブートプログラムに基づいて、ＣＰＵ２０は、レジスタ３３における「リカバリーブートフラグ」を確認し（ステップＡ１）、「リカバリーブートフラグ」がオフであるため、ＮＡＮＤ型フラッシュメモリー５０に格納されている起動プログラムを認識した後（ステップＡ２）、起動プログラムをシステムメモリー４０に展開させる起動制御を行う（ステップＡ３）。
【００３５】
次に、ステップＡ３で起動プログラムをシステムメモリー４０に展開していく中で、実行していないアップデートプログラムがＵＳＢメモリー６０内にあると認識すると、ＣＰＵ２０は、「起動完了フラグ」をオンとすると共に（ステップＡ４）、アップデートプログラムをシステムメモリー４０に展開させる（ステップＢ１）。その後、ＣＰＵ２０は、起動プログラムを消去し（ステップＢ２）、システムメモリー４０に展開されたアップデートプログラムをＮＡＮＤ型フラッシュメモリー５０に書き込むことでアップデートを完了する（ステップＢ３）。その後、自動でＣＰＵカウンターをリセットして再起動を行う。
【００３６】
次に、本実施の形態における起動失敗時のリカバリー動作について図６及び図７を参照して詳細に説明する。
ブートプログラムに基づいて、ＣＰＵ２０は、レジスタ３３における「リカバリーブートフラグ」を確認し（ステップＡ１）、「リカバリーブートフラグ」がオフであるため、ＮＡＮＤ型フラッシュメモリー５０に格納されている起動プログラムを認識した後（ステップＡ２）、起動プログラムをシステムメモリー４０に展開させる起動制御を行う（ステップＡ３）。
【００３７】
ステップＡ３で起動プログラムをシステムメモリー４０に展開していく中で、起動プログラムが破損していると、途中で展開が中止され、ＣＰＵ２０の動作もハングアップされる。すると、ウォッチドッグ回路３２は、ＣＰＵ２０によって繰り返し実施される「起動中フラグ」の反転制御が途絶えたことを検知し、起動エラーを検出し、「リカバリーブートフラグ」をオンにした後（ステップＣ１）、ＣＰＵカウンターをゼロに戻して、再起動させる（ステップＣ２）。
【００３８】
次に、ブートプログラムに基づいて、ＣＰＵ２０は、レジスタ３３における「リカバリーブートフラグ」を確認し（ステップＣ３）、「リカバリーブートフラグ」がオンであるため、ＮＡＮＤ型フラッシュメモリー５０に格納されているリカバリープログラム１を認識した後（ステップＣ４）、リカバリープログラム１に基づいてＵＳＢメモリー６０に格納されているリカバリープログラム２をシステムメモリー４０に展開させる起動制御を行う（ステップＣ５）。
【００３９】
その後、ＣＰＵ２０は、破損している起動プログラムを消去し（ステップＣ６）、システムメモリー４０に展開しているリカバリープログラムで起動プログラムをＮＡＮＤ型フラッシュメモリー５０に書き込むと共に（ステップＣ７）、レジスタ３３における「リカバリーブートフラグ」をオフにする（ステップＣ８）。その後、自動でＣＰＵカウンターをリセットして再起動を行う。
【００４０】
以上説明したように本実施の形態は、ＮＡＮＤ型フラッシュメモリー５０に格納されている起動プログラムによって起動制御を行う画像形成装置１であって、起動中フラグ及びリカバリーブートフラグが設定されているレジスタ３３と、起動中に起動中フラグのオン・オフを所定時間毎に反転させる反転制御を行うと共に、リカバリーブートフラグがオフである場合には起動プログラムで、リカバリーブートフラグがオンである場合にはＮＡＮＤ型フラッシュメモリー５０に格納されているリカバリープログラムでそれぞれ起動制御を行うＣＰＵ２０と、起動中に起動中フラグの反転制御が停止すると、リカバリーブートフラグをオンさせて、ＣＰＵ２０を再起動させるウォッチドッグ回路３２とで構成されている。この構成により、起動エラーが起こり、起動中フラグの反転制御が停止すると、ウォッチドッグ回路３２によってＣＰＵ２０が再起動され、再起動時にはリカバリーブートフラグオンされているので、リカバリープログラムで起動制御が行われる。従って、起動エラーを素早く検出し、リカバリー動作を確実に実行することができるという効果を奏する。
【００４１】
さらに、本実施の形態によれば、ＣＰＵ２０による反転制御は、起動制御に先立って実行されるブートプログラムに記述されている。また。ウォッチドッグ回路３２は、ハードウェアで構成されている。アップデートの最中に電源がオフしてしまうことにより、起動プログラムが途中までしか書き換えられない場合には、データ書き込みの失敗はどの箇所で発生するかは特定できず、起動エラーがどのタイミングで発生するか不明である。しかしながら、本実施の形態では、ブートプログラムに記述されている起動中フラグの反転制御を、ハードウェア構成のウォッチドッグ回路３２で検出するため、起動プログラムの破損に起因する起動エラーがどのタイミングで発生しても、確実に起動エラーを検出することができる。
【００４２】
さらに、本実施の形態によれば、ＣＰＵ２０は、リカバリープログラムによる起動制御が完了すると、リカバリーブートフラグをオフさせて、再起動するように構成されている。
【００４３】
さらに、本実施の形態によれば、ＮＡＮＤ型フラッシュメモリー５０に格納されているリカバリープログラム１は、ＵＳＢメモリー６０に格納されているリカバリープログラム２を判別するためのファイルシステムを起動するためのカーネルを含むプログラムで構成されている。この構成により、リカバリープログラムをＮＡＮＤ型フラッシュメモリー５０以外の他のメディア（ＵＳＢメモリー６０）に分散させることができ、ＮＡＮＤ型フラッシュメモリー５０に格納するリカバリープログラム１を最小限のサイズにし、ＮＡＮＤ型フラッシュメモリー５０の容量増加によるコストアップを防止することができる。
【００４４】
なお、本発明が上記各実施の形態に限定されず、本発明の技術思想の範囲内において、各実施の形態は適宜変更され得ることは明らかである。
【符号の説明】
【００４５】
１  画像形成装置
２  操作部
３  原稿読取部
４  記憶部
５  画像処理部
６  印刷部
７  ファクシミリ部
１０  制御部
２０  ＣＰＵ
３０  ＡＳＩＣ
３１  Ｉ／Ｆ回路
３２  ウォッチドッグ回路
３３  レジスタ
３４  ＮＡＮＤコントローラー
３５  ＲＡＭコントローラー
３６  ＵＳＢＨｏｓｔコントローラー
４０  システムメモリー
５０  ＮＡＮＤ型フラッシュメモリー
６０  ＵＳＢメモリー
【図１】
0005657588.tif 000002
【図２】
0005657588.tif 000003
【図３】
0005657588.tif 000004
【図４】
0005657588.tif 000005
【図５】
0005657588.tif 000006
【図６】
0005657588.tif 000007
【図７】
0005657588.tif 000008