(57)【特許請求の範囲】
【請求項１】
第１のメモリ領域及び第２のメモリ領域を含む第１のメモリ，第２のメモリ及び入出力インタフェースを有するコンピュータシステムにおいて，自装置に格納されているデータ及び／又はプログラムを書き換えるメモリ書換え方法であって，
プログラムに含まれる第１のルーチン及び第２のルーチンのうち，前記第２のルーチンが前記第１のメモリ領域に格納されており，
前記第１のメモリ領域から前記第２のメモリに前記第２のルーチンをコピーし，
前記第１のメモリ領域又は前記第２のメモリから前記第２のメモリ領域に前記第２のルーチンをバックアップし，
前記第１のメモリ領域に格納されている前記第２のルーチンを削除し，
前記入出力インタフェースから読み込まれるデータにより，前記第１のメモリ領域上で前記第２のルーチンを書き換え，
前記バックアップ，削除及び／又は書き換えの少なくともいずれかが，前記第２のメモリにコピーされた前記第２のルーチンにより実行されることを特徴とするメモリ書き換え方法。
【請求項２】
前記第１のルーチンは，前記第２のルーチンを呼出し，前記第１のルーチン及び前記第２のルーチンは，前記バックアップ，削除及び書き換えを実行することを特徴とする，請求項１に記載のメモリ書き換え方法。
【請求項３】
前記データのバックアップコピーは，前記第１のメモリ及び／又は前記第２のメモリに形成され，前記バックアップ，削除又は書き換えの後に，前記データのオリジナルとして再び読み込まれることを特徴とする，請求項１又は２に記載のメモリ書き換え方法。
【請求項４】
前記第２のルーチンのバックアップコピーは，エラーが発生してない場合に，前記バックアップ，削除及び書き換えの後に消去されることを特徴とする，請求項１，２又は３のいずれか１項に記載のメモリ書き換え方法。
【請求項５】
前記バックアップ，削除又は書き換え時にエラーが発生した場合に，前記バックアップ，削除及び書き換えが自動的に回復されることを特徴とする，請求項１，２，３又は４のいずれか１項に記載のメモリ書き換え方法。
【請求項６】
前記バックアップ，削除又は書き換え時にエラーが発生した場合に，前記バックアップ，削除及び書き換えが自動的に前記第１のメモリ内で初期化されることを特徴とする，請求項１，２，３，４又は５のいずれか１項に記載のメモリ書き換え方法。
【請求項７】
前記第１のメモリは，不揮発性メモリであり，前記第１のルーチンは，前記第１のメモリに格納されることを特徴とする，請求項１，２，３，４，５又は６のいずれか１項に記載のメモリ書き換え方法。
【請求項８】
前記第２のメモリは，揮発性または不揮発性のバッファメモリであり，前記第２のメモリに前記第２のルーチンが一時的に格納されることを特徴とする，請求項１，２，３，４，５，６又は７のいずれか１項に記載のメモリ書き換え方法。
【請求項９】
前記第１のメモリ及び／又は前記第２のメモリは，少なくとも１つのオリジナル領域及び／又はバックアップ領域及び／又はバッファメモリ領域を有することを特徴とする，請求項１，２，３，４，５，６，７又は８のいずれか１項に記載のメモリ書き換え方法。
【請求項１０】
前記バックアップ，削除及び書き換えは，前記第１のメモリ及び／又は前記第２のメモリに読み込まれたプログラム及び／又はデータによって制御されることを特徴とする，請求項９に記載のメモリ書き換え方法。
【請求項１１】
前記バックアップ領域に他のデータ及び／又はプログラムが格納されて，前記プログラム及び／又は前記データを書き換えから保護するために，前記バックアップ領域が消去されることを特徴とする，請求項１０に記載のメモリ書き換え方法。
【請求項１２】
前記処理装置は，不揮発性で書き換えのできない第３のメモリをさらに含み，前記バックアップ，削除及び書き換えのためのプロセスを始動させる前記第１のプログラムの少なくとも一部が，前記第３のメモリ及び／又は前記第１のメモリの書き換えのできないメモリ領域に格納されることを特徴とする，請求項１，２，３，４，５，６，７，８，９，１０又は１１のいずれか１項に記載のメモリ書き換え方法。
【請求項１３】
第１のメモリ領域及び第２のメモリ領域を含む第１のメモリ，第２のメモリ及び入出力インタフェースを有し，自装置に格納されているデータ及び／又はプログラムを書き換えるコンピュータシステムであって，
プログラムに含まれる第１のルーチン及び第２のルーチンのうち，前記第２のルーチンが前記第１のメモリ領域に格納されており，
前記第１のメモリ領域から前記第２のメモリに前記第２のルーチンをコピーし，
前記第１のメモリ領域又は前記第２のメモリから前記第２のメモリ領域に前記第２のルーチンをバックアップし，
前記第１のメモリ領域に格納されている前記第２のルーチンを削除し，
前記入出力インタフェースから読み込まれるデータにより，前記第１のメモリ領域上で前記第２のルーチンを書き換え，
前記バックアップ，削除及び／又は書き換えの少なくともいずれかが，前記第２のメモリにコピーされた前記第２のルーチンにより実行されることを特徴とするコンピュータシステム。
【請求項１４】
前記第１のメモリは，不揮発性メモリであり，前記第２のメモリは，揮発性又は不揮発性メモリであることを特徴とする，請求項１３に記載のコンピュータシステム。
【請求項１５】
前記第２のメモリは，バッファメモリであり，前記第２のメモリに前記第２のルーチンが一時的に格納されることを特徴とする，請求項１３又は１４に記載のコンピュータシステム。
【請求項１６】
前記第１のメモリ及び／又は前記第２のメモリは，少なくとも１つのオリジナル領域及び／又はバックアップ領域及び／又はバッファメモリ領域を有することを特徴とする，請求項１３，１４又は１５のいずれか１項に記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，メモリ書き換え方法及びコンピュータシステムにかかり，特に，自動車内の駆動シーケンスを制御する制御装置等におけるメモリ書き換え方法及びコンピュータシステムに関する。
【０００２】
【従来の技術】
欧州特許公開公報ＥＰ０６６４３８７Ｂ１には，自動車の制御装置に格納された制御プログラムを変更する方法が開示されている。この文献に示された方法においては，プログラムを変更するためにプログラム識別子が読み出されて記憶される。このプログラム識別子は，基準プログラム識別子として格納される。それ以前にプログラム及びプログラム識別子のために使用されたメモリ領域は，消去された後，新しくプログラミングされる。新しくプログラミングするために，記憶されている基準プログラム識別子が新しいプログラム識別子として書き込まれて，次に新しいプログラムが外部から書き込まれる。基準プログラム識別子を生成することによって，新しいプログラムの書き込み中に車両電源が変動したり，あるいは車両電源が落ちてもこの情報が失われることはない。
【０００３】
新しいプログラムのロード中に車両電源が変動したり，あるいは車両電源が落ちたりしたときには，他の制御装置あるいはプログラミング装置を介して，外部から回復すべき領域に新たに書き込みを行わなければならない。同様に，バックアップコピーをそのまま保存しなければならない。車両電源が変動したり，あるいは車両電源が落ちた場合には，プログラミングプロセスを完全に繰り返すことが必要になるからである。
【０００４】
また，ドイツ特許公開公報ＤＥ４３３２４９９Ａ１には，自動車制御装置内の，電気的に消去可能な不揮発性メモリを完全に新しくプログラミングする方法が知られている。この文献に示されたプログラミングプロセスは，再度の書き込みのできないＲＯＭを使用せずに行われる。すなわち，消去可能な不揮発メモリが，少なくとも２つの消去可能かつプログラミング可能な領域に分割され，そのそれぞれの領域にプログラム（プログラミングモジュール）が書き込まれる。
【０００５】
メモリを２つの領域に分割することによって，プログラミングプロセスの終了前に自動車とデータ末端装置との間で電圧がなくなった場合に，このプログラミングプロセスを完全に繰り返すことが可能になる。プログラミング可能な不揮発性メモリ内の２つのメモリ領域の各々に，それぞれプログラムが存在しているからである。従って，２つのプログラムのうち一方が消えた場合でも，他方のメモリ領域には完全なプログラムが存在しているからである。
【０００６】
ところで，上記公開公報には，完全な新規プログラミングが開示されているだけであって，プログラム部分やプログラムルーチンを消去せずに，プログラムを２分割することや，他のプログラム部分やプログラムルーチンを追加することは示されていない。従って，プログラムの書き換えの際には，バックアップコピーは保存しておく必要がある。電圧がなくなるなどの障害の後には完全な新規プログラミングが必要となるからである。この新規プログラミングは，自動的には遂行されず，外部から行わなければならない。
【０００７】
また，例えばメモリプロセスまたはプログラミングプロセスにエラーがあった場合に，データエラーを検出する様々な方法が知られている。そのためにはデータやプログラムをエラーコードやエラー検出コードで表さなければならず，その中には本来の情報の他にエラー検出のための冗長な情報も含まれている。この種の情報は，例えばパリティビットであって，それは縦あるいは横合計形成のようなチェック合計形成（イーブン  パリティチェック）によるエラー検出を可能にする。
【０００８】
他の線形及び／またはサイクリックに実行可能な検査方法としては，ハミングコード，ＢＣＨコード（Ｂｏｓｅ，Ｃｈａｎｄｈｕｒｉ，Ｈｏｃｑｕｅｎｇｈａｍ），アブラムソンコード等が知られている。これらの検査方法にはサイクリック冗長性チェック（ＣＲＣ）も含められる。このＣＲＣにおいては，データやプログラム，すなわち，消去，コピー，読み込むべき情報から，ＣＲＣ方法に従ってブロック的に試験ビットが形成されて，この情報と共に処理される。
【０００９】
上述の検査方法においては，エラー検出の他にエラー補正も行われるが，それぞれ検出された個別エラーのみに関するものである。それぞれの検査文字は所定の法則性に従って形成しなければならないので，この法則性を模倣する個々のエラーは認識されない。従って，この方法によるエラー検出，及びそれに伴う補正は完全には保証されない。また，認識できないエラーしか発生しない確率は極めて低く，それによって通常は必ずしもすべてのエラーが簡単に認識されるわけではなく，従って必ずしもすべてのエラーが補正されるわけではない。
【００１０】
さらに，例えばプログラミングプロセスの間に電圧が中断した場合に発生するような，比較的大きなデータ領域やプログラム領域が失われた場合には，エラー検出は実行されるが，エラー補正はもはや実行されないことがある。この検査方法における補正は，個別エラーを補償することしかできないからである。
【００１１】
【発明が解決しようとする課題】
以上説明したように，従来のメモリ書き換え方法においては，以下の問題点があった。まず，メモリ書き換え途中に何らかのエラーが発生した場合には，回復すべき領域やメモリ内容全体を外部から新たに書き込まなければならないという第１の問題点があった。
【００１２】
また，メモリ書き換え途中に何らかの障害が発生した場合に不完全な領域の自動的な再形成は行われず，これも外部から完全なプログラミングによって実行しなければならないという第２の問題点があった。
【００１３】
さらにまた，エラー検査の方法において検出されないエラーは，該当するメモリ領域内に他のエラーが検出された場合でも補正されない。同様に，完全な新規プログラミングなしでメモリ領域全体を補正することも行われないという第３の問題点があった。
【００１４】
本発明は，従来のメモリ制御が有する上記問題点に鑑みてなされたものであり，本発明の目的は，任意の時点で任意の障害や中断に対しても十分に対応でき，さらに所定のメモリ領域について予め定められた初期状況を自発的に再構成することの可能な，新規かつ改良されたメモリ書き換え方法及びコンピュータシステムを提供することである。
【００１５】
【課題を解決するための手段】
上記課題を解決するため，本発明の第１の観点によれば，請求項１に記載のように，第１のメモリと第２のメモリとを含む処理装置において，少なくとも前記第１のメモリは複数のメモリ領域に区画され，前記第１のメモリの所定のメモリ領域に格納されたデータ及び／またはプログラムを書き換えるメモリ書き換え方法において，前記データ及び／またはプログラムを，前記第１のメモリの所定のメモリ領域及び／または前記第２のメモリにバックアップコピーした後に，前記データ及び／またはプログラムを書き換えることを特徴とする，メモリ書き換え方法が提供される。
【００１６】
前記プログラムは，請求項２に記載のように，少なくとも第１のプログラムと第２のプログラムとを含み，前記第１のプログラムは，前記第２のプログラムを呼び出すことを特徴とする。
【００１７】
少なくとも第１と第２のプログラム（ルーチン）を使用することによって，元のデータ及び／またはプログラムを後から補うことが可能になる。これは，メモリ領域を定められたように分割することによって保証され，データ及び／またはプログラム（ルーチン）の消去及び／またはコピー及び／または書込み前に，処理装置内でそのデータ及び／またはプログラム（ルーチン）からバックアップコピーをオリジナル領域としての他のメモリ領域内に形成することが可能になる。
【００１８】
本発明に基づく方法は，付加的なプログラムルーチン（付加ルーチン）及び／または保護すべきデータあるいは回復すべきメモリ領域は，エラーの場合に自動的に保護され，かつ／または回復され，かつ／または最初に始動されたプロセスが新しく初期化されるように構成されている。
【００１９】
また，前記データのバックアップコピーは，請求項３に記載のように，前記データ及び／またはプログラムの書き換えの後に，再びオリジナルとして書き込まれることを特徴とする。
【００２０】
また，前記プログラムのバックアップコピーは，請求項４に記載のように，前記データ及び／またはプログラムの書き換え時にエラーが発生してないと判断された場合に，消去されることを特徴とする。
【００２１】
保護すべきデータ及び／またはプログラム（ルーチン）のバックアップコピーは，オリジナルの消去後直ちに書き戻され，あるいはバックアップコピーは，プログラムを制御するルーチンの場合には，プログラミングプロセスが成功した後に消去され，それによって両方の場合にこのパックアップコピーをそのまま保存する必要がなくなる。データ及び／またはプログラム（ルーチン）のためのバックアップ領域は，通常の場合には安全上重要でない他のデータ及び／またはプログラム（ルーチン）を含んでいる場合があり，安全のために消去される。従って，必要以上に大きいメモリスペースを確保しないで済む。
【００２２】
選択的に第１と第２のルーチンを同時に，かつ／または別々に実行することができる。制御装置メーカーによる車両のための制御装置のプログラミングの場合には，これは，第２のルーチン，すなわち付加ルーチンとして例えば顧客固有のプログラム（ルーチン），従って車両メーカーのプログラムが使用される場合に，プログラミングプロセスにおいて，個別に車両タイプ，使用場所及び使用条件などに適合された固有の顧客要請を考慮できることを意味している。さらに，任意の時点で付加ルーチンの結合を行うことができる。
【００２３】
前記データ及び／またはプログラムの書き換え時にエラーが発生したと判断された場合には，請求項５に記載のように，前記データ及び／またはプログラムが自動的に再形成されることを特徴とする，
【００２４】
前記プログラミング処理の際にエラーが発生した場合には，請求項６に記載のように，前記メモリ書き換え時に始動されたプロセスが，前記第１のメモリ内で初期化されることを特徴とする，
【００２５】
それによってまず，メモリ領域に関して予め定められた初期状態が外部の介入なしで自動的に再形成され，さらにメモリ需要を増大させることのない確実な方法が得られ，それが極めてフレキシブルに適合されたプログラミングを可能にする。
【００２６】
また，前記第１のメモリは，請求項７に記載のように，不揮発性メモリであり，少なくとも前記第１のプログラムが前記第１のメモリに格納されることを特徴とする。
【００２７】
また，前記第２のメモリは，請求項８に記載のように，バッファメモリとして機能し，前記データ及び／またはプログラムが一時的に格納されることを特徴とする。
【００２８】
また，前記第１のメモリ及び／または前記第２のメモリは，請求項９に記載のように，少なくとも１つのオリジナル領域及び／またはバックアップ領域及び／またはバッファメモリ領域に区画されることを特徴とする。
【００２９】
また，データ及び／またはプログラムを書き換えるためのプロセスの制御は，請求項１０に記載のように，前記第１のメモリ及び／または前記第２のメモリに読み込まれたプログラム及び／またはデータによって実行されることを特徴とする。
【００３０】
また，請求項１１に記載の発明は，前記バックアップ領域に他のデータ及び／またはプログラムが格納されて，前記プログラム及び／または前記データを書き換えにより保護するために，前記バックアップ領域が消去されることを特徴とする。
【００３１】
また，前記処理装置は，請求項１２に記載のように，不揮発性で書き換えのできない第３のメモリをさらに含み，データ及び／またはプログラムの書き換えのためのプロセスを始動させる前記第１のプログラムの少なくとも一部が，前記第３のメモリ及び／または前記第１のメモリの書き換えのできないメモリ領域に格納されることを特徴とする。
【００３２】
また，上記課題を解決するため，本発明の第２の観点によれば，請求項１３に記載のように，第１のメモリと第２のメモリとを含む処理装置において，少なくとも第１のメモリは複数のメモリ領域に区画され，前記第１のメモリの所定の領域に格納されたデータ及び／またはプログラムを書き換えるためのコンピュータシステムにおいて，前記データ及び／またはプログラムを，前記第１のメモリの所定のメモリ領域及び／または前記第２のメモリにバックアップコピーした後に，前記データ及び／またはプログラムを書き換えることを特徴とする，コンピュータシステムが提供される。
【００３３】
また，前記第１のメモリは，請求項１４に記載のように，不揮発性メモリであることを特徴とする。
【００３４】
また，前記第２のメモリは，請求項１５に記載のように，バッファメモリとして機能し，前記データ及びまたはプログラムが一時的に格納されることを特徴とする。
【００３５】
前記第１のメモリ及び／または前記第２のメモリは，請求項１６に記載のように，少なくとも１つのオリジナル領域及び／またはバックアップ領域及び／またはバッファメモリ領域に区画されることを特徴とする。
【００３６】
なお，本明細書または図面において，プログラムとプログラムルーチンとルーチンとは，実質的に同様の意味として用いるものとする。また，プログラミングとは，メモリの書き換え動作を行うこと，より具体的には，メモリ内容の消去，コピー，読み込み等の一連の動作をいうものとする。
【００３７】
【発明の実施の形態】
以下に添付図面を参照しながら，本発明にかかるメモリ書き換え方法及びコンピュータシステムの好適な実施の形態について詳細に説明する。なお，本明細書及び図面において，実質的に同一の機能構成を有する構成要素については，同一の符号を付することにより重複説明を省略する。
【００３８】
（第１の実施の形態）
本実施の形態にかかるメモリ書き換え方法が適用されるコンピュータシステムを図１〜図４を参照しながら説明する。
コンピュータシステムは，図１に示したように，処理装置１００と，処理装置１００とインターフェイス１０７により接続されて処理装置１００とデータやプログラムの授受を行うプログラミング装置１０８とを含んでいる。インターフェイス１０８は，シリアルインターフェイスあるいはパラレルインターフェイスのいずれを用いることもできる。なお，図示したシステムは一例にすぎず，他の入出力ユニットにより接続される他のＣＰＵやメモリを備えるようにしてもよい。
【００３９】
処理装置１００は，メモリとして，フラッシュメモリ１０４と，ＲＡＭ１０５とを含んでいる。さらに，選択的なメモリとして，ＲＯＭ１０６とを含むことができる。これらのメモリ１０４，１０５，１０６は，バスシステム１０３を介して，ＣＰＵ１０１及び入出力ユニット１０２に接続されている。
【００４０】
フラッシュメモリ１０４は，書き換え可能な不揮発性メモリの一例であり，メモリ内容のブロック単位の消去と書き込みが可能である。なお，書き換え可能な不揮発性メモリには，紫外線により記録内容の消去を行うＥＰＲＯＭや，電気的に記録内容の消去を行うＥＥＰＲＯＭがある。
【００４１】
ＲＡＭ１０５は，書き換え可能な揮発性メモリの一例であり，補助的なメモリとして，特にデータやプログラムの一時的な記憶に用いられる。このＲＡＭ１０５からも同様にプログラムを開始することができる。
【００４２】
ＲＯＭ１０６は，書き換えのできない不揮発性メモリの一例であり，特別の安全性を得るために，選択的に設けることができる。すなわち，データ／プログラムの書き換え時にエラーが発生した場合に備えて，データロードプログラム等を格納するためにこのＲＯＭ１０６を用いることができる。
【００４３】
上述のフラッシュメモリ１０４，ＲＡＭ１０５，ＲＯＭ１０６のメモリ領域の詳細について，図２を参照しながら説明する。
フラッシュメモリ１０４のメモリ領域２００は，図２に示したように，データのバックアップ領域であるメモリ領域ＳＢ２０１と，第２のプログラムたる付加ルーチン（Ｚｕｓａｔｚｒｏｕｔｉｎｅｎ）ＺＲのバックアップ領域であるメモリ領域ＳＢ２０２と，データのオリジナル領域であるメモリ領域Ｓ２０３と，付加ルーチンＺＲのオリジナル領域であるメモリ領域ＳＢ２０４と，に区画されている。
【００４４】
ＲＡＭ１０５のメモリ領域２０６には，ＲＡＭメモリ領域ＳＢ２０７が区画されている。このＲＡＭメモリ領域ＳＢ２０７の一部には，処理中に生じるフラッシュメモリ領域ＳＢ２０１〜ＳＢ２０４のコピーが一時的に格納される。
【００４５】
ＲＯＭ１０６のメモリ領域２０８には，ＲＯＭメモリ領域２０９が区画されている。このＲＯＭメモリ領域ＳＢ２０９には，システムと処理を始動させる第１のプログラムたるブートプログラム（ＲＯＭ内ルーチンＲＲ）が格納されている。
【００４６】
上記コンピュータシステムを用いた本実施の形態にかかるメモリ書き換え方法を，図３を参照しながら説明する。
本実施の形態における，ＲＯＭ１０６を使用して付加ルーチンＺＲを保護する方法について，図３に示した流れ図を参照しながら説明する。
【００４７】
プログラミングは，図３に示したように，システム始動または新規プログラミング（ステップ３００）により，あるいはプログラミング要請（ステップ３０１）により開始する。プログラミング要請（ステップ３０１）より開始する場合には，このプログラミング要請によってＲＯＭ内ルーチンＲＲが実行される（ステップ３０３）。
【００４８】
ＲＯＭ内ルーチンＲＲは，フラッシュメモリ領域ＳＢ２０４からＲＡＭメモリ領域ＳＢ２０７へ，付加ルーチンＺＲのコピーを行わせる（ステップ３０５）。この付加ルーチンＺＲは，例えば，フラッシュメモリ１０４のプログラミングに用いられる。
【００４９】
次いで，付加ルーチンＺＲは，ＲＡＭメモリ領域ＳＢ２０７内で実行されて（ステップ３０５），独立して，あるいはＲＯＭ内ルーチンＲＲを用いて，フラッシュメモリ１０４の書き換え，すなわち，他のメモリ領域のコピー，消去，あるいは，プログラミングプロセスを制御する。付加ルーチンＺＲとＲＯＭルーチンＲＲは，選択的に同時に実行することもできる。また，フラッシュメモリ１０４の他のメモリ領域のコピー，消去，プログラミングプロセスの制御は，ＲＯＭ内ルーチンＲＲが独立して行うこともできる。
【００５０】
プログラミングするために，付加ルーチンＺＲのバックアップ領域たるフラッシュメモリ領域ＳＢ２０２内のプログラムルーチンがまず消去されて（ステップ３０６），付加ルーチンＺＲのバックアップコピーが代わりに格納される（ステップ３０７）。すなわち，フラッシュメモリ領域ＳＢ２０４の付加ルーチンＺＲが，バックアップ領域たるフラッシュメモリ領域ＳＢ２０２にコピーされる。
【００５１】
次いで，フラッシュメモリ領域２０４が消去される。そして，外部から，例えばインターフェイス１０７を介してプログラミング装置１０８によって，新しいバージョンの付加ルーチンＺＲによるプログラミングを行うことができる（ステップ３０８）。その場合に，選択的に，フラッシュメモリの他のメモリ領域，例えばプログラムルーチンのメモリ領域を消去したりプログラミングすることも可能である。
【００５２】
次いで，付加ルーチンＺＲをコピーした際（ステップ３０７）にフラッシュメモリ領域ＳＢ２０４でエラーが発生したかが検査される（ステップ３０９）。この検査は，例えば従来技術で説明したサイクリック冗長性チェック等により行われる。
【００５３】
ステップ３０９における検査の結果，フラッシュメモリ領域ＳＢ２０４でエラーが発生していない場合には，プログラム完了後にフラッシュメモリ領域ＳＢ２０２内の付加ルーチンＺＲが消去される（ステップ３１０）。次いで，最初にこのフラッシュメモリ領域ＳＢ２０２内に存在していたデータやルーチンが装置外部等から格納される（ステップ３１１）。
【００５４】
ステップ３０９における判断の結果，フラッシュメモリ領域ＳＢ２０４でエラーが発生している場合，すなわち何らかの理由でメモリ書き換えが中断した後に，フラッシュメモリ領域ＳＢ２０４内に有効なデータやプログラムルーチンが存在していない場合には，システム始動あるいは新規プログラミングする際（ステップ３００）に，ＲＯＭ内ルーチンＲＲによって認識される（ステップ３０２）。
【００５５】
ＲＯＭ内ルーチンＲＲは，フラッシュメモリ領域ＳＢ２０２の付加ルーチンＺＲのバックアップコピーをメモリ領域ＳＢ２０７のＲＡＭへコピーさせる（ステップ３０４）。ここでも選択的に，付加ルーチンＺＲをＲＯＭルーチンＲＲと同時に実行することができる。そのためには最初にあったのと同じメモリ領域ＳＢ２０４のプログラミングを外部から行わなければならない。
【００５６】
プログラミングの完了後に，フラッシュメモリ領域ＳＢ２０２内の付加ルーチンＺＲが同様に消去されて（ステップ３１０），もとからあったデータ及び／またはプログラムルーチンによって，あるいはこれらのデータ及び／またはプログラムルーチンの変更された新しいバージョンによって外から代えられる（ステップ３１１）。これは，付加ルーチンＺＲのバックアップコピーがそのまま格納されるのではなく，プログラミングに成功した後に消去されて，変更された，あるいはこのメモリ領域にあるべきデータ及び／またはプログラムによって上書きできることを意味している。従って，ステップ３１１で選択的に，フラッシュメモリの他の部分も消去及び／またはプログラミングすることができる。このことは，ステップ３０８についても同様である。
【００５７】
（第２の実施の形態）
本実施の形態にかかるメモリ書き換え方法を，図４を参照しながら説明する。なお，本実施の形態においても，上述した第１の実施の形態と同様のコンピュータシステムが用いられる。上記第１の実施の形態はプログラム（付加ルーチンＺＲ）の保護に関するものであったが，本実施の形態は，データの保護に関するものである。ここでいう保護すべきデータとは，例えば，制御装置の全寿命の間失われてはならないデータである。
【００５８】
プログラミングは，図４に示したように，システム始動または新規プログラミング（ステップ４００）により，あるいはプログラミング要請（ステップ４０１）により開始する。プログラミング要請（ステップ４０１）によりデータＳＤを保護しなければならない場合には，プログラミング要請（ステップ４０１）によってそれに応じたＲＯＭ内ルーチンＲＲが実行される（ステップ４０３）。
【００５９】
ＲＯＭ内ルーチンＲＲは，フラッシュメモリ領域ＳＢ２０４からＲＡＭメモリ領域ＳＢ２０７へ，付加ルーチンＺＲのコピーを行わせる（ステップ４０５）。この付加ルーチンＺＲは，例えば，フラッシュメモリ１０４のプログラミングに用いられる。
【００６０】
次いで，付加ルーチンＺＲは，ＲＡＭメモリ領域ＳＢ２０７内で実行されて（ステップ４０５），独立して，あるいはＲＯＭ内ルーチンＲＲを用いて，フラッシュメモリ１０４の書き換え，すなわち，他のメモリ領域のコピー，消去，あるいは，プログラミングプロセスを制御する。付加ルーチンＺＲとＲＯＭルーチンＲＲは，選択的に同時に実行することができる。また，フラッシュメモリ１０４の他のメモリ領域のコピー，消去，プログラミングプロセスを制御は，ＲＯＭ内ルーチンが独立して行うこともできる。
【００６１】
データを有するデータ領域あるいはメモリ領域をプログラミングの際に消去しなければならない場合には，このデータＳＤがメモリ領域ＳＢ２０１で確保される（ステップ４０６）。次いで，データＳＢのメモリ領域Ｓ２０３が消去され，あるいはプログラムを変更される（ステップ４０７）。次いで，保護すべきデータＳＤがメモリ領域ＳＢ２０１から再びデータのオリジナル領域であるメモリ領域ＳＢ２０３へコピーされる（ステップ４０８）。このプロセスの制御は，ＲＡＭメモリ領域ＳＢ２０７へコピーすべきメモリ領域ＳＢ２０４の付加ルーチンＺＲ及び／またはＲＯＭ内ルーチンＲＲによって行われる。
【００６２】
次いで，第１の実施の形態と同様に，データの保護の正確さが検査される（ステップ３０９）。この検査は，上述の従来技術と同様の手法が用いられる。
【００６３】
ステップ３０９における判断の結果，フラッシュメモリ領域ＳＢ２０３でエラーが発生している場合，すなわち，何らかの理由でメモリ書き換えが中断した後に，フラッシュメモリ領域ＳＢ２０３内に有効なデータが存在していない場合には，システムの始動あるいは新規プログラミングする際（ステップ４００）に，ＲＯＭ内ルーチンＲＲによって認識される（ステップ４０２）。
【００６４】
ＲＯＭ内ルーチンＲＲ及び／または付加ルーチンＺＲは，フラッシュメモリ領域ＳＢ２０１の保護すべきデータＳＤのバックアップコピーをオリジナル領域であるメモリ領域ＳＢ２０３へコピーさせる。そのために，付加ルーチンＺＲがフラッシュメモリＳＢ２０４からＲＡＭＳＢ２０７へロードされる。（ステップ４０４）。そして，ステップ４０７，４０８，３０９，４１０におけるプロセスの制御は，ＲＯＭ内ルーチンＲＲ及び／または付加ルーチンＺＲによって行われる。
【００６５】
ステップ３０９における判断の結果，保護すべきデータＳＤを保護する際にエラーが発生しなかった場合には，データ領域ＳＢ２０１を例えば外部から入力手段１０８によって新しくプログラミングすることができる（ステップ４１０）。この場合，内部バスを使用することも，状況条件により可能である。
【００６６】
なお，上記ステップ４０７あるいは４１０において，選択的にフラッシュメモリの他の部分を消去及び／またはプログラミングすることも可能である。
【００６７】
（第３の実施の形態）
本実施の形態にかかるメモリ書き換え方法が適用されるコンピュータシステムは，処理装置１００と，処理装置１００とインターフェイス１０７により接続されるプログラミング装置１０８とを含んでいる点で，上記実施の形態と同様である。また，処理装置１００は，メモリとして，書き換え可能な読み出し専用メモリたるフラッシュメモリ１０４と，ＲＡＭ１０５とを含んでいる。なお，ＲＯＭを含んでいない点で上記実施の形態と異なる。
【００６８】
ＲＯＭを使用しないプログラミング方法は，ブートブロックの存在を前提としている。このブートブロックは，ＣＰＵ１００内に設けるか，あるいはフラッシュメモリ１０４の，利用者にはアクセスできない領域，または書き込み保護された領域内に設けられる。
【００６９】
上記実施の形態においてＲＯＭ１０６に格納されていたＲＯＭ内ルーチンＲＲは，本実施の形態においては，フラッシュルーチンＲＦとブートブロック内ルーチンＲＢとに分割されて，フラッシュメモリ１０４及びＲＡＭ１０５に格納されている。このフラッシュルーチンＲＦ及びブートブロック内ルーチンＲＢについては後述する。
【００７０】
上述のフラッシュメモリ１０４，ＲＡＭ１０５のメモリ領域の詳細について，図５を参照しながら説明する。
フラッシュメモリ１０４のメモリ領域２００は，図５に示したように，データのバックアップ領域であるメモリ領域ＳＢ２０１ａと，第２のプログラムたる付加ルーチンＺＲのバックアップ領域であるメモリ領域ＳＢ２０２ａと，データのオリジナル領域であるメモリ領域Ｓ２０３ａと，付加ルーチンＺＲのオリジナル領域であるメモリ領域ＳＢ２０４ａとに区画されている点で上記実施の形態と同様である。
【００７１】
さらに，フラッシュメモリ１０４のメモリ領域２００はメモリ領域２０５に区画されており，この点で上記実施の形態と異なる。このフラッシュメモリ領域２０５ａには，上述のブートブロック内ルーチンＲＦが格納されている。
【００７２】
フラッシュメモリ領域２０１ａには，データのバックアップ領域が設けられる。メモリ領域ＳＢ２０２ａには，ルーチンのバックアップ領域が設けられ，ＲＯＭ内ルーチンＲＲの一部（フラッシュメモリ内ルーチンＲＦ）及び付加ルーチンＺＲが格納されている。メモリ領域ＳＢ２０３ａは，本実施の形態においてはデータのためのオリジナル領域である。メモリ領域ＳＢ２０４ａは，同様にオリジナル領域であるが，本実施の形態ではルーチンのためのものである。ＲＯＭ内ルーチンＲＲの残りの部分（ブートブロックルーチンＲＢ）は，メモリブロックＳＢ２０５のブートブロック内に格納されている。
【００７３】
ＲＡＭ１０５のメモリ領域２０６には，メモリ領域ＳＢ２０７ａが区画されている。このＲＡＭメモリ領域ＳＢ２０７ａには，上述のフラッシュルーチンＲＦあるいは付加ルーチンＺＲが格納される。
【００７４】
本実施の形態では，ＲＡＭメモリ領域ＳＢ２０７ａは，図２に示したＲＡＭメモリ領域ＳＢ２０７とは大きさや区画が異なっている。このことは，フラッシュメモリメモリ領域ＳＢ２０１ａ〜２０４ａについても同様であり，図２に記載されている領域とは大きさと区画位置を異ならせることができる。
【００７５】
上記コンピュータシステムを用いた本実施の形態にかかるメモリ書き換え方法を，図６を参照しながら説明する。本実施の形態は，付加ルーチンＺＲを保護する方法である。
【００７６】
プログラミングは，図６に示したように，プログラミング要請（ステップ６０１）によって，フラッシュ内ルーチンＲＦが実行される（ステップ６０６）。フラッシュ内ルーチンＲＦは，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦ，あるいはフラッシュ内ルーチンＲＦの一部を，フラッシュメモリ領域２０４ａからＲＡＭメモリ領域２０７ａへコピーさせる（ステップ６０７）。このとき，フラッシュ内ルーチンＲＦは，フラッシュ内ルーチンＲＦ自身をコピーしなければならない。このプロセスを以下に説明する。
【００７７】
まず，第１の方法は，フラッシュ内ルーチンＲＦがＲＡＭ１０５へ完全には転送されず，一部のみを転送するものである。このとき，転送されない残りのフラッシュ内ルーチンＲＦと付加ルーチンＺＲをコピーする権限を有する部分が，フラッシュメモリ１０４のいずれかの領域，例えば，フラッシュメモリ領域ＳＢ２０４ａ内に残っている。
【００７８】
また，第２の方法は，ＲＡＭ領域ＳＢ２０７ａにコピーされるフラッシュ内ルーチンＲＦの中に，次のステップで，残りのフラッシュ内ルーチンＲＦ及び付加ルーチンＺＲをＲＡＭ領域２０７ａへコピーするルーチンを設けることである。この方法によれば，メモリ領域ＳＢ２０４ａの内容全体をＲＡＭメモリ領域ＳＢ２０７ａへコピー可能になる。このルーチンは，フラッシュ内ルーチンＲＦ及び／または付加ルーチンＺＲ内におくことができるので，すでにＲＡＭメモリ２０７ａへ転送されたＲＦ及び／または付加ルーチンＺＲによってプロセスを制御することができる。
【００７９】
また，第３の方法は，フラッシュ内ルーチンＲＦと付加ルーチンＺＲとに分割する方法である。まず付加ルーチンＺＲがＳＢ２０４ａからＲＡＭ領域ＳＢ２０７ａへコピーされ，この付加ルーチンＺＲにより，フラッシュ内ルーチンＲＦをフラッシュメモリ領域２０４ａからＲＡＭメモリ領域２０７ａへコピーすることが可能になる。それによってコピープロセス全体が１つのステップで可能になり，フラッシュ内ルーチンＲＦ及び付加ルーチンＺＲによって制御される。その場合にフラッシュ内ルーチンＲＦは，付加ルーチンＺＲの実行のきっかけを与え，それによって制御責任をＺＲに委ねる。
【００８０】
ＲＡＭメモリ領域２０７ａにコピーされた付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦは，ＲＡＭメモリ領域２０７ａで実行されて，フラッシュメモリのための他のコピー，消去並びにプログラミングプロセスを制御する。従ってそれに続くプロセスのそれ以降の制御は，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦによって行うことができる。
【００８１】
プログラミングするために，バックアップ領域であるメモリ領域２０２ａのデータ及び／またはプログラムが消去される（ステップ６０８）。次いで，メモリ領域ＳＢ２０７ａから付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦのバックアップコピーが，メモリ領域２０２ａへ書き込まれる（ステップ６０９）。そしてメモリ領域２０４ａの消去とプログラミングが，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦの完全に新しいバージョンによって外部から行われる（ステップ６１０）。
【００８２】
次いで，上述のステップ３０９における検査によって，プログラミングの正確さが検査される。プログラミングが正確に実行された場合には，バックアップ領域ＳＢ２０２ａ全体が消去されて（ステップ６１２），ここに元から存在するデータ及び／またはプログラムによって，あるいはこれらのデータ及び／またはプログラムの新しいバージョンによって外部から代えられる。それがその後メモリ領域ＳＢ２０２ａ内で新しく書き込まれる（ステップ６１３）。その場合にステップ６１０及び／またはステップ６１３で選択的に，フラッシュメモリの他の部分を消去及び／またはプログラミングすることができる。
【００８３】
ステップ３０９における判断の結果，エラーが発生していると判断された場合，すなわち任意の理由でプログラミングが中止されて，フラッシュメモリ領域ＳＢ２０４ａには有効なデータ及び／またはプログラムがない場合には，システム始動あるいは新規プログラミング（ステップ６００）の後に，ブートブロック内ルーチンＲＢにより確認される（ステップ６０２）。ブートブロック内ルーチンＲＢが，フラッシュ内ルーチンＲＦ及び／または付加ルーチンＺＲのバックアップコピーをメモリ領域２０２ａからＲＡＭのメモリ領域２０７ａへコピーさせる（ステップ６０３）。
【００８４】
次いで，メモリ領域２０７ａ内の付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦが，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦの書き戻しを自立して制御する。そのために，オリジナル領域，すなわちメモリ領域ＳＢ２０４ａが消去される（ステップ６０４）。次いで，フラッシュメモリ領域２０２ａからフラッシュメモリ領域２０４ａへ，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦを書き込むことによって，このオリジナル領域が回復される（ステップ６０５）。従って，その後外部から任意のプログラミングプロセスを要請することができ，フラッシュメモリ領域ＳＢ２０２ａのバックアップコピーとの競合をもたらすことはない。
【００８５】
制御装置は，エラーの場合には常に該当する領域の新規プログラミングを要請するが，保護すべきすべてのデータはこの新規プログラミングプロセスの最初にはまた，最初にそれに割り当てられた領域にある。従って定められた初期状態の再形成が，自動的に行われる。
【００８６】
本実施の形態においては，ステップ６１０及び／またはステップ６１３で選択的に，フラッシュメモリの他の部分を消去及び／またはプログラミングすることも可能である。その場合に特に，保護すべきデータＳＤ及び／または保護すべきルーチンが入っている１つまたは複数の領域は別にして，フラッシュメモリ全体を新しくプログラミングすることができる。
【００８７】
（第４の実施の形態）
本実施の形態にかかるメモリ書き換え方法を，図７を参照しながら説明する。なお，本実施の形態においても，上述した第３の実施の形態と同様のコンピュータシステムが用いられる。上記第３の実施の形態はプログラム（付加ルーチンＺＲ）の保護に関するものであったが，本実施の形態は，データの保護に関するものである。ここでいう保護すべきデータとは，例えば，制御装置の全寿命の間失われてはならないデータである。また，本実施の形態では，保護すべきデータＳＤの保護がＲＯＭを使用せずに行われる点に特徴がある。
【００８８】
プログラミングは，図７に示したように，プログラミング要請（ステップ７０１）によって，フラッシュ内ルーチンＲＦが実行される（ステップ７０６）。フラッシュ内ルーチンＲＦは，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦ，あるいはフラッシュルーチンＲＦの一部を，フラッシュメモリ領域２０４ａからＲＡＭメモリ領域２０７ａへコピーさせる（ステップ７０７）。このステップ７０７は，上記第３の実施の形態と同様に行われる。
【００８９】
ＲＡＭメモリ領域２０７ａにコピーされた付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦは，ＲＡＭメモリ領域２０７ａで実行されて，フラッシュメモリのための他のコピー，消去及びプログラミングプロセスを制御する。例えば，保護すべきデータＳＤがある領域の全部または一部をプログラミングの際に消去しなければならない場合には，このデータがメモリ領域２０３ａからメモリ領域２０１ａへコピーされて，保護される（ステップ７０８）。次いで，少なくともデータ領域ＳＢ２０３ａが全部または部分的に消去されて（ステップ７０９），保護すべきデータＳＤがメモリ領域ＳＢ２０１ａからメモリ領域ＳＢ２０３ａへコピーされる（ステップ７１０）。
【００９０】
次いで，上述のステップ３０９における検査によって，プログラミングプロセスにおいてエラーが発生したかが調べられる。エラーが発生していない場合には，データ領域，すなわちメモリ領域ＳＢ２０１ａを元から存在するデータ及び／またはプログラム部分あるいはこのデータ及び／またはプログラムの新しいバージョンによって外部から代えることができる（ステップ７１１）。その場合にステップ７０９及び／または７１１において，選択的にフラッシュメモリの他の部分を消去し，かつ／またはプログラミングすることも可能である。
【００９１】
任意の理由からプログラミングを中止した後に領域２０３ａに有効なデータがない，すなわちエラーの場合には，システムを始動させて新しくプログラミングする（ステップ７００）ことによって，ブートブロック内ルーチンＲＢにより検出される（ステップ７０２）。このブートブロック内ルーチンＲＢは，保護すべきデータＳＤのバックアップコピーをフラッシュメモリ領域２０１ａからオリジナル領域であるフラッシュメモリ領域ＳＢ２０３ａへコピーさせる（ステップ７０３）。
【００９２】
ブートブロック内ルーチンＲＢが，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦ，あるいはフラッシュルーチンＲＦの一部を，上記実施の形態と同様の方法によって，フラッシュメモリ領域２０４ａからＲＡＭメモリ領域２０７ａへコピーさせる（ステップ７０３）。次いで，付加ルーチンＺＲ及び／またはフラッシュ内ルーチンＲＦが実行されて，フラッシュメモリのための他のコピー，消去及びプログラミングプロセスを制御する。
【００９３】
次いで，オリジナル領域，すなわちフラッシュメモリ領域ＳＢ２０３ａが消去されて（ステップ７０４），保護すべきデータＳＤがバックアップ領域からオリジナル領域へコピーされて，メモリ領域ＳＢ２０３ａが回復される（ステップ７０５）。従って，例えばステップ７０１におけるように，任意のプログラミングプロセスを外部から要請することができ，メモリ領域ＳＢ２０１ａのバックアップコピーとの競合がもたらされることはない。
【００９４】
制御装置１００は，エラーの場合には常に該当する領域の新規プログラミングを要請するが，保護すべきデータＳＤはこの新規プログラミングの開始時にはまた，最初に割り当てられた領域にある。従って保護すべきデータに関しても前のルーチンに関してと同様に，定められた初期状態が自動的に再形成される。従ってエラーの場合に最初に始動されたプロセスが新しく初期化されて，保護すべきデータＳＤが自動的に回復される。保護すべきデータＳＤのバックアップコピーは，オリジナルの消去後即座に書き戻されて，それによってそれがそのまま保存されることはない。
【００９５】
本実施の形態においては，ステップ７０９及び／またはステップ７１１で選択的に，フラッシュメモリの他の部分を消去及び／またはプログラミングすることも可能である。その場合に特に，保護すべきデータＳＤ及び／または保護すべきルーチンが入っている１つまたは複数の領域は別にして，フラッシュメモリ全体を新しくプログラミングすることができる。
【００９６】
すべての実施の形態について，保護すべきデータＳＤのバックアップコピーは，オリジナル領域からオリジナルを消去した後すぐに，このオリジナル領域へ書き戻される。同様に，すべての実施の形態において，保護すべきルーチンのバックアップコピーは，ステップ３０９における検査の結果，プログラミングに成功した後に消去されて，そこにあるべき及び／または任意の新しいデータ及び／またはプログラムが書き込まれる。
【００９７】
以上，添付図面を参照しながら本発明にかかるメモリ書き換え方法及びコンピュータシステムの好適な実行形態について説明したが，本発明はかかる例に限定されない。当業者であれば，特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり，それらについても当然に本発明の技術的範囲に属するものと了解される。
【００９８】
【発明の効果】
以上説明したように，本発明によれば，メモリ書き換えの任意の時点における任意の障害や中断に対しても十分に対応でき，さらに所定のメモリ領域について予め定められた初期状況を自発的に再構成することが可能である。
【図面の簡単な説明】
【図１】発明の実施の形態にかかるコンピュータシステムの説明図である。
【図２】フラッシュメモリ，ＲＡＭ，及びＲＯＭのメモリ領域の説明図である。
【図３】第１の実施の形態にかかるメモリ書き換え方法を示す流れ図である。
【図４】第２の実施の形態にかかるメモリ書き換え方法を示す流れ図である。
【図５】フラッシュメモリ，ＲＡＭ，及びＲＯＭのメモリ領域の説明図である。
【図６】第３の実施の形態にかかるメモリ書き換え方法を示す流れ図である。
【図７】第４の実施の形態にかかるメモリ書き換え方法を示す流れ図である。
【符号の説明】
１００  制御装置
１０１  ＣＰＵ
１０２  入出力ユニット
１０３  バスシステム
１０４  フラッシュメモリ（第１のメモリ）
１０５  ＲＡＭ（第２のメモリ）
１０６  ＲＯＭ（第３のメモリ）
１０７  インターフェイス
１０８  プログラミング装置
２００  フラッシュメモリのメモリ領域
ＳＢ２０１  データのバックアップ領域
ＳＢ２０２  付加ルーチンのバックアップ領域
ＳＢ２０３  データのオリジナル領域
ＳＢ２０４  付加ルーチンのオリジナル領域
２０６  ＲＡＭのメモリ領域
ＳＢ２０７  ＳＢ２０１〜ＳＢ２０４のコピー領域
２０８  ＲＯＭのメモリ領域
ＳＢ２０９  ＲＯＭ内ルーチン
ＳＢ２０１ａ  データのバックアップ領域
ＳＢ２０２ａ  フラッシュ内ルーチン
ＳＢ２０３ａ  データのオリジナル領域
ＳＢ２０４ａ  追加ルーチンのオリジナル領域
ＳＢ２０５  ブートルーチン
ＳＢ２０７ａ  付加ルーチン
【図１】
0004480815.tif 000002
【図２】
0004480815.tif 000003
【図３】
0004480815.tif 000004
【図４】
0004480815.tif 000005
【図５】
0004480815.tif 000006
【図６】
0004480815.tif 000007
【図７】
0004480815.tif 000008