(57)【特許請求の範囲】
【請求項１】
第１メモリへのデータ書き込み時のエラーを検出するエラー検出方法であって、
情報処理装置が、
前記第１メモリのうち、少なくとも書き込み対象とするアドレス範囲のデータを読み出して、前記第１メモリと異なる第２メモリに記憶させるデータ保持工程と、
前記第１メモリに対し、アドレス及び書込対象データを送信して、該アドレスに該書込対象データを書き込ませる書込工程と、
前記第１メモリから、前記書込工程で送信したアドレスに記憶されているデータを読み出す読出工程と、
前記読出工程で前記第１メモリから読み出したデータと、前記書込工程で送信した書込対象データとを比較する第１比較工程と、
前記第１比較工程での比較結果が不一致であった場合に、前記読出工程で前記第１メモリから読み出したデータと、前記データ保持工程で前記第２メモリに記憶させたデータのうち前記書込工程で送信したアドレスと対応するアドレスから読み出したデータとを比較する第２比較工程と、
前記第２比較工程での比較結果が一致であった場合にアドレスエラーを検出したと判定し、不一致であった場合にデータエラーを検出したと判定する判定工程とを実行することを特徴とするエラー検出方法。
【請求項２】
請求項１に記載のエラー検出方法であって、
前記情報処理装置が、前記データ保持工程を、前記第１メモリ、前記第２メモリ、及び前記第１メモリへのデータ書き込みを行う制御手段を備えるシステムの起動時に実行することを特徴とするエラー検出方法。
【請求項３】
請求項１又は２に記載のエラー検出方法であって、
前記情報処理装置が、前記第１比較工程での比較結果が一致であった場合に、前記データ保持工程で前記第２メモリに記憶させたデータのうち前記書込工程で送信したアドレスと対応するアドレスから読み出したデータを、前記読出工程で前記第１メモリから読み出したデータに更新する更新工程をさらに実行することを特徴とするエラー検出方法。
【請求項４】
第１メモリへのデータ書き込み時のエラーを検出するエラー検出装置であって、
前記第１メモリのうち、少なくとも書き込み対象とするアドレス範囲のデータを読み出して、前記第１メモリと異なる第２メモリに記憶させるデータ保持手段と、
前記第１メモリに対し、アドレス及び書込対象データを送信して、該アドレスに該書込対象データを書き込ませる書込手段と、
前記第１メモリから、前記書込手段が送信したアドレスに記憶されているデータを読み出す読出手段と、
前記読出手段が前記第１メモリから読み出したデータと、前記書込手段が送信した書込対象データとを比較する第１比較手段と、
前記第１比較手段による比較結果が不一致であった場合に、前記読出手段が前記第１メモリから読み出したデータと、前記データ保持手段が前記第２メモリに記憶させたデータのうち前記書込手段が送信したアドレスと対応するアドレスから読み出したデータとを比較する第２比較手段と、
前記第２比較手段による比較結果が一致であった場合にアドレスエラーを検出したと判定し、不一致であった場合にデータエラーを検出したと判定する判定手段とを備えることを特徴とするエラー検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、デジタルデータが伝送される際に発生するエラーの検出方法及びエラー検出装置に関する。
【背景技術】
【０００２】
従来から、デジタルデータをメモリに書き込む際に、送信側からメモリモジュール（受信側）に対して行う書き込み先のアドレス（以下「書込先アドレス」という）や書き込み対象のデータ（以下「書込対象データ」という）の伝送にエラーが発生する可能性があることが知られている。送信側から伝送されたデジタル信号がノイズの混入により変化する等である。
【０００３】
また、このエラーには、書込先アドレスの値が変化して、要求と異なるアドレスに書き込みを行われてしまうアドレスエラーと、書込対象データの値が変化して、要求と異なるデータが書き込まれてしまうデータエラーという２種類のエラーが考えられる。
こうしたエラーの検出に関連する技術としては、例えば特許文献１に記載のものが知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上述したデータ伝送時のエラーの検出方法として、例えば以下の方法が考えられる。
すなわち、まず、送信側が、書込先アドレスと書込対象データとを含む書込命令をメモリモジュールに送信する。次に、メモリモジュールが、この書込命令に基づき、データの書き込みを実行する。
【０００５】
次に、送信側が、書込命令における書込先アドレスに記憶されているデータを読み出して送信することを要求する読込命令を、メモリモジュールに送信する。そして、メモリモジュールが、この読込命令に応じて、書込命令における書込先アドレスに記憶されているデータを読み出して送信側へ送信する。
【０００６】
送信側は、書込命令における書込対象データと読込命令に応じてメモリモジュールから送信されたデータとを比較し、両データが一致するか、しないかを判断する。両データが一致しない場合は、書込命令の送信時にエラーが発生したことになる。
しかし、この方法では、エラー発生の有無が分かるだけで、アドレスエラーとデータエラーのいずれが発生したのかの区別ができないという問題があった。
【０００７】
特許文献１には、この点を改善した次のような方法が開示されている。
すなわち、送信側のマイクロコンピュータは受信側のＥＥＰＲＯＭ(Electrically  Erasable  Programmable  ROM）に対し、各命令をエコーバックするよう設定した上で、まず書込先アドレスを指定するアドレスセット命令を送信して、そのエコーバックによりアドレスが正しく指定されたことを確認する。
【０００８】
この確認ができると、次に書込対象データを含むワードライト命令を送信して書き込みを実行させ、この命令もエコーバックにより正しく伝送されたことを確認する。いずれの命令も、エコーバックされた内容が送信した内容と異なる場合、同じ命令を再送して実行させる。
【０００９】
また、一度書き込みを行った後、送信側は再度アドレスセット命令及びワードリード命令を送信して、ＥＥＰＲＯＭに、先にワードライト命令により書き込ませたアドレスのデータを送信させて、これが書き込ませたデータと一致することを確認する。これらのアドレスセット命令とワードリード命令についても、エコーバックを確認する。
【００１０】
以上の方法によれば、先に書込先アドレスが正しく伝送されたことを確認してから、また正しく伝送されていない場合には伝送をやり直してからワードライト命令を出すことになる。従って、送信側は、書込先アドレスと書込対象データのどちらの伝送にエラーが生じたのかを切り分けて（区別して）認識し、伝送エラーが発生した場合もこれを容易に訂正することができる。
【００１１】
しかしながら、特許文献１に記載の方法であっても、１回のデータ書き込みについて送信側と受信側でデータを送受信する必要のある回数が多く、通信時間が長くかかってしまうという問題があった。
【００１２】
この発明は、このような問題を解決し、メモリへのデータ書き込みのためのデジタルデータ伝送において、１回のデータ書き込み当たりの通信時間を抑えつつ、アドレスエラーとデータエラーとを容易に切り分ける（区別して検出する）ことができるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
以上の目的を達成するため、本発明は、第１メモリへのデータ書き込み時のエラーを検出するエラー検出方法において、情報処理装置が、上記第１メモリのうち、少なくとも書き込み対象とするアドレス範囲のデータを読み出して、その第１メモリと異なる第２メモリに記憶させるデータ保持工程と、その第１メモリに対し、アドレス及び書込対象データを送信して、そのアドレスにその書込対象データを書き込ませる書込工程と、その第１メモリから、その書込工程で送信したアドレスに記憶されているデータを読み出す読出工程と、上記読出工程でその第１メモリから読み出したデータと、その書込工程で送信した書込対象データとを比較する第１比較工程と、上記第１比較工程での比較結果が不一致であった場合に、その読出工程でその第１メモリから読み出したデータと、そのデータ保持工程でその第２メモリに記憶させたデータのうち該書込工程で送信したアドレスと対応するアドレスから読み出したデータとを比較する第２比較工程と、上記第２比較工程での比較結果が一致であった場合にアドレスエラーを検出したと判定し、不一致であった場合にデータエラーを検出したと判定する判定工程とを実行するものである。
【発明の効果】
【００１４】
上記の構成によれば、メモリへのデータ書き込みのためのデジタルデータ伝送において、１回のデータ書き込み当たりの通信時間を抑えつつ、アドレスエラーとデータエラーとを容易に切り分けることができるようにすることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明のエラー検出装置の実施形態である情報処理装置のハードウェア構成図である。
【図２】デジタルデータの伝送におけるエラーの発生について説明するための図である。
【図３】書き込み命令の伝送時に発生し得るエラーの種類について説明する図である。
【図４】図１に示した情報処理装置が行うエラー訂正について説明するための図である。
【図５】図１に示した情報処理装置のＣＰＵが起動時に実行する処理のフローチャートである。
【図６】図１に示した情報処理装置のＣＰＵがＥＥＰＲＯＭへのデータ書き込み時に実行する処理のフローチャートであ
【図７】図６の処理によるエラー検出について説明するための図である。
【発明を実施するための形態】
【００１６】
以下、この発明を説明するための形態について、図面に基づいて説明する。
図１は、本発明エラー検出装置の一実施形態である情報処理装置のハードウェア構成図である。
図１に示す情報処理装置Ａは、マイクロコンピュータ１０と不揮発性メモリＥＥＰＲＯＭ２０と、これらを接続するためのＩ２Ｃ（Inter-Integrated  Circuit）規格のバスであるＳＣＬ（Serial  Clock  Line）３１及びＳＤＡ（Serial  DAta  Line）３２とを備える。また、マイクロコンピュータ１０には、ＣＰＵ１０１、ＳＲＡＭ１０２、内部バス１０３が内蔵されている。
【００１７】
これらのうちＣＰＵ１０１は、内部バス１０３を介してＳＲＡＭ１０２にアクセスし、データの書き込み及び読み込みを行うことができる。また、ＳＣＬ３１及びＳＤＡ３２を介して、ＥＥＰＲＯＭ２０にアクセスし、データの書き込み及び読み込みを行うことができる。また、ＥＥＰＲＯＭ２０へのデータの書き込みの際のエラー検出に必要な全ての処理はＣＰＵ１０１が制御する。
【００１８】
ＳＲＡＭ１０２は、第２メモリであり、ＥＥＰＲＯＭ２０に格納されているデータのうち少なくとも書き込み対象とするアドレス範囲のデータのコピーを記憶して保持する機能を備える。
内部バス１０３はＣＰＵ１０１とＳＲＡＭ１０２との間でのデータ転送用の経路として機能する。
【００１９】
ＥＥＰＲＯＭ２０は、第１メモリであり、マイクロコンピュータ１０の外部に設けられた不揮発性メモリである。また、ＣＰＵ１０１からの書込命令及び読出命令を受け付け、それに従って自身が備えるデータ保持部に対するデータの読み書きを行う。ここで、書込命令は、書込先アドレスと書込対象データを含むものであり、読出命令は、読み出し先のアドレス（以下「読出先アドレス」という）を含むものである。
【００２０】
ＳＣＬ３１は、Ｉ２Ｃ規格のデータ伝送に用いるシリアルクロック信号を伝送するためのバスである。ＳＤＡ３２は、同じくデータ信号を伝送するためのバスである。これらのバスは、双方向でデジタルデータの伝送が可能である。
また、Ｉ２Ｃ規格では通信を開始するデバイスがマスタとなり、通信先として選択されたデバイスがスレーブとなって同時に１対１で通信を行う。本実施形態では、マイクロコンピュータ１０がマスタ、ＥＥＰＲＯＭ２０がスレーブとなり、マイクロコンピュータ１０のＣＰＵ１０１が通信を制御する。
【００２１】
以上の情報処理装置Ａにおいて特徴的な点の一つは、マイクロコンピュータ１０からＥＥＰＲＯＭ２０へ書込命令の伝送に関するエラー検出のための処理である。そこで、以後この点について説明するが、その前に、この伝送に関して発生し得るエラーについて、図２及び図３を用いて説明する。
【００２２】
図２は、デジタルデータの伝送におけるエラーの発生について説明するための図である。図３は、書き込み命令の伝送時に発生し得るエラーの種類について説明する図である。
【００２３】
情報処理装置Ａにおいて、上記の書込命令はデジタルデータとして伝送するが、この伝送においてエラーが発生する場合の要因としては、伝送信号にノイズが混入してしまう場合が挙げられる。但し、全てのノイズがエラーの要因となるわけではなく、スレッショルドレベルを越えたノイズが発生した場合が問題となる。
【００２４】
ＣＰＵ１０１からＥＥＰＲＯＭ２０に対してＩ２Ｃ規格に従いＳＣＬ３１及びＳＤＡ３２を用いてデジタルデータを伝送する場合、ＣＰＵ１０１は、ＳＣＬ３１にクロック信号を送出し、ＳＤＡ３２にデータ信号を送出する。
【００２５】
そして、ＥＥＰＲＯＭ２０は、クロック信号の立ち上がり時のＳＤＡ３２のデータ信号の値を、受信したデータとして取得する。伝送信号へのノイズの混入が問題となるのは、このＳＣＬ３１のクロック信号の立ち上がりの時にスレッショルドレベルを越えたノイズが混入した場合である。
【００２６】
図２に示す信号例では、ＣＰＵ１０１は「００１１００・・・」の信号を送信している。すなわち、ｐ２０１乃至ｐ２０６の、ＳＣＬ３１で伝送するクロックの立ち上がり時に、ＳＤＡ３２で伝送するデータ信号が「０（Ｌｏｗ）」あるいは「１（Ｈｉｇｈ）」となるように、データ信号を送出する。
【００２７】
そして、図２の例では、ｐ２０１乃至ｐ２０６のうち、ｐ２０１、ｐ２０２、ｐ２０３、およびｐ２０５のタイミングではノイズが混入されていないため、正しくデータが伝送されている。
また、ｐ２０７及びｐ２０８でノイズが混入しているが、ＥＥＰＲＯＭ２０は、ＳＣＬ３１の立ち上がり時の信号を受信するのであるから、これらのノイズはデジタル伝送された信号値には何ら影響を及ぼさない。
【００２８】
一方、ｐ２０４およびｐ２０６のタイミングでは、ＳＣＬ３１の立ち上がり時にノイズが混入し、且つそのノイズがスレッショルドレベルを越えている。したがって、ノイズがデータ信号に影響を及ぼしてしまい、データが正しく伝送されない。ＥＥＰＲＯＭ２０はｐ２０４のタイミングでは「１」を「０」として取得してしまい、ｐ２０６のタイミングでは「０」を「１」として取得してしまう。
【００２９】
このため、ＥＥＰＲＯＭ２０は、受信したデータは「００１００１・・・」であると判断することになる。４番目のビットと６番目のビットが、ＣＰＵ１０１が送信したデータと異なってしまっている。これが、デジタルデータの伝送におけるエラー発生の原因である。
【００３０】
ところで、ＣＰＵ１０１からＥＥＰＲＯＭ２０へデータの書き込みを行う場合は、例えば、まずＣＰＵ１０１が内部バス１０３を介してＳＲＡＭ１０２にアクセスし、ＳＲＡＭ１０２に一時的に記憶されている書込対象データを取得する。
【００３１】
次に、ＣＰＵ１０１はＥＥＰＲＯＭ２０に対し、書込先アドレスを指定して、その書込対象データを書き込むように、書込命令を出す。この書込命令には、書込先アドレスと書込対象データの情報が含まれる。ＥＥＰＲＯＭ２０は、受信した書込命令に従って、ＣＰＵ１０１が指定したアドレスに書込対象データを書き込む。
【００３２】
図３の例では、ＣＰＵ１０１がＥＥＰＲＯＭ２０に対して、書込先アドレス「０ｘ０２」及び書込対象データ「０ｘ１１」を含む書込命令を送信する。この書込命令が正常に行われた状態が、状態３０１である。
【００３３】
しかし、書込命令の伝送時に図２を用いて説明したようなエラーが発生することがある。書込命令に含まれる書込先アドレスの伝送にエラーが発生して、すなわちアドレスエラーが発生して、書込命令に含まれる書込先アドレスと異なるアドレス「０ｘ００」に書込対象データ「０ｘ１１」が書き込まれてしまった状態が、状態３０２である。
【００３４】
一方、書込命令に含まれる書込対象データの伝送にエラーが発生して、すなわちデータエラーが発生して、書込命令に含まれる書込対象データと異なるデータ「０ｘ００」が書込先アドレス「０ｘ０２」に書き込まれてしまった状態が、状態３０３である。
【００３５】
こうしたエラーの発生は、背景技術の項で説明したように、ＣＰＵ１０１が、ＥＥＰＲＯＭ２０に書込命令を出した後で、その書込先アドレスと同じアドレスを読出先アドレスとして指定した読出命令をＥＥＰＲＯＭ２０に送信することにより、一応検出することができる。
【００３６】
すなわち、書込命令に含まれる書込対象データと、読出命令に応じて送信される読み出したデータとが一致すれば、エラーは発生していないと判定できる。一方、両データが一致しなかった場合は、エラーが発生していることになる。
【００３７】
図３の例において、エラーの発生していない状態３０１では、書込命令に含まれる書込先アドレスである「０ｘ０２」から読み出されるデータ「０ｘ１１」は、書込命令に含まれる書込対象データと一致する。しかし、エラーの発生している状態３０２及び３０３では、同じアドレスから読み出したデータは「０ｘｄ５」及び「０ｘ１０」であり、いずれも書込命令に含まれる書込対象データと一致しない。
【００３８】
このエラー検出方法では、データ不一致の場合はエラーであると判定することができ、アドレスエラーとデータエラーのどちらが発生しても、また、エラーが複数ビット又は複数バイトに及んでも、正常に書き込みが行われなかったことを検出できる。しかし、書込命令で要求したアドレスとは異なるアドレスにデータが書き込まれたことによるデータ不一致なのか（アドレスエラー）、データが書き込まれたアドレスは正しいが、書き込まれたデータが書込命令で要求したデータと異なることによるデータ不一致なのか（データエラー）は判別できない。
【００３９】
次に、図４に、アドレスエラー及びデータエラーの訂正処理の概要を示す。
図４に示すのは、図３に示した状態３０２，３０３において発生しているエラーの訂正処理である。
【００４０】
まず、状態３０３のデータエラーの場合は、正常に書き込みの行われなかった書込命令と同じ命令をＥＥＰＲＯＭ２０に送信して、再度同じ書込先アドレス「０ｘ０２」に同じ書込対象データ「０ｘ１１」の書き込みを行わせればよい。状態４０２はその書き込みが正常に行われた状態である。データエラーが発生した場合は、このように容易に訂正が完了する。
【００４１】
一方、状態３０２のアドレスエラーの場合にも、同様に同じ書込先アドレスへの書き込みを行う。状態４０１はこの書き込みが正しく行われた場合であるが、依然として、最初に行った書込命令に含まれる書込先アドレスと異なるアドレス「０ｘ００」に書込対象データ「０ｘ１１」が書き込まれた状態にある。
【００４２】
そこで、状態４０３のように、アドレス「０ｘ００」に書き込まれているデータ「０ｘ１１」を、元のデータ「０ｘ２ｂ」に訂正する処理が必要となる。ここで、そもそも、ＣＰＵ１０１は書込命令に含まれる書込対象データが書き込まれたアドレス（書込命令における書込先アドレスとは異なるアドレス）を検出できていないので、まず、その書き込まれたアドレスを探索する必要がある。しかし、アドレスエラーが発生した時点では、その書き込まれたアドレスの候補はＥＥＰＲＯＭ２０の全アドレスであり、その特定には膨大な時間が必要となる。
【００４３】
このように、アドレスエラーの訂正処理は、データエラーの訂正処理に比べて非常に時間がかかるものである。しかし、図３のエラー検出方法では、上述のようにアドレスエラーとデータエラーの区別ができない。従って、エラーが発生すると、アドレスエラーが発生していない場合であっても、アドレスエラー訂正処理を行うことになり、訂正処理に非常に時間がかかる。
【００４４】
そこで、本実施形態の情報処理装置Ａにおいては、上述したアドレスエラーとデータエラーを区別可能なエラー検出方法を実行するようにした。これにより、処理負荷の高いアドレスエラーの訂正処理は、アドレスエラーが発生した場合のみ行えばよく、データエラーが発生した場合はデータエラーの訂正処理を行えばよいことになる。以下、このエラー検出方法の手順を図５乃至図７を用いて説明する。なお、以下に説明する手順は、この発明のエラー検出方法の実施形態である。
【００４５】
まず図５に、ＣＰＵ１０１が起動時に実行する処理のフローチャートを示す。
ＣＰＵ１０１は、情報処理装置Ａの電源がＯＮされたり、リセットされたりして、情報処理装置Ａの起動を行う場合に、図５のフローチャートに示す処理を開始する。
【００４６】
図５の処理において、ＣＰＵ１０１はまず、情報処理装置Ａの制御に用いるシステムの起動に必要な処理を行う（Ｓ６０１）。その後、ＥＥＰＲＯＭ２０から所定のアドレスに記憶されているデータを読み出し（Ｓ６０２）、読み出したデータをＳＲＡＭ１０２に記憶させて（Ｓ６０３）、処理を終了する。これらのステップＳ６０２、Ｓ６０３の処理はデータ保持手順の処理であり、これらの処理においてＣＰＵ１０１がデータ保持手段として機能する。
【００４７】
なお、ステップＳ６０２で読み出すデータの範囲は、ＥＥＰＲＯＭ２０に記憶されているデータのうち、少なくとも情報処理装置Ａの動作中に書き込み対象となり得ることが想定されるアドレス範囲のデータである。最低限この範囲のデータを読み出しておけば、後述する図６のステップＳ７０４の比較を問題なく行うことができるし、読み出すべきデータの量を減らせれば、処理時間の短縮につながる。しかし、書き込み範囲を特に意識せずに全データを読み出すことも妨げられない。
また、起動時にステップＳ６０２の処理を行うこととしたのは、システム起動時はモータ等のノイズの原因となり得る要素を有する機器がまだ稼動していないことが多いので、信号に比較的ノイズが混入しにくいからである。ここでシステム起動時とは、電源をＯＮした時だけではなく、リセット後の再起動も含まれる。
【００４８】
また、ステップＳ６０３でのＳＲＡＭ１０２へのデータの記憶は、起動時に一度行えばよい。その後は、図６を用いて後述するように、ＥＥＰＲＯＭ２０とＳＲＡＭ１０２の内容を一致させるために、ＥＥＰＲＯＭ２０の内容を書き換える度にこれに合わせてＳＲＡＭ１０２の内容を書き換える。しかし、適当なタイミングでステップＳ６０２及びＳ６０３の処理を再度実行したり、ＥＥＰＲＯＭ２０のうちステップＳ６０２で読み出しを行わなかった領域に書き込みを行おうとしたタイミングで新たな領域についてステップＳ６０２及びＳ６０３の処理を実行したりすることも妨げられない。ただし、この場合も、情報処理装置Ａが、上述のようにノイズが混入しにくいと考えられる動作状態にある時にこの処理を実行することが望ましい。
【００４９】
次に、図６に、ＣＰＵ１０１がＥＥＰＲＯＭ２０へのデータ書き込み時に実行する処理のフローチャートを示す。
ＣＰＵ１０１は、ＥＥＰＲＯＭ２０へのデータ書き込みを行う場合に、図６のフローチャートに示す処理を開始する。この処理の開始時には、書込先アドレスと書込対象データは特定されているとする。また、ここでは１アドレスへの書き込みを行う毎に図６の処理を実行するものとするが、複数アドレス分まとめて同様の処理を実行する構成も妨げられない。
【００５０】
図６の処理において、ＣＰＵ１０１はまず、ＥＥＰＲＯＭ２０に対して、書込先アドレス及び書込対象データを含む書込命令を送信する（Ｓ７０１）。ＥＥＰＲＯＭ２０は、この書込命令に応じて、自身の記憶領域のうち書込命令の要求に応じて、書込命令に含まれる書込先アドレスに書込対象データを書き込む。しかし、この時点では、書込命令の伝送にエラーが生じ、書き込みが、ＣＰＵ１０１が送信した命令通りに行われていない可能性がある。以上のステップＳ７０１の処理が、書込手順の処理であり、この処理においてＣＰＵ１０１が書込手段として機能する。
【００５１】
次に、ＣＰＵ１０１は、ステップＳ７０１で書込先アドレスとして送信したアドレスに記憶されているデータを読み出すことを命令する（その書込先アドレスを読出先アドレスとして指定した）読出命令をＥＥＰＲＯＭ２０に送信する（Ｓ７０２）。ＥＥＰＲＯＭ２０は、この読出命令に応じて、自身の記憶領域のうち読出先アドレスに記憶しているデータを読み出して、ＣＰＵ１０１に送信する。以上のステップＳ７０２の処理が、読出手順の処理であり、この処理においてＣＰＵ１０１が読出手段として機能する。
次に、ＣＰＵ１０１は、ステップＳ７０１でＥＥＰＲＯＭ２０に送信した書込対象データとステップＳ７０２で読み出したデータとが一致するか否かを比較する（Ｓ７０３）。この処理は第１比較手順の処理であり、この処理においてＣＰＵ１０１が第１比較手段として機能する。
【００５２】
ステップＳ７０３の比較の結果、両データが一致していた場合、ステップＳ７０１で送信した書込命令に従った書き込みは正しく行われたと考えられる。そこで、ＣＰＵ１０１は、書き込みに関する処理を終了するとともに、ＳＲＡＭ１０２に記憶させてあるデータを、ＥＥＰＲＯＭ２０が記憶するデータの変更に合わせて更新する（Ｓ７０９）。
【００５３】
具体的には、ＳＲＡＭ１０２の、ステップＳ７０１で送信した書込先アドレスと対応するアドレスのデータを、ステップＳ７０１で送信した書込対象データ（又は読出命令に従って読み出したデータ）に書き換える。以上の更新により、ＥＥＰＲＯＭ２０のデータの内容を変更した場合でも、ＥＥＰＲＯＭ２０のデータとＳＲＡＭ１０２のデータが一致する状態を保つことができる。
【００５４】
そして、次回行う図６の処理においても、ＳＲＡＭ１０２のデータを、後述するステップＳ７０４の比較に用いることができる。
以上のステップＳ７０９の処理が、更新手順の処理であり、この処理においてＣＰＵ１０１が更新手段として機能する。また、ステップＳ７０９までで、図６のフローチャートに示す処理は終了する。
【００５５】
一方、ステップＳ７０２で読み出したデータとステップＳ７０１で送信した書込対象データとが不一致であった場合、データの書き込みに何らかのエラーが発生したと考えられる。しかし、この段階ではまだデータエラーが発生したかアドレスエラーが発生したかが不明である。
【００５６】
そこでこの場合（Ｓ７０３のＮＯ）、ＣＰＵ１０１は、ステップＳ７０２で読み出したデータと、ステップＳ６０３でＳＲＡＭ１０２に記憶させたデータのうちステップＳ７０１で送信した書込先アドレスに対応するアドレスに記憶されているデータとを比較する（Ｓ７０４）。なお、後者のデータは、ステップＳ６０２においてＥＥＰＲＯＭ２０の該書込先アドレスから読み出してＳＲＡＭ１０２に記憶させたデータ、あるいはこのデータをステップＳ７０８で更新した更新後のデータである。この処理は第２比較手順の処理であり、この処理においてＣＰＵ１０１が第２比較手段として機能する。
【００５７】
この比較においてデータが一致した場合（Ｓ７０４のＹＥＳ）は、ＥＥＰＲＯＭ２０における書込命令時の書込先アドレスのデータは、書き込み実行前と変わっていないことになるので、正しいアドレスに書き込みが行われなかったことがわかる。そこで、ＣＰＵ１０１はアドレスエラーが発生したと判定し（Ｓ７０５）、アドレスエラー訂正の処理を行う（Ｓ７０６）。アドレスエラー訂正の処理については、図４を用いて説明したものをはじめ、適宜公知の処理を適用すればよい。
【００５８】
一方、ステップＳ７０４で不一致の場合（Ｓ７０４のＮＯ）は、ＥＥＰＲＯＭ２０において書込命令時の書込先アドレスのデータの書き換え自体はされていると判断できる。従って、ステップＳ７０３の比較結果と合わせると、ステップＳ７０１で送信した書込対象データが異なってしまったということになる。そこで、ＣＰＵ１０１はデータエラーが発生したと判定（Ｓ７０７）し、データエラーの訂正処理を行う（Ｓ７０８）。データエラー訂正の処理についても、図４を用いて説明したものをはじめ、適宜公知の処理を適用すればよい。このステップＳ７０４、Ｓ７０５、Ｓ７０７の手順がアドレスエラーとデータエラーとを切り分けてエラーを検出する判定手順の処理であり、この処理においてＣＰＵ１０１が判定手段として機能する。
【００５９】
なお、詳細な図示は省略したが、ステップＳ７０６又はＳ７０８のエラー訂正処理は、図４を用いて説明したように、正しい書込先アドレスに正しい書込対象データ（書込命令に含まれる書込先アドレスと書込対象データ）を書き込む処理を含む。そして、この処理の最後では、書き込みが正しく行われたことを、ステップＳ７０２乃至Ｓ７０４と同様な手順により確認する。そして、ステップＳ７０６又はＳ７０８の後も、ステップＳ７０３でＹｅｓだった場合と同様、ＣＰＵ１０１は、ＳＲＡＭ１０２に記憶させてあるデータの更新を行って（Ｓ７０９）、処理を終了する。
【００６０】
ここで、図７を用いて、図６の処理によるエラー検出の具体例について説明する。
ＣＰＵ１０１は、図６の処理を行うに先立ち、情報処理装置Ａの起動時に図５のステップＳ６０１乃至Ｓ６０３の処理を実行し、ＥＥＰＲＯＭ２０に記憶されているデータを読み出してＳＲＡＭ１０２に記憶させておく。
【００６１】
その後、ＣＰＵ１０１がアプリケーションプログラム等に従い動作する際に、ＥＥＰＲＯＭ２０へデータの書き込みを行う必要が生じるとする。この場合、今回書き込みを予定している書込対象データ「０ｘ１１」は、ＳＲＡＭ１０２に記憶され、書込対象アドレス（ここでは「０ｘ０２」とする）も決定されている。
【００６２】
そして、ＣＰＵ１０１は、図６のステップＳ７０１で、書込先アドレス「０ｘ０２」に書込対象データ「０ｘ１１」を書き込むよう指示する書込命令を、ＥＥＰＲＯＭ２０に送信する。
そして、この書込命令の伝送時にアドレスエラーが生じ、書込命令に含まれる書込先アドレス「０ｘ０２」とは異なるアドレス「０ｘ００」に書込対象データ「０ｘ１１」が書き込まれたのが状態３０２である（この点は図３の例と同じ）。
【００６３】
この状態において、ＣＰＵ１０１がステップＳ７０２でＥＥＰＲＯＭ２０に書込命令に含まれる書込先アドレス「０ｘ０２」のデータの読出命令を送信すると、ＥＥＰＲＯＭ２０からは、「０ｘｄ５」のデータが返される。そして、ＣＰＵ１０１はステップＳ７０３で、この「０ｘｄ５」とステップＳ７０１で送信した書込命令に含まれる書込対象データ「０ｘ１１」とを比較する。ここでは、不一致であるので、ＣＰＵ１０１はエラーの発生を検出する。
【００６４】
次に、ＣＰＵ１０１は、ステップＳ７０４で、読み出したデータ「０ｘｄ５」と、ＳＲＡＭ１０２に記憶しておいたデータのうちステップＳ７０１の書込命令に含まれる書込先アドレス「０ｘ０２」に対応するアドレス（図では太枠で示す）のデータ「０ｘｄ５」とを比較する。
【００６５】
ここでは、両データは一致するので、書込命令を出した時にＥＥＰＲＯＭ２０の書込先アドレスに記憶されていたデータは、書込命令の送信後も書き換えられていないことになる。従って、書き込みはステップＳ７０１で送信した書込命令に含まれる書込先アドレスとは異なるアドレスに対して行われたということになり、ＣＰＵ１０１は、アドレスエラーが発生したと判定する（Ｓ７０５）。そこで、ＣＰＵ１０１はステップＳ７０６のアドレスエラー訂正処理を行い、訂正後にＳＲＡＭ１０２に記憶されているデータを更新する（Ｓ７０９）。
【００６６】
一方、ステップＳ７０１の書込命令の伝送時にアドレスエラーが生じ、書込命令に含まれる書込先アドレス「０ｘ０２」に指定した書込対象データ「０ｘ１１」と異なるデータ「０ｘ１０」が書き込まれたのが状態３０３である（この点は図３の例と同じ）。
【００６７】
この状態において、ステップＳ７０２で、ＣＰＵ１０１がＥＥＰＲＯＭ２０に対し、ステップＳ７０１で送信された書込命令に含まれる書込先アドレス「０ｘ０２」のデータの読出命令を送信すると、ＥＥＰＲＯＭ２０からは、「０ｘ１０」のデータが返される。そして、ＣＰＵ１０１は、ステップＳ７０３で、この「０ｘ１０」とステップＳ７０１で書込命令を出した時の書込対象データ「０ｘ１１」とを比較する。ここでも、不一致であるので、ＣＰＵ１０１はエラーの発生を検出する。
【００６８】
次に、ＣＰＵ１０１は、ステップＳ７０４で、ステップＳ７０２で読み出したデータ「０ｘ１０」と、ＳＲＡＭ１０２に記憶しておいたデータのうち書込命令時の書込先アドレス「０ｘ０２」に対応するアドレス（図では太枠で示す）のデータ「０ｘｄ５」とを比較する。
【００６９】
ここでは、両データは不一致である。つまり、書込命令によってデータが書き込まれたアドレスは間違っていないが、書込命令における書込対象データとは異なるデータが書き込まれているということになる。このため、ＣＰＵ１０１は、データエラーが発生したと判定する（Ｓ７０７）。そこで、ＣＰＵ１０１はステップＳ７０８のデータエラー訂正処理を行い、訂正後にＳＲＡＭ１０２に記憶されているデータを更新する（Ｓ７０９）。
【００７０】
以上のように、図６の処理によれば、ＥＥＰＲＯＭ２０のうちステップＳ７０１で行った書込命令に含まれる書込先アドレスに実際に書き込まれているデータが、書込命令に含まれる書込対象データと不一致であった場合に、これをさらに、予めＳＲＡＭ１０２に記憶させた対応するデータと比較する。これにより、アドレスエラーとデータエラーを区別して検出することができる。
【００７１】
また、この区別に要する処理は、初めにＥＥＰＲＯＭ２０のデータをＳＲＡＭ１０２にコピーしてしまえば、ステップＳ１０４での比較処理のみである。また、ステップＳ１０３でエラーの発生を検出した場合にのみ行えばよい。従って、エラー検出のために１回のデータ書き込み当たりの通信時間が大きく増加することはない。
【００７２】
また、上記のようにアドレスエラーとデータエラーを区別できれば、処理負荷の大きいアドレスエラー訂正処理はアドレスエラーを検出した場合のみ行えばよい。データエラーを検出した場合には、書き込みの再試行と同程度のデータエラー訂正処理を行うのみでよい。従って、効率的なエラーの検出及び訂正を実現することができる。
【００７３】
なお、図６及び図７の説明においては、読出命令（特に読出先アドレス）の伝送及びこれに応じて読み出したデータの伝送の際に発生するエラーは考慮していない。しかし、これを考慮したとしても、図６及び図７を用いて説明した効果は問題なく得られる。
まず、読出先アドレスあるいは読み出したデータの伝送にエラーが生じると、書込命令の伝送にエラーがなく、ＥＥＰＲＯＭ２０において書き込みが正しく実行された場合でも、図６のステップＳ７０３の判断がＮｏとなる。
【００７４】
しかし、たまたまこのような事態が発生したとしても、次のステップＳ７０４の判断は、基本的にはＮｏとなる。これがＹｅｓになるのは、エラーが混入した誤った読出先アドレスから読み出したデータあるいはエラーが混入して誤っている読み出したデータが、たまたまＳＲＡＭ１０２の正しいデータと一致する場合に限られるためである。
【００７５】
従って、読出命令あるいは読み出したデータの伝送の際のエラーに起因して、書込命令のデータの伝送を誤検出してしまった場合でも、それに応じて実行されるエラー訂正は、時間のかからないデータエラー訂正となる場合がほとんどである。また、このデータエラー訂正も、正しいデータを書込先アドレスに上書きする処理であるので、正しいデータが書き込まれている状態で行ってしまっても不都合はない。このため、多少の誤検出が発生しても、図６及び図７を用いて説明した効果は問題なく得られる。
【００７６】
なお、読出命令（及び読み出したデータ）の伝送と、書込命令の伝送の双方にエラーが発生することは、一般のデータ伝送におけるエラー頻度から考えてごく希である。したがって、この場合については考慮しなくても、一般的には、装置の動作として特段の問題はない。
【００７７】
特に誤検出を低減したい場合、読出命令について、２度同じ命令を送信して、両者の読み出し結果が一致した場合にエラーがないとして次の処理に進む、といった対応も考えられる。しかし、通信時間を考慮するとこのような対応は必ずしも望ましいとは言えず、特に誤検出の確率を低減したい場合のみ採用すればよいと考えられる。
【００７８】
以上で実施形態の説明を終了するが、この発明において、装置の具体的な構成、回路や素子の構成、具体的な処理の手順、データの記憶形式等は、実施形態で説明したものに限るものではない。
【００７９】
例えば、上述した実施形態ではＣＰＵ１０１とＥＥＰＲＯＭ２０との間の通信（デジタル伝送）にＩ２Ｃ規格の外部バスを使用しているが、これに限定されるものではなく、他の規格のバスであってもよい。また、伝送経路が２本の通信方式に限られるものでもない。更に、ＳＲＡＭ１０２、ＥＥＰＲＯＭ２０についても、これらに限られるものではなく、他のメモリであってもかまわない。
【００８０】
また、エラー検出装置が、図５乃至図７を用いて説明したデータの読み書き及びエラー検出以外の機能を併せ持つものでよいことはもちろんである。例えば、コピー、プリント、スキャン、ファクシミリ通信、画像蓄積等の機能のうち任意のものを備えた画像処理装置において、その制御部が図５乃至図７を用いて説明したデータの読み書き及びエラー検出の機能を備えるものも、この発明のエラー検出装置の実施形態である。
【００８１】
また、この発明を、このような画像処理装置として実施することができる。画像処理装置以外でも、ＣＰＵ等の制御部がメモリに対してデータ書き込みを行う任意の電子装置に対してこの発明を適用可能である。
また、以上説明してきた実施形態及び変形例の構成は、相互に矛盾しない限り任意に組み合わせて実施可能であることは勿論である。
【符号の説明】
【００８２】
Ａ：情報処理装置，１０：マイクロコンピュータ，１０１：ＣＰＵ，１０２：ＳＲＡＭ，１０３：内部バス，２０：ＥＥＰＲＯＭ，３１：ＳＣＬ，３２：ＳＤＡ
【先行技術文献】
【特許文献】
【００８３】
【特許文献１】特開平６−３０３２２２号公報
【図１】
0006398390.tif 000002
【図２】
0006398390.tif 000003
【図３】
0006398390.tif 000004
【図４】
0006398390.tif 000005
【図５】
0006398390.tif 000006
【図６】
0006398390.tif 000007
【図７】
0006398390.tif 000008