(57)【要約】      （修正有）【課題】システムプログラムの起動処理の完了までに掛かる時間を短縮し、画像処理装置を早く使用可能にすることができるメモリチェック方法および画像処理装置を提供する。【解決手段】第１ステップＳ１として、メモリチェック回路により、ワーク領域についてメモリチェックを行うとともに、プロセッサにより、システムプログラムデータを第１バッファメモリに書き込む。第２ステップＳ２として、メモリチェック回路により、格納領域について、第１バッファメモリに書き込まれたシステムプログラムデータを用いてメモリチェックを行う。第３ステップＳ３として、メモリチェック回路により、イメージ領域についてメモリチェックを行うとともに、プロセッサにより、格納領域に書き込まれたシステムプログラムデータに基づいて、システムプログラムの起動処理を行う。【選択図】図４
2012098962.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
格納領域、ワーク領域、およびイメージ領域からなるシステムメモリと、
システムプログラムデータを記憶する不揮発性メモリと、
バッファメモリと、
ダイレクトメモリアクセスコントローラを含むメモリチェック回路であって、該ダイレクトメモリアクセスコントローラを介して前記システムメモリのメモリセルにチェック用データを書き込み、その後、該ダイレクトメモリアクセスコントローラを介して、前記システムメモリの前記チェック用データが書き込まれたメモリセルからデータを読み出して、前記チェック用データと読み出したデータとを比較し、比較の結果、２つのデータが一致しなかったときに、前記メモリセルに故障があったとするメモリチェックを行う回路であるメモリチェック回路と、を備える画像処理装置の起動処理における前記システムメモリのメモリチェック方法であって、
前記メモリチェック回路が、前記ワーク領域のメモリセルについてメモリチェックを行うとともに、前記プロセッサが、前記不揮発性メモリからの前記システムプログラムデータの読み出し、および前記バッファメモリへの前記システムプログラムデータの書き込みを開始する第１ステップと、
前記第１ステップの開始後に開始される第２ステップであって、前記メモリチェック回路が、前記格納領域のメモリセルについて、前記バッファメモリに書き込まれたシステムプログラムデータをチェック用データとして用いてメモリチェックを行う第２ステップと、
前記第２ステップの開始後に開始される第３ステップであって、
前記メモリチェック回路が、前記イメージ領域のメモリセルについてメモリチェックを行うとともに、
前記プロセッサが、前記第２ステップのメモリチェックにおいて前記格納領域に書き込まれた前記システムプログラムデータに基づいて、前記画像処理装置の起動処理のうち、少なくともシステムプログラムの起動処理を行う第３ステップと、を含むことを特徴とするメモリチェック方法。
【請求項２】
前記第２ステップのメモリチェックでは、前記システムプログラムデータを反転したデータである反転システムプログラムデータをチェック用データとして用いてメモリチェックを行い、その後、前記システムプログラムデータをチェック用データとして用いてメモリチェックを行うことを特徴とする請求項１に記載のメモリチェック方法。
【請求項３】
前記システムプログラムデータ全体のデータ量よりも前記バッファメモリの記憶容量が小さく構成される請求項１または２に記載のメモリチェック方法であって、
前記第１ステップのメモリチェックを中断して、前記第２ステップのメモリチェックを行い、前記第２ステップのメモリチェックの後、前記第１ステップのメモリチェックを、中断したところから再開することを特徴とするメモリチェック方法。
【請求項４】
前記不揮発性メモリに記憶される前記システムプログラムデータが圧縮されているとともに、前記画像処理装置が第２バッファメモリを含む請求項１〜３のいずれか１つに記載のメモリチェック方法であって、
前記第１ステップでは、前記不揮発性メモリに記憶される圧縮されているシステムプログラムデータを読み出して前記第２バッファメモリに書き込んだ後、該第２バッファメモリに書き込まれた圧縮されているシステムプログラムデータを伸張して、前記バッファメモリに書き込むことを特徴とするメモリチェック方法。
【請求項５】
前記システムプログラムデータ全体のデータ量よりも前記格納領域の記憶容量が大きく構成される請求項１〜４のいずれか１つに記載のメモリチェック方法であって、
前記第２ステップでは、前記格納領域における前記システムプログラムデータが書き込まれたメモリセル以外のメモリセルについて、擬似乱数チェック用データまたは固定チェック用データをチェック用データとして用いてメモリチェックを行うことを特徴とするメモリチェック方法。
【請求項６】
プロセッサと、システムメモリと、不揮発性メモリと、バッファメモリと、メモリチェック回路と、を備える画像処理装置であって、
前記システムメモリは、格納領域、ワーク領域、およびイメージ領域からなり、
前記不揮発性メモリは、システムプログラムデータを記憶しており、
前記メモリチェック回路は、ダイレクトメモリアクセスコントローラを含み、該ダイレクトメモリアクセスコントローラを介して前記システムメモリのメモリセルにチェック用データを書き込み、その後、該ダイレクトメモリアクセスコントローラを介して、前記システムメモリの前記チェック用データが書き込まれたメモリセルからデータを読み出して、前記チェック用データと読み出したデータとを比較し、比較の結果、２つのデータが一致しなかったときに、前記メモリセルに故障があったとするメモリチェックを行う回路であり、
前記画像処理装置は、
前記メモリチェック回路によって、前記ワーク領域のメモリセルについてメモリチェックを行うとともに、前記プロセッサによって、前記不揮発性メモリからの前記システムプログラムデータの読み出し、および前記バッファメモリへの前記システムプログラムデータの書き込みを開始する第１の処理を行い、
前記第１の処理の開始の後に、前記メモリチェック回路によって、前記格納領域のメモリセルについて、前記バッファメモリに書き込まれたシステムプログラムデータをチェック用データとして用いてメモリチェックを行う第２の処理を開始し、
前記第２の処理の開始の後に、
前記メモリチェック回路によって、前記イメージ領域のメモリセルについてメモリチェックを行うとともに、
前記プロセッサによって、前記第２の処理のメモリチェックにおいて前記格納領域に書き込まれた前記システムプログラムデータに基づいて、前記画像処理装置の起動処理のうち、少なくともシステムプログラムの起動処理を行う第３の処理を開始するように構成されることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリチェック方法および画像処理装置に関する。
【背景技術】
【０００２】
マルチファンクション複合機などに備えられ、画像データに種々の画像処理を行う画像処理装置は、プログラムデータに基づく処理やデータの転送を行うプロセッサと、該プロセッサによるデータの読み出しおよび書き込みが可能なシステムメモリ（メインメモリ、または主記憶装置とも呼ばれる）と、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性メモリとを備えている。
【０００３】
不揮発性メモリには、画像処理装置全体の動作を統括するシステムプログラムが、システムプログラムデータとして記憶されている。特許文献１に記載のように、不揮発性メモリに記憶されているシステムプログラムデータは、システムメモリに転送および格納される。その後、格納されたシステムプログラムデータに基づいてプロセッサが所定の処理を行うことで、システムプログラムが起動する。システムプログラムの起動処理が完了した時点で、画像処理装置は画像データに対して画像処理を行うことが可能になる。
【０００４】
システムメモリには、システムプログラムデータだけではなく、たとえば、アプリケーションプログラムデータや画像データなどの様々なデータが格納される。マルチファンクション複合機の場合であれば、システムメモリには、たとえば、画像入力装置から入力される入力画像データや、画像出力装置へ出力される出力画像データなどが格納される。このようなシステムメモリのいずれかのメモリセルに故障が生じると、システムプログラムデータなどのデータが正常に格納できなくなり、画像処理装置が正常に動作できなくなる。そのため、システムメモリの各メモリセルに故障が生じているか否かを確認し、実動作での問題発生を未然に防ぐことが求められる。
【０００５】
一般的に、システムメモリは、製造時や画像処理装置の出荷時に故障がなくても、環境などの外部要因によって故障することがある。したがって、画像処理装置が安定して動作するためには、画像処理装置を起動するたびにシステムメモリのメモリチェックをすることが必要である。ここで、システムメモリのメモリチェックは、一般的に、メモリチェック専用のチェック用データを生成し、該チェック用データをシステムメモリへ書き込み、書き込んだデータを読み出して、書き込んだデータと読み出したデータとを比較することで行われる。したがって、画像処理装置によって処理する画像の解像度が高くなり、これに比例して搭載するシステムメモリの記憶容量が大きくなってきている近年では、メモリチェックに要する時間が増大しているという問題がある。
【０００６】
特許文献２には、この問題を解決する装置として、ＤＭＡ（Direct Memory Access）コントローラを介して、システムメモリのメモリチェックを行う装置が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−２９３５６５号公報
【特許文献２】特開２００２−３４２１７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献２に記載の装置によれば、ＤＭＡコントローラを介して、プロセッサを介さずにシステムメモリのメモリチェックを行うことができるので、メモリチェックが行われている間に、プロセッサによって各周辺機器の初期化処理を行うことができる。
【０００９】
しかしながら、特許文献２の段落［００５２］に記載のように、特許文献２に記載の装置は、システムメモリのメモリチェックの終了後に、システムプログラムの起動処理を行っている。したがって、メモリチェックに要する時間が多くなると、システムプログラムの起動を開始するのが遅くなってしまい、システムプログラムの起動処理が完了して画像処理装置が使用可能となるまでに多くの時間を要してしまうという課題がある。
【００１０】
なお、特許文献１に記載の装置は、ＤＭＡコントローラを介してシステムプログラムデータの転送を行うとともに、ＤＭＡコントローラによる転送の開始後かつ完了前に、プロセッサによって該システムプログラムデータ自体の正当性をチェックしているけれども、システムメモリのメモリチェックを行っていないので、システムメモリが故障している場合、システムプログラムデータが正当であるというチェック結果は無意味なものとなってしまう。
【００１１】
本発明は、上記課題を解決するものであり、システムプログラムの起動処理の完了までに掛かる時間を短縮し、画像処理装置を早く使用可能にすることができるメモリチェック方法および画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、プロセッサと、
格納領域、ワーク領域、およびイメージ領域からなるシステムメモリと、
システムプログラムデータを記憶する不揮発性メモリと、
バッファメモリと、
ダイレクトメモリアクセスコントローラを含むメモリチェック回路であって、該ダイレクトメモリアクセスコントローラを介して前記システムメモリのメモリセルにチェック用データを書き込み、その後、該ダイレクトメモリアクセスコントローラを介して、前記システムメモリの前記チェック用データが書き込まれたメモリセルからデータを読み出して、前記チェック用データと読み出したデータとを比較し、比較の結果、２つのデータが一致しなかったときに、前記メモリセルに故障があったとするメモリチェックを行う回路であるメモリチェック回路と、を備える画像処理装置の起動処理における前記システムメモリのメモリチェック方法であって、
前記メモリチェック回路が、前記ワーク領域のメモリセルについてメモリチェックを行うとともに、前記プロセッサが、前記不揮発性メモリからの前記システムプログラムデータの読み出し、および前記バッファメモリへの前記システムプログラムデータの書き込みを開始する第１ステップと、
前記第１ステップの開始後に開始される第２ステップであって、前記メモリチェック回路が、前記格納領域のメモリセルについて、前記バッファメモリに書き込まれたシステムプログラムデータをチェック用データとして用いてメモリチェックを行う第２ステップと、
前記第２ステップの開始後に開始される第３ステップであって、
前記メモリチェック回路が、前記イメージ領域のメモリセルについてメモリチェックを行うとともに、
前記プロセッサが、前記第２ステップのメモリチェックにおいて前記格納領域に書き込まれた前記システムプログラムデータに基づいて、前記画像処理装置の起動処理のうち、少なくともシステムプログラムの起動処理を行う第３ステップと、を含むことを特徴とするメモリチェック方法である。
【００１３】
また本発明は、前記第２ステップのメモリチェックでは、前記システムプログラムデータを反転したデータである反転システムプログラムデータをチェック用データとして用いてメモリチェックを行い、その後、前記システムプログラムデータをチェック用データとして用いてメモリチェックを行うことを特徴とする。
【００１４】
また本発明は、前記メモリチェック方法において、前記システムプログラムデータ全体のデータ量よりも前記バッファメモリの記憶容量が小さく構成され、
前記第１ステップのメモリチェックを中断して、前記第２ステップのメモリチェックを行い、前記第２ステップのメモリチェックの後、前記第１ステップのメモリチェックを、中断したところから再開することを特徴とする。
【００１５】
また本発明は、前記メモリチェック方法において、前記不揮発性メモリに記憶される前記システムプログラムデータが圧縮されているとともに、前記画像処理装置が第２バッファメモリを含み、
前記第１ステップでは、前記不揮発性メモリに記憶される圧縮されているシステムプログラムデータを読み出して前記第２バッファメモリに書き込んだ後、該第２バッファメモリに書き込まれた圧縮されているシステムプログラムデータを伸張して、前記バッファメモリに書き込むことを特徴とする。
【００１６】
また本発明は、前記メモリチェック方法において、前記システムプログラムデータ全体のデータ量よりも前記格納領域の記憶容量が大きく構成され、
前記第２ステップでは、前記格納領域における前記システムプログラムデータが書き込まれたメモリセル以外のメモリセルについて、擬似乱数チェック用データまたは固定チェック用データをチェック用データとして用いてメモリチェックを行うことを特徴とする。
【００１７】
また本発明は、プロセッサと、システムメモリと、不揮発性メモリと、バッファメモリと、メモリチェック回路と、を備える画像処理装置であって、
前記システムメモリは、格納領域、ワーク領域、およびイメージ領域からなり、
前記不揮発性メモリは、システムプログラムデータを記憶しており、
前記メモリチェック回路は、ダイレクトメモリアクセスコントローラを含み、該ダイレクトメモリアクセスコントローラを介して前記システムメモリのメモリセルにチェック用データを書き込み、その後、該ダイレクトメモリアクセスコントローラを介して、前記システムメモリの前記チェック用データが書き込まれたメモリセルからデータを読み出して、書き込んだデータと読み出したデータとを比較し、比較の結果、２つのデータが一致しなかったときに、前記メモリセルに故障があったとするメモリチェックを行う回路であり、
前記画像処理装置は、
前記メモリチェック回路によって、前記ワーク領域のメモリセルについてメモリチェックを行うとともに、前記プロセッサによって、前記不揮発性メモリからの前記システムプログラムデータの読み出し、および前記バッファメモリへの前記システムプログラムデータの書き込みを開始する第１の処理を行い、
前記第１の処理の開始の後に、前記メモリチェック回路によって、前記格納領域のメモリセルについて、前記バッファメモリに書き込まれたシステムプログラムデータをチェック用データとして用いてメモリチェックを行う第２の処理を開始し、
前記第２の処理の開始の後に、
前記メモリチェック回路によって、前記イメージ領域のメモリセルについてメモリチェックを行うとともに、
前記プロセッサによって、前記第２の処理のメモリチェックにおいて前記格納領域に書き込まれた前記システムプログラムデータに基づいて、前記画像処理装置の起動処理のうち、少なくともシステムプログラムの起動処理を行う第３の処理を開始するように構成されることを特徴とする画像処理装置である。
【発明の効果】
【００１８】
本発明によれば、第３ステップにおいて、プロセッサとメモリチェック回路とにより、システムプログラムの起動処理とシステムメモリのメモリチェックとを並列して行うことができる。これによって、システムプログラムの起動処理の完了までに掛かる時間を短縮することができる。また、メモリチェック回路は、ダイレクトメモリアクセスコントローラを介してシステムメモリのメモリチェックを行うので、システムメモリのすべてのメモリセルについてメモリチェックを行うときであっても、プロセッサに掛かる負荷を軽減することができる。
【００１９】
また本発明では、格納領域のメモリチェックのときに、システムプログラムデータをチェック用データとして用いているので、格納領域のチェックが完了することで、システムプログラムデータ全体が格納領域に格納されることになる。したがって、システムプログラムデータ以外のチェック用データを用いてメモリチェックを行った後に格納領域に該システムプログラムデータを格納する場合と比較して、システムプログラムの起動処理の完了までに掛かる時間を短縮することができる。本発明では、このようにして、画像処理装置を早く使用可能にすることができる。
【００２０】
また本発明によれば、格納領域に対して、まず、反転システムプログラムデータをチェック用データとして用いてメモリチェックを行い、その後、システムプログラムデータをチェック用データとして用いてメモリチェックを行う。したがって、格納領域のメモリセルの故障をより確実に発見することができる。
【００２１】
また本発明によれば、システムプログラムデータ全体のデータ量よりもバッファメモリの記憶容量が小さいので、システムプログラムデータをバッファメモリに書き込む処理が複数回生じることになる。そして、本発明では、第１ステップにおけるワーク領域のメモリチェックを中断して、第２ステップにおける格納領域のメモリチェックを行い、該格納領域のメモリチェックを進めた後、第１ステップにおけるワーク領域のメモリチェックを、中断したところから再開する。これによって、第１ステップにおけるワーク領域のメモリチェックと、システムプログラムデータをバッファメモリに書き込む複数回の処理とを、並列して行うことができ、ワーク領域のメモリチェックに掛かる時間を有効に活用することができる。その結果、第１ステップの処理と第２ステップの処理との２つの処理の完了までに掛かる時間を短縮することができる。
【００２２】
また本発明によれば、画像処理装置は、第２バッファメモリを備え、不揮発性メモリから該第２バッファメモリへ、圧縮されているシステムプログラムデータ（圧縮システムプログラムデータ）が転送される。そして、第２バッファメモリに書き込まれた圧縮システムプログラムデータが伸張されて非圧縮のシステムプログラムデータとなって、第２バッファメモリとは異なるバッファメモリに記憶され、該バッファメモリに書き込まれた非圧縮のシステムプログラムデータがチェック用データとして用いられて、格納領域のメモリチェックが行われる。したがって、本発明では、不揮発性メモリ内でシステムプログラムデータが圧縮されていても、システムプログラムデータを用いた格納領域のメモリチェックを行うことができる。よって、不揮発性メモリ内において、システムプログラムデータを圧縮し、データ量を小さくすることができる。
【００２３】
また本発明によれば、格納領域におけるシステムプログラムデータが書き込まれたメモリセル以外のメモリセル（余剰領域のメモリセル）について、メモリチェック回路によって、擬似乱数チェック用データまたは固定チェック用データを用いてメモリチェックを行う。したがって、システムプログラムデータのデータ量よりも格納領域の記憶容量が大きくても、格納領域すべてについてメモリチェックを行うことができる。
【００２４】
また本発明によれば、第３の処理において、プロセッサとメモリチェック回路とにより、システムプログラムの起動処理とシステムメモリのメモリチェックとを並列して行うことができる。これによって、システムプログラムの起動処理の完了までに掛かる時間を短縮することができる。また、メモリチェック回路は、ダイレクトメモリアクセスコントローラを介してシステムメモリのメモリチェックを行うので、システムメモリのすべてのメモリセルについてメモリチェックを行うときであっても、プロセッサに掛かる負荷を軽減することができる。
【００２５】
また本発明では、格納領域のメモリチェックのときに、システムプログラムデータをチェック用データとして用いているので、格納領域のチェックが完了することで、システムプログラムデータ全体が格納領域に格納されることになる。したがって、システムプログラムデータ以外のチェック用データを用いてメモリチェックを行った後に格納領域に該システムプログラムデータを格納する場合と比較して、システムプログラムの起動処理の完了までに掛かる時間を短縮することができる。このようにして、本発明に係る画像処理装置を早く使用可能にすることができる。
【図面の簡単な説明】
【００２６】
【図１】複合機１０００の構成を示す模式図である。
【図２】システムメモリ４の各領域の概念図である。
【図３】メモリチェック回路２の構成を示すブロック図である。
【図４】メモリチェック方法を表すフローチャートである。
【図５】第１ステップＳ１におけるメモリチェック回路２による処理を表すフローチャートである。
【図６Ａ】第２ステップＳ２におけるメモリチェック回路２による処理を表すフローチャートである。
【図６Ｂ】第２ステップＳ２におけるメモリチェック回路２による処理を表すフローチャートである。
【図７】複合機２０００の構成を示す模式図である。
【図８】メモリチェック回路２の構成を示すブロック図である。
【図９】メモリチェック方法を表すフローチャートである。
【図１０】処理に掛かる時間を短縮することができることを示す概念図である。
【発明を実施するための形態】
【００２７】
以下に、本発明の第１実施形態である画像処理装置１００を備える複合機１０００について説明する。図１は、複合機１０００の構成を示す模式図である。複合機１０００は、画像処理装置１００と、画像入力装置２００と、画像出力装置３００とを備える。複合機１０００は、コピアモード（複写モード）、プリンタモード、およびファクシミリモードという３種の印刷モードを有しており、各印刷モードにおいて、記録用紙などの記録媒体上にフルカラーまたはモノクロの画像を形成する。複合機１０００の印刷モードは、パーソナルコンピュータ、携帯端末装置、情報記録媒体などからの命令、図示しない操作部からの操作入力などに従って設定される。
【００２８】
画像入力装置２００は、たとえば、ライン状に配置されるＣＣＤ（Charge Coupled 
Device）イメージセンサを備えるスキャナ部を有する画像読取装置である。スキャナ部は、ＣＣＤイメージセンサの配置方向（主走査方向）に垂直な方向（副走査方向）に移動することによって、原稿から反射光像を読み取る。反射光像は、赤色（Ｒ）成分、緑色（Ｇ）成分、および青色（Ｂ）成分に色分解され、各成分の反射率を示すアナログ信号として、スキャナ部に読み取られる。画像入力装置２００は、画素ごとに読み取ったＲＧＢの各アナログ信号を１つのデータとしてまとめることによって、アナログ信号の画像データを作成し、該アナログ信号の画像データを画像処理装置１００に出力する。
【００２９】
画像処理装置１００は、画像入力装置２００から入力されたアナログ信号の画像データを、入力画像データとして記憶する。そして、画像処理装置１００は、記憶した入力画像データに、さまざまな画像処理を行って出力画像データとして、画像出力装置３００に出力する。画像処理装置１００が入力画像データに行う画像処理としては、たとえば、画質調整処理、色補正処理、階調再現処理などの、画像データに対して補正を行う処理などが挙げられる。また、たとえば、拡大処理、縮小処理、２色化処理などの、ユーザの指示に基づいて画像データに修正を加える処理も挙げられる。画像処理装置１００の具体的な構成については後述する。
【００３０】
画像出力装置３００は、電子写真方式、インクジェット方式などの画像形成装置である。画像出力装置３００は、画像処理装置１００から入力された出力画像データに基づいて、記録媒体に画像を形成する。
【００３１】
図１に示すように、画像処理装置１００は、プロセッサ１と、メモリチェック回路２と、キャッシュメモリ３と、システムメモリ４と、第１不揮発性メモリ５と、第２不揮発性メモリ６と、インターフェイス部７と、表示部８と、第１バッファメモリ９と、第２バッファメモリ１０とを含む。
【００３２】
プロセッサ１は、プログラムデータに基づく演算処理、および異なる電子デバイス間でのデータの転送制御処理などを行う制御演算装置である。プロセッサ１としては、１つのＣＰＵ（Central Processing Unit）が用いられてもよく、複数のＣＰＵが用いられてもよい。ただし、複数のＣＰＵを用いる場合は、各ＣＰＵを同期させる必要が生じるので、ＣＰＵは１つであることが好ましい。
【００３３】
キャッシュメモリ３は、ＳＲＡＭ（Static Random Access Memory）などの半導体メモリである。キャッシュメモリ３は、プロセッサ１による直接的なデータの読み出しおよび書き込みが可能に接続される。
【００３４】
第１バッファメモリ９および第２バッファメモリ１０は、ＳＲＡＭなどの半導体メモリである。第１バッファメモリ９および第２バッファメモリ１０は、プロセッサ１による直接的なデータの読み出しおよび書き込みが可能に接続されるとともに、図示しないデータバスおよびアドレスバスに接続される。本実施形態では、後述する圧縮システムプログラムデータ全体のデータ量と比較して第２バッファメモリ１０の記憶容量は大きく、また、後述する非圧縮システムプログラムデータ全体のデータ量と比較して第１バッファメモリ９の記憶容量は大きいものとする。
【００３５】
第２不揮発性メモリ６は、たとえば、ＳＤメモリカード、ＨＤＤ（Hard Disk Drive）などの不揮発性のメモリである。第２不揮発性メモリ６には、システムプログラムデータ、２次ダウンローダプログラムデータ、およびアプリケーションプログラムデータが記憶されている。
【００３６】
システムプログラムデータは、画像処理装置１００全体の動作を統括し、入力画像データに対して所定の画像処理を行うためのプログラムであるシステムプログラムを表したデータである。システムプログラムデータは所定の処理の実行手順を示すデータであり、該所定の処理に係る設定を示すデータはシステムプログラムデータに含まれない。
【００３７】
また、本発明では、システムプログラムデータ全体だけではなく、該システムプログラムデータの一部のデータもシステムプログラムデータと称する。そして、本実施形態において、システムプログラムデータは、第２不揮発性メモリ６内に圧縮されて記憶されているものとし、以下では、圧縮されているシステムプログラムデータを圧縮システムプログラムデータと称し、圧縮されていないシステムプログラムデータを非圧縮システムプログラムデータと称し、特に区別しないときは単にシステムプログラムデータと称する。
【００３８】
システムプログラムデータに基づいてプロセッサ１が所定の処理を開始することで、システムプログラムの起動処理が開始される。システムプログラムの起動処理は、該システムプログラムの起動処理の開始から画像処理装置１００が画像処理を行うことが可能になるまでの期間において、システムプログラムデータに基づいて行われる処理である。
【００３９】
アプリケーションプログラムデータは、画像処理装置１００に接続される外部機器を起動させたり、入力画像データに対してシステムプログラムに含まれていない処理を行ったりするためのプログラムであるアプリケーションプログラムを表したデータである。アプリケーションプログラムデータに基づいてプロセッサ１が所定の処理を開始することで、アプリケーションプログラムの起動処理が開始される。アプリケーションプログラムの起動処理は、該アプリケーションプログラムの起動処理の開始から該アプリケーションプログラムが利用可能になるまでの期間において、アプリケーションプログラムデータに基づいて行われる処理である。
【００４０】
２次ダウンローダプログラムデータは、画像処理装置１００の起動処理において、第１バッファメモリ９へ、非圧縮システムプログラムデータを書き込むためのプログラムを表したデータである。ここで、画像処理装置１００の起動処理とは、画像処理装置１００に電源が投入されてから画像処理装置１００が使用可能になるまでの期間において、画像処理装置１００によって行われる処理であり、本実施形態では、上述したシステムプログラムの起動処理およびアプリケーションプログラムの起動処理、外部機器などの初期化、ならびに後述するメモリチェック回路２によるメモリチェックを含む。２次ダウンローダプログラムには、メモリチェックに係る設定データであるメモリチェック設定データも含まれる。メモリチェック設定データは、プロセッサ１によって、メモリチェック回路２へ送られる。
【００４１】
第１不揮発性メモリ５は、たとえば、フラッシュメモリ、ＮＶＲＡＭ（Non Volatile Random Access Memory）などの不揮発性の半導体メモリであり、第２不揮発性メモリ６よりも記憶容量が小さい。第１不揮発性メモリ５は、プロセッサ１による直接的なデータの読み出しが可能に接続される。第１不揮発性メモリ５には、１次ダウンローダプログラムデータが記憶されている。１次ダウンローダプログラムデータは、画像処理装置１００の起動処理において、第２不揮発性メモリ６からキャッシュメモリ３へ、２次ダウンローダプログラムデータを転送するためのプログラムを表したデータであり、２次ダウンローダプログラムよりもデータ量が小さい。
【００４２】
本実施形態では、上記のように、第１不揮発性メモリ５に１次ダウンローダプログラムデータが記憶され、第２不揮発性メモリ６に圧縮システムプログラムデータおよび２次ダウンローダプログラムデータが記憶されている。これに対し、本発明の他の実施形態として、第１不揮発性メモリ５の記憶容量を充分に大きくし、該第１不揮発性メモリ５に、１次ダウンローダプログラムデータの代わりに、２次ダウンローダプログラムデータを記憶させてもよい。
【００４３】
メモリチェック回路２は、図示しないデータバスおよびアドレスバスを介して、プロセッサ１およびシステムメモリ４に接続されるデジタル電子回路である。メモリチェック回路２は、システムプログラムの起動処理のときに、システムメモリ４に対してメモリチェックを行う。メモリチェック回路２によるメモリチェックでは、まず、システムメモリ４のメモリセルにチェック用データが書き込まれ、次に、システムメモリ４における該チェック用データが書き込まれたメモリセルからデータが読み出される。そして、書き込まれたデータと読み出されたデータとが比較され、比較の結果、２つのデータが一致しなかったときに、システムメモリ４の該メモリセルに故障があったと判断される。
【００４４】
システムメモリ４は、たとえば、ＤＤＲ  ＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）などの半導体メモリである。本発明において、システムメモリ４は、概念的に、格納領域４１、ワーク領域４２、およびイメージ領域４３の、３つの領域に区分される。図２は、システムメモリ４の各領域の概念図である。各領域は、それぞれ、システムメモリ４の一部分であり、複数のメモリセルからなる。
【００４５】
格納領域４１は、少なくとも、システムプログラムデータが記憶（格納）される領域である。システムメモリ４全体の記憶容量を２ギガバイトとするとき、格納領域４１の記憶容量は、たとえば、１２８メガバイトである。なお、本実施形態では、格納領域４１に格納されるシステムプログラムデータ全体のデータ量よりも該格納領域４１の記憶容量が大きいものとする。
【００４６】
ワーク領域４２は、格納領域４１に記憶（格納）されたシステムプログラムデータに基づくシステムプログラムの起動処理に少なくとも必要な領域である。ワーク領域４２には、たとえば、システムプログラムの起動に必要な設定データや、システムプログラムデータに基づく演算処理の結果が記憶される。また、ワーク領域４２には、アプリケーションプログラムデータを記憶でき、該アプリケーションプログラムデータに基づいてアプリケーションプログラムが起動する。システムメモリ４全体の記憶容量を２ギガバイトとするとき、ワーク領域４２の記憶容量は、たとえば、５１２メガバイトである。
【００４７】
イメージ領域４３は、システムメモリ４のうち、格納領域４１およびワーク領域４２以外の領域である。イメージ領域４３には、主に、入力画像データが記憶される。システムメモリ４全体の記憶容量を２ギガバイトとするとき、イメージ領域４３の記憶容量は、たとえば、１．４ギガバイトである。
【００４８】
インターフェイス部７は、ＵＳＢ（Universal Serial Bus）接続、ＥＴＨＥＲネット（登録商標）接続などのための接続部である。たとえば、画像処理装置１００は、インターフェイス部７を介してＳＤメモリカードやＵＳＢメモリなどを接続でき、これらに記憶されている画像データを入力画像データとして記憶することができる。表示部８は、たとえば、タッチパネルなどから構成される。表示部８には、画像処理装置１００の操作用の画像、メモリチェック回路２によるメモリチェックの結果などが表示される。
【００４９】
このような画像処理装置１００によれば、システムメモリ４に記憶された入力画像データに対して、システムプログラムデータに基づいて画像処理が行われて、出力画像データとして画像出力装置３００に出力される。また、画像処理装置１００によれば、以下に詳述するメモリチェック回路２によって、システムプログラムの起動処理において、システムメモリ４に対してメモリチェックが行われる。
【００５０】
図３は、メモリチェック回路２の構成を示すブロック図である。メモリチェック回路２は、制御用レジスタ部２１、第１メモリリード用ＤＭＡＣ（Direct Memory Access Controller）２２、第２メモリリード用ＤＭＡＣ２６、メモリライト用ＤＭＡＣ２３、チェック用データ生成部２５、および比較部２４を備える。
【００５１】
第１メモリリード用ＤＭＡＣ２２は、システムメモリ４からのデータの読み出しを、プロセッサ１を介さずに行うＤＭＡＣである。第１メモリリード用ＤＭＡＣ２２によって読み出されたデータは、比較部２４へ送られる。第１メモリリード用ＤＭＡＣ２２によるデータの読み出しは、１または複数バースト単位で行われる。１バーストでは、たとえば、８バイトのデータの読み出しが行われる。したがって、たとえば８バーストでは、６４バイトのデータの読み出しが連続的に行われることになる。
【００５２】
第２メモリリード用ＤＭＡＣ２６は、第１バッファメモリ９からのデータの読み出しを、プロセッサ１を介さずに行うＤＭＡＣである。第２メモリリード用ＤＭＡＣ２６によって読み出されたデータは、メモリライト用ＤＭＡＣ２３、チェック用データ生成部２５、および比較部２４へ送られる。第２メモリリード用ＤＭＡＣ２６によるデータの読み出しは、１または複数バースト単位で行われる。
【００５３】
メモリライト用ＤＭＡＣ２３は、送られてきたデータを、プロセッサ１を介さずに、システムメモリ４へ書き込むＤＭＡＣである。メモリライト用ＤＭＡＣ２３に送られてくるデータとしては、第２メモリリード用ＤＭＡＣ２６によって読み出されるデータと、後述するチェック用データ生成部２５によって生成されるチェック用データとがある。メモリライト用ＤＭＡＣ２３によるチェック用データの書き込みは、１あるいは複数バースト単位または１バイト単位で行われる。
【００５４】
１バイト単位でチェック用データを書き込む場合、メモリライト用ＤＭＡＣ２３は、書き込むべき１バイトのチェック用データを含む８バイト（１バースト分）のチェック用データをシステムメモリ４に送るとともに、該１バイトのチェック用データ以外の７バイトのチェック用データをマスクするデータマスク信号を送る。これによって、システムメモリ４に１バイトのチェック用データが書き込まれる。
【００５５】
本実施形態は、上記のように、第１メモリリード用ＤＭＡＣ２２と第２メモリリード用ＤＭＡＣ２６とメモリライト用ＤＭＡＣ２３との３つのＤＭＡＣによって、プロセッサ１を介さずにデータの読み出しおよびデータの書き込みを行っている。これに対し、本発明の他の実施形態として、１つのＤＭＡＣによって、プロセッサ１を介さずにデータの読み出しおよびデータの書き込みを行ってもよい。
【００５６】
制御用レジスタ部２１は、プロセッサ１によって送られてきたメモリチェック設定データを記憶するレジスタを含む。メモリチェック設定データは、システムメモリ４のメモリチェックにおける先頭アドレスを示す先頭アドレスデータ、およびメモリチェックを行う３つの領域の記憶容量を示すサイズデータを含む。また、メモリチェック設定データには、第１メモリリード用ＤＭＡＣ２２および第２メモリリード用ＤＭＡＣ２６によるデータの読み出し、およびメモリライト用ＤＭＡＣ２３によるチェック用データの書き込みをバースト単位で行うか１バイト単位で行うかを示すデータも含まれる。
【００５７】
また、制御用レジスタ部２１は、最後アドレスデータを記憶する機能も有する。最後アドレスデータとは、システムメモリ４および第１バッファメモリ９において、メモリライト用ＤＭＡＣ２３を介したデータの書き込み、または、第１メモリリード用ＤＭＡＣ２２もしくは第２メモリリード用ＤＭＡＣ２６を介したデータの読み出しが、最後に行われたアドレスを示すデータである。さらに、制御用レジスタ部２１は、メモリチェックの結果を記憶し、プロセッサ１に伝える機能も有する。
【００５８】
チェック用データ生成部２５は、後述する固定チェック用データ、擬似乱数チェック用データなどを生成し、メモリチェックに用いるチェック用データとして、メモリライト用ＤＭＡＣ２３および比較部２４へ送る。より詳細には、チェック用データ生成部２５は、チェック用データを生成してメモリライト用ＤＭＡＣ２３へ送った後、該チェック用データと同一のチェック用データを再度生成して、比較部２４へ送る。
【００５９】
また、チェック用データ生成部２５は、第２メモリリード用ＤＭＡＣ２６から送られてきたデータ、固定チェック用データ、および擬似乱数チェック用データなどを反転したデータである反転データを生成し、メモリチェックに用いるチェック用データとして、メモリライト用ＤＭＡＣ２３および比較部２４へ送る。たとえば、チェック用データ生成部２５は、反転データを生成するために、複数のＮＯＴ回路からなる信号反転回路を備えており、擬似乱数チェック用データなどを該信号反転回路によって反転させ、チェック用データとしてメモリライト用ＤＭＡＣ２３および比較部２４へ送る。
【００６０】
固定チェック用データは、メモリチェックが行われるときにおいて固定されているデータであり、メモリライト用ＤＭＡＣ２３へ送られた回数とは相関の無いデータである。固定チェック用データは、たとえば、１ビットごとに「０」の論理値と「１」の論理値とが繰り返されたデータであってもいいし、適当な整数を表したデータであってもいい。擬似乱数チェック用データは、メモリチェックが行われるときにおいて固定されていないデータであり、メモリライト用ＤＭＡＣ２３へ送るたびに値が変動する擬似的な乱数を表すデータである。チェック用データ生成部２５が生成するチェック用データとしては、固定チェック用データおよび擬似乱数チェック用データ以外にも、メモリライト用ＤＭＡＣ２３に送るたびに値が１ずつ増加する整数を表すインクリメントチェック用データなどであってもよい。
【００６１】
チェック用データ生成部２５は、擬似乱数チェック用データを生成する構成の場合、たとえば、２バイトの線形帰還シフトレジスタ（Linier Feedback Shift Register,ＬＦＳＲ）を並列的に４つ接続した回路と、８バイトの擬似乱数チェック用データを保持する取得レジスタとを含む。２バイトのＬＦＳＲは、各２バイトの、シードレジスタ、タップレジスタ、およびシフトレジスタからなる。シードレジスタおよびタップレジスタには所定の値が設定され、シフトレジスタは、シードレジスタおよびタップレジスタに設定された値に基づいて、１クロックごとに、２バイトの擬似乱数を表すデータを取得レジスタへ送る。
【００６２】
取得レジスタは、４つのＬＦＳＲから送られてきた各２バイトのデータを、８バイトの擬似乱数チェック用データとして保持し、該擬似乱数チェック用データを、メモリライト用ＤＭＡＣ２３および比較部２４へ送る。メモリライト用ＤＭＡＣ２３は、１バースト単位でシステムメモリ４への書き込みを行う場合は、１クロックで、８バイトの擬似乱数チェック用データを書き込む。また、メモリライト用ＤＭＡＣ２３は、１バイト単位でシステムメモリ４への書き込みを行う場合は、データマスク信号によるマスク位置をずらすことによって、８クロックで、８バイトの擬似乱数チェック用データを書き込む。
【００６３】
上記のようにチェック用データ生成部２５がタップレジスタおよびシードレジスタを備える場合、タップレジスタおよびシードレジスタに設定される値は、メモリチェック設定データの１つとして、プロセッサ１から制御用レジスタ部２１に送られる。
【００６４】
チェック用データ生成部２５は、固定チェック用データを生成する構成の場合、たとえば、８バイトの固定チェック用データを保持する取得レジスタを含む。この場合、メモリチェック設定データの１つとして、８バイトのデータが、プロセッサ１から制御用レジスタ部２１に送られ、そして取得レジスタに送られる。取得レジスタは、この８バイトのデータを固定チェック用データとして保持し、該固定チェック用データを、メモリライト用ＤＭＡＣ２３および比較部２４へ送る。
【００６５】
なお、チェック用データ生成部２５は、固定チェック用データを生成するか擬似乱数チェック用データを生成するかを選択可能な構成であってもよい。そのように選択可能な構成の場合、固定チェック用データを生成するか擬似乱数チェック用データを生成するかを示すデータは、メモリチェック設定データの１つとして、プロセッサ１から制御用レジスタ部２１に送られる。
【００６６】
比較部２４は、第１メモリリード用ＤＭＡＣ２２から送られてきたデータと、第２メモリリード用ＤＭＡＣ２６から送られてきたデータとの比較を、たとえば１バースト単位で行う。また、比較部２４は、第１メモリリード用ＤＭＡＣ２２から送られてきたデータと、チェック用データ生成部２５から送られてきたチェック用データとの比較も行う。
【００６７】
比較の結果、２つのデータが不一致であれば、比較部２４は、第１メモリリード用ＤＭＡＣ２２によって読み出されたシステムメモリ４のメモリセルに故障があるとして、故障があったことを示すデータを制御用レジスタ部２１へ送る。制御用レジスタ部２１は、メモリセルに故障があった場合、該メモリセルのアドレスを、先頭アドレスデータ、サイズデータ、および最後アドレスデータに基づいて特定して、特定したアドレスを記憶する。また、制御用レジスタ部２１は、故障したメモリセルに本来書き込まれるべきであったデータ（「０」の論理値または「１」の論理値）を、故障したメモリセルのアドレスに基づいて生成して、該データを記憶する。メモリセルに故障があったことを示すデータ、該メモリセルのアドレス、該メモリセルに本来書き込まれるべきであったデータは、制御用レジスタ部２１からプロセッサ１へ伝えられる。
【００６８】
プロセッサ１は、システムメモリ４のメモリセルに故障があったことを示すデータを受けると、たとえば、表示部８にシステムメモリ４のメモリセルが故障していることを表示させ、システムメモリ４の交換を促す。さらに、プロセッサ１は、故障したシステムメモリ４の検査のために、故障したメモリセルのアドレス、および該メモリセルに本来書き込まれるべきであったデータを、表示部８に表示させてもよい。
【００６９】
なお、メモリチェック回路２によって発見できるシステムメモリ４のメモリセルの故障モードとしては、該メモリセルに「０」の論理値および「１」の論理値の少なくとも一方が書き込めない故障モードだけではなく、たとえば、該メモリセルのデータが他のメモリセルへの書き込みに付随して変化するような故障モードもある。
【００７０】
次に、画像処理装置１００によって実行されるメモリチェック方法について説明する。図４は、メモリチェック方法を表すフローチャートである。本実施形態に係るメモリチェック方法では、第０ステップＳ０において、画像処理装置１００の起動処理が開始される。第０ステップＳ０の開始後、第１ステップＳ１では、メモリチェック回路２が、ワーク領域４２のメモリセルについてメモリチェックを行うとともに、プロセッサ１が、第２不揮発性メモリ６からの圧縮システムプログラムデータの読み出し、および第１バッファメモリ９への非圧縮システムプログラムデータの書き込みを開始する。第１ステップＳ１の開始後、第２ステップＳ２では、メモリチェック回路２が、格納領域４１のメモリセルについて、第１バッファメモリ９に書き込まれた非圧縮システムプログラムデータをチェック用データとして用いてメモリチェックを行う。第２ステップＳ２の開始後、第３ステップＳ３では、メモリチェック回路２が、イメージ領域４３のメモリセルについてメモリチェックを行うとともに、プロセッサ１が、第２ステップＳ２のメモリチェックにおいて格納領域４１に書き込まれたシステムプログラムデータに基づいて、システムプログラムの起動処理を行う。以下に、メモリチェック方法の各ステップについて詳細に説明する。
【００７１】
第０ステップＳ０では、まず、ユーザにより、または、画像処理装置１００以外の機器により、画像処理装置１００に電源が投入される。次に、プロセッサ１が、キャッシュメモリ３、第１バッファメモリ９、および第２バッファメモリ１０を初期化した後、該第１不揮発性メモリ５内の１次ダウンローダプログラムデータに従って、第２不揮発性メモリ６からキャッシュメモリ３へ、２次ダウンローダプログラムデータを転送する。
【００７２】
そして、プロセッサ１は、キャッシュメモリ３に転送、格納された２次ダウンローダプログラムデータに従って、システムメモリ４の初期化および各種設定（モードレジスタ設定、同期設定など）を行う。また、このとき、プロセッサ１は、キャッシュメモリ３に格納された２次ダウンローダプログラムデータに従って、メモリチェック回路２を初期化し、該メモリチェック回路２に、メモリチェック設定データを転送する。最後に、プロセッサ１は、ワーク領域４２のメモリチェックをメモリチェック回路２に開始させ、これによって第１ステップＳ１が開始する。
【００７３】
第１ステップＳ１では、メモリチェック回路２は、ワーク領域４２のメモリチェックを開始する。これと並列して、プロセッサ１は、第２不揮発性メモリ６から圧縮システムプログラムデータを読み出し、該圧縮システムプログラムデータを第２バッファメモリ１０に書き込む。そして、プロセッサ１は、第２バッファメモリ１０に書き込まれた圧縮システムプログラムデータを伸張して非圧縮システムプログラムデータとし、該非圧縮システムプログラムデータを第１バッファメモリ９に書き込む。
【００７４】
本実施形態では、プロセッサ１が第２バッファメモリ１０内の圧縮システムプログラムデータを伸張し、第１バッファメモリ９に非圧縮システムプログラムデータを書き込む間に、メモリチェック回路２が、メモリチェックのために、メモリライト用ＤＭＡＣ２３を介したワーク領域４２へのチェック用データの書き込み、または、第１メモリリード用ＤＭＡＣ２２を介したワーク領域４２からのデータの読み出しを行う。そして、プロセッサ１が第２不揮発性メモリ６から圧縮システムプログラムデータを読み出して第２バッファメモリ１０に書き込むときには、メモリチェック回路２によるチェック用データの書き込みまたはデータの読み出しは行われない。すなわち、本実施形態では、メモリチェック回路２によるメモリチェックに対して、プロセッサ１による第２バッファメモリ１０への圧縮システムプログラムデータの転送処理が割り込むようになっている。このようにして、画像処理装置１００は、プロセッサ１による圧縮システムプログラムデータの読み出しおよび非圧縮システムプログラムデータの書き込みと、メモリチェック回路２によるメモリチェックとを、並列して行う。
【００７５】
なお、本発明の他の実施形態としては、画像処理装置１００は、プロセッサ１が第２不揮発性メモリ６にアクセスするのと同時に、メモリチェック回路２がシステムメモリ４にアクセスできる構成であってもよい。そのような構成であれば、プロセッサ１による第２不揮発性メモリ６からの圧縮システムプログラムデータの読み出しと、メモリチェック回路２によるチェック用データの書き込みまたはデータの読み出しとを、同時に行うことができる。
【００７６】
圧縮システムプログラムデータの伸張処理について、本実施形態では、プロセッサ１が行っているけれども、本発明の他の実施形態としては、圧縮システムプログラムデータの伸張処理を行う伸張処理回路を設けてもよい。伸張処理回路は、伸張処理専用のデジタル電子回路であり、第１バッファメモリ９からの直接的なデータの読み出しが可能に接続されるとともに、第２バッファメモリ１０への直接的なデータの書き込みが可能に接続される。このような伸張処理回路を設けることによって、プロセッサ１に掛かる負荷を軽減することができる。
【００７７】
メモリチェック回路２は、ワーク領域４２のメモリチェックが完了すると、該メモリチェックの完了を、プロセッサ１に伝える。このとき、本実施形態では、プロセッサ１による第１バッファメモリ９への非圧縮システムプログラムデータの書き込み処理が既に完了していれば、第１ステップＳ１の処理が完了し、第１バッファメモリ９への非圧縮システムプログラムデータの書き込み処理が完了していなければ、その書き込み処理の完了によって第１ステップＳ１の処理が完了する。第１ステップＳ１の処理が完了すると、プロセッサ１は、格納領域４１のメモリチェックをメモリチェック回路２に開始させ、これによって第２ステップＳ２が開始する。
【００７８】
第２ステップＳ２では、メモリチェック回路２が、格納領域４１のメモリチェックを行う。格納領域４１のメモリチェックは、システムプログラムデータをチェック用データとして用いて行われる。本実施形態では、メモリチェック回路２は、システムプログラムデータを反転したデータである反転システムプログラムデータをチェック用データとして用いて格納領域４１のメモリチェックを行い、その後、システムプログラムデータをチェック用データとして用いて格納領域４１のメモリチェックを行う。このようにシステムプログラムデータをチェック用データとして用いてメモリチェックを行うことにより、格納領域４１にシステムプログラムデータ全体が書き込まれる（格納される）ことになる。
【００７９】
なお、本実施形態では、上述したように、システムプログラムデータ全体のデータ量よりも格納領域４１の記憶容量が大きい。そして、本実施形態では、メモリチェック回路２は、格納領域４１におけるシステムプログラムデータが書き込まれたメモリセル以外のメモリセルについて、擬似乱数チェック用データまたは固定チェック用データを用いてメモリチェックを行う。
【００８０】
格納領域４１のメモリチェックが完了すると、メモリチェック回路２は、該メモリチェックの完了をプロセッサ１に伝え、これによって第２ステップＳ２が完了する。第２ステップＳ２の処理が完了すると、プロセッサ１は、イメージ領域４３のメモリチェックをメモリチェック回路２に開始させ、これによって第３ステップＳ３が開始する。
【００８１】
第３ステップＳ３では、メモリチェック回路２は、イメージ領域４３のメモリチェックを開始する。これと並列して、プロセッサ１は、システムプログラムの起動処理を開始し、さらに、アプリケーションプログラムの起動処理、ならびに、外部機器および表示部８などの初期化処理を開始する。システムプログラムの起動処理およびアプリケーションプログラムの起動処理は、ワーク領域４２上で行われる。以下では、システムプログラムの起動処理、アプリケーションプログラムの起動処理、ならびに、外部機器および表示部８などの初期化処理を、各種処理と称する。
【００８２】
本実施形態では、プロセッサ１がシステムプログラムデータに基づいて演算処理を行ったり、アプリケーションプログラムデータに基づいて演算処理を行ったりする間に、メモリチェック回路２が、メモリチェックのために、メモリライト用ＤＭＡＣ２３を介したイメージ領域４３へのチェック用データの書き込み、または、第１メモリリード用ＤＭＡＣ２２を介したイメージ領域４３からのデータの読み出しを行う。そして、プロセッサ１がシステムメモリ４のワーク領域４２にデータを書き込んだり読み出したりするときには、メモリチェック回路２によるチェック用データの書き込みまたはデータの読み出しは行われない。すなわち、本実施形態では、メモリチェック回路２によるメモリチェックに対して、プロセッサ１によるワーク領域４２へのデータの書き込みまたはデータの読み出しが割り込むようになっている。このようにして、画像処理装置１００は、プロセッサ１による各種処理と、メモリチェック回路２によるメモリチェックとを、並列して行う。
【００８３】
なお、本発明の他の実施形態としては、画像処理装置１００は、プロセッサ１がワーク領域４２にアクセスするのと同時に、メモリチェック回路２がイメージ領域４３にアクセスできる構成であってもよい。そのような構成であれば、プロセッサ１による各種処理と、メモリチェック回路２によるチェック用データの書き込みまたはデータの読み出しとを、同時に行うことができる。
【００８４】
メモリチェック回路２は、イメージ領域４３のメモリチェックが完了すると、該メモリチェックの完了を、プロセッサ１に伝える。このとき、プロセッサ１による各種処理が既に完了していれば、第３ステップＳ３の処理が完了し、プロセッサ１による各種処理が完了していなければ、その各種処理の完了によって第３ステップＳ３の処理が完了する。第３ステップＳ３の処理が完了すると、プロセッサ１は、表示部８に、画像処理装置１００が使用可能になったことを表示させる。
【００８５】
なお、本実施形態におけるメモリチェック方法では、第１ステップＳ１、第２ステップＳ２、および第３ステップＳ３において、メモリセルに故障があった場合、メモリチェック回路２は、メモリセルに故障があったことをプロセッサ１に伝え、その後、メモリセルに故障が無かった場合と同様に、メモリチェックを続行する。たとえば、第１ステップＳ１におけるメモリチェックでワーク領域４２のメモリセルに故障があった場合、メモリチェック回路２は、その故障したメモリセルのアドレス以降のアドレスのメモリセルについて、メモリチェックを続行し、ワーク領域４２のすべてのメモリセルについてメモリチェックを行う。本発明の他の実施形態としては、画像処理装置１００は、メモリチェック回路２がプロセッサ１にメモリセルの故障を伝えた後、メモリチェック回路２によるメモリチェックを停止して、ユーザの指示を待つように構成されていてもよい。
【００８６】
次に、第１ステップＳ１におけるメモリチェックについて詳細に説明する。図５は、第１ステップＳ１におけるメモリチェック回路２による処理を表すフローチャートである。第１ステップＳ１の前の第０ステップＳ０において、制御用レジスタ部２１には、プロセッサ１からメモリチェック設定データが送られており、このメモリチェック設定データに基づいて、メモリチェック回路２によるメモリチェックが行われる。なお、制御用レジスタ部２１に送られるメモリチェック設定データは、第０ステップＳ０において一括で送られる必要は無く、たとえば、第１ステップＳ１において、必要に応じて適当な時期に、プロセッサ１から制御用レジスタ部２１に送られてもよい。
【００８７】
第１ステップＳ１におけるメモリチェックでは、プロセッサ１から制御用レジスタ部２１に、ワーク領域４２のメモリチェックを開始する命令が伝えられると、メモリチェック回路２によって、以下に説明するステップＡ０〜ステップＡ１５の処理が行われる。
【００８８】
ステップＡ０では、制御用レジスタ部２１が、チェック用データ生成部２５に、チェック用データ（固定チェック用データまたは擬似乱数チェック用データ）を生成して、生成したチェック用データをメモリライト用ＤＭＡＣ２３に送るように指示を出す。
【００８９】
ステップＡ１では、チェック用データ生成部２５が、チェック用データを生成して、生成したチェック用データをメモリライト用ＤＭＡＣ２３に送る。そして、メモリライト用ＤＭＡＣ２３が、ワーク領域４２の先頭から、１バイト単位または１あるいは複数バースト単位で、送られてきたチェック用データを書き込む。
【００９０】
ステップＡ２では、制御用レジスタ部２１が、ワーク領域４２についての先頭アドレスデータ、サイズデータ、および最後アドレスデータに基づいて、ワーク領域４２すべてにチェック用データが書き込まれたか否かを判断する。ワーク領域４２すべてにチェック用データが書き込まれていれば、メモリチェック回路２による処理はステップＡ３へ進み、ワーク領域４２すべてにチェック用データが書き込まれていなければ、メモリチェック回路２による処理はステップＡ１へ戻る。
【００９１】
ステップＡ３では、制御用レジスタ部２１が、第１メモリリード用ＤＭＡＣ２２に、ワーク領域４２のメモリセルのデータを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送るように指示を出す。また、これと並列して、制御用レジスタ部２１は、チェック用データ生成部２５に、ワーク領域４２に書き込んだチェック用データと同一のチェック用データを生成し、生成したチェック用データを比較部２４に送るように指示を出す。
【００９２】
ステップＡ４では、第１メモリリード用ＤＭＡＣ２２が、ワーク領域４２の先頭から、データを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送る。また、これと並列して、チェック用データ生成部２５が、ワーク領域４２に書き込んだチェック用データと同一のチェック用データを生成し、生成したチェック用データを比較部２４に送る。
【００９３】
ステップＡ５では、比較部２４が、第１メモリリード用ＤＭＡＣ２２から送られてきたデータと、チェック用データ生成部２５から送られてきたデータとを比較し、２つのデータが一致するか否かを判断する。データの比較は、たとえば、１バースト単位（８バイト単位）で行われる。データが一致した場合、メモリチェック回路２による処理はステップＡ６へ進み、データが一致しなかった場合、メモリチェック回路２による処理はステップＡ１４へ進む。
【００９４】
ステップＡ６では、制御用レジスタ部２１が、ワーク領域４２についての先頭アドレスデータ、サイズデータ、および最後アドレスデータに基づいて、ワーク領域４２すべてについて、ステップＡ５における比較部２４による比較が行われたか否かを判断する。ワーク領域４２すべてについて比較が行われていれば、メモリチェック回路２による処理はステップＡ７へ進み、ワーク領域４２すべてについて比較が行われていなければ、メモリチェック回路２による処理はステップＡ４へ戻る。
【００９５】
ステップＡ７では、制御用レジスタ部２１が、ステップＡ１においてワーク領域４２に書き込んだチェック用データを消去するとともに、チェック用データ生成部２５に、ステップＡ１においてワーク領域４２に書き込んだチェック用データを反転した反転データを生成して、生成した反転データをメモリライト用ＤＭＡＣ２３に送るように指示を出す。また、これと並列して、制御用レジスタ部２１は、第１メモリリード用ＤＭＡＣ２２に、ワーク領域４２からのデータの読み出しを停止するように指示を出す。
【００９６】
本実施形態のように、メモリチェックにおいて、上記のような反転データを用いることで、メモリセルの故障をより確実に発見することができる。たとえば、１つのチェック用データを用いてメモリチェックを行うと、メモリセルに、「０」の論理値が書き込めることが確認できる。そして、このチェック用データの反転データを用いてメモリチェックを行うと、同じメモリセルに「１」の論理値も書き込めることが確認できる。このように、反転データを用いてメモリチェックを行うことで、メモリセルに「０」の論理値と「１」の論理値との両方の値を正常に書き込めることを確認できる。
【００９７】
ステップＡ８では、チェック用データ生成部２５が、チェック用データとして反転データを生成して、メモリライト用ＤＭＡＣ２３に送る。そして、メモリライト用ＤＭＡＣ２３が、ワーク領域４２の先頭から、１バイト単位または１あるいは複数バースト単位で、送られてきた反転データを書き込む。
【００９８】
ステップＡ９では、制御用レジスタ部２１が、ワーク領域４２についての先頭アドレスデータ、サイズデータ、および最後アドレスデータに基づいて、ワーク領域４２すべてに反転データが書き込まれたか否かを判断する。ワーク領域４２すべてに反転データが書き込まれていれば、メモリチェック回路２による処理はステップＡ１０へ進み、ワーク領域４２すべてに反転データが書き込まれていなければ、メモリチェック回路２による処理はステップＡ８へ戻る。
【００９９】
ステップＡ１０では、制御用レジスタ部２１が、第１メモリリード用ＤＭＡＣ２２に、ワーク領域４２のメモリセルのデータを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送るように指示を出す。また、これと並列して、制御用レジスタ部２１は、チェック用データ生成部２５に、ワーク領域４２に書き込んだ反転データと同一の反転データを生成し、生成した反転データを比較部２４に送るように指示を出す。
【０１００】
ステップＡ１１では、第１メモリリード用ＤＭＡＣ２２が、ワーク領域４２の先頭から、データを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送る。また、これと並列して、チェック用データ生成部２５が、ワーク領域４２に書き込んだ反転データと同一の反転データを生成し、生成した反転データを比較部２４に送る。
【０１０１】
ステップＡ１２では、比較部２４が、第１メモリリード用ＤＭＡＣ２２から送られてきたデータと、チェック用データ生成部２５から送られてきたデータとを比較し、２つのデータが一致するか否かを判断する。データの比較は、たとえば、１バースト単位（８バイト単位）で行われる。データが一致した場合、メモリチェック回路２による処理はステップＡ１３へ進み、データが一致しなかった場合、メモリチェック回路２による処理はステップＡ１４へ進む。
【０１０２】
ステップＡ１３では、制御用レジスタ部２１が、ワーク領域４２についての先頭アドレスデータ、サイズデータ、および最後アドレスデータに基づいて、ワーク領域４２すべてについて、ステップＡ１２における比較部２４による比較が行われたか否かを判断する。ワーク領域４２すべてについて比較が行われていれば、メモリチェック回路２による処理はステップＡ１５へ進み、ワーク領域４２すべてについて比較が行われていなければ、メモリチェック回路２による処理はステップＡ１１へ戻る。
【０１０３】
ステップＡ１４の処理は、ステップＡ５またはステップＡ１２においてデータが一致しなかった場合に行われる処理であり、メモリセルに故障が発見された後の処理である。システムメモリ４へ書き込んだデータと、システムメモリ４から読み出したデータとが一致しないということは、システムメモリ４へ正常なデータが書き込めないということである。すなわち、システムメモリ４のメモリセルに故障が生じているということである。そのため、ステップＡ１４では、制御用レジスタ部２１は、故障しているメモリセルのアドレスを記憶するとともに、システムメモリ４のメモリセルに故障が生じていることをプロセッサ１に伝える。
【０１０４】
本実施形態では、メモリチェック回路２は、プロセッサ１にメモリセルの故障を伝えた後、ステップＡ１〜ステップＡ１３の処理に準じた処理を行って、故障しているメモリセル以外のワーク領域４２のメモリセルすべてについてメモリチェックを行い、他のメモリセルにも故障が生じていればその故障したメモリセルのアドレスを制御用レジスタ部２１に記憶する。そして、メモリチェック回路２は、ワーク領域４２のすべてのメモリセルについてメモリチェックが完了すると、処理をステップＡ１５へ進める。
【０１０５】
このように、本実施形態では、ワーク領域４２の一部のメモリセルが故障していても、ステップＡ１４においてワーク領域４２のすべてのメモリセルについてメモリチェックを行う。したがって、故障したシステムメモリ４についての情報をより多く取得でき、故障原因の特定が容易になる。
【０１０６】
ステップＡ１５では、制御用レジスタ部２１が、ステップＡ８においてワーク領域４２に書き込んだ反転データを消去するとともに、格納領域４１のメモリチェックが完了したことを、プロセッサ１に伝える。これによって、上述したメモリチェック方法の第１ステップＳ１が終了する。なお、上述した第３ステップＳ３におけるイメージ領域４３のメモリチェックも、上記ステップＡ０〜ステップＡ１５の処理と同様に行われる。
【０１０７】
次に、第２ステップＳ２におけるメモリチェックについて詳細に説明する。図６Ａおよび図６Ｂは、第２ステップＳ２におけるメモリチェック回路２による処理を表すフローチャートである。
【０１０８】
第２ステップＳ２におけるメモリチェックでは、プロセッサ１から制御用レジスタ部２１に、格納領域４１のメモリチェックを開始する命令が伝えられると、メモリチェック回路２によって、以下に説明するステップＢ０〜ステップＢ１７の処理が行われる。
【０１０９】
ステップＢ０では、制御用レジスタ部２１が、第２メモリリード用ＤＭＡＣ２６に、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、読み出したデータをチェック用データ生成部２５に送るように指示を出す。また、制御用レジスタ部２１は、チェック用データ生成部２５に、送られてきた非圧縮システムプログラムデータを反転し、反転システムプログラムデータを生成して、生成した反転システムプログラムデータをメモリライト用ＤＭＡＣ２３に送るように指示を出す。
【０１１０】
ステップＢ１では、第２メモリリード用ＤＭＡＣ２６が、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、該非圧縮システムプログラムデータをチェック用データ生成部２５に送り、チェック用データ生成部２５が、チェック用データとして、該非圧縮システムプログラムデータから反転システムプログラムデータを生成して、メモリライト用ＤＭＡＣ２３に送る。そして、メモリライト用ＤＭＡＣ２３が、格納領域４１の先頭から、１バイト単位または１あるいは複数バースト単位で、送られてきた反転システムプログラムデータを書き込む。
【０１１１】
ステップＢ２では、制御用レジスタ部２１が、格納領域４１に、反転システムプログラムデータ全体が書き込まれたか否かを判断する。ここで、反転システムプログラムデータ全体とは、非圧縮システムプログラムデータ全体を反転したデータを意味する。格納領域４１に反転システムプログラムデータ全体が書き込まれていれば、メモリチェック回路２による処理はステップＢ３へ進み、格納領域４１に反転システムプログラムデータ全体が書き込まれていなければ、メモリチェック回路２による処理はステップＢ１へ戻る。
【０１１２】
ステップＢ３では、制御用レジスタ部２１が、第１メモリリード用ＤＭＡＣ２２に、格納領域４１のメモリセルのデータを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送るように指示を出す。また、これと並列して、制御用レジスタ部２１は、第２メモリリード用ＤＭＡＣ２６に、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、読み出したデータをチェック用データ生成部２５に送るように指示を出すとともに、チェック用データ生成部２５に、送られてきた非圧縮システムプログラムデータから反転システムプログラムデータを生成して、生成した反転システムプログラムデータを比較部２４に送るように指示を出す。
【０１１３】
ステップＢ４では、第１メモリリード用ＤＭＡＣ２２が、格納領域４１の先頭から、データを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送る。また、これと並列して、第２メモリリード用ＤＭＡＣ２６が、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、該非圧縮システムプログラムデータをチェック用データ生成部２５に送り、チェック用データ生成部２５が、チェック用データとして、該非圧縮システムプログラムデータから反転システムプログラムデータを生成して、比較部２４に送る。
【０１１４】
ステップＢ５では、比較部２４が、第１メモリリード用ＤＭＡＣ２２から送られてきたデータと、チェック用データ生成部２５から送られてきたデータとを比較し、２つのデータが一致するか否かを判断する。データの比較は、たとえば、１バースト単位（８バイト単位）で行われる。データが一致した場合、メモリチェック回路２による処理はステップＢ６へ進み、データが一致しなかった場合、メモリチェック回路２による処理はステップＢ１６へ進む。
【０１１５】
ステップＢ６では、制御用レジスタ部２１が、反転システムプログラムデータ全体について、ステップＢ５における比較部２４による比較が行われたか否かを判断する。反転システムプログラムデータ全体について比較が行われていれば、メモリチェック回路２による処理はステップＢ７へ進み、反転システムプログラムデータ全体について比較が行われていなければ、メモリチェック回路２による処理はステップＢ４へ戻る。
【０１１６】
ステップＢ７では、制御用レジスタ部２１が、ステップＢ１において格納領域４１に書き込んだ反転システムプログラムデータを消去する。また、制御用レジスタ部２１は、第２メモリリード用ＤＭＡＣ２６に、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、読み出したデータをメモリライト用ＤＭＡＣ２３に送るように指示を出す。また、これと並列して、制御用レジスタ部２１は、第１メモリリード用ＤＭＡＣ２２に、格納領域４１からのデータの読み出しを停止するように指示を出す。
【０１１７】
ステップＢ８では、第２メモリリード用ＤＭＡＣ２６が、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、該非圧縮システムプログラムデータをメモリライト用ＤＭＡＣ２３に送る。そして、メモリライト用ＤＭＡＣ２３が、格納領域４１の先頭から、１バイト単位または１あるいは複数バースト単位で、送られてきた非圧縮システムプログラムデータを書き込む。
【０１１８】
ステップＢ９では、制御用レジスタ部２１が、格納領域４１に、非圧縮システムプログラムデータ全体が書き込まれたか否かを判断する。格納領域４１に非圧縮システムプログラムデータ全体が書き込まれていれば、メモリチェック回路２による処理はステップＢ１０へ進み、格納領域４１に非圧縮システムプログラムデータ全体が書き込まれていなければ、メモリチェック回路２による処理はステップＢ８へ戻る。
【０１１９】
ステップＢ１０では、制御用レジスタ部２１が、第１メモリリード用ＤＭＡＣ２２に、格納領域４１のメモリセルのデータを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送るように指示を出す。また、これと並列して、制御用レジスタ部２１は、第２メモリリード用ＤＭＡＣ２６に、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送るように指示を出す。
【０１２０】
ステップＢ１１では、第１メモリリード用ＤＭＡＣ２２が、格納領域４１の先頭から、データを１または複数バースト単位で読み出し、読み出したデータを比較部２４に送る。また、これと並列して、第２メモリリード用ＤＭＡＣ２６が、第１バッファメモリ９に記憶された非圧縮システムプログラムデータを１または複数バースト単位で読み出し、該非圧縮システムプログラムデータを比較部２４に送る。
【０１２１】
ステップＢ１２では、比較部２４が、第１メモリリード用ＤＭＡＣ２２から送られてきたデータと、第２メモリリード用ＤＭＡＣ２６から送られてきたデータとを比較し、２つのデータが一致するか否かを判断する。データの比較は、たとえば、１バースト単位（８バイト単位）で行われる。データが一致した場合、メモリチェック回路２による処理はステップＢ１３へ進み、データが一致しなかった場合、メモリチェック回路２による処理はステップＢ１６へ進む。
【０１２２】
ステップＢ１３では、制御用レジスタ部２１が、非圧縮システムプログラムデータ全体について、ステップＢ１２における比較部２４による比較が行われたか否かを判断する。非圧縮システムプログラムデータ全体について比較が行われていれば、メモリチェック回路２による処理はステップＢ１４へ進み、非圧縮システムプログラムデータ全体について比較が行われていなければ、メモリチェック回路２による処理はステップＢ１１へ戻る。
【０１２３】
ステップＢ１４では、制御用レジスタ部２１が、格納領域４１についての先頭アドレスデータ、サイズデータ、および最後アドレスデータに基づいて、格納領域４１内に、ステップＢ８において非圧縮システムプログラムデータが書き込まれていない領域（余剰領域）が存在するか否かを判断する。余剰領域が存在する場合、メモリチェック回路２による処理はステップＢ１５へ進み、余剰領域が存在しない場合、メモリチェック回路２による処理はステップＢ１７へ進む。
【０１２４】
ステップＢ１５では、余剰領域について、メモリチェック回路２によるメモリチェックが行われる。余剰領域についてのメモリチェックは、ステップＡ１〜ステップＡ１３の処理に準じた処理であり、余剰領域に固定チェック用データまたは擬似乱数チェック用データを書き込み、その後、余剰領域からデータを読み出して、書き込んだデータと読み出したデータとを比較し、２つのデータが一致するか否かをチェックする処理、および、余剰領域に固定チェック用データまたは擬似乱数チェック用データを反転した反転データを書き込み、その後、余剰領域からデータを読み出して、書き込んだデータと読み出したデータとを比較し、２つのデータが一致するか否かをチェックする処理である。
【０１２５】
ステップＢ１５の処理において、２つのデータが一致しなかった場合、すなわち、余剰領域のメモリセルに故障があった場合、メモリチェック回路２による処理はステップＢ１６へ進み、２つのデータが一致した場合、制御用レジスタ部２１はステップＢ１５において余剰領域に書き込んだデータを消去し、メモリチェック回路２による処理はステップＢ１７へ進む。
【０１２６】
ステップＢ１６の処理は、ステップＢ５、ステップＢ１２、またはステップＢ１５においてデータが一致しなかった場合に行われる処理であり、メモリセルに故障が発見された後の処理である。ステップＢ１６では、制御用レジスタ部２１は、故障しているメモリセルのアドレスを記憶するとともに、システムメモリ４のメモリセルに故障が生じていることをプロセッサ１に伝える。
【０１２７】
本実施形態では、メモリチェック回路２は、プロセッサ１にメモリセルの故障を伝えた後、ステップＡ１〜ステップＡ１３の処理に準じた処理を行って、故障しているメモリセル以外の格納領域４１のメモリセルすべてについてメモリチェックを行い、他のメモリセルにも故障が生じていればその故障したメモリセルのアドレスを制御用レジスタ部２１に記憶する。そして、メモリチェック回路２は、格納領域４１のすべてのメモリセルについてメモリチェックが完了すると、処理をステップＢ１７へ進める。
【０１２８】
ステップＢ１７では、格納領域４１のメモリチェックが完了したことを、プロセッサ１に伝える。これによって、上述したメモリチェック方法の第２ステップＳ２が終了する。
【０１２９】
このような本実施形態によれば、格納領域４１のメモリチェックのときに、システムプログラムデータをチェック用データとして用いているので、格納領域４１のチェックが完了することで、システムプログラムデータ全体が格納領域４１に格納されることになる。したがって、システムプログラムデータ以外のチェック用データを用いてメモリチェックを行った後に、格納領域４１にシステムプログラムデータを格納する場合と比較して、システムプログラムの起動処理の完了までに掛かる時間を短縮することができる。これによって、画像処理装置１００を早く使用可能にすることができる。
【０１３０】
また本実施形態では、メモリチェック回路２が第１メモリリード用ＤＭＡＣ２２、第２メモリリード用ＤＭＡＣ２６、およびメモリライト用ＤＭＡＣ２３を介してシステムメモリ４のメモリチェックを行うので、システムメモリ４のすべてのメモリセルについてメモリチェックを行うときであっても、プロセッサ１に掛かる負荷を軽減することができる。また本実施形態では、上述した第３ステップＳ３において、プロセッサ１とメモリチェック回路２とにより、システムプログラムの起動処理とシステムメモリ４のメモリチェックとを並列して行うことができる。これによって、システムプログラムの起動処理の完了までに掛かる時間を短縮することができる。
【０１３１】
また本実施形態では、格納領域４１に対して、まず、反転システムプログラムデータをチェック用データとして用いてメモリチェックを行い、その後、システムプログラムデータをチェック用データとして用いてメモリチェックを行っている。したがって、格納領域４１のメモリセルの故障をより確実に発見することができる。
【０１３２】
また本実施形態では、画像処理装置１００は、圧縮システムプログラムデータを記憶するための第２バッファメモリ１０を備え、該第２バッファメモリに記憶された圧縮システムプログラムデータが伸張されて非圧縮システムプログラムデータとなって、第１バッファメモリ９に記憶される。そして、第１バッファメモリ９に記憶される非圧縮システムプログラムデータがチェック用データとして用いられて、格納領域４１のメモリチェックが行われる。したがって、本実施形態では、第２不揮発性メモリ６内でシステムプログラムデータが圧縮されていても、システムプログラムデータを用いた格納領域４１のメモリチェックを行うことができる。よって、第２不揮発性メモリ６内において、システムプログラムデータを圧縮し、データ量を小さくすることができる。
【０１３３】
また本実施形態では、格納領域４１におけるシステムプログラムデータが書き込まれたメモリセル以外のメモリセル（余剰領域のメモリセル）について、メモリチェック回路２によって、擬似乱数チェック用データまたは固定チェック用データを用いてメモリチェックを行っている。したがって、システムプログラムデータのデータ量よりも格納領域４１の記憶容量が大きくても、格納領域４１すべてについてメモリチェックを行うことができる。
【０１３４】
また、本実施形態では、上述した第３ステップＳ３において、システムプログラムの起動処理以外の各種処理（アプリケーションプログラムの起動処理、ならびに、外部機器および表示部８などの初期化処理）も、システムメモリ４のメモリチェックと並列して行うことができる。したがって、画像処理装置１００をより早く使用可能にすることができる。
【０１３５】
本実施形態において、メモリライト用ＤＭＡＣ２３によるデータの書き込みを１または複数バースト単位で行う場合、データを１バイト単位で書き込む場合と比較して、システムメモリ４のメモリチェックに要する時間を短縮することができる。これに対して、メモリライト用ＤＭＡＣ２３によるデータの書き込みを１バイト単位で行う場合、データマスク信号を使用することになるので、システムメモリ４のメモリチェックだけでなく、データマスク信号に異常が生じているか否かのチェックも行うことができる。なお、システムメモリ４のメモリチェックに要する時間を短縮するために、第１メモリリード用ＤＭＡＣ２２および第２メモリリード用ＤＭＡＣ２６によるデータの読み出しは、１または複数バースト単位で行うことが好ましい。
【０１３６】
また、本実施形態において、ワーク領域４２およびイメージ領域４３に対するチェック用データとして擬似乱数チェック用データを用いる場合、システムメモリ４のメモリセルの故障モードが他のメモリセルへの書き込みに付随して変化するような故障モードであったとしても、メモリセルの故障をより容易に発見することができる。ただし、擬似乱数チェック用データを用いる場合は、故障しているメモリセルに本来書き込まれるべきであったデータは、擬似乱数チェック用データを再度生成して、確認しなければならない。これに対して、チェック用データとして固定チェック用データを用いる場合は、故障しているメモリセルに本来書き込まれるべきであったデータを、チェック用データを再度生成することなく確認することができる。
【０１３７】
次に、本発明の第２実施形態である画像処理装置４００を備える複合機２０００について説明する。複合機２０００について、複合機１０００と共通する構成には、同一の参照符号を付して説明を省略する。
【０１３８】
図７は、複合機２０００の構成を示す模式図である。複合機２０００は、画像処理装置４００と、画像入力装置２００と、画像出力装置３００とを備える。画像処理装置４００は、プロセッサ１と、メモリチェック回路２と、キャッシュメモリ３と、システムメモリ４と、第１不揮発性メモリ５と、第２不揮発性メモリ６と、インターフェイス部７と、表示部８と、第１バッファメモリ９とを含む。
【０１３９】
本実施形態では、第２不揮発性メモリ６には、圧縮システムプログラムデータではなく、非圧縮システムプログラムデータが記憶されているものとする。また本実施形態では、非圧縮システムプログラムデータ全体のデータ量と比較して第１バッファメモリ９の記憶容量は小さいものとする。
【０１４０】
図８は、メモリチェック回路２の構成を示すブロック図である。メモリチェック回路２は、制御用レジスタ部２１、第１メモリリード用ＤＭＡＣ２２、第２メモリリード用ＤＭＡＣ２６、メモリライト用ＤＭＡＣ２３、チェック用データ生成部２５、および比較部２４を備える。
【０１４１】
本実施形態では、第２メモリリード用ＤＭＡＣ２６は、第１バッファメモリ９から読み出したデータを、メモリライト用ＤＭＡＣ２３および比較部２４へ送り、チェック用データ生成部２５には送らない。したがって、本実施形態では、チェック用データ生成部２５が、第２メモリリード用ＤＭＡＣ２６によって読み出したデータから反転データ（反転システムプログラムデータ）を生成することはない。
【０１４２】
次に、画像処理装置４００によって実行されるメモリチェック方法について説明する。図９は、メモリチェック方法を表すフローチャートである。本実施形態に係るメモリチェック方法では、第０ステップＴ０において、画像処理装置４００の起動処理が開始される。第０ステップＴ０の開始後、第１ステップＴ１では、メモリチェック回路２が、ワーク領域４２のメモリセルについてメモリチェックを行うとともに、プロセッサ１が、第２不揮発性メモリ６から第１バッファメモリ９への、非圧縮システムプログラムデータの転送を開始する。第１ステップＴ１の開始後、第２ステップＴ２では、メモリチェック回路２が、格納領域４１のメモリセルについて、第１バッファメモリ９に書き込まれた非圧縮システムプログラムデータをチェック用データとして用いてメモリチェックを行う。第２ステップＴ２の開始後、第３ステップＴ３では、メモリチェック回路２が、イメージ領域４３のメモリセルについてメモリチェックを行うとともに、プロセッサ１が、第２ステップＴ２のメモリチェックにおいて格納領域４１に書き込まれたシステムプログラムデータに基づいて、システムプログラムの起動処理を行う。以下に、メモリチェック方法の各ステップについて詳細に説明する。
【０１４３】
第０ステップＴ０では、まず、ユーザにより、または、画像処理装置４００以外の機器により、画像処理装置４００に電源が投入される。次に、プロセッサ１が、キャッシュメモリ３および第１バッファメモリ９を初期化した後、該第１不揮発性メモリ５内の１次ダウンローダプログラムデータに従って、第２不揮発性メモリ６からキャッシュメモリ３へ、２次ダウンローダプログラムデータを転送する。
【０１４４】
そして、プロセッサ１は、キャッシュメモリ３に転送、格納された２次ダウンローダプログラムデータに従って、システムメモリ４の初期化および各種設定（モードレジスタ設定、同期設定など）を行う。また、このとき、プロセッサ１は、キャッシュメモリ３に格納された２次ダウンローダプログラムデータに従って、メモリチェック回路２を初期化し、該メモリチェック回路２に、メモリチェック設定データを転送する。最後に、プロセッサ１は、ワーク領域４２のメモリチェックをメモリチェック回路２に開始させ、これによって第１ステップＴ１が開始する。
【０１４５】
第１ステップＴ１では、メモリチェック回路２は、ワーク領域４２のメモリチェックを開始する。これと並列して、プロセッサ１は、第２不揮発性メモリ６から第１バッファメモリ９へ、非圧縮システムプログラムデータを転送する。すなわち、プロセッサ１は、第２不揮発性メモリ６から非圧縮システムプログラムデータを読み出し、読み出した非圧縮システムプログラムデータを第１バッファメモリ９に書き込む。
【０１４６】
本実施形態では、プロセッサ１が第１バッファメモリ９に非圧縮システムプログラムデータを書き込むときに、メモリチェック回路２が、メモリチェックのために、メモリライト用ＤＭＡＣ２３を介したワーク領域４２へのチェック用データの書き込み、または、第１メモリリード用ＤＭＡＣ２２を介したワーク領域４２からのデータの読み出しを行う。そして、プロセッサ１が第２不揮発性メモリ６から非圧縮システムプログラムデータを読み出しているときには、メモリチェック回路２によるチェック用データの書き込みまたはデータの読み出しは行われない。すなわち、本実施形態では、メモリチェック回路２によるメモリチェックに対して、プロセッサ１による第１バッファメモリ９への非圧縮システムプログラムデータの転送処理が割り込むようになっている。このようにして、画像処理装置４００は、プロセッサ１による非圧縮システムプログラムデータの転送と、メモリチェック回路２によるメモリチェックとを、並列して行う。
【０１４７】
また本実施形態では、非圧縮システムプログラムデータ全体のデータ量よりも第１バッファメモリ９の記憶容量が小さいので、第１バッファメモリ９には、非圧縮システムプログラムデータの一部しか書き込まれない。これによって、第２不揮発性メモリ６から第１バッファメモリ９への非圧縮システムプログラムデータの転送が、非圧縮システムプログラムデータの一部のみの転送となるので、この転送の処理の方が、ワーク領域４２のメモリチェックの完了よりも早く完了する。
【０１４８】
そして、本実施形態では、プロセッサ１は、非圧縮システムプログラムデータの一部の転送がワーク領域４２のメモリチェックよりも早く完了すると、第１ステップＴ１におけるワーク領域４２のメモリチェックを一時中断して、以下の第２ステップＴ２の処理を開始し、第２ステップＴ２の処理を進めた後、第１ステップＴ１におけるワーク領域４２のメモリチェックを、中断したところから再開する。
【０１４９】
第２ステップＴ２では、プロセッサ１からの指示により、メモリチェック回路２が、非圧縮システムプログラムデータをチェック用データとして用いて、格納領域４１のメモリチェックを行う。より詳細には、メモリチェック回路２内の第２メモリリード用ＤＭＡＣ２６が、第１バッファメモリ９に書き込まれた非圧縮システムプログラムデータを１または複数バースト単位で読み出して、メモリライト用ＤＭＡＣ２３に送り、メモリライト用ＤＭＡＣ２３が、送られてきたデータを、格納領域４１の先頭から、１バイト単位または１あるいは複数バースト単位で書き込む。そして、第１メモリリード用ＤＭＡＣ２２が、格納領域４１の先頭から、１または複数バースト単位でデータを読み出して比較部２４に送るとともに、第２メモリリード用ＤＭＡＣ２６が、第１バッファメモリ９から非圧縮システムプログラムデータを、１または複数バースト単位で読み出して比較部２４に送る。比較部２４は、２つのデータが一致するか否かを判断し、一致した場合は、メモリセルに故障は生じていないとし、一致しなかった場合は、メモリセルに故障が生じているとする。
【０１５０】
メモリチェック回路２の制御用レジスタ部２１は、第１バッファメモリ９内の非圧縮システムプログラムデータをすべて用いて格納領域４１のメモリチェックが行われたと判断すると、格納領域４１のメモリチェックを一時中断して、中断したことをプロセッサ１に伝える。プロセッサ１は、第２ステップＴ２における格納領域４１のメモリチェックが一時中断すると、第１ステップＴ１におけるワーク領域４２のメモリチェックを続きから再開するとともに、転送されていない残りの非圧縮システムプログラムデータを、第２不揮発性メモリ６から第１バッファメモリ９へ転送する。そして、非圧縮システムプログラムデータの一部の転送が完了すると、プロセッサ１は、メモリチェック回路２に、第２ステップＴ２における格納領域４１のメモリチェックを続きから再開させる。
【０１５１】
このように本実施形態では、第１ステップＴ１の処理と第２ステップＴ２の処理とが交互に繰り返される。２つの処理が交互に繰り返されることで、格納領域４１に非圧縮システムプログラムデータ全体が書き込まれることになる。格納領域４１に非圧縮システムプログラムデータ全体が書き込まれた時点で、格納領域４１に余剰領域がある場合は、第１ステップＴ１の処理の完了後に、ステップＡ１〜ステップＡ１３の処理に準じた処理によって、余剰領域についてのメモリチェックが行われる。
【０１５２】
格納領域４１すべてのメモリチェックが完了すると、メモリチェック回路２は、該メモリチェックの完了をプロセッサ１に伝えるとともに、該メモリチェックにおいて余剰領域に書き込まれたデータを消去する。これによって第２ステップＴ２が完了する。第２ステップＴ２の処理が完了すると、プロセッサ１は、イメージ領域４３のメモリチェックをメモリチェック回路２に開始させ、これによって第３ステップＴ３が開始する。
【０１５３】
第３ステップＴ３では、メモリチェック回路２は、イメージ領域４３のメモリチェックを開始する。これと並列して、プロセッサ１は、システムプログラムの起動処理を開始し、さらに、アプリケーションプログラムの起動処理、ならびに、外部機器および表示部８などの初期化処理を開始する。システムプログラムの起動処理およびアプリケーションプログラムの起動処理は、ワーク領域４２を使用して行われる。
【０１５４】
メモリチェック回路２は、イメージ領域４３のメモリチェックが完了すると、該メモリチェックの完了を、プロセッサ１に伝える。このとき、プロセッサ１による各種処理が既に完了していれば、第３ステップＴ３の処理が完了し、プロセッサ１による各種処理が完了していなければ、その各種処理の完了によって第３ステップＴ３の処理が完了する。第３ステップＴ３の処理が完了すると、プロセッサ１は、表示部８に、画像処理装置４００が使用可能になったことを表示させる。
【０１５５】
なお、本実施形態におけるメモリチェック方法では、第１ステップＴ１、第２ステップＴ２、および第３ステップＴ３において、メモリセルに故障があった場合、メモリチェック回路２は、メモリセルに故障があったことをプロセッサ１に伝え、その後、メモリセルに故障が無かった場合と同様に、メモリチェックを続行する。
【０１５６】
このような本実施形態では、上記のように、第１ステップＴ１の処理と第２ステップＴ２の処理とが交互に繰り返されるので、第１ステップＴ１の処理および第２ステップＴ２の処理の両方が完了するまでに掛かる時間を短縮することができる。これによって、システムプログラムの起動処理の完了までに掛かる時間を短縮することができる。
【０１５７】
以下に、２つの処理の完了までに掛かる時間を短縮できることを説明する。図１０は、処理に掛かる時間を短縮することができることを示す概念図である。図１０（ａ）に示すように、本実施形態では、第１ステップＴ１における非圧縮システムプログラムデータの転送およびワーク領域４２のメモリチェックの並列処理と、第２ステップＴ２における格納領域４１のメモリチェックとが交互に繰り返される。これに対して、本発明の他の実施形態では、図１０（ｂ）に示すように、第１ステップＴ１におけるワーク領域４２のメモリチェックの完了後に、第２ステップＴ２の処理が開始する。
【０１５８】
したがって、図１０（ｂ）に示すように、他の実施形態では、２度目以降の非圧縮システムプログラムデータの転送処理とワーク領域４２のメモリチェックとが並列して行われず、図１０（ａ）に示すように、その転送処理に掛かる期間の分だけ、第２実施形態の方が早く処理が進むことになる。このように、本実施形態では、第１ステップＴ１の処理において、ワーク領域４２のメモリチェックと、非圧縮システムプログラムデータを第１バッファメモリ９に転送する複数回の処理とを並列して行うことができ、ワーク領域４２のメモリチェックに掛かる時間を有効に活用することができる。その結果、第１ステップＴ１の処理と第２ステップＴ２の処理との２つの処理の完了までに掛かる時間を短縮することができる。
【０１５９】
なお、本実施形態では、第２不揮発性メモリ６には非圧縮システムプログラムデータが記憶されているものとしたけれども、圧縮システムプログラムデータが記憶されていても、上記のように、第１ステップＴ１の処理と第２ステップＴ２の処理とを交互に繰り返すことは可能である。たとえば、予め非圧縮システムプログラムデータを分割しておき、分割されたデータごとに圧縮データを生成し、第２不揮発性メモリ６に記憶しておけばよい。そして、第２ステップＴ２が一時中断して第１ステップＴ１の処理が再開されるたびに、第２不揮発性メモリ６内の圧縮データを伸張して、非圧縮システムプログラムデータの一部として、第１バッファメモリ９に書き込めばよい。
【０１６０】
また本実施形態では、非圧縮システムプログラムデータを用いて格納領域４１のメモリチェックを行っているけれども、反転システムプログラムデータを用いたメモリチェックを行っていない。第１実施形態の説明で述べたように、あるデータと、そのデータの反転データとを用いてメモリチェックを行うことで、より確実にメモリの故障を発見することができる。これに対して、本実施形態における格納領域４１のメモリチェックでは、非圧縮システムプログラムデータのみを用いているので、格納領域４１のメモリチェックが不充分となるおそれがある。
【０１６１】
しかしながら、格納領域４１は、システムプログラムデータを格納するための領域であり、画像処理装置４００が起動している間は、記憶状態の変化がほとんど生じない領域である。そして、格納領域４１に記憶されている非圧縮システムプログラムデータが正当なデータであることは、第２ステップＴ２におけるメモリチェックによって確かめられている。したがって、本実施形態では、画像処理装置４００の起動には支障を来さない。そして、本実施形態では、反転システムプログラムデータをチェック用データとして用いたメモリチェックを省略することで、システムプログラムの起動処理の完了までに掛かる時間をより短縮することができる。
【０１６２】
上述した第１および２実施形態では、メモリチェック回路２は、本発明に係るメモリチェック方法を実行するための専用の電子回路である。本発明の他の実施形態としては、メモリチェック回路２の代わりとして、制御演算装置と半導体メモリとを設けることも可能である。すなわち、本発明の他の実施形態としては、本発明に係るメモリチェック方法を実行するためのプログラムデータを記憶する半導体メモリと、該プログラムデータに従って、プロセッサ１によるシステムプログラムの起動処理と並行して、システムメモリ４のメモリチェックを行う制御演算装置とを備える画像処理装置であってもよい。このような構成であれば、半導体メモリに他のプログラムデータを記憶させることができるので、制御演算装置によって他のプログラムを起動することが可能になる。
【０１６３】
また、上述した第１および２実施形態では、メモリチェック回路２は１つのみ設けられるけれども、本発明の他の実施形態としては、メモリチェック回路２が複数設けられてもよい。メモリチェック回路２を複数備えていれば、システムメモリ４のメモリチェックを分散して行うことができる。たとえば、イメージ領域４３のメモリチェックにおいて、イメージ領域４３をさらに細分化して、細分化された領域について、複数のメモリチェック回路２がそれぞれメモリチェックを行うということができる。
【符号の説明】
【０１６４】
１  プロセッサ
２  メモリチェック回路
３  キャッシュメモリ
４  システムメモリ
５  第１不揮発性メモリ
６  第２不揮発性メモリ
９  第１バッファメモリ
１０  第２バッファメモリ
２１  制御用レジスタ部
２２  第１メモリリード用ＤＭＡＣ
２３  メモリライト用ＤＭＡＣ
２４  比較部
２５  チェック用データ生成部
２６  第２メモリリード用ＤＭＡＣ
４１  格納領域
４２  ワーク領域
４３  イメージ領域
１００，４００  画像処理装置
２００  画像入力装置
３００  画像出力装置
１０００，２０００  複合機
【図１】
2012098962.tif 000003
【図２】
2012098962.tif 000004
【図３】
2012098962.tif 000005
【図４】
2012098962.tif 000006
【図５】
2012098962.tif 000007
【図６Ａ】
2012098962.tif 000008
【図６Ｂ】
2012098962.tif 000009
【図７】
2012098962.tif 000010
【図８】
2012098962.tif 000011
【図９】
2012098962.tif 000012
【図１０】
2012098962.tif 000013