トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 ROMのデータチェック方法
【発明者】 【氏名】中野 剛成

【要約】 【課題】チェックサムによるROMのデータチェックにおいて、データスキップによる誤判断を防ぐ。

【解決手段】ROMアドレスをインクリメントしながらROM内容に係るチェックサム値の累積的な加算処理を行うに際して、加算処理した加算回数をインクリメントし、最終的なROMアドレスの値から最初のROMアドレスの値を減算した値と、その時点での加算回数とを比較し、一致していればデータスキップがなかったものとしてチェックサム値の合否判断を行う。
【特許請求の範囲】
【請求項1】 ROMアドレスを順次インクリメントし、各ROMアドレス内のROM内容を累積的に加算してチェックサム値を算出し、最終的なチェックサム値が予め設定された正しいチェックサム値に一致しているか否かを比較判断するROMのデータチェック方法であって、ROMアドレスを順次インクリメントする度に当該各ROMアドレス内のROM内容を加算処理して中間的なチェックサム値を算出する第一工程と、前記各ROMアドレス内のROM内容を加算処理して中間的なチェックサム値を算出する度に、当該加算処理に係る加算回数の値をインクリメントする第二工程と、最終のROMアドレスに到達した際に前記加算回数の値が正しい値か否かを判断する第三工程と、前記最終のROMアドレスに到達した際に前記チェックサム値が正しい値か否かを判断する第四工程とを備えるROMのデータチェック方法。
【請求項2】 請求項1に記載のROMのデータチェック方法であって、前記第三工程は、チェックサム値を加算処理するにあたっての最終のROMアドレスの値から最初のROMアドレスの値を減算し、当該減算によって得られた値と前記加算回数とを比較して一致しているか否かを判断することを特徴とするROMのデータチェック方法。
【発明の詳細な説明】【0001】
【発明の属する技術分野】この発明は、データ書き込み時等におけるROM(PROM,EEPROM,FLASH ROM等)のデータチェック方法に関する。
【0002】
【従来の技術】従来、ROMのデータ書き込み時におけるデータチェック方法として、チェックサムを使用してROMのデータをチェックすることが行われていた。
【0003】チェックサムとは、チェックしたいROMの記憶領域の先頭アドレスから終了アドレスまでのROM値を加算して合計した値をいい、全記憶領域の加算結果とROM上にあらかじめ格納しておいた正しいチェックサム値とを比較することによって、ROM内に格納されている値の異常を発見することが可能となる。
【0004】図3はチェックサムの演算方法の例を示す図である。尚、数字及びアルファベットの右側に「H」が付与されている場合は、その数字が16進数である旨を示している。
【0005】図3の例では、チェックしたいROMアドレスが「0000H」から「0070H」までであり、各ROMアドレスのROM内容がそれぞれ「11H」「23H」「00H」「00H」…「23H」「FFH」となっている。
【0006】この場合において、まず最初のROMアドレスである「0000H」のROM内容「11H」を中間的なチェックサム値として認識する。そして、1回目の加算処理で、その時点でのチェックサム値「11H」と次のROMアドレス「0001H」のROM内容「23H」とを合計し、中間的なチェックサム値「11H+23H」を算出する。さらに、2回目の加算処理で、その時点のチェックサム値「11H+23H」と「0002H」のROM内容「00H」とを合計して中間的なチェックサム値を更新する。以後、3回目、4回目と加算処理を繰り返し、最後のn回目の加算処理で、その時点での中間的なチェックサム値「11H+23H+00H+00H+…+23H」と最後のROMアドレスの「0070H」のROM内容「FFH」とを加算し、最終的なチェックサム値「11H+23H+00H+00H+…+23H+FFH」を得る。これらの加算処理において、上位ビット側にオーバーフローした値は切り捨てる。しかる後、この加算処理後のチェックサム値と、同一のROM内の所定の記憶領域に予め格納された正しいチェックサム値とを比較する。
【0007】
【発明が解決しようとする課題】ところで、チェックサム値の加算処理は、通常はROM内容が「0(=00H)」のものを加算してもチェックサム値に変化は出てこない。例えば、図3の例では、3番目のROMアドレス「0002H」と4番目のROMアドレス「0003H」のROM内容が「00H」となっているため、2回目の加算処理の前後や3回目の加算処理の前後では、中間的なチェックサム値は変化しない。
【0008】このため、ROMにおいて、3番目のROMアドレス「0002H」と4番目のROMアドレス「0003H」のROM内容を読み出すことができないような異常事態が生じている場合の中間的なチェックサム値と、これらのROMアドレスのROM内容を正常に加算処理した場合の中間的なチェックサム値とでは違いがないことになる。即ち、3番目のROMアドレス「0002H」と4番目のROMアドレス「0003H」のROM内容を正常に読み出した場合と異常事態が発生してスキップした場合とでは、最終的なチェックサム値に変化がなく、故にスキップという異常事態が発生しているにも拘わらずその旨を検知できないことになってしまう。
【0009】特に、ROM内容が「00H」である部分が多く存在すればするほど、正しく全ての加算処理を行えたのかかどうかの判断が付きにくくなる。
【0010】そこで、この発明の課題は、チェックサムを使用しつつROMのデータの正誤を確実にチェックできるROMのデータチェック方法を提供することにある。
【0011】
【課題を解決するための手段】上記課題を解決すべく、請求項1に記載の発明は、ROMアドレスを順次インクリメントし、各ROMアドレス内のROM内容を累積的に加算してチェックサム値を算出し、最終的なチェックサム値が予め設定された正しいチェックサム値に一致しているか否かを比較判断するROMのデータチェック方法であって、ROMアドレスを順次インクリメントする度に当該各ROMアドレス内のROM内容を加算処理して中間的なチェックサム値を算出する第一工程と、前記各ROMアドレス内のROM内容を加算処理して中間的なチェックサム値を算出する度に、当該加算処理に係る加算回数の値をインクリメントする第二工程と、最終のROMアドレスに到達した際に前記加算回数の値が正しい値か否かを判断する第三工程と、前記最終のROMアドレスに到達した際に前記チェックサム値が正しい値か否かを判断する第四工程とを備えるものである。
【0012】請求項2に記載の発明は、請求項1に記載のROMのデータチェック方法であって、前記第三工程は、チェックサム値を加算処理するにあたっての最終のROMアドレスの値から最初のROMアドレスの値を減算し、当該減算によって得られた値と前記加算回数とを比較して一致しているか否かを判断するものである。
【0013】
【発明の実施の形態】図1はこの発明の一の実施の形態に係るROMのデータチェック方法で使用される一時記憶装置の格納領域を示す図、図2は同じくROMのデータチェック方法を示すフローチャートである。
【0014】このデータチェック方法は、RAM等の一時記憶装置1において、チェックサム値を格納するチェックサム値格納領域2とは別に、加算回数を更新可能に格納する加算回数格納領域3を別途設定し、各ROMアドレスのROM内容を次々と加算処理して中間的なチェックサム値を逐次チェックサム値格納領域2に更新的に格納すると同時に、例えば図3に示したような加算回数の値を逐次加算回数格納領域3に更新的に格納するようにし、最終的に全てのROMアドレスのROM内容の加算処理が終了した時点で、最終的なチェックサム値のチェックとともに、加算回数格納領域3内の加算回数の値が正しい値かどうかをチェックするようにしている。
【0015】具体的なデータチェック方法を図3に示したデータチェックを例に挙げて説明する。
【0016】まず始めの事前段階として、最初のROMアドレス「000H」内のROM内容「11H」を、最初の中間的なチェックサム値として認識し、このROM内容の値「11H」を一時記憶装置1内のチェックサム値格納領域2に格納する。また、加算回数格納領域3内の初期値としては「0」値を格納しておく。
【0017】次に、図2のステップS01において、ROMアドレスの値が最終アドレスか否かを判断し、未だ最終アドレスに至っていないと判断した場合はステップS02に進む。
【0018】ステップS02では、加算対象アドレスをインクリメントし、次のROMアドレス内のROM内容を読み取る。そして、ステップS03で、その時点でのチェックサム値格納領域2内の中間的なチェックサム値「11H」と次のROMアドレス「0001H」のROM内容「23H」とを合計し、新たな中間的なチェックサム値「11H+23H」を算出して、これをチェックサム値格納領域2に格納する。
【0019】これとほぼ同時または前後して、ステップS04において、加算回数格納領域3内の中間的な加算回数の値を「1」だけインクリメントする。即ち、この時点では初期値「0」に対して「1」だけ加算した結果の「1」の値を新たな中間的な加算回数の値として加算回数格納領域3内に更新的に格納する。しかる後、ステップS01に戻る。
【0020】このようなステップS01〜S04の処理をROMアドレスの値が最終アドレスに到達するまで繰り返す。そして、ステップS01において、ROMアドレスの値が最終アドレスに到達していたと判断したときには、ステップS05に進む。
【0021】ステップS05では、まず「最終アドレス−開始アドレス」の値(以下「アドレス変化値」と称す)を演算し、さらに、このアドレス変化値と「加算回数」とが等しいかどうかを比較判断する。図3の具体例では、最終のROMアドレス「0070H」から最初のROMアドレス「0000H」を減算した値「0070H」と加算回数「n」とを比較する。そして、両者の値が等しければ正しくROMチェックを行えたものとし、ステップS06に進む。
【0022】ステップS06では、最終的なチェックサム値「11H+23H+00H+00H+…+23H+FFH」と予めROM内に格納された正しいチェックサム値とを比較し、両者の値が一致していれば、チェックサムによるROMのチェック工程が正常終了する(ステップS07)。一方、ステップS05において加算回数が正しくなかったり、ステップS06においてチェックサム値が正しくない場合は、ステップS08に進んで所定のエラー処理を行う。
【0023】このように、繰り返し加算処理を行って中間的なチェックサム値を算出する仮定で、異常動作により加算するROMアドレスをスキップした場合などを、最終的な加算回数の正誤判断によって検知することができる。したがって、チェックサム値によるROMチェック時と同時に、マイコン自体の動作チェックも行うことができ、未然に異常マイコンなどを検出し、誤動作及び暴走などを防ぐことが可能となる。
【0024】また、加算回数の正誤判断にあたっては、チェックサム値の加算処理に係る最後のROMアドレスの値から最初のROMアドレスの値を減算し、その減算の結果得られた値と最終的な加算回数の値とを比較するだけでよいので、予め正しい加算回数を決めておく必要がなく、またそのためにROM内に専用の記憶領域を設定しておく必要もないため便利である。
【0025】
【発明の効果】請求項1に記載の発明によれば、ROMアドレスを順次インクリメントする度に当該各ROMアドレス内のROM内容を加算処理して中間的なチェックサム値を算出するだけでなく、当該加算処理に係る加算回数の値をインクリメントし、最終のROMアドレスに到達した際にチェックサム値が正しい値か否かを判断するとともに、最終のROMアドレスに到達した際に加算回数の値が正しい値か否かを判断するようにしているので、繰り返し加算処理を行って中間的なチェックサム値を算出する仮定で、異常動作により加算するROMアドレスをスキップした場合などを、最終的な加算回数の正誤判断によって検知することができる。したがって、チェックサム値によるROMチェック時と同時に、マイコン自体の動作チェックも行うことができ、未然に異常マイコンなどを検出し、誤動作及び暴走などを防ぐことが可能となる。
【0026】請求項2に記載の発明によれば、加算回数の正誤判断にあたって、チェックサム値の加算処理に係る最後のROMアドレスの値から最初のROMアドレスの値を減算し、その減算の結果得られた値と最終的な加算回数の値とを比較するだけでよいので、予め正しい加算回数を決めておく必要がなく、またそのためにROM内に専用の記憶領域を設定しておく必要もないため便利である。
【出願人】 【識別番号】395011665
【氏名又は名称】株式会社オートネットワーク技術研究所
【識別番号】000183406
【氏名又は名称】住友電装株式会社
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
【出願日】 平成12年10月2日(2000.10.2)
【代理人】 【識別番号】100089233
【弁理士】
【氏名又は名称】吉田 茂明 (外2名)
【公開番号】 特開2002−108723(P2002−108723A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−302247(P2000−302247)