(57)【要約】【課題】フラッシュメモリのプログラムをＲＡＭに展開して使用する場合、エラーの原因がいずれのメモリにあるのか特定できない。【解決手段】情報処理装置１０は、プログラムコードとこのプログラムコードの読み出し誤りを訂正するための第１の誤り訂正符号とを記憶するフラッシュメモリ２５と、このメモリ２５から読み出されたプログラムコード及び第１の誤り訂正符号を記憶するＲＡＭ２６と、このＲＡＭ２６に記憶されたプログラムコードを実行するＣＰＵ２１とを備えている。ＣＰＵ２１は、ＲＡＭ２６に記憶されたプログラムコードに基づいて第２の誤り訂正符号を算出する誤り訂正符号算出機能と、ＲＡＭ２６に記憶された第１の誤り訂正符号と前記誤り訂正符号算出部により算出された第２の誤り訂正符号とに基づいてメモリ２５及びＲＡＭ２６の記憶不良の有無を判定する判定機能とを有している。【選択図】図１
2010146226.tif 000002
【特許請求の範囲】
【請求項１】
プログラムコードと前記プログラムコードの読み出し誤りを訂正するための第１の誤り訂正符号とを記憶する不揮発性メモリと、
前記不揮発性メモリから読み出された前記プログラムコード及び前記第１の誤り訂正符号を記憶する揮発性メモリと、
前記揮発性メモリに記憶された前記プログラムコードを実行する実行ユニットとを備えた情報処理装置であって、
前記揮発性メモリに記憶された前記プログラムコードに基づいて第２の誤り訂正符号を算出する誤り訂正符号算出部と、
前記揮発性メモリに記憶された前記第１の誤り訂正符号と前記誤り訂正符号算出部により算出された前記第２の誤り訂正符号とに基づいて前記不揮発性メモリ及び前記揮発性メモリの記憶不良の有無を判定する判定部と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記判定部は、
前記揮発性メモリに記憶された前記第１の誤り訂正符号と前記誤り訂正符号算出部により算出された前記第２の誤り訂正符号とを比較し、
前記比較結果が一致の場合は、前記不揮発性メモリ及び前記揮発性メモリが正常と判定し、
前記比較結果が不一致の場合は、前記不揮発性メモリに記憶された前記第１の誤り訂正符号と前記揮発性メモリに記憶された前記第１の誤り訂正符号とを比較し、比較結果が一致の場合は前記不揮発性メモリの不良と判定し、比較結果が不一致の場合は前記揮発性メモリの不良と判定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記判定部は、前記不揮発性メモリを不良と判定した場合には、前記不揮発性メモリに記憶された前記第１の誤り訂正符号により、正しい状態に回復することを特徴とする請求項２記載の情報処理装置。
【請求項４】
圧縮されたプログラムコードと前記プログラムコードの読み出し誤りを訂正するための圧縮された第１の誤り訂正符号とを記憶する不揮発性メモリと、
前記不揮発性メモリから読み出された前記プログラムコード及び前記第１の誤り訂正符号を伸張する伸張手段と、
前記伸張手段により伸張された前記プログラムコード及び前記第１の誤り訂正符号を記憶する揮発性メモリと、
前記揮発性メモリに記憶された前記プログラムコードを実行する実行ユニットとを備えた情報処理装置であって、
前記揮発性メモリに記憶された前記プログラムコードに基づいて第２の誤り訂正符号を算出する誤り訂正符号算出部と、
前記揮発性メモリに記憶された前記第１の誤り訂正符号と前記誤り訂正符号算出部により算出された前記第２の誤り訂正符号とに基づいて前記不揮発性メモリ及び前記揮発性メモリの記憶不良の有無を判定する判定部と、
を備えたことを特徴とする情報処理装置。
【請求項５】
前記判定部は、
前記揮発性メモリに記憶された前記第１の誤り訂正符号と前記誤り訂正符号算出部により算出された前記第２の誤り訂正符号とを比較し、
前記比較結果が一致の場合は、前記不揮発性メモリ及び前記揮発性メモリが正常と判定し、
前記比較結果が不一致の場合は、前記伸張手段により伸張された前記第１の誤り訂正符号と前記揮発性メモリに記憶された前記第１の誤り訂正符号とを比較し、比較結果が一致の場合は前記不揮発性メモリの不良と判定し、比較結果が不一致の場合は前記揮発性メモリの不良と判定することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記判定部は、前記不揮発性メモリを不良と判定した場合には、前記不揮発性メモリに記憶された前記第１の誤り訂正符号により、正しい状態に回復することを特徴とする請求項５記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性メモリとランダム・アクセス・メモリ（以下「ＲＡＭ」という。）等の揮発性メモリとを有する画像処理装置等の情報処理装置に関するものである。
【背景技術】
【０００２】
一般に画像処理装置等の情報処理装置におけるメモリシステム部は、揮発性メモリ（例えば、ＲＡＭ）と不揮発性メモリを組み合わせて構成されている。揮発性メモリは一時的なデータの格納に使用され、不揮発性メモリは恒久的なデータやプログラムの保管に使用される。
【０００３】
以前は不揮発性メモリとして例えばマスク型のリード・オンリ・メモリ（以下「ＲＯＭ」という。）等を使うことが主流であったが、最近ではビット当たりの単価の安いＮＡＮＤ型ＦＬＡＳＨ・ＭＥＭＯＲＹ（フラッシュメモリ）（以下「ＮＡＮＤフラッシュ」という。）が使われることが多くなってきた。
【０００４】
ＮＡＮＤフラッシュは、不揮発性メモリであるＮＯＲ型フラッシュメモリ（以下「ＮＯＲフラッシュ」という。）等と比べ、回路規模を小さくすることが可能であり、ビット当たりの単価が安く、大きなサイズのプログラムを格納するのに適している。その反面、読み出し時間が長く、高速動作に向いていない。又、ビット落ちエラーが発生するため、使用に際しては誤り訂正回路やプログラムを使い、一旦揮発性メモリに展開してから使用するのが一般的な使用方法である。
【０００５】
このようなメモリシステム部にとって特に重要な点は、プログラムの展開に先立ち、揮発性メモリのチェックを行い、プログラムの展開先のメモリを検証することである。もし、展開先のメモリが故障したまま使用すると、装置の動作が停止してしまう等の不具合を引き起こす原因になる。
【０００６】
このような技術に関連して、例えば、下記の特許文献１に、不揮発性メモリのデータチェック方法が開示されている。
【０００７】
【特許文献１】特開２０００−２８５０３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の情報処理装置では、装置の安定を計るために、揮発性メモリのチェックを行ってから、プログラムの展開を行っているが、そのチェックの際に、不良（エラー）の原因が不揮発性メモリにあるのか、揮発性メモリにあるのか、特定できないので、保守点検等を行う際に不利不便であった。
【課題を解決するための手段】
【０００９】
本発明の情報処理装置は、プログラムコードと前記プログラムコードの読み出し誤りを訂正するための第１の誤り訂正符号とを記憶する不揮発性メモリと、前記不揮発性メモリから読み出された前記プログラムコード及び前記第１の誤り訂正符号を記憶する揮発性メモリと、前記揮発性メモリに記憶された前記プログラムコードを実行する実行ユニットとを備えた情報処理装置であって、前記揮発性メモリに記憶された前記プログラムコードに基づいて第２の誤り訂正符号を算出する誤り訂正符号算出部と、前記揮発性メモリに記憶された前記第１の誤り訂正符号と前記誤り訂正符号算出部により算出された前記第２の誤り訂正符号とに基づいて前記不揮発性メモリ及び前記揮発性メモリの記憶不良の有無を判定する判定部とを備えたことを特徴とする。
【００１０】
本発明の他の情報処理装置は、圧縮されたプログラムコードと前記プログラムコードの読み出し誤りを訂正するための圧縮された第１の誤り訂正符号とを記憶する不揮発性メモリと、前記不揮発性メモリから読み出された前記プログラムコード及び前記第１の誤り訂正符号を伸張する伸張手段と、前記伸張手段により伸張された前記プログラムコード及び前記第１の誤り訂正符号を記憶する揮発性メモリと、前記揮発性メモリに記憶された前記プログラムコードを実行する実行ユニットとを備えた情報処理装置であって、前記揮発性メモリに記憶された前記プログラムコードに基づいて第２の誤り訂正符号を算出する誤り訂正符号算出部と、前記揮発性メモリに記憶された前記第１の誤り訂正符号と前記誤り訂正符号算出部により算出された前記第２の誤り訂正符号とに基づいて前記不揮発性メモリ及び前記揮発性メモリの記憶不良の有無を判定する判定部とを備えたことを特徴とする。
【発明の効果】
【００１１】
本発明の情報処理装置によれば、揮発性メモリのチェックと不揮発性メモリのチェックを同時に行っているので、従来のように不揮発性メモリのデータを展開する前に揮発性メモリのチェックを行う必要がない。そのため、情報処理装置の起動時間を短縮できる。しかも、不揮発性メモリと揮発性メモリとに記憶されたプログラムの不一致が発生した場合、そのいずれのメモリのエラーなのかを的確に見分けることができる。
【００１２】
本発明の他の情報処理装置によれば、圧縮した状態でプログラムを記憶することができ、前記発明とほぼ同様の効果がある。
【発明を実施するための最良の形態】
【００１３】
本発明を実施するための最良の形態は、以下の好ましい実施例の説明を添付図面と照らし合わせて読むと、明らかになるであろう。但し、図面はもっぱら解説のためのものであって、本発明の範囲を限定するものではない。
【実施例１】
【００１４】
（実施例１の構成）
図１は、本発明の実施例１における情報処理装置の概略を示す構成図である。この図１には、情報処理装置の一例として、印刷装置を有する画像処理装置の構成図が示されている。
【００１５】
本実施例１の情報処理装置１０は、例えば、ホストコンピュータに接続されている。ホストコンピュータは、例えば、ＵＳＢ規格のインタフェース（以下「Ｉ／Ｆ」という。）やセントロニクスＩ／Ｆ等を装備したパーソナルコンピュータ（以下「ＰＣ」という。）１により構成され、このＰＣ１に対し、ＵＳＢＩ／Ｆケーブル等のケーブル２を介して本実施例１の情報処理装置１０が接続されている。
【００１６】
情報処理装置１０は、ＰＣ１の出力する画像情報を受信して画素データを生成し、内部の印刷装置３０に出力する装置であり、ＰＣ１に接続されたＵＳＢ規格等のＩ／Ｆ回路１１を有している。Ｉ／Ｆ回路１１にはメモリシステム部２０が接続され、このメモリシステム部２０に対し、バッファメモリ［例えば、ファーストイン・ファーストアウト・メモリ（以下「ＦＩＦＯ回路」という。）］１２を介して、印刷装置３０が接続されている。
【００１７】
メモリシステム部２０は、Ｉ／Ｆ回路１１に接続された中央処理装置（以下「ＣＰＵ」という。）２１を有している。ＣＰＵ２１は、例えば、３２ビット（bit）、５００ＭＨｚの実行速度を有しており、これにはＣＰＵバス２２を介して、メモリコントローラ２３が接続されている。メモリコントローラ２３は、ＣＰＵ２１からのデータ要求に基づき、指定されたアドレスに対応するデバイス（装置）を選択し、それに適したタイミングシーケンスでデータを取り込み、ＣＰＵ２１に返答するものであり、これには、プログラム等を記憶するメモリ（例えば、不揮発性メモリであるＮＯＲフラッシュ）２４、データ等を記憶するメモリ（例えば、不揮発性メモリであるＮＡＮＤフラッシュ）２５、及びデータ等を記憶する揮発性メモリ（例えば、ＲＡＭ）２６が接続されている。
【００１８】
ＮＯＲフラッシュ２４は、指定のアドレスにより直接データを読み出すことができ（即ち、データの読み出しがＲＡＭと同様にアドレス指定によるアクセスができ、コードをＲＡＭにコピーすることなく直接実行することが可能であり）、メモリシステム部２０の初期プログラムを格納しており、起動はここからプログラムを実行する。データの書き込みについては、一度ブロック単位で消去した後、書き込む。データの信頼性にも優れ、ＮＡＮＤフラッシュ２５では必要なエラー訂正が不要であるが、ＮＡＮＤフラッシュ２５に比べて集積度が劣り、書き込みが遅い等の欠点がある。
【００１９】
ＮＡＮＤフラッシュ２５は、読み出し方法が、ブロック番号を指定してデータを読み出す。即ち、ページと呼ばれる複数ビット単位でデータを読み出す（書き込みも同様である）。消去は、ブロックと呼ばれるページを複数で一まとめにした単位で一括して行われる。又、リテンションエラー（retention、保持エラー）が発生するため、データ書き込み時にページ内の誤り訂正コード（パリティ）を演算して冗長エリアにこの誤り訂正コードを書き込んでおき、データの読み出し時に一旦、揮発性メモリ（例えば、ＲＡＭ）２６に展開し、誤り検出及び訂正（Error  Checking  and  Correction、以下「ＥＣＣ」という。）を行う必要がある。
【００２０】
ＣＰＵバス２２に接続されたＲＡＭ２６及びＦＩＦＯ回路１２の内、ＲＡＭ２６に記憶されたプログラムコードは、実行ユニットであるＣＰＵ２１により実行される。ＦＩＦＯ回路１２は、ラスタライズ（raster  size）された画像データを一旦格納し、印刷装置３０の速度に同期して送信するための回路であり、この出力端子に、印刷装置３０の露光器が接続されている。
【００２１】
印刷装置３０は、ＦＩＦＯ回路１２から画像データが入力されると、紙等の印刷媒体上に画像を形成する装置である。この印刷装置３０は、電子写真法、インパクト力、インクの噴射等により、トナーやインクを印刷媒体上に転写及び定着させるものであれば、何れの方法であっても良いが、一例として、電子写真法を用いたもので説明する。
【００２２】
図２は、図１中のメモリシステム部２０を示す機能ブロック図である。
ＮＡＮＤフラッシュ２５は、複数（＃＝０〜ｎ）の物理ページ♯２５ａと、これに付随する複数（０’〜ｎ’）の冗長エリア２５ｂとにより構成されている。例えば、物理ページ＃２５ａは５１２バイト（byte）、冗長エリア２５ｂは１６byteの容量をそれぞれ持つ。ＮＡＮＤフラッシュ２５全体では、１６３８４個の物理ページ２５ａと、これに付随する冗長エリア２５ｂが備わっている。ＮＡＮＤフラッシュ２５に記憶されるプログラムは、５１２byte毎に区切り、若い番号のページから順に書き込まれている。書き込みはＲＯＭライタ等を使って行われる。冗長エリア２５ｂには、１ページのＥＣＣコードと論理ブロック番号が記録されている。ＥＣＣコードは、本来のデータである情報ビットから、誤り訂正に用いるチェックビットを抽出したものである。５１２byteの情報ビットから誤り２bitの検出と誤り１bitの訂正を行うには、１８bit、約３byteが必要となる。これらを物理ページ２５ａに付随する冗長エリア２５ｂに記憶することによって、誤りの検出だけではなく、誤りの訂正が可能になる。
【００２３】
ＲＡＭ２６は、複数（＃＝０〜ｎ）の論理ページ♯２６ａと、ＥＣＣテーブル２６ｂとを有し、全体で例えば２５６Ｍbyteの容量を持つ。任意の番地にＥＣＣコードエリアがある。ＥＣＣコードエリアは、展開されたページ毎に冗長エリア２５ｂのＥＣＣコード３byteと物理ページ番号２byteが組み合わされて書かれている。この領域（即ち、ＥＣＣテーブル）２６ｂは、４８Ｋbyteの容量が確保されている。
【００２４】
ＲＡＭ２６の出力側には、ＣＰＵ２１の機能である誤り訂正符号算出部（例えば、訂正コード計算手段）２１ａ、及び判定部（例えば、訂正コード比較手段）２１ｂが接続されている。訂正コード計算手段２１ａは、ＲＡＭ２６に記憶されたプログラムコードに基づいて第２の誤り訂正符号（誤り訂正コード）を算出するものであり、ＣＰＵ２１が後述のフローチャートにより論理ページ♯２６ａの情報ビットからＥＣＣコードを計算する機能を表したものである。
【００２５】
訂正コード比較手段２１ｂは、ＲＡＭ２６に記憶された第１の誤り訂正コードと、訂正コード計算手段２１ａにより算出された第２の誤り訂正コードとに基づいて、ＮＡＮＤフラッシュ２５及びＲＡＭ２６の記憶不良の有無を判定するものであり、ＣＰＵ２１が後述のフローチャートにより論理ページ♯２６ａから計算したＥＣＣコード３byteと、ＥＣＣテーブル２６ｂに記憶されたＥＣＣコード３byteとの、数値比較等を行う機能を表したものである。
【００２６】
図３は、図１中の印刷装置３０を示す概略の構成図である。
印刷装置３０は、例えば、電子写真法を用いて紙等の印刷媒体３１上に印刷する装置であり、感光ドラム３２を有している。感光ドラム３２の周囲には、帯電器３３、露光器３４、現像器３５、及び転写器３６が配置され、更に、転写器３６の排出側に、定着器３７が配置されている。
【００２７】
帯電器３３は、感光ドラム３２の表面を一様に帯電させる装置である。露光器３４は、一様に帯電された感光ドラム３２の表面を選択的に露光し、感光ドラム３２の表面に静電潜像を形成する装置であり、単一の光源を回転するミラー等により走査するレーザスキャナや、複数の光源を備えた発光素子（ＬＥＤ）アレイ等により構成されている。現像器３５は、露光器３４により形成された静電潜像にトナーを付着させて現像する装置である。転写器３６は、現像されたトナー像を紙等の印刷媒体３１に転写する装置である。更に、定着器３７は、印刷媒体３１に転写されたトナー像を熱や圧力により印刷媒体３１に定着させる装置である。
【００２８】
このように構成される印刷装置３０では、ＦＩＦＯ回路１２から入力された画素データに基づき、帯電器３３によって一様に帯電された感光ドラム３２の表面を、露光器３４により選択的に露光して静電潜像を形成する。その後、現像器３５、転写器３６、及び定着器３７により印刷媒体３１上に画像が形成される。
【００２９】
図４は、図２中のＮＡＮＤフラッシュ２５内における冗長エリア２５ｂのデータ構造を示す図である。
【００３０】
冗長エリア２５ｂにおいて、最初の４byteは論理ページ番号が記憶され、次の３byteはＥＣＣコードが記憶され、残りの９byteはナル（Ｎｕｌｌ）コードが記憶される。
【００３１】
図５は、図２中のＲＡＭ２６内におけるＥＣＣテーブル２６ｂの１ページ分のデータ構造を示す図である。
【００３２】
ＥＣＣテーブル２６ｂにおいて、最初の４byteはＮＡＮＤフラッシュ２５の物理ページ番号が記憶され、次の３byteはＥＣＣコードが記憶され、残りの９byteはＮｕｌｌコードが記憶される。
【００３３】
（情報処理装置１０の全体の動作）
図６は、図１の情報処理装置１０の全体の動作を示すフローチャートである。図７（ａ）〜（ｃ）は、図６中における誤り箇所の検出方法を示す図であり、同図（ａ）は一致する場合の例を示す図、同図（ｂ）は不一致且つ訂正可能な場合の例を示す図、及び、同図（ｃ）は不一致且つ訂正不能な場合の例を示す図である。
【００３４】
図６のステップＳ１において、処理が開始され、ステップＳ２において、図１の情報処理装置１０に電源が投入されるか又はリセット信号が入力されると、ＣＰＵ２１は、メモリコントローラ２３を介してＮＯＲフラッシュ２４からプログラムを取り込み開始する。ステップＳ３において、ＣＰＵ２１は、ＲＡＭ２６の初期設定を実行する。この初期設定では、ＲＡＭ２６をアクセスするために必要なタイミング設定や、ＲＡＭ２６のチップセレクト信号とメモリ空間の関連付けやＲＡＭ２６の速度グレードに応じてメモリコントローラ２３のタイミング設定や、ＲＡＭ２６の列アドレスストローブ信号（ＣＡＳ）レイテンシー設定等を行う。
【００３５】
ステップＳ４において、ＣＰＵ２１は、ＮＡＮＤフラッシュ２５に格納されたプログラムを読み出してＲＡＭ２６へ展開する。ステップＳ５において、ＣＰＵ２１は、内部の図示しないカウンタの初期化（ｎ＝０）を行う。ステップＳ６において、訂正コード計算手段２１ａは、ＲＡＭ２６に展開したプログラムのＥＣＣ計算を行う。
【００３６】
ステップＳ６において、訂正コード比較手段２１ｂは、ＲＡＭ２６のＥＣＣテーブル２６ｂに書かれたＥＣＣコードと、ステップＳ６で計算されたＥＣＣコードとの比較を行い、両者の一致／不一致の判定（ＥＣＣ判定）を行う。この判定結果が不一致であれば、ステップＳ１２のＮＡＮＤフラッシュ／ＲＡＭ故障個所判定処理へ移行し、判定結果が一致であれば、ステップＳ８のカウントアップ処理へ移行する。
【００３７】
図７（ａ）〜（ｃ）に、誤り個所の検出方法が記載されている。一致する場合は、図７（ａ）に示すように、ＥＣＣコード同士の排他的論理和（以下「ＥＸＯＲ」という。）は全て“０”になり、不一致の場合は、図７（ｂ）、（ｃ）に示すように、“０”以外の数値になる。
【００３８】
ステップＳ７のＥＣＣ判定結果が一致してステップＳ８へ移行した場合、ＣＰＵ２１は、内部のカウンタのカウントアップ（ｎ＝ｎ＋１）を行う。ステップＳ９において、ＣＰＵ２１は、最大ページ数を超えたか否かの判断（ｎ＜最大ページ数）を行い、最大ページ数を超えていれば、次の印刷処理のステップＳ１０へ移行し、超えていなければ、ステップＳ６のＥＣＣコード計算処理へ戻る。
【００３９】
ステップＳ１０の印刷処理において、ステップＳ１０−１の受信処理において、ＣＰＵ２１は、ＰＣ１からＩ／Ｆ回路１１を介して印刷データを受信したら、メモリコントローラ２３を介してＲＡＭ２６へ格納する。ステップＳ１０−２の編集処理において、ＣＰＵ２１は、ＲＡＭ２６に蓄えられた印刷データを編集し、文字や画像データをビットマップデータに変換するための前処理を行う。ステップＳ１０−３のラスタライジング処理において、ＣＰＵ２１は、ビットマップデータを作成し、ＦＩＦＯ回路１２に一時記憶する。そして、ステップＳ１０−４のビデオデータ転送処理において、ＣＰＵ２１は、印刷装置３０に対してビットマップデータを転送する。その後、印刷装置３０により印刷が行われ、ステップＳ１１にて情報処理装置１０の動作を終了する。
【００４０】
ステップＳ７のＥＣＣ判定結果が不一致のときにステップＳ１２へ移行した場合、訂正コード比較手段２１ｂは、ＮＡＮＤフラッシュ／ＲＡＭ故障個所判定の処理を行う。この処理において、訂正コード計算手段２１ａは、エラー発生したページｎの該当するＮＡＮＤフラッシュ２５の冗長エリアｎ２５ｂを読み、ＲＡＭ２６のＥＣＣテーブル２６ｂの値と比較する。この比較結果が一致する場合は、ＮＡＮＤフラッシュ２５の故障（不良）と判定し、ＮＡＮＤフラッシュ２５の訂正可能か否かの判定処理であるステップＳ１３へ移行し、比較結果が不一致の場合は、ＲＡＭ２６の故障（不良）と判定し、ＲＡＭ故障表示処理のステップＳ１４へ移行する。ステップＳ１２の判定は、図７（ａ）〜（ｃ）に示すように、ＥＣＣコード同士のＥＸＯＲを取り、図７（ａ）に示すように、“０”の場合は一致と判定し、それ以外は、図７（ｂ）、（ｃ）に示すように、不一致と判定する。
【００４１】
ステップＳ１３において、訂正コード比較手段２１ｂは、ＮＡＮＤフラッシュ２５の故障の訂正が可能か否かの判定を行う。図７（ｃ）に示すように、ＥＸＯＲの偶数ビット、奇数ビット共に“１”の時で、誤り個所が２ビット以上なので、訂正不可能と判定し、ＮＡＮＤフラッシュ故障個所表示処理のステップＳ１６へ移行する。又、訂正可能の場合は、訂正処理のステップＳ１５へ移行する。
【００４２】
ＲＡＭ故障表示処理のステップＳ１４において、ＣＰＵ２１は、エラーの発生したＲＡＭ２６のアドレスを、図示しない表示器等に表示した後、ステップＳ１１にて情報処理装置１０の処理を終了する。
【００４３】
訂正処理のステップＳ１５において、図７（ｂ）に示すように、誤り個所は、ＥＸＯＲの奇数ビットが何ワード（word）目（１word＝３２bit）の何ビット目かを表しており、その個所の誤りが訂正され、ステップＳ８へ移行する。
【００４４】
ＮＡＮＤフラッシュ故障個所表示処理のステップＳ１６において、ＣＰＵ２１は、エラー発生したｎページ目のＮＡＮＤフラッシュ２５のページ番号を、図示しない表示器等に表示した後、ステップＳ１１にて情報処理装置１０の処理を終了する。
【００４５】
（プログラム展開の動作）
図８は、図６中のステップＳ４におけるプログラム展開処理の動作を示すフローチャートである。
【００４６】
ＣＰＵ２１は、ステップＳ４のプログラム展開処理を、以下のステップＳ４１〜Ｓ４８にて実行する。
【００４７】
ステップＳ４において、プログラム展開の動作を開始し、ステップＳ４１において、ＣＰＵ２１内の変数（ｎ）を初期化（ｎ＝０）する。ステップＳ４２において、ＮＡＮＤフラッシュ２５の物理ページｎ２５ａのデータ保管領域を読み出す（リードする）。ステップＳ４３において、ＮＡＮＤフラッシュ２５の物理ページｎ２５ａの冗長エリア２５ｂをリードする。ステップＳ４４において、ステップＳ４２のデータをＲＡＭ２６の論理ページｎ２６ａへ書き込む。ステップＳ４５において、ステップＳ４３のデータをＲＡＭ２６のＥＣＣテーブル２６ｂへ書き込む。ステップＳ４６において、変数ｎに１を加える（ｎ＝ｎ＋１）。ステップＳ４７において、変数ｎが最大ページ数を上回ったか否か（ｎ＜最大ページ数）を判定する。上回った場合は、ステップＳ４８にて処理を終了し、上回らない場合は、ステップＳ４２へ戻る。
【００４８】
（ＥＣＣコード計算の動作）
図９−１及び図９−２は、図６中のステップＳ６におけるＥＣＣコード計算処理の動作を示すフローチャートである。
【００４９】
図１０−１〜図１０−４は、図９のＥＣＣコード計算処理の動作を説明するための図である。その内、図１０−１は１word毎に奇数のビット位置Ｐ０からＰ８の各パリティを計算する例、図１０−２は偶数０，２，４，６，８，１０，・・・，１２４，１２６word目の奇数パリティを計算し、奇数のワード位置ＷＰ０（ワードパリティ）へ格納する例、図１０−３は奇数１，３，５，７，９，１１，・・・，１２５，１２７word目の奇数パリティを計算し、奇数のワード位置ＷＰ１（ワードパリティ）へ格納する例、及び、図１０−４は偶数、奇数０，１，４，５，８，９，１２，１３，・・・，１２４，１２５word目の奇数パリティを計算し、奇数のワード位置ＷＰ２（ワードパリティ２）へ格納する例がそれぞれ示されている。
【００５０】
訂正コード計算手段２１ａは、ステップＳ６のＥＣＣコード計算処理を、図９−１及び図９−２のフローチャートにおいて以下のステップＳ６１〜Ｓ８４にて実行する。
【００５１】
ステップＳ６において、ＥＣＣコード計算の処理を開始し、ステップＳ６１において、Ｌ番地目のＲＡＭ２６から１word読み出し処理を行う。Ｌ番地は、上位のプログラムより指定されたｎページから、１ページの容量を掛けてアドレスに変換した数値である。ＲＡＭ２６からは３２bit単位で読み出す。
【００５２】
ステップＳ６２において、全てのビットの奇数パリティを取り、奇数の全ビット位置Ｐ＿ＡＬＬへ格納する処理を行う。この処理では、ステップＳ６１で読み出した情報ビットの奇数パリティを取り出す。結果のビットは、奇数の全ビット位置Ｐ＿ＡＬＬへ格納する。奇数の全ビット位置Ｐ＿ＡＬＬは、後の論理計算にて使用する。
【００５３】
ステップＳ６３〜Ｓ７２は、１８bitあるＥＣＣコードのうち、下位１０bitの計算方法である。図１０−１には、この計算手順をまとめた表が示されている。左枠４０は、ＲＡＭ２６からリードした情報ビットである。左枠４０の斜線枠部分４１は、右枠５０の斜線Ｐ＊枠（但し、Ｐ＊は奇数のビット位置Ｐ１，Ｐ３，Ｐ５，Ｐ７，Ｐ９）部分５１に対応する。又、左枠４０の白枠部分４２が右枠５０の白Ｐ＊枠（但し、Ｐ＊は奇数のビット位置Ｐ０，Ｐ２，Ｐ４，Ｐ６，Ｐ８）部分５２に対応している。右枠５０の奇数のビット位置Ｐ＊は、左枠４０の対応する全てＥＸＯＲで計算した値になる。例えば、右枠５０の白枠部分５２における奇数のビット位置Ｐ０は、左枠４０における最上段の情報ビット（０〜３１bit）のうち白枠部分４２の偶数ビットのみを計算したものである。同様に、右枠５０の斜線枠部分５１における奇数のビット位置Ｐ１は、左枠４０における最上段の情報ビット（０〜３１bit）のうち斜線枠部分４１の奇数ビットのみを計算したものである。
【００５４】
ステップＳ７３〜Ｓ８０は、１８bitのＥＣＣコードのうち、上位８bitの計算方法である。図１０−２には、奇数のワード位置ＷＰＯ（ワードパリティ０）の計算方法が示されている。奇数のワード位置ＷＰＯは、０word目〜１２８word目のうち、斜線部分の偶数アドレスのワードのみの奇数パリティである。前記の奇数の全ビット位置Ｐ＿ＡＬＬは、ここで使用する。アドレスＬのビット０の時だけ奇数の全ビット位置Ｐ＿ＡＬＬとワード位置ＷＰＯ（ワードパリティ０）を計算する。以下、ＷＰ１は、図１０−３に示すように、奇数アドレスのwordのみの奇数パリティであり、ＷＰ２は、図１０−４に示すように、０word目から２word置きに奇数パリティを計算したものである。ＷＰ３は、２word目から２word置きに奇数パリティを計算したものである。
【００５５】
ステップＳ８１において、アドレスＬを加算（Ｌ＝Ｌ＋１）する。ステップＳ８２において、アドレスＬが１２８よりも大きいか否か（Ｌ＞１２８）を判定し、アドレスＬが１２８より大きくなった場合は、ステップｓ８３へ移行し、小さい場合は、ステップｓ６１へ戻る。
【００５６】
ステップＳ８３において、以下のＥＣＣ計算を行い、
ＥＣＣ（Ｌ）＝［ＷＰ７−ＷＰ０，Ｐ９−ＰＯ］
ＥＣＣデータＥＣＣ（Ｌ）として、上記で求めたパリティをまとめ、ステップＳ８４で処理を終了する。
【００５７】
（実施例１の効果）
従来、装置の安定を図るために、揮発性メモリのチェックを行ってから、プログラムの展開を行っている。展開するプログラムが十分に小さければ特に問題にはならないが、数十Ｍbyteを超える大きなプログラムの場合、例えば、２０秒〜３０秒程度の処理時間が掛かり、起動時間を長引かせる要因になっている。その上、プログラムの展開前に揮発性メモリのチェックを行わなければならず、余計に処理時間が掛かる。しかも、揮発性メモリのチェックの際に、エラーの原因が不揮発性メモリにあるのか、揮発性メモリにあるのか特定できないので、保守点検等を行う際に不利不便である。
【００５８】
そこで、本実施例１では、このようなプログラムの展開先の揮発性メモリのチェックを行うことと、装置の起動時間を削減するという相反する問題、更に、エラーの原因が不揮発性メモリにあるのか、揮発性メモリにあるのか特定できないという問題を解決するために、上述したような構成を採用しているので、従来の装置に比べて以下の（ａ）〜（ｃ）のような効果がある。
【００５９】
（ａ）  本実施例１によれば、図６中のステップＳ７，Ｓ１２において、ＲＡＭ２６のチェックとＮＡＮＤフラッシュ２５のチェックを同時に行っている。そのため、従来のようにＮＡＮＤフラッシュ２５のデータを展開する前にＲＡＭ２６のチェックを行う必要がないので、情報処理装置１０の起動時間を短縮できる。
【００６０】
（ｂ）  ＮＡＮＤフラッシュ２５とＲＡＭ２６とのＥＣＣコードの不一致が発生した時、図６中のステップＳ１２により、ＮＡＮＤフラッシュ２５のエラーなのかＲＡＭ２６のエラーなのかを的確に見分けることができる。この際、例えば、ＮＡＮＤフラッシュ２５のエラーであれば、図６中のステップＳ１５にて故障個所の１ビットを訂正でき、ＲＡＭ２６のエラーであれば、図６中のステップＳ１４にてエラー表示を行うことができる。従って、ＮＡＮＤフラッシュ２５を展開する際、一時的に使用するＲＡＭ２６に故障があってもＮＡＮＤフラッシュ２５の故障であると誤認識してしまい、ＮＡＮＤフラッシュ２５の内容を誤って訂正してしまうという従来の問題に対して、極めて有効な解決手段である。
【実施例２】
【００６１】
実施例１において、ＮＡＮＤフラッシュ２５に記憶された情報ビットとＲＡＭ２６に展開した情報ビットが同じならば問題は無いが、ＲＡＭ２６に展開する際にビット圧縮や暗号化等のコード変換が行われていると、ＲＡＭ２６上の情報ビットから計算したＥＣＣコードがＮＡＮＤフラッシュ２５の冗長エリア２５ｂに書かれたＥＣＣコードと一致しないという不都合が生じる。そこで、本実施例２では、このような不都合を解決している。
【００６２】
（実施例２の構成）
図１１は、本発明の実施例２における図１の情報処理装置１０中に設けられるメモリシステム部の概略を示す機能ブロック図であり、実施例１を示す図２中の要素と共通の要素には共通の符号が付されている。
【００６３】
本実施例２のメモリシステム部２０−１では、圧縮されたプログラムコード及び第１の誤り訂正コードが、ＲＡＭライタ等によってＮＡＮＤフラッシュ２５に予め書き込まれており、その圧縮されたプログラムコード及び第１の誤り訂正コードを伸張するために、新たに伸張手段２７が追加され、この伸張手段２７により伸張されたプログラムコード及び第１の誤り訂正コードがＲＡＭ２６に展開される構成になっている。
【００６４】
ＮＡＮＤフラッシュ２５は、圧縮されたログラムコード及び第１の誤り訂正コードを記憶するために、複数の物理ページ＃２５ａと、これに付随する容量が例えば１６byteの冗長エリア２５ｂ−１とを有している。ＲＡＭ２６は、伸張されたログラムコード及び第１の誤り訂正コードを記憶するために、複数の物理ページ＃２６ａとＥＣＣテーブル２６ｂ−１とを有している。伸張手段２７は、例えば、可逆圧縮可能なロスレスタイプのＰＮＧファイル等であり、ＣＰＵ２１のプログラム制御により実行される構成になっている。その他の構成は、実施例１と同様である。
【００６５】
図１２は、図１１中のＮＡＮＤフラッシュ２５内における冗長エリア２５ｂ−１のデータ構造を示す図であり、実施例１の図４に対応している。
【００６６】
冗長エリア２５ｂ−１において、最初の４byteは論理ページ番号であり、ＲＡＭ２６に展開する際の順番を示す。次の３byteは、圧縮後のＥＣＣコードである。更に、次の２byteは、伸張後のサイズであり、最大は２１６＝６４Ｋbyteまで伸張可能である。その他、３byteのＮｕｌｌコードを有している。
【００６７】
図１３は、図１１中のＲＡＭ２６内におけるＥＣＣテーブル２６ｂ−１の１ページ分のデータ構造を示す図であり、実施例１の図５に対応している。
【００６８】
ＥＣＣテーブル２６ｂ−１において、最初の４byteは物理ページ番号であり、エラー発生時のＮＡＮＤフラッシュ２５の故障個所を指標する値である。次の２byteは、伸張後のサイズであり、冗長エリア２５ｂ−１から読み取られた値がコピーされている。更に、次の４byteは、伸張後のＥＣＣコードである。
【００６９】
（情報処理装置１０の全体の動作）
本実施例２における情報処理装置１０の全体の動作は、実施例１の図６に示すフローチャートにおいて、ステップＳ４のプログラム展開処理とステップＳ６のＥＣＣコード計算処理における処理内容が異なっている。本実施例２におけるステップＳ４のプログラム展開処理では、プログラムを展開する際、圧縮されたデータを伸張する処理が追加され、更に、ステップＳ６のＥＣＣコード計算処理において、ＥＣＣ計算を行う際に可変訂正コード計算の処理が異なる。その他の処理は、実施例１のフローチャートの処理と同様である。
【００７０】
（プログラム展開の動作）
図１４は、図６中のステップＳ４における本実施例２のプログラム展開処理の動作を示すフローチャートであり、実施例１を示す図８中の要素と共通の要素には共通の符号が付されている。
【００７１】
図１中のＣＰＵ２１は、図６中のステップＳ４のプログラム展開処理を、以下のステップＳ４１〜Ｓ４８にて実行する。なお、本実施例２が実施例１と異なる点は、プログラムを展開する際、圧縮されたデータを伸張する処理ステップＳ４３−２が追加され、この前後の処理Ｓ４３−１，Ｓ４４−１，Ｓ４５−１が実施例１の処理Ｓ４３，Ｓ４４，Ｓ４５と僅かに異なっている。
【００７２】
先ず、ステップＳ４において、プログラム展開の処理を開始し、実施例１と同様に、ステップＳ４１において、ＣＰＵ２１の変数の初期化（ｎ＝０）を行い、ステップＳ４２において、ＮＡＮＤフラッシュ２５における物理ページｎ２５ａのデータ保管領域をリードする。ステップＳ４３−１において、ＮＡＮＤフラッシュ２５における物理ページｎ２５ａの冗長エリア２５ｂ−１をリードし、ステップＳ４３−２において、ステップＳ４２のデータを所定の伸張方式により伸張する。
【００７３】
ステップＳ４４−１において、ステップＳ４３−２のデータをＲＡＭ２６における論理ページｎ２６ａへ書き込み、ステップＳ４５−１において、ステップＳ４３−１のデータをＲＡＭ２６のＥＣＣテーブル２６ｂ−１へ書き込む。その後、実施例１と同様に、ステップＳ４６において、ＣＰＵ２１の変数ｎに１を加え（ｎ＝ｎ＋１）、ステップＳ４７において、変数ｎが最大ページ数を上回ったか否か（ｎ＜最大ページ数）を判定する。上回った場合は、ステップＳ４８にて処理を終了し、上回らない場合は、ステップＳ４２へ戻る。
【００７４】
（ＥＣＣコード計算の動作）
図１５−１及び図１５−２は、図６中のステップＳ６における本実施例２のＥＣＣコード計算処理を行う際の可変訂正コード計算の動作を示すフローチャートであり、実施例１を示す図９−１及び図９−２中の要素と共通の要素には共通の符号が付されている。
【００７５】
図１１中の訂正コード計算手段２１ａは、図６中のステップＳ６のＥＣＣコード計算処理を、以下のステップＳ６１〜Ｓ８４にて実行する。なお、本実施例２が実施例１と基本的に異なる点は、ステップＳ８０−１〜Ｓ８０−１４が追加され、この後のステップＳ８２−１，Ｓ８３−１が、実施例１のステップＳ８２，Ｓ８３と異なる。その他のステップＳ６１〜Ｓ８０，Ｓ８１，Ｓ８４は、実施例１の各ステップに類似している。
【００７６】
先ず、ステップＳ６において、可変長ＥＣＣコード計算の処理を開始し、ステップＳ６１において、Ｌ番地目のＲＡＭ２６から１word読み出し処理を行う。Ｌ番地は、上位のプログラムより指定されたｎページから、１ページの容量を掛けてアドレスに変換した数値である。ＲＡＭ２６からは、３２bit単位で読み出す。
【００７７】
ステップＳ６２において、全てのビットの奇数パリティを取り、奇数の全ビット位置Ｐ＿ＡＬＬへ格納する。この処理では、ステップＳ６１で読み出した情報ビットの奇数パリティを取り出す。結果のビットは全ビット位置Ｐ＿ＡＬＬへ格納する。全ビット位置Ｐ＿ＡＬＬは、後の論理計算にて使用する。
【００７８】
ステップＳ６３〜Ｓ７２は、実施例１と同様に、１８bitあるＥＣＣコードのうち、下位１０bitの計算方法である。前記図１０−１には、実施例１と同様に、この計算手順をまとめた表が示されている。
【００７９】
ステップＳ７３〜Ｓ８０−１４は、ＥＣＣコードのうち、上位２２ビットの計算方法である。この計算方法が、実施例１と同様に、前記図１０−２〜図１０−４に示されている。
【００８０】
ステップＳ８２−１において、アドレスＬを加算（Ｌ＝Ｌ＋１）する。ステップＳ８２−１において、伸張後のサイズがアドレスＬよりも小さいか否か（Ｌ＞伸張後のサイズ）が判定される。アドレスＬが伸張後のワード数より大きくなった場合は、ステップＳ８３−１へ移行し、小さい場合は、ステップＳ６１へ戻る。ステップＳ８３−１において、次式に従い、
ＥＣＣ（Ｌ）＝［ＷＰ２１−ＷＰＯ，Ｐ９−ＰＯ］
から、ＥＣＣデータＥＣＣ（Ｌ）として前記で求めたパリティをまとめ、ステップＳ８４にて処理を終了する。
【００８１】
（実施例２の効果）
本実施例２によれば、圧縮した状態でプログラムを記憶することができ、実施例１とほぼ同様の効果がある。
【００８２】
（変形例）
本発明は、上記実施例に限定されず、種々の利用形態や変形が可能である。この利用形態や変形例としては、例えば、次の（ａ）、（ｂ）のようなものがある。
【００８３】
（ａ）  図１、図２及び図１１に示す情報処理装置１０は、図示以外の他の構成に変更しても良い。例えば、ＮＯＲフラッシュ２４及びＮＡＮＤフラッシュ２５として、他の不揮発性メモリを使用したり、ＲＡＭ２６として、他の揮発性メモリを使用してもよい。これらの構成の変更に応じて、それらの動作を示すフローチャートの処理内容を適宜変更すれば良い。
【００８４】
（ｂ）  実施例１、２の情報処理装置１０として、印刷装置３０に応用した画像処理装置について説明したが、本発明の情報処理装置は、ファクシミリ装置、複合機等の他の画像処理装置や、それ以外の携帯電話機や情報家電等への応用も可能である。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施例１における情報処理装置の概略を示す構成図である。
【図２】図１中のメモリシステム部２０を示す機能ブロック図である。
【図３】図１中の印刷装置３０を示す概略の構成図である。
【図４】図２中のＮＡＮＤフラッシュ２５内における冗長エリア２５ｂのデータ構造を示す図である。
【図５】図２中のＲＡＭ２６内におけるＥＣＣテーブル２６ｂの１ページ分のデータ構造を示す図である。
【図６】図１の情報処理装置１０の全体の動作を示すフローチャートである。
【図７】図６中における誤り箇所の検出方法を示す図である。
【図８】図６中のステップＳ４におけるプログラム展開処理の動作を示すフローチャートである。
【図９−１】図６中のステップＳ６におけるＥＣＣコード計算処理の動作を示すフローチャートである。
【図９−２】図６中のステップＳ６におけるＥＣＣコード計算処理の動作を示すフローチャートである。
【図１０−１】図９のＥＣＣコード計算処理の動作を示す図である。
【図１０−２】図９のＥＣＣコード計算処理の動作を示す図である。
【図１０−３】図９のＥＣＣコード計算処理の動作を示す図である。
【図１０−４】図９のＥＣＣコード計算処理の動作を示す図である。
【図１１】本発明の実施例２における情報処理装置中に設けられるメモリシステム部の概略を示す機能ブロック図である。
【図１２】図１１中のＮＡＮＤフラッシュ２５内における冗長エリア２５ｂ−１のデータ構造を示す図である。
【図１３】図１１中のＲＡＭ２６内におけるＥＣＣテーブル２６ｂ−１の１ページ分のデータ構造を示す図である。
【図１４】図６中のステップＳ４における本実施例２のプログラム展開処理の動作を示すフローチャートである。
【図１５−１】図６中のステップＳ６における本実施例２のＥＣＣコード計算処理を行う際の可変訂正コード計算の動作を示すフローチャートである。
【図１５−２】図６中のステップＳ６における本実施例２のＥＣＣコード計算処理を行う際の可変訂正コード計算の動作を示すフローチャートである。
【符号の説明】
【００８６】
１０      情報処理装置
２０，２０−１      メモリシステム部
２１      ＣＰＵ
２１ａ      訂正コード計算手段
２１ｂ      訂正コード比較手段
２４      ＮＯＲフラッシュ
２５      ＮＡＮＤフラッシュ
２６      ＲＡＭ
２７      伸張手段
３０      印刷装置
【図１】
2010146226.tif 000003
【図２】
2010146226.tif 000004
【図３】
2010146226.tif 000005
【図４】
2010146226.tif 000006
【図５】
2010146226.tif 000007
【図６】
2010146226.tif 000008
【図７】
2010146226.tif 000009
【図８】
2010146226.tif 000010
【図９−１】
2010146226.tif 000011
【図９−２】
2010146226.tif 000012
【図１０−１】
2010146226.tif 000013
【図１０−２】
2010146226.tif 000014
【図１０−３】
2010146226.tif 000015
【図１０−４】
2010146226.tif 000016
【図１１】
2010146226.tif 000017
【図１２】
2010146226.tif 000018
【図１３】
2010146226.tif 000019
【図１４】
2010146226.tif 000020
【図１５−１】
2010146226.tif 000021
【図１５−２】
2010146226.tif 000022