(57)【要約】【課題】情報処理装置が正常に起動できない不具合に適切に対処できるようにする。【解決手段】画像形成装置（情報処理装置）のＣＰＵは、画像形成装置の電源がオンになると、メモリデバイス１１３に格納されているプログラムの実行により画像形成装置を起動する（Ｓ５１０）。ＣＰＵは、画像形成装置の起動中に再起動が行われたと判定すると（Ｓ５０６）、画像形成装置の再起動後にメモリデバイス１１３で管理情報の異常が検出されたか否かに基づいて、画像形成装置の起動が途中で停止する不具合を解消するための処理としてそれぞれ異なる処理を実行する（Ｓ５１９〜Ｓ５２３）。【選択図】図５
2020171002.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
前記情報処理装置を起動するためのプログラムが格納された不揮発性のメモリデバイスであって、前記メモリデバイスの起動時に、前記メモリデバイスに格納されたデータについての論理アドレスと物理アドレスとの対応関係を示す管理情報の異常を検出すると、当該管理情報の修復処理を行う機能を有する、前記メモリデバイスと、
前記プログラムに基づく前記情報処理装置の起動が途中で停止すると、前記情報処理装置を再起動する再起動手段と、
前記再起動手段による再起動後に前記メモリデバイスで前記管理情報の異常が検出されたか否かに基づいて、前記情報処理装置の起動が途中で停止する不具合を解消するための処理としてそれぞれ異なる処理を実行する処理手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記メモリデバイスは、前記メモリデバイスの起動時に、前記管理情報の異常を検出したか否かを示す検出情報を保存し、
前記処理手段は、前記メモリデバイスに保存されている前記検出情報を参照することで、前記再起動後に前記管理情報の異常が検出されたか否かを判定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記メモリデバイスは、前記管理情報の異常を検出したか否かを示す検出情報を、前記メモリデバイスの内部に格納されているＳＭＡＲＴ情報に記録し、
前記処理手段は、前記ＳＭＡＲＴ情報に記録されている前記検出情報を参照することで、前記再起動後に前記管理情報の異常が検出されたか否かを判定する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記処理手段は、
前記再起動後に前記メモリデバイスで前記管理情報の異常が検出された場合には、前記メモリデバイスの交換を促す通知を行い、
前記再起動後に前記メモリデバイスで前記管理情報の異常が検出されていない場合には、外部装置からの前記プログラムのダウンロードを促す通知を行う
ことを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記処理手段は、前記情報処理装置の再起動後に前記管理情報の異常が検出されたか否かに基づいて、前記不具合の原因を判定し、当該判定の結果に応じた処理を実行する
ことを特徴とする請求項１から４のいずれか１項に記載の情報処理装置。
【請求項６】
前記処理手段は、
前記再起動後に前記管理情報の異常が検出された場合には、前記不具合の原因として前記メモリデバイスの物理的な破損が発生したと判定し、
前記再起動後に前記管理情報の異常が検出されていない場合には、前記不具合の原因として前記メモリデバイスに格納されているプログラムの破壊が発生したと判定する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記処理手段は、
前記メモリデバイスの物理的な破損が発生したと判定した場合には、前記メモリデバイスの交換を促す通知を行い、
前記メモリデバイスに格納されているプログラムの破壊が発生したと判定した場合には、外部装置からの前記プログラムのダウンロードを促す通知を行う
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記処理手段は、前記メモリデバイスに格納されているプログラムの破壊が発生したと判定すると、ユーザの指示に従って前記外部装置から前記プログラムのダウンロードを行い、ダウンロードした前記プログラムを前記メモリデバイスに格納する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記処理手段は、前記メモリデバイスに格納されているプログラムの破壊が発生したと判定すると、外部装置からの前記プログラムのダウンロードを自動的に開始し、ダウンロードした前記プログラムを前記メモリデバイスに格納する
ことを特徴とする請求項６又は７に記載の情報処理装置。
【請求項１０】
前記処理手段は、前記外部装置から前記プログラムのダウンロードを行った場合に、前記プログラムをダウンロード済みであることを示す情報を保存することで、前記再起動手段による前記再起動が再び行われた場合に前記プログラムのダウンロードを繰り返し行わないようにする
ことを特徴とする請求項７から９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記処理手段は、前記外部装置から前記プログラムのダウンロードを行った後に、前記再起動手段による前記再起動が再び行われた場合には、前記再起動後に前記管理情報の異常が検出されていなくても前記メモリデバイスの物理的な破損が発生したと判定する
ことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記処理手段は、前記メモリデバイスに格納されている前記プログラムの実行により前記情報処理装置を起動し、
前記再起動手段は、前記プログラムに基づく前記情報処理装置の起動が開始されてから、前記情報処理装置の起動が完了することなく所定時間が経過すると、前記情報処理装置を再起動する
ことを特徴とする請求項１から１１のいずれか１項に記載の情報処理装置。
【請求項１３】
情報処理装置であって、
前記情報処理装置を起動するためのプログラムが格納された不揮発性のメモリデバイスであって、前記メモリデバイスに格納されたデータについての論理アドレスと物理アドレスとの対応関係を示す管理情報の異常を検出すると、当該管理情報の修復処理を行う機能を有する、前記メモリデバイスと、
前記プログラムに基づく前記情報処理装置の起動が途中で停止すると前記メモリデバイスが前記機能を実行するようにし、かつ、当該停止に基づく当該機能の実行において前記管理情報の異常が検出されていないと、外部装置からの前記プログラムのダウンロードを促すか、外部装置から前記プログラムをダウンロードする処理手段と、
を備えることを特徴とする情報処理装置。
【請求項１４】
前記メモリデバイスは、前記メモリデバイスの起動時に前記機能を実行し、
前記処理手段は、前記プログラムに基づく前記情報処理装置の起動が途中で停止すると、少なくとも前記メモリデバイスを再起動させる
ことを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
情報処理装置を起動するためのプログラムが格納された不揮発性のメモリデバイスであって、前記メモリデバイスの起動時に、前記メモリデバイスに格納されたデータについての論理アドレスと物理アドレスとの対応関係を示す管理情報の異常を検出すると、当該管理情報の修復処理を行う機能を有する、前記メモリデバイスを備える情報処理装置の制御方法であって、
前記プログラムに基づく前記情報処理装置の起動が途中で停止すると、前記情報処理装置を再起動する再起動工程と、
前記再起動工程における再起動後に前記メモリデバイスで前記管理情報の異常が検出されたか否かに基づいて、前記情報処理装置の起動が途中で停止する不具合を解消するための処理としてそれぞれ異なる処理を実行する処理工程と、
を含むことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリデバイスを備える情報処理装置及びその制御方法に関するものである。
【背景技術】
【０００２】
従来から、サービスマンによる装置の復旧処理に関連して、装置がエラーの発生を検出した場合に、エラー通知を行うことでサービスマンの業務負担を軽減する技術が知られている。また、不揮発性メモリデバイスに書き込まれているプログラムを実行することによって起動する装置について、装置が正常に起動できない場合に、装置の再起動又はプログラムの再ダウンロードを行う技術が知られている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１７４０６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のように装置が起動できなくなる不具合の原因としては、不揮発性メモリデバイスに書き込まれたプログラムが破壊されている場合もあれば、デバイス内部の回路が物理的に破損している場合もある。プログラムが破壊されている場合には、プログラムを再度ダウンロードすることによって、不具合を解消できる。しかし、デバイスが物理的に破損している場合には、プログラムを再度ダウンロードしても不具合を解消できず、デバイスの交換が必要となる。そのため、物理的に破損している不揮発性メモリデバイスに対してプログラムのダウンロードを実施してしまうと、ダウンロードに要する時間が無駄になる。
【０００５】
本発明は、上述の課題に鑑みてなされたものである。本発明は、情報処理装置が正常に起動できない不具合に適切に対処できるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る情報処理装置は、前記情報処理装置を起動するためのプログラムが格納された不揮発性のメモリデバイスであって、前記メモリデバイスの起動時に、前記メモリデバイスに格納されたデータについての論理アドレスと物理アドレスとの対応関係を示す管理情報の異常を検出すると、当該管理情報の修復処理を行う機能を有する、前記メモリデバイスと、前記プログラムに基づく前記情報処理装置の起動が途中で停止すると、前記情報処理装置を再起動する再起動手段と、前記再起動手段による再起動後に前記メモリデバイスで前記管理情報の異常が検出されたか否かに基づいて、前記情報処理装置の起動が途中で停止する不具合を解消するための処理としてそれぞれ異なる処理を実行する処理手段と、を備えることを特徴とする。
【０００７】
本発明の他の一態様に係る情報処理装置は、前記情報処理装置を起動するためのプログラムが格納された不揮発性のメモリデバイスであって、前記メモリデバイスに格納されたデータについての論理アドレスと物理アドレスとの対応関係を示す管理情報の異常を検出すると、当該管理情報の修復処理を行う機能を有する、前記メモリデバイスと、前記プログラムに基づく前記情報処理装置の起動が途中で停止すると前記メモリデバイスが前記機能を実行するようにし、かつ、当該停止に基づく当該機能の実行において前記管理情報の異常が検出されていないと、外部装置からの前記プログラムのダウンロードを促すか、外部装置から前記プログラムをダウンロードする処理手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、情報処理装置が正常に起動できない不具合に適切に対処することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】画像形成装置のハードウェア構成例を示すブロック図。
【図２】メモリデバイスの管理情報の例を示す図。
【図３】ＮＡＮＤフラッシュメモリのメモリブロックの構成の例を示す図
【図４】管理情報の異常を検出する処理の手順を示すフローチャート。
【図５】起動制御の不具合の原因を判定する処理の手順を示すフローチャート。
【図６】画像形成装置の起動制御の流れを示すシーケンス図。
【図７】画像形成装置の起動制御の流れを示すシーケンス図。
【図８】画像形成装置のＵＩに表示される操作画面の例を示す図。
【図９】実施形態の概要を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一又は同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１１】
［第１実施形態］
第１実施形態では、情報処理装置の起動制御が途中で停止する不具合の原因を、起動制御の実行中に行われた再起動後に不揮発性メモリデバイスの管理情報の異常が検出されたか否かに基づいて判定する例について説明する。また、情報処理装置において、起動制御が途中で停止する不具合の原因の判定結果に応じた処理を行う例について説明する。
【００１２】
まず、図９を参照して、本実施形態に係る情報処理装置において不揮発性メモリデバイスに格納されているプログラムに基づく起動制御が途中で停止する不具合が生じる場合の、当該不具合の原因を判定するための処理の概要について説明する。図９において、破線のブロックは、情報処理装置に搭載された不揮発性メモリデバイスに内蔵されたコントローラによる処理を示す。実線のブロックは、不揮発性メモリデバイスが搭載された情報処理装置を制御するＣＰＵによる処理を示す。二重線のブロックは、その他のデバイスによる処理を示す。
【００１３】
ＣＰＵは、装置の電源投入時に、不揮発性メモリデバイスに格納されたプログラムを実行することで、装置の起動制御を開始する。装置の電源が投入されると（Ｓ９０１）、不揮発性メモリデバイス（コントローラ）は、内部に保持している管理情報の異常の有無を確認し（Ｓ９０２）、異常を検出した場合には管理情報の修復処理を実行する（Ｓ９０３）。この修復処理の結果、管理情報の異常が解消されなければ、不揮発性メモリデバイスの物理的な破損が発生したと判定され、管理情報の異常が解消されれば、不揮発性メモリデバイスに格納されているプログラムの破壊が発生したと判定される。本実施形態では、この判定をＣＰＵにより実行可能にする。
【００１４】
修復処理の実行が完了した時点では、ＣＰＵは、装置の起動制御を途中で停止している状態であるため、上述の判定を行うことができない。このため、ＣＰＵによる判定を可能にするために、装置の再起動が行われる（Ｓ９０４）。装置が再起動すると、ＣＰＵ及び不揮発性メモリデバイス（コントローラ）によって以下の処理が行われる。
【００１５】
不揮発性メモリデバイスは、管理情報の異常を検出すると（Ｓ９０５）、ＣＰＵによる判定を可能にするために、異常検出フラグを「検出」に設定する。ＣＰＵは、不揮発性メモリデバイスから読み出した異常検出フラグが、管理情報の異常の検出を示す場合、当該メモリデバイスの物理的な破損が発生したと判定し、当該メモリデバイスの交換を指示する（Ｓ９０７）。
【００１６】
一方、不揮発性メモリデバイスは、管理情報の異常を検出しなければ（Ｓ９０８）、ＣＰＵによる判定を可能にするために、異常検出フラグを「不検出」に設定する。ＣＰＵは、不揮発性メモリデバイスから読み出した異常検出フラグが、管理情報の異常の不検出を示す場合、当該メモリデバイスに格納されているプログラムの破壊が発生したと判定し、プログラムのダウンロードを指示する（Ｓ９１０）。
【００１７】
このようにして、本実施形態の情報処理装置は、装置の起動制御が途中で停止した原因を判定し、その判定結果に応じた処理を行う。以下では、図１乃至図８を参照して、本実施形態について詳細に説明する。
【００１８】
＜画像形成装置＞
図１は、本実施形態に係る画像形成装置１００の構成例を示すブロック図である。本実施形態では、画像形成装置１００が不揮発性メモリデバイスの制御装置である例について説明する。図１のメモリデバイス１１３は、画像形成装置１００において使用される不揮発性メモリデバイスであり、ＳＡＴＡ Ｉ／Ｆを備えるＳＡＴＡ ＦＬＡＳＨデバイスを想定している。なお、不揮発性メモリデバイスは、ＳＡＴＡ ＦＬＡＳＨデバイスデバイスに限らず、例えば、ＳＳＤ、ＵＳＢ ＦＬＡＳＨデバイス、ｅＭＭＣ（embedded Multi Media Card）、ＵＦＳ（Universal Flash Storage）等のメモリデバイスであってもよい。
【００１９】
画像形成装置１００は、メインＳｏＣ（システムオンチップ）１０１、ＲＡＭ１０６、ＲＯＭ１０７、ＵＩ（ユーザインタフェース）１０８、プリンタ１０９、スキャナ１１０、外部Ｉ／Ｆ（インタフェース）１１１、メモリデバイス１１３、タイマ１２４、及びリセット回路１２５を備える。
【００２０】
メインＳｏＣ１０１は、集積回路部品であり、ＣＰＵ１０２、画像処理部１０３、及びホストメモリＩ／Ｆ１０４を含んでいる。また、図１には図示されていないが、メインＳｏＣ１０１は、ＲＡＭ１０６、ＲＯＭ１０７、ＵＩ１０８等のデバイスに対する制御インタフェース、及びそれらを接続するシステムバスも含んでいる。
【００２１】
ＣＰＵ１０２は、画像形成装置１００全体を制御するための中央処理装置である。画像処理部１０３は、スキャナ１１０から読み込んだ入力画像データに対して、補正、加工、編集等の画像処理を行う。また、画像処理部１０３は、プリンタ１０９へ出力する出力画像データに対して、色変換、フィルタ処理、解像度変換等の画像処理を行う。
【００２２】
ホストメモリＩ／Ｆ１０４は、不図示のＤＭＡＣ（Direct Memory Access Controller）及びＰＨＹユニット１０５を含むメモリインタフェースである。ＰＨＹユニット１０５は、ＳＡＴＡ通信における物理層の処理を行うユニットであり、論理信号を送受信する。ＣＰＵ１０２がホストメモリＩ／Ｆ１０４を制御することで、ＳＡＴＡ Ｉ／Ｆ１１２を介して、メモリデバイス１１３とＲＡＭ１０６との間のデータの入出力を行うことが可能である。ＳＡＴＡ Ｉ／Ｆ１１２は、ＳＡＴＡ規格のインタフェースであり、ホストであるＣＰＵ１０２と、デバイスであるメモリデバイス１１３のコントローラ１１６とを通信可能に接続している。
【００２３】
ＲＡＭ１０６は、ＣＰＵ１０２が動作するためのシステムワークメモリであり、ＣＰＵ１０２の演算データや各種プログラムが格納される。ＲＡＭ１０６に格納されるプログラムは、ＲＯＭ１０７又はメモリデバイス１１３に予め格納されているものであり、画像形成装置１００の電源投入時に、ＣＰＵ１０２によってＲＡＭ１０６に展開される。また、ＲＡＭ１０６は、スキャン又はプリントの実行時に画像処理部１０３によって画像処理が施された画像データを保持する画像メモリとしても利用される。ＲＯＭ１０７は、ブートＲＯＭであり、画像形成装置１００のブートプログラムが格納されている。
【００２４】
ＵＩ１０８は、ユーザが情報を認識及び入力できるように、液晶ディスプレイ、タッチパネル及びハードキー等で構成される。プリンタ１０９は、画像データに基づいてシートに画像を印刷するプリンタエンジンである。スキャナ１１０は、シート原稿の画像をＣＣＤ又はＣＩＳセンサ等の読取センサで読み取って（スキャンして）画像データを生成する。外部Ｉ／Ｆ１１１は、電話回線網、有線ＬＡＮ、又は無線ＬＡＮ等の通信ネットワークに対するインタフェース、及びＵＳＢデバイス等の外部デバイスに対するインタフェースである。ＣＰＵ１０２は、外部Ｉ／Ｆ１１１を介して外部装置との間でデータ通信を行う。
【００２５】
リセット回路１２５は、ＣＰＵ１０２に対してリセット信号を出力する回路である。ＣＰＵ１０２は、画像形成装置１００の電源投入時に、メインＳｏＣ１０１への電力供給が開始された後、リセット回路１２５から出力されるリセット信号がローレベルの間、リセット状態を継続する。ＣＰＵ１０２のリセット状態の解除は、リセット回路１２５への電力供給が開始されてから所定の時間（例えば１００ｍｓ）の経過後に、リセット回路１２５から出力されるリセット信号がローレベルからハイレベルに切り替わることによって実行される。また、リセット回路１２５からのローレベルのリセット信号の出力は、リセット回路１２５への電力供給が停止されて供給電圧が所定レベルを下回った場合（例えば、供給電圧が３．３Ｖから２．９Ｖに低下した場合）に行われる。あるいは、リセット回路１２５からのローレベルのリセット信号の出力は、タイマ１２４から出力されるリセット駆動信号の受信に応じて行われる。
【００２６】
タイマ１２４は、メモリデバイス１１３に格納されたプログラムを用いてＣＰＵ１０２によって実行される画像形成装置１００の起動制御が停止したことを検出した場合に、リブート制御を行う機能を有する。本実施形態では、タイマ１２４は、起動制御の停止を検出すると、リセット回路１２５にリセット駆動信号を出力することによって、リブート制御を行う。
【００２７】
具体的には、ＣＰＵ１０２は、メモリデバイス１１３に格納されているプログラムを用いて画像形成装置１００の起動制御を開始する前に、タイマ１２４へ供給するイネーブル信号をオンにすることで、タイマ１２４によるタイマカウントが開始される。その後、所定時間の経過前（タイマ１２４によるカウント満了の前）に、プログラムの起動制御が終了した場合、ＣＰＵ１０２は、タイマ１２４へ供給するイネーブル信号をオフにすることで、タイマ１２４によるタイマカウントを停止できる。
【００２８】
ここで、メモリデバイス１１３から読み出されたプログラムの不具合に起因して、ＣＰＵ１０２による起動制御が停止すると、ＣＰＵ１０２は、所定時間の経過前にタイマ１２４によるタイマカウントを停止できなくなる。その結果、タイマ１２４は、カウント満了に至る。タイマ１２４は、カウント満了に至ると、リセット駆動信号をリセット回路１２５へ出力する。これにより、リブート制御が開始される。リブート制御では、ＲＯＭ１０７に格納されているブートプログラムがＣＰＵ１０２によって再び実行される。これにより、画像形成装置１００の電源投入時に実行される起動制御と同じ起動制御が開始される。なお、メモリデバイス１１３から読み出されたプログラムの不具合は、メモリデバイス１１３に予め格納されていたプログラム自体の破壊に起因する場合と、メモリデバイス１１３の物理的な破損に起因する場合とがある。
【００２９】
タイマ１２４は、ＣＰＵ１０２が起動制御を途中で停止した場合に、リブート制御を行う機能を有していればよい。例えば、タイマ１２４は、ウォッチドックタイマのように、所定の期間ごとにＣＰＵ１０２からタイマカウントのクリアが行われるタイマであってもよく、ＣＰＵ１０２からのタイマカウントのクリアが行われない時点でリセット回路１２５にリセット駆動信号を出力してリセット回路１２５を駆動してもよい。
【００３０】
ＣＰＵ１０２は、タイマ１２４へ供給するイネーブル信号をオンにする前に、メモリデバイス１１３に格納されるユーザデータ１２３に含まれる起動制御中フラグを、起動制御の実行中であることを示す値（本例では「１」）に設定する。また、ＣＰＵ１０２は、タイマ１２４へ供給するイネーブル信号をオフにした後に、起動制御中フラグをクリアする。具体的には、ＣＰＵ１０２は、起動制御中フラグを、起動制御の実行中ではないことを示す値（本例では「０」）に設定する。
【００３１】
ＣＰＵ１０２は、ブートプログラムの実行時に、メモリデバイス１１３に格納されているユーザデータ１２３から起動制御中フラグを読み出すことができる。その際、ＣＰＵ１０２は、読み出した起動制御中フラグが「０」に設定されている場合には、前回の起動制御が正常に終了したと判定する。また、ＣＰＵ１０２は、読み出した起動制御中フラグが「１」に設定されている場合には、前回の起動制御が正常に終了せずに（即ち、途中で停止し）、タイマ１２４によるリブート制御が行われたと判定する。
【００３２】
＜メモリデバイス（ＳＡＴＡ ＦＬＡＳＨデバイス）＞
図１に示されるように、メモリデバイス１１３は、デバイスメモリＩ／Ｆ１１４、コントローラ１１６、ＲＯＭ１１７、ＲＡＭ１１８、及びＮＡＮＤフラッシュメモリ１２０を備える。
【００３３】
デバイスメモリＩ／Ｆ１１４は、コントローラ１１６による制御下で、メインＳｏＣ１０１とコントローラ１１６との間のデータの入出力を行うインタフェースである。デバイスメモリＩ／Ｆ１１４に内蔵されるＰＨＹユニット１１５は、ＰＨＹユニット１０５と同様のＳＡＴＡ通信における物理層の処理を行うユニットである。コントローラ１１６は、デバイスメモリＩ／Ｆ１１４を介してメインＳｏＣ１０１のＣＰＵ１０２から受信したコマンドを解釈し、解釈したコマンドに従った動作を行うメモリ制御モジュールである。
【００３４】
ＲＯＭ１１７は、デバイスメーカーによって設定される、メモリデバイス１１３のファームウェアを格納した不揮発性の記憶領域である。ＲＡＭ１１８は、コントローラ１１６によってＮＡＮＤフラッシュメモリ１２０に対するデータの書き込み又は読み出しが行われる際に一時的にデータが格納されるキャッシュメモリである。また、ＲＡＭ１１８は、最新の管理情報１１９を格納する役割を有する。
【００３５】
ＮＡＮＤフラッシュメモリ１２０は、コントローラ１１６によって制御される。ＮＡＮＤフラッシュメモリ１２０には、ＳＭＡＲＴ（Self-Monitoring, Analysis and Reporting Technology）情報１２１、管理情報１２２、及びユーザデータ１２３が格納される。ユーザデータ１２３には、ＣＰＵ１０２が画像形成装置１００を起動するためのプログラム、及び設定データ等のデータが含まれる。
【００３６】
ＳＭＡＲＴ情報１２１は、コントローラ１１６によるメモリデバイス１１３の故障状態の判定に用いられるデータである。ＳＭＡＲＴ情報１２１には、ＮＡＮＤフラッシュメモリ１２０の不良ブロック数や消去カウント数等の、故障状態の判定に使用可能な項目のデータが記録される。後述する異常検出フラグもＳＭＡＲＴ情報１２１に記録される。ＣＰＵ１０２は、ＳＭＡＲＴ情報１２１に記録された各項目のデータを、ＮＡＮＤフラッシュメモリ１２０から読み出すことができる。
【００３７】
管理情報１２２は、ＮＡＮＤフラッシュメモリ１２０上の物理アドレスと、ＣＰＵ１０２が指定する論理アドレスとを対応付けるアドレス変換テーブルを含む。図２は、管理情報１２２に含まれるアドレス変換テーブルの例を示している。アドレス変換テーブルは、例えば、ＮＡＮＤフラッシュメモリ１２０のメモリブロック単位で構成されている。管理情報１２２は、メモリデバイス１１３への電源投入時に、ＮＡＮＤフラッシュメモリ１２０からＲＡＭ１１８に展開される。コントローラ１１６は、ＲＡＭ１１８に展開された管理情報１２２に基づいて、ＣＰＵ１０２が指定する論理アドレスを、対応する物理アドレスに変換する。更に、コントローラ１１６は、当該物理アドレスを用いて、ＮＡＮＤフラッシュメモリ１２０に対するデータの書き込み及び読み出しを行う。
【００３８】
ＮＡＮＤフラッシュメモリ１２０は、構造上、データの更新時に、既にデータが書き込まれて有効となっている物理アドレスの領域に対してデータの上書きが行えない。そのため、データの更新時には、書き込みが行われていない新たな物理アドレスの領域又は消去済みの物理アドレスの領域に対し、データの書き込みが行われる。更に、図２に示されるように、ＲＡＭ１１８に保持されている管理情報１１９の論理アドレスに対応付けられた物理アドレスが、データの書き込みが行われた領域に対する物理アドレスに変更される。したがって、図２に示されるように、ある論理アドレスに対応するデータが存在する物理アドレスは、固定ではなく、データの更新のたびにＮＡＮＤフラッシュメモリ１２０のアドレス空間内で変更されることになる。
【００３９】
図２では、論理アドレス１及び３のデータが更新され、それぞれのデータに対応する物理アドレスが変更となったことを示している。このように、ＮＡＮＤフラッシュメモリ１２０へのデータの書き込みに伴い、ＲＡＭ１１８に保持されている管理情報１１９が更新される。
【００４０】
上述のように、ＲＡＭ１１８には最新の管理情報１１９が保持される。一方、ＮＡＮＤフラッシュメモリ１２０に格納されている管理情報１２２は、必ずしも最新の管理情報（即ち、ＲＡＭ１１８に格納されている管理情報１１９）に更新されているとは限らない。即ち、ＮＡＮＤフラッシュメモリ１２０に、最新ではない管理情報が格納されている状況が生じる。この場合、ＲＡＭ１１８に保持されている管理情報１１９と、ＮＡＮＤフラッシュメモリ１２０に格納されている管理情報１２２とに不一致が生じている。
【００４１】
図３は、ＮＡＮＤフラッシュメモリ１２０のメモリブロックの構成例を示す図である。各メモリブロックは、複数のページに分割される。図３には、各ページの物理アドレスと、各ページに格納されるデータとが示されている。１ページは５２８バイトで構成され、そのうち５１２バイトがデータ部として使用され、残りの１６倍とが冗長部として使用される。各ページのデータ部にはユーザデータが書き込まれる。冗長部にはエラー訂正符号や管理情報等が書き込まれる。冗長部に書き込まれる管理情報には、ユーザデータが書き込まれている領域の物理アドレスに対応した論理アドレスが含まれる。
【００４２】
図３では、図２に示されるように論理アドレス１及び３についてデータの更新が行われた場合の、ＮＡＮＤフラッシュメモリ１２０のメモリブロックの状態の変化が示されている。データの更新により、更新後のデータ６及びデータ７が、物理アドレス５及び６の領域（ページ）に書き込まれ、当該領域の冗長部に論理アドレス１及び３が書き込まれている。
【００４３】
＜管理情報の異常の発生例＞
次に、画像形成装置１００の異常な電源断に起因して、上述の管理情報１１９，１２２の異常が生じる例について説明する。なお、本実施形態では、上述の管理情報１１９，１２２は、メモリデバイス１１３に格納されたデータについての論理アドレスと物理アドレスとの対応関係を示す管理情報の一例である。
【００４４】
まず、画像形成装置１００において正常な電源断が行われる場合のメモリデバイス１１３の動作について説明する。正常な電源断が行われる際には、コントローラ１１６は、ＲＡＭ１１８の管理情報１１９をＮＡＮＤフラッシュメモリ１２０に書き込むことで、ＮＡＮＤフラッシュメモリ１２０に格納されている管理情報１２２を最新の管理情報に更新する。この場合、管理情報１１９と管理情報１２２との間に不一致は生じない。次回のメモリデバイス１１３への電源投入時には、コントローラ１１６は、ＮＡＮＤフラッシュメモリ１２０に格納されている最新の管理情報を、ＲＡＭ１１８に展開できる。
【００４５】
次に、画像形成装置１００の電源の瞬断又は停電等に起因して、上述の正常な電源断が行われず、異常な電源断が発生した場合のメモリデバイス１１３の動作について説明する。異常な電源断が発生した場合には、ＲＡＭ１１８の管理情報１１９がＮＡＮＤフラッシュメモリ１２０に書き込まれないまま、メモリデバイス１１３への電力供給が停止する。このような異常な電源断の発生前に、ＮＡＮＤフラッシュメモリ１２０へのデータの書き込みが行われることで管理情報１１９と管理情報１２２との間に不一致が生じていた場合、管理情報１２２が最新の管理情報に更新されずに電力供給が停止されることになる。その結果、ＮＡＮＤフラッシュメモリ１２０に格納されている管理情報１２２は、異常が生じた状態となる。具体的には、管理情報１２２に含まれるアドレス変換テーブル（即ち、ＮＡＮＤフラッシュメモリ１２０に格納されているデータについての物理アドレスと論理アドレスとの対応関係）に異常が生じる。
【００４６】
メモリデバイス１１３への次回の電源投入時には、ＮＡＮＤフラッシュメモリ１２０から、データ更新前の管理情報１２２（即ち、アドレス変換テーブルに異常がある管理情報）が、管理情報１１９としてＲＡＭ１１８に展開される。この状態では、コントローラ１１６は、ＣＰＵ１０２によって指定された論理アドレスを、管理情報１１９に基づいて正しい物理アドレスに変換することができない。このため、ＣＰＵ１０２は、電源断の前にＮＡＮＤフラッシュメモリ１２０に書き込んだデータを読み出すことができない。
【００４７】
上述のような状況が生じるのを避けるために、コントローラ１１６は、電源投入時にＲＡＭ１１８に展開した管理情報１１９と、ＮＡＮＤフラッシュメモリ１２０に書き込まれたデータとを比較し、管理情報１１９に異常があるか否かを判定する。コントローラ１１６は、管理情報１１９の内容が、ＮＡＮＤフラッシュメモリ１２０のデータと対応しているか否かを判定し、対応していない場合には管理情報１１９に異常があると判定する。
【００４８】
例えば、コントローラ１１６は、管理情報１１９に含まれるアドレス変換テーブル内の各論理アドレスと、各論理アドレスに対応付けられた物理アドレスの領域（ページ）の冗長部に書き込まれている論理アドレスとが一致するか否かを判定する。一致しない論理アドレスが存在する場合（即ち、アドレス変換テーブルにおける論理アドレスと物理アドレスとの対応関係に異常がある場合）、ＣＰＵ１０２は、管理情報１１９に異常があると判定する。状術のような異常な電源断が発生した場合、アドレス変換テーブルにおける論理アドレスと物理アドレスとの対応関係に異常が生じることがある。
【００４９】
コントローラ１１６は、ＲＡＭ１１８に保持している管理情報１１９の異常を検出すると、当該管理情報の修復を試みる。管理情報１１９の修復処理は、例えば、アドレス変換テーブルにおいて異常がある論理アドレスに対して、正しい物理アドレスを割り当てる処理ある。ただし、管理情報の異常を解消可能な処理であれば、他の修復処理が使用されてもよい。
【００５０】
本実施形態では、コントローラ１１６は、管理情報１１９の修復処理を実行した場合には、メモリデバイス１１３のＳＭＡＲＴ情報１２１に含まれる、管理情報の異常の有無を示す異常検出フラグを、異常ありを示す値（本例では「１」）に設定する。本実施形態では、異常検出フラグは、管理情報１１９の異常を検出したか否かを示す検出情報の一例である。メモリデバイス１１３は、当該メモリデバイスの起動時に、管理情報１１９の異常を検出したか否かを示す検出情報として、異常検出フラグを保存する。異常検出フラグは、メモリデバイスの内部に格納されているＳＭＡＲＴ情報１２１に記録される。ＣＰＵ１０２は、メモリデバイス１１３に保存されている（ＳＭＡＲＴ情報１２１に記録されている）異常検出フラグを参照することで、画像形成装置１００の再起動後に管理情報１１９の異常が検出されたか否かを判定する。
【００５１】
＜管理情報の異常検出処理＞
図４は、本実施形態に係る、コントローラ１１６によって実行される、管理情報の異常を検出する処理の手順を示すフローチャートである。なお、図４の各ステップの処理は、ＲＯＭ１１７に格納された（又はＲＯＭ１１７からＲＡＭ１１８に展開された）プログラムをコントローラ１１６が実行することによって実現される。
【００５２】
まずＳ４０１においてメモリデバイス１１３の電源がオンになると、コントローラ１１６は、Ｓ４０２で、ＮＡＮＤフラッシュメモリ１２０の管理情報１２２を、管理情報１１９としてＲＡＭ１１８に展開する。次にＳ４０３で、コントローラ１１６は、ＲＡＭ１１８に読み出した管理情報１１９と、ＮＡＮＤフラッシュメモリ１２０に格納されているデータとを比較して、管理情報１１９に異常があるか否かを判定する。コントローラ１１６は、管理情報に異常がある（即ち、異常を検出した）場合にはＳ４０４へ処理を進め、異常がない場合にはＳ４０６へ処理を進める。
【００５３】
Ｓ４０４で、コントローラ１１６は、ＳＭＡＲＴ情報１２１に含まれる、管理情報の異常の有無を示す異常検出フラグを、異常あり（異常を検出）を示す値（本例では「１」）に設定する。更にＳ４０５で、コントローラ１１６は、ＲＡＭ１１８の管理情報１１９の修復処理を行うことで、管理情報１１９の修復を試みる。一方、Ｓ４０６で、コントローラ１１６は、ＳＭＡＲＴ情報１２１に含まれる、管理情報の異常の有無を示す異常検出フラグに、異常なし（異常を不検出）を示す値（本例では「０」）を設定する。
【００５４】
Ｓ４０５又はＳ４０６の処理の後、コントローラ１１６は、Ｓ４０７で、ＣＰＵ１０２からのアクセスを受けて、ＳＡＴＡ Ｉ／Ｆ１１２の通信を開始し、処理を終了する。なお、コントローラ１１６は、Ｓ４０１〜Ｓ４０６の処理が完了するまでは、ＣＰＵ１０２からのアクセスを受けてもＳＡＴＡ Ｉ／Ｆ１１２の通信を開始しないものとする。
【００５５】
このようにして、メモリデバイス１１３への電力供給の開始時（即ち、メモリデバイス１１３の起動時）に、メモリデバイス１１３においてコントローラ１１６によって管理情報の異常の検出及び修復処理が行われる。なお、上述の管理情報の異常の検出及び修復処理は一例にすぎず、管理情報の異常を検出し、管理情報の修復が可能であれば任意の方法を適用できる。
【００５６】
＜起動制御の停止時の処理＞
次に、画像形成装置１００においてメモリデバイス１１３に格納されているプログラム（起動プログラム）を用いてＣＰＵ１０２によって実行される起動制御が途中する例について説明する。まず、メモリデバイス１１３が物理的に破損した場合について説明する。例えば、メモリデバイス１１３を構成するＮＡＮＤフラッシュメモリ１２０又はＲＡＭ１１８等に物理的な破損が発生した場合、ＮＡＮＤフラッシュメモリ１２０から読み出されたデータ、又はＲＡＭ１１８に格納されたデータに異常が生じることがある。
【００５７】
例えば、破損が生じた箇所が、ＮＡＮＤフラッシュメモリ１２０又はＲＡＭ１１８に格納された管理情報に係わる箇所であった場合、メモリデバイス１１３の電源投入時にコントローラ１１６によって管理情報１１９の異常が検出される。コントローラ１１６は、管理情報１１９の異常の検出に応じて、ＳＭＡＲＴ情報１２１の異常検出フラグを「１」に設定し、ＲＡＭ１１８に保持している管理情報１１９の修復処理を開始する。
【００５８】
しかし、メモリデバイス１１３が物理的に破損した場合、コントローラ１１６は、管理情報１１９を修復することはできない。この場合、コントローラ１１６は、ＣＰＵ１０２からのアクセスを受けても、ＮＡＮＤフラッシュメモリ１２０から所望のデータを読み出すことができない。その結果、ＣＰＵ１０２による画像形成装置１００の起動制御が停止する。このように、管理情報の異常の検出に応じて上述の修復処理が実行されたにもかかわらず、管理情報が修復されなかった場合には、メモリデバイス１１３に物理的な破損が生じたと判定できる。
【００５９】
次に、ＣＰＵ１０２が、メモリデバイス１１３が物理的に破損しているか否かを判定する手順について説明する。
【００６０】
上述のようにメモリデバイス１１３が物理的に破損している場合、画像形成装置１００の電源投入時に、メモリデバイス１１３に保存されているプログラムに基づく起動制御が停止する。この場合に、メモリデバイス１１３の内部においては、コントローラ１１６が、管理情報１１９の異常の検出に応じて、ＳＭＡＲＴ情報１２１の異常検出フラグを「１」に設定し、管理情報１１９の修復処理を開始するが、管理情報を修復することはできない。
【００６１】
一方、上述のように、ＣＰＵ１０２は、画像形成装置１００の起動制御を開始する前に、タイマ１２４にタイマカウントを開始させる。しかし、ＣＰＵ１０２は、起動制御を途中で停止した場合には、タイマ１２４によるタイマカウントを停止できない。その結果、タイマ１２４がカウント満了に至り、リブート制御が実行される。リブートが行われた後、ＣＰＵ１０２は、画像形成装置１００の起動制御において、メモリデバイス１１３に格納されているユーザデータ１２３に含まれる起動制御中フラグを読み出す。
【００６２】
ＣＰＵ１０２は、読み出した起動制御中フラグが、起動制御の実行中であることを示す値（本例では「１」）に設定されている場合、通常の起動制御を続けずに、メモリデバイス１１３に格納されているＳＭＡＲＴ情報１２１から異常検出フラグを読み出す。ここで、メモリデバイス１１３に物理的な破損が生じていなければ、リブートが行われる前にコントローラ１１６によって実行された修復処理により、管理情報が修復されている。しかし、メモリデバイス１１３に物理的な破損が生じていると、管理情報を修復できず、異常検出フラグは管理情報に異常があることを示す値に設定される。このため、ＣＰＵ１０２は、管理情報に異常があることを示す値に設定された異常検出フラグを読み出す結果となる。
【００６３】
このように、ＣＰＵ１０２は、起動制御中フラグに基づいて、電源投入時の起動制御の実行中にリブートが行われたことを判定し、異常検出フラグに基づいて、管理情報１１９に異常があることを判定する。ＣＰＵ１０２は、これらの判定結果に基づいて、メモリデバイス１１３に物理的な破損が生じていることを特定できる。
【００６４】
メモリデバイス１１３が物理的に破損した場合、メモリデバイス１１３を交換することでしか、メモリデバイス１１３の破損に起因して画像形成装置１００が起動できなくなる不具合を解消することはできない。本実施形態の画像形成装置１００は、メモリデバイス１１３を交換可能な構成を有している。例えば、メモリデバイス１１３は、交換可能な基板で構成されており、不図示のコネクタを介して、メインＳｏＣ１０１が実装されている基板と接続されていてもよい。
【００６５】
上述のように、メモリデバイス１１３に物理的に破損した場合、ＣＰＵ１０２による画像形成装置１００の起動制御が途中で停止する。このような起動制御の停止は、メモリデバイス１１３が物理的に破損した場合だけでなく、メモリデバイス１１３に格納されているユーザデータ１２３に含まれるプログラム（起動プログラム）の破壊に起因して生じる場合もある。
【００６６】
上述のようなプログラムの破壊は、例えば、画像形成装置１００のソフトウェアのバージョンアップを目的として外部デバイス（外部装置）からプログラムのダウンロードを行っている途中で、画像形成装置１００の異常な電源断が発生した場合に生じる。このような異常な電源断に起因してプログラムのダウンロードが途中で中断すると、メモリデバイス１１３に書き込まれたプログラムが不完全であるために、ＣＰＵ１０２が正常に起動制御を行えなくなる。
【００６７】
このように、メモリデバイス１１３において、プログラムの破壊が生じても、物理的な破損が生じても、メモリデバイス１１３に格納されているプログラムに基づく起動制御が停止する現象が生じる。以下では、プログラムの破壊とメモリデバイス１１３の物理的な破損との違いについて更に説明する。
【００６８】
メモリデバイス１１３が物理的に破損した場合には、メモリデバイス１１３の電源投入時に管理情報の異常が検出されるが、この管理情報の異常は上述の修復処理によって修復することはできない。一方、プログラムの破壊が生じた場合には、メモリデバイス１１３の電源投入時に管理情報の異常が検出されても、この管理情報の異常は修復処理によって修復可能である。これは、管理情報の異常が、プログラムのダウンロードに伴う、ＮＡＮＤフラッシュメモリ１２０内のデータの更新中に、画像形成装置１００の異常な電源断が発生したことに起因するためである。この場合には、上述のように所定の修復処理により管理情報を修復可能である。
【００６９】
ただし、管理情報の修復が完了すると、それ以降の電源投入時に管理情報の異常が検出されることはなくなるものの、メモリデバイス１１３に格納されているプログラムの破壊は解消されていない。このため、ＣＰＵ１０２は、そのようなプログラムを用いて画像形成装置１００を正常に起動させることができず、起動制御が途中で停止することになる。
【００７０】
そこで、本実施形態では、ＣＰＵ１０２は、上述の起動制御中フラグに基づいて、電源投入時の起動制御の実行中にリブートが行われたことを判定した場合に、異常検出フラグに基づいて、管理情報１１９の異常が検出されたか否かを判定する。ＣＰＵ１０２は、管理情報１１９の異常が検出されなかった（即ち、修復処理により管理情報１１９の異常が解消された）場合には、起動制御を正常に行えない原因として、メモリデバイス１１３に格納されているプログラムが破壊されていることを特定する。
【００７１】
上述のように、メモリデバイス１１３に格納されているプログラムの破壊が生じた場合には、外部デバイスから画像形成装置１００にプログラムを再度ダウンロードすることによって、破壊されているプログラムの修復が可能である。この場合、メモリデバイス１１３を交換する必要がない。
【００７２】
＜起動制御の不具合の判定処理＞
図５は、本実施形態に係る、ＣＰＵ１０２によって実行される、起動制御の不具合の原因を判定する処理の手順を示すフローチャートである。なお、図５の各ステップの処理は、ＲＯＭ１０７若しくはメモリデバイス１１３に格納された（又は、ＲＯＭ１０７若しくはメモリデバイス１１３からＲＡＭ１０６に展開された）プログラムをＣＰＵ１０２が実行することによって実現される。
【００７３】
なお、本実施形態では、前述したメモリデバイス１１３に関連する不具合の判定以外に、ＲＯＭ１０７のブートプログラム、又はメモリデバイス１１３のプログラムに基づくエラーの判定も行われる。本実施形態では、このようなエラーについてはそれぞれ個別のエラー通知が行われる。ＲＯＭ１０７のブートプログラムに基づいて判定可能なエラーは、例えば、メモリデバイス１１３又はＵＩ１０８のエラー（即ち、ブートプログラムにより制御を開始したがデバイスと通信できないエラー）である。メモリデバイス１１３のプログラムにより判定可能なエラーは、例えば、プリンタ１０９、スキャナ１１０、又は外部Ｉ／Ｆ１１１等のデバイスのエラー（即ち、当該プログラムにより制御を開始したがデバイスと通信できないエラー）である。上記の各プログラムに基づくエラーの判定を行うことができずに起動制御が停止した場合、ＣＰＵ１０２は、メモリデバイス１１３に関連する不具合が発生したと判定する。
【００７４】
まずＳ５０１において画像形成装置１００の電源がオンになると、リセット回路１２５から出力されるセット信号が、所定時間の経過後にローレベルからハイレベルに切り替わり、ＣＰＵ１０２のリセット状態が解除される。
【００７５】
リセット状態の解除に応じて、Ｓ５０２で、ＣＰＵ１０２は、ＲＯＭ１０７に格納されているブートプログラムの実行（ＢＩＯＳブート）を開始する。次にＳ５０３で、ＣＰＵ１０２は、メモリデバイス１１３とのＳＡＴＡ Ｉ／Ｆ１１２の通信を開始する。Ｓ５０４で、ＣＰＵ１０２は、メモリデバイス１１３との通信が可能であるか否かを判定し、メモリデバイス１１３との通信ができない場合には（Ｓ５０４で「ＮＯ」）、処理をＳ５１５へ進める。Ｓ５１５で、ＣＰＵ１０２は、メモリデバイス１１３との通信エラーが発生した判定し、エラー通知を行い、処理を終了する。なお、エラー通知は、例えば、ＵＩ１０８による表示又はＬＥＤの点灯等の方法により行われる。
【００７６】
一方、ＣＰＵ１０２は、メモリデバイス１１３との通信ができる場合には（Ｓ５０４で「ＹＥＳ」）、Ｓ５０５へ処理を進め、メモリデバイス１１３から起動制御中フラグを読み出す。ＣＰＵ１０２は、起動制御中フラグが「１」に設定されているか否かを判定し、起動制御中フラグが「０」に設定されている場合には（Ｓ５０６で「ＮＯ」）、Ｓ５０７へ処理を進める。一方、ＣＰＵ１０２は、起動制御中フラグが「１」に設定されている場合には（Ｓ５０６で「ＹＥＳ」）、Ｓ５１８へ処理を進める。
【００７７】
Ｓ５０７で、ＣＰＵ１０２は、メモリデバイス１１３に格納されている起動制御中フラグを、起動制御の実行中であることを示す「１」に設定する。次にＳ５０８で、タイマ１２４へ供給するイネーブル信号をオンに設定することで、タイマ１２４にタイマカウントを開始させる。なお、タイマ１２４によるタイマカウントは、リセット回路１２５によりＣＰＵ１０２がリセット状態にされる際にクリアされている。
【００７８】
その後、ＣＰＵ１０２は、Ｓ５０９で、メモリデバイス１１３に格納されているプログラム（起動プログラム）をＲＡＭ１０６に展開し、Ｓ５１０で、当該プログラムの実行を開始することで、画像形成装置１００の起動制御を開始する。この起動制御において、ＣＰＵ１０２は、プリンタ１０９、スキャナ１１０、及び外部Ｉ／Ｆ１１１等の初期化処理を行う。
【００７９】
ＣＰＵ１０２は、起動制御の実行中に何らかのエラー（通信エラー等）を検出した場合（Ｓ５１１で「ＹＥＳ」）、Ｓ５１６へ処理を進める。Ｓ５１６で、ＣＰＵ１０２は、タイマ１２４へ供給するイネーブル信号をオフに設定することで、タイマ１２４によるタイマカウントを停止させる。更にＳ５１７で、ＣＰＵ１０２は、検出したエラーの内容を、ＵＩ１０８を用いて通知した後、処理を終了する。
【００８０】
一方、ＣＰＵ１０２は、起動制御の実行中にエラーを検出しなかった場合（Ｓ５１１で「ＮＯ」）、Ｓ５１２へ処理を進める。ＣＰＵ１０２は、メモリデバイス１１３から読み出したプログラムに基づく起動制御が完了すると（Ｓ５１２で「ＹＥＳ」）、Ｓ５１３へ処理を進める。Ｓ５１３で、ＣＰＵ１０２は、タイマ１２４へ供給するイネーブル信号をオフに設定することで、タイマ１２４によるタイマカウントを停止させる。更にＳ５１４で、ＣＰＵ１０２は、メモリデバイス１１３に格納されている起動制御中フラグを、起動制御の実行中ではないことを示す「０」に設定し、処理を終了する（画像形成装置１００の起動を完了する）。
【００８１】
また、Ｓ５０６からＳ５１８へ処理を進めた場合（起動制御中フラグが「１」に設定されている場合）、Ｓ５１８で、ＣＰＵ１０２は、メモリデバイス１１３に格納されているＳＭＡＲＴ情報１２１から異常検出フラグを読み出す。Ｓ５１９で、ＣＰＵ１０２は、読み出した異常検出フラグが「１」に設定されているか否かを判定する。ＣＰＵ１０２は、異常検出フラグが「１」に設定されている場合には（Ｓ５１９で「ＹＥＳ」）、Ｓ５２０へ処理を進め、異常検出フラグが「０」に設定されている場合には（Ｓ５１９で「ＮＯ」）、Ｓ５２２へ処理を進める。
【００８２】
Ｓ５２０で、ＣＰＵ１０２は、メモリデバイス１１３の物理的な破損が発生したと判定する。更にＳ５２１で、ＣＰＵ１０２は、ＵＩ１０８を用いて、メモリデバイス１１３の交換の促す通知を行い、処理を終了する。一方、Ｓ５２２で、ＣＰＵ１０２は、メモリデバイス１１３に格納されているプログラムの破壊が発生したと判定する。更にＳ５２３で、ＣＰＵ１０２は、ＵＩ１０８を用いて、プログラムのダウンロードを促す通知を行い、処理を終了する。このようにして、ＣＰＵ１０２は、画像形成装置１００の再起動後にメモリデバイス１１３で管理情報１１９の異常が検出されたか否かに基づいて、画像形成装置１００の起動が途中で停止する不具合を解消するための処理としてそれぞれ異なる処理を実行する。
【００８３】
本実施形態では、ＣＰＵ１０２は、プログラムのダウンロードを促す通知を行った場合、ユーザの指示に従って外部デバイスからプログラムのダウンロードを行う。更に、ＣＰＵ１０２は、ダウンロードしたプログラムをメモリデバイス１１３（ＮＡＮＤフラッシュメモリ１２０）に格納する。
【００８４】
このように、上述の手順によれば、ＣＰＵ１０２は、起動制御中フラグに基づいて、画像形成装置１００の電源投入時の起動制御の実行中にリブートが行われたことを判定する。また、ＣＰＵ１０２は、異常検出フラグに基づいて、起動制御の不具合の原因を判定する。
【００８５】
なお、Ｓ５２３の通知に従ってプログラムのダウンロードが完了すると、起動制御中フラグは「０」に設定される（クリアされる）ものとする。また、Ｓ５２１の通知に従った交換後のメモリデバイス１１３には、後述するダウンロード専用プログラム以外のプログラムは予め格納されていないか、プログラムが格納されていても、起動制御中フラグの格納先の領域はクリアされているものとする。また、本実施形態では、起動制御中フラグはメモリデバイス１１３に格納されているが、ＲＯＭ１０７又はＨＤＤ（図示せず）等の、他の不揮発性メモリデバイスに格納されてもよい。
【００８６】
＜起動制御の流れ（正常時）＞
図６は、本実施形態に係る、画像形成装置１００の起動制御の流れを示すシーケンス図であり、起動制御が正常に終了する場合の、ＣＰＵ１０２、タイマ１２４及びリセット回路１２５による処理を示している。なお、ＣＰＵ１０２による処理については、図５に示される処理のうち、タイマ１２４及びリセット回路１２５と関連する処理のみを示している。
【００８７】
画像形成装置１００の電源がオンになると（Ｓ６０１）、リセット回路１２５からローレベルのリセット信号が出力される（Ｓ６０２）。これにより、タイマ１２４及びＣＰＵ１０２はリセット状態となる（Ｓ６０３）。その後、所定時間が経過すると、リセット回路１２５から出力されるリセット信号がローレベルからハイレベルに切り替わる（Ｓ６０４）。これにより、タイマ１２４及びＣＰＵ１０２のリセット状態が解除される（Ｓ６０５）。
【００８８】
リセット状態が解除されると、ＣＰＵ１０２は、ＲＯＭ１０７に格納されているブートプログラムの実行を開始する（Ｓ６０６）。更に、ＣＰＵ１０２は、メモリデバイス１１３から起動制御中フラグを読み出して、起動制御の実行中ではないこと（起動制御中フラグ＝０）を確認した後（Ｓ６０７）、メモリデバイス１１３に格納されている起動制御中フラグを「１」に設定する（Ｓ６０８）。
【００８９】
その後、ＣＰＵ１０２は、タイマ１２４へ供給するイネーブル信号をオンに設定する（Ｓ６０９）。これにより、タイマ１２４がタイマカウントを開始する（Ｓ６１０）。更に、ＣＰＵ１０２は、メモリデバイス１１３からＲＡＭ１０６に展開したプログラム（起動プログラム）に基づいて、画像形成装置１００の起動制御を開始する（Ｓ６１１）。プログラムの起動制御が正常に終了すると（Ｓ６１２）、ＣＰＵ１０２は、タイマ１２４へ供給するイネーブル信号をオフに設定する（Ｓ６１３）。これにより、タイマ１２４はタイマカウントを停止する（Ｓ６１４）。最終的に、ＣＰＵ１０２は、メモリデバイス１１３に格納されている起動制御中フラグを「０」に設定（クリア）することで（Ｓ６１５）、画像形成装置１００の起動を完了する（Ｓ６１６）。
【００９０】
＜起動制御の流れ（異常時）＞
図７は、本実施形態に係る、画像形成装置１００の起動制御の流れを示すシーケンス図であり、起動制御が途中で停止する場合の、ＣＰＵ１０２、タイマ１２４及びリセット回路１２５による処理を示している。なお、ＣＰＵ１０２による処理については、図５に示される処理のうち、タイマ１２４及びリセット回路１２５と関連する処理のみを示している。
【００９１】
Ｓ７０１〜Ｓ７１１の処理は、図６のＳ６０１〜Ｓ６１１の処理と同様であるため、それらの説明を省略する。本例では、ＣＰＵ１０２は、メモリデバイス１１３からＲＡＭ１０６に展開したプログラム（起動プログラム）に基づいて、画像形成装置１００の起動制御を開始した後（Ｓ７１１）、メモリデバイス１１３に関連する原因により起動制御を途中で停止する。この場合、タイマ１２４によるタイマカウントはＣＰＵ１０２によって停止されない。このため、タイマ１２４は、所定のカウント値に至るまでタイマカウントを続けることでカウント満了に至ると（Ｓ７１３）、マニュアルリセット信号をリセット回路１２５へ出力する（Ｓ７１４）。
【００９２】
リセット回路１２５は、マニュアルリセット信号を受信すると、ローレベルのリセット信号を出力する（Ｓ７１５）。これにより、Ｓ７１５〜Ｓ７１９においてＳ７０２〜Ｓ７０６と同様の処理が行われることで、画像形成装置１００のリブートが行われる。ＣＰＵ１０２は、ＲＯＭ１０７に格納されているブートプログラムの実行を開始し（Ｓ７１９）、メモリデバイス１１３から起動制御中フラグを読み出す。このとき、起動制御中フラグは、起動制御の実行中を示す「１」に設定されている。ＣＰＵ１０２は、起動制御中フラグが「１」に設定されていることを確認した場合、画像形成装置１００の電源投入時の起動制御の実行中にリブートが行われたと判定し、Ｓ５１８〜Ｓ５２３の処理を実行する。これにより、ＣＰＵ１０２は、画像形成装置１００の起動制御の不具合（メモリデバイス１１３に関連する不具合）の原因を判定する。
【００９３】
このように、本実施形態の画像形成装置１００では、ＣＰＵ１０２による起動制御が停止した際に、タイマ１２４及びリセット回路１２５を利用したリブートが行われる。ＣＰＵ１０２は、このようにして画像形成装置１００の電源投入時の起動制御の実行中にリブートが行われたことを、起動制御中フラグに基づいて判定する。更に、ＣＰＵ１０２は、起動制御の実行中にリブートが行われたと判定すると、異常検出フラグに基づいて、起動制御の不具合の原因を判定する。
【００９４】
＜ダウンロードモード＞
本実施形態では、ＣＰＵ１０２は、プログラムの破壊が生じたと判定した場合、上述の図５のＳ５２３にように、プログラムのダウンロードをサービスマン又はユーザに対して促してもよい。例えば、ＣＰＵ１０２は、図８に示されるような操作画面をＵＩ１０８に表示して、ダウンロードモードへの移行のための指示を行うように促す。ダウンロードモードとは、メモリデバイス１１３に格納されているユーザデータ１２３に、画像形成装置１００の起動プログラムとは別に予め含まれている、ダウンロード専用プログラムを実行する動作モードである。なお、このような操作画面の表示に限らず、ＬＥＤの点灯等の、他の通知方法が用いられてもよい。
【００９５】
ダウンロードモードへの移行指示は、例えば、サービスマン又はユーザによる特定の操作により行われてもよい。例えば、サービスマン又はユーザが、ＵＩ１０８のタッチパネル上の所定の箇所をタッチしながら又は所定のハードキーを押しながら、画像形成装置１００の電源スイッチを操作することで、ダウンロードモードへの移行指示が行われてもよい。この場合、画像形成装置１００の電源は、一度オフにされる必要がある。このようなダウンロードモードへの移行指示のための操作方法については、サービスマン又はユーザが予め把握していてもよいし、図８に示されるような操作画面にそのような操作方法が表示されてもよい。
【００９６】
ＣＰＵ１０２は、画像形成装置１００への電源投入時に、ＲＯＭ１０７に格納されているブートプログラムの実行により、上述のようなダウンロードモードへの移行指示を検出する。移行指示を検出すると、ＣＰＵ１０２は、メモリデバイス１１３からダウンロード専用プログラムをＲＡＭ１１８に展開して実行する。ダウンロード専用プログラムは、プログラムのダウンロードによって更新されるプログラムではなく、メモリデバイス１１３に予め書き込まれるプログラムである。これは、上述のようにソフトウェアのバージョンアップの実行中に画像形成装置１００の異常な電源断が発生しても、ダウンロード専用プログラムがその影響を受けないようにするためである。これにより、異常な電源断が発生しても、ダウンロード専用プログラムが破壊されることはなく、上述の特定の操作によりＣＰＵ１０２に実行させることが可能になる。
【００９７】
ＣＰＵ１０２は、ダウンロード専用プログラムを実行（起動）すると、外部Ｉ／Ｆ１１１を介してプログラムのダウンロードを行う。プログラムのダウンロード元となる外部デバイスは、例えば、外部Ｉ／Ｆ１１１にＵＳＢ接続により接続されたＵＳＢメモリ、ＨＤＤ又はＳＳＤ等の不揮発記憶装置、及び有線ＬＡＮ又は無線ＬＡＮを介して通信可能なサーバ装置のいずれであってもよい。また、ＣＰＵ１０２は、ダウンロード専用プログラムの実行により、ダウンロード元の外部デバイスをサービスマン又はユーザが選択可能な操作画面をＵＩ１０８に表示し、サービスマン又はユーザからの選択を受け付けてもよい。
【００９８】
以上説明したように、本実施形態の画像形成装置１００は、画像形成装置１００を起動するためのプログラムが格納された不揮発性のメモリデバイス１１３を備える。メモリデバイス１１３は、当該メモリデバイスの起動時に、当該メモリデバイスに格納されたデータについての論理アドレスと物理アドレスとの対応関係を示す管理情報（アドレス変換テーブル）の異常を検出すると、当該管理情報の修復処理を行う機能を有する。ＣＰＵ１０２は、画像形成装置１００の電源がオンになると、メモリデバイス１１３に格納されているプログラムの実行により画像形成装置１００を起動する。タイマ１２４及びリセット回路１２５は、メモリデバイス１１３に格納されているプログラムに基づく画像形成装置１００の起動が途中で停止すると、画像形成装置を再起動する。ＣＰＵ１０２は、画像形成装置１００の再起動後にメモリデバイス１１３で管理情報の異常が検出されたか否かに基づいて、画像形成装置１００の起動が途中で停止する不具合を解消するための処理としてそれぞれ異なる処理を実行する。
【００９９】
具体的には、ＣＰＵ１０２は、画像形成装置１００の再起動後にメモリデバイス１１３で管理情報の異常が検出された場合には、不具合の原因として当該メモリデバイスの物理的な破損が発生したと判定する。その判定結果に従って、ＣＰＵ１０２は、当該メモリデバイスの交換を促す通知を行う。一方、ＣＰＵ１０２は、画像形成装置１００の再起動後にメモリデバイス１１３で管理情報の異常が検出されていない場合には、不具合の原因として当該メモリデバイスに格納されているプログラムの破壊が発生したと判定する。その判定結果に従って、ＣＰＵ１０２は、外部装置からのプログラムのダウンロードを促す通知を行う。このようにして、画像形成装置１００の起動が途中で停止する不具合の原因に応じて、適切な通知をサービスマン又はユーザに促すことができるため、不具合に対する適切な対処が可能になる。したがって、本実施形態によれば、メモリデバイス１１３に格納されているプログラムに基づいて画像形成装置１００が正常に起動できない不具合に適切に対処することが可能になる。これにより、画像形成装置１００の早期の復旧が可能になる。
【０１００】
本実施形態は種々の変更が可能である。例えば、ＣＰＵ１０２は、メモリデバイス１１３に格納されているプログラムに基づく画像形成装置１００の起動が途中で停止すると、管理情報の修復を行う修復機能を実行するよう、メモリデバイス１１３を制御してもよい。更に、ＣＰＵ１０２は、このような起動の停止に基づく修復機能の実行において管理情報の異常がメモリデバイス１１３によって検出されていなければ、外部装置からのプログラムのダウンロードを促すか、外部装置からプログラムをダウンロードしてもよい。この場合に、メモリデバイス１１３は、起動時に修復機能を実行するように構成され、ＣＰＵ１０２は、プログラムに基づく画像形成装置１００の起動が途中で停止すると、少なくともメモリデバイス１１３を再起動させるように構成される。このような処理によれば、メモリデバイス１１３に格納されているプログラムに基づいて画像形成装置１００が正常に起動できない不具合に適切に対処することが可能になる。これにより、画像形成装置１００の早期の復旧が可能になる。
【０１０１】
［第２実施形態］
第１実施形態では、メモリデバイス１１３に格納されているプログラムの破壊が発生したとの判定に従って、プログラムのダウンロードをサービスマン又はユーザに促す通知を行う例について説明した。この場合、プログラムのダウンロードは、サービスマン又はユーザは、画像形成装置１００の電源をオフにした後に、特定の操作を行うことで画像形成装置１００をダウンロードモードで動作させる必要がある。
【０１０２】
そこで、第２実施形態では、このような特定の操作を必要とせずに、画像形成装置１００がプログラムのダウンロードを自動的に行う例について説明する。なお、説明の簡略化のため、第１実施形態と共通する部分については説明を省略する。
【０１０３】
本実施形態では、図５に示される手順において、ＣＰＵ１０２は、異常検出フラグが「０」に設定されている場合には（Ｓ５１９で「ＮＯ」）、Ｓ５２３で、ダウンロード専用プログラムをメモリデバイス１１３からＲＡＭ１０６へ展開する。更に、ＣＰＵ１０２は、展開したプログラムを実行することで、外部Ｉ／Ｆ１１１を介して外部デバイスからプログラムのダウンロードを行い、処理を終了する。なお、ＣＰＵ１０２は、Ｓ５２３で、プログラムのダウンロードが行われることを通知する操作画面をＵＩ１０８に表示してもよい。
【０１０４】
このように、本実施形態では、ＣＰＵ１０２は、メモリデバイス１１３に格納されているプログラムの破壊が発生したと判定した場合に、外部デバイスからのプログラムのダウンロードを自動的に行う。これにより、サービスマン又はユーザによる特定の操作を必要とせずに、メモリデバイス１１３に格納されているプログラムの破壊に起因して画像形成装置１００の起動制御が停止する不具合を解消することが可能になる。
【０１０５】
［第３の実施形態］
第１及び第２実施形態では、メモリデバイス１１３に格納されているプログラムの破壊が発生したとの判定に従って、外部デバイスからプログラムのダウンロードを行う例について説明した。この場合に、プログラムのダウンロードが行われたとしてもメモリデバイス１１３に関連する不具合を解消できなければ、再び起動制御が停止してリブートが行われ、プログラムのダウンロードが繰り返されることが想定される。
【０１０６】
そこで、第３実施形態では、メモリデバイス１１３に関連する不具合を解消できない場合に、外部デバイスからのプログラムのダウンロードが繰り返されることを防止する例について説明する。なお、説明の簡略化のため、第１実施形態と共通する部分については説明を省略する。
【０１０７】
メモリデバイス１１３においてＲＡＭ１１８に保持されている管理情報１１９には、第１実施形態で説明したアドレス変換テーブル以外の情報も含まれる。管理情報１１９に含まれる情報は、メモリデバイス１１３のメーカー又は種類に依存して異なる。例えば、各メモリブロックにおいて有効なページ数を示す有効ページカウントが、管理情報１１９に含まれる。有効ページカウントについては、メモリデバイス１１３への電源投入時に、アドレス変換テーブルとは異なり異常の検出が行われず、異常が生じても修復が不可能である。しかし、有効ページカウントに異常が生じた場合には、画像形成装置１００の起動制御が停止する原因となりうる。
【０１０８】
ＲＡＭ１１８の記憶領域のうち、管理情報１１９に含まれる有効ページカウントが格納される領域に物理的な破損が発生した場合、起動制御は停止するが管理情報の異常は検出されない（Ｓ５１９で「ＮＯ」）。その結果、ＣＰＵ１０２は、メモリデバイス１１３内のＲＡＭ１１８に物理的な破損が発生しているにもかかわらず、メモリデバイス１１３に格納されているプログラムに破壊が発生していると判定してしまう。
【０１０９】
そこで、本実施形態では、ＣＰＵ１０２は、管理情報の異常がないと判定し、プログラムのダウンロードを実行した場合に（Ｓ５１９〜Ｓ５２３）、プログラムのダウンロードを実行済みであることを示す情報を保存する。この情報は、ＮＡＮＤフラッシュメモリ１２０又はＲＯＭ１０７に保存される。
【０１１０】
その後、ＣＰＵ１０２は、再び、管理情報の異常がないと判定した場合には（Ｓ５１９で「ＮＯ」）、保存されている情報に基づいて、プログラムのダウンロードを実行済みであるか否かを判定する。ＣＰＵ１０２は、プログラムをダウンロード済みである場合には、プログラムのダウンロードによっては解消できない不具合が生じている（即ち、メモリデバイス１１３が物理的に破損している）と判定する。ＣＰＵ１０２は、その判定結果に従って、Ｓ５２１と同様、ＵＩ１０８を用いて、メモリデバイス１１３の交換の促す通知を行い、処理を終了する。
【０１１１】
このように、ＣＰＵ１０２は、外部デバイスからプログラムのダウンロードを行った場合に、当該プログラムをダウンロード済みであることを示す情報を保存する。これにより、ＣＰＵ１０２は、画像形成装置１００の再起動が再び行われた場合にプログラムのダウンロードを繰り返し行わないようにする。
【０１１２】
本実施形態によれば、プログラムのダウンロードによりメモリデバイス１１３に関連する不具合を解消できない場合に、メモリデバイス１１３が物理的に破損していると判定し、その判定結果に従った処理を行う。これにより、外部デバイスからのプログラムのダウンロードが繰り返されることを防止することが可能になる。
【０１１３】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１１４】
発明は上述の実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。したがって、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【０１１５】
１００：画像形成装置、１０１：メインＳｏＣ、１０２：ＣＰＵ、１０３：画像処理部、１０４：ホストメモリＩ／Ｆ、１１２：ＳＡＴＡ Ｉ／Ｆ、１１３：メモリデバイス、１２０：ＮＡＮＤフラッシュメモリ、１２４：タイマ、１２５：リセット回路
【図１】
2020171002.tif 000003
【図２】
2020171002.tif 000004
【図３】
2020171002.tif 000005
【図４】
2020171002.tif 000006
【図５】
2020171002.tif 000007
【図６】
2020171002.tif 000008
【図７】
2020171002.tif 000009
【図８】
2020171002.tif 000010
【図９】
2020171002.tif 000011