(57)【特許請求の範囲】
【請求項１】
上書き可能なメモリの正しい消去及び／又はプログラミングを明示する識別子（Ｋ）を，前記メモリの消去及び／又はプログラミングされる領域に書き込むプログラミング手段を有し，前記メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする制御装置のメモリ機能保護方法であって，
前記メモリに書き込まれた前記識別子（Ｋ）は，前記メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする前に，あるいは消去及び／又はプログラミングする際に変更され，
前記識別子（Ｋ）は，後に消去及び／又はプログラミングされるメモリ領域，あるいは，最後に消去及び／又はプログラミングされるメモリ領域に書き込まれ，
前記識別子（Ｋ）は，前記データ及び／又は前記プログラム構成部分として形成されることを特徴とする制御装置のメモリ機能保護方法。
【請求項２】
上書き可能なメモリ内のデータ及び／又はプログラムを上書きしてプログラムする手段を有する制御装置のメモリ機能保護方法であって，
識別子（Ｋ）は，前記メモリ内の前記データ及び／又は前記プログラムを上書きしてプログラミングする際に，消去及び／又はプログラミングされるメモリ領域に書き込まれたデータ及び／又はプログラムから選択され，
前記識別子（Ｋ）は，後に消去及び／又はプログラミングされるメモリ領域，あるいは，最後に消去及び／又はプログラミングされるメモリ領域に書き込まれたデータ及び／又はプログラムから選択されることを特徴とする制御装置のメモリ機能保護方法。
【請求項３】
前記選択された識別子（Ｋ）は，前記データ及び／又は前記プログラムを消去及び／又はプログラミングする前に，あるいは，消去及び／又はプログラミングする際に変更されることを特徴とする請求項２に記載の制御装置のメモリ機能保護方法。
【請求項４】
前記識別子（Ｋ）は，前記メモリに書き込まれたデータ及び／又はプログラムの予め設定された長さの少なくとも一部分として選択され，あるいは予め設定されることを特徴とする請求項２又は３に記載の制御装置のメモリ機能保護方法。
【請求項５】
前記識別子（Ｋ）は，前記データ及び／又は前記プログラムの消去及び／又はプログラミングの際に識別されないように変更されることを特徴とする請求項１又は２に記載の制御装置のメモリ機能保護方法。
【請求項６】
前記識別子（Ｋ）は，各前記データ及び／又は前記プログラムを識別するためのプログラム識別子の一部分として形成されることを特徴とする請求項１又は２に記載の制御装置のメモリ機能保護方法。
【請求項７】
前記識別子（Ｋ）は，前記メモリの消去及び／又はプログラミングの中断後，及び／又は消去及び／又はプログラミング後に，照合されることを特徴とする請求項１又は２に記載の制御装置のメモリ機能保護方法。
【請求項８】
前記メモリの消去及び／又はプログラミングの中断は，前記メモリ内の一時記憶として格納されることを特徴とする請求項６に記載の制御装置のメモリ機能保護方法。
【請求項９】
前記メモリの消去及び／又はプログラミング前に，前記識別子及び／又は一時記憶が照合されて評価されることを特徴とする請求項１から８のいずれか１項に記載の制御装置のメモリ機能保護方法。
【請求項１０】
上書き可能なメモリの正しい消去及び／又はプログラミングを明示する識別子（Ｋ）を，消去及び／又はプログラミングされるメモリ領域に書き込むプログラミング手段を有し，前記メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする制御装置であって，
前記プログラミング手段は，前記データ及び／又は前記プログラムの消去及び／又はプログラミングの前に，あるいは，消去及び／又はプログラミングの際に，前記メモリ内に書き込まれた識別子（Ｋ）を変更し，
前記識別子（Ｋ）は，後に消去及び／又はプログラミングされるメモリ領域，あるいは，最後に消去及び／又はプログラミングされるメモリ領域に書き込まれ，
前記識別子（Ｋ）は，前記データ及び／又は前記プログラム構成部分として形成されることを特徴とする制御装置。
【請求項１１】
上書き可能なメモリ内のデータ及び／又はプログラムを上書きしてプログラミングする手段を有する制御装置であって，
前記上書きしてプログラミングする手段は，前記メモリの正しい消去及び／又はプログラミングを明示する識別子（Ｋ）を，消去及び／又はプログラミングされるメモリ領域に書き込まれたデータ及び／又はプログラムから選択し，
前記識別子（Ｋ）は，後に消去及び／又はプログラミングされるメモリ領域，あるいは，最後に消去及び／又はプログラミングされるメモリ領域に書き込まれたデータ及び／又はプログラムから選択されることを特徴とする制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，特に車両内の制御装置のメモリ機能保護方法及び制御装置に関し，さらに詳細には，メモリに正しい消去及び／又はプログラミングを明示する識別子が書き込まれる制御装置のメモリ機能保護方法及び制御装置に関する。
【０００２】
【従来の技術】
ドイツ公開公報第ＤＥ１９６１９３４５Ａ１号には，制御機能を実行するのに必要な制御機能プログラムと制御機能データとを格納するプログラミング制御機能を有するメモリ装置を具備する制御装置の制御方法が記載されている。上記方法は，制御機能プログラム及び制御機能データをメモリ装置に書き込むと同時に，制御機能プログラムあるいは制御機能データ以外の自己制御データがメモリ装置内部の予め設定された箇所に書き込まれることを特徴としている。このとき，制御装置は，所定の自己制御データが予め設定された箇所に格納されているか否かに応じて制御する。
【０００３】
また，ドイツ公開公報第ＤＥ１９６２３１４５Ａ１号は，プログラミング装置を介してプログラミング可能なメモリ装置を有する制御装置の制御方法が開示される。このとき，メモリ装置の内容の消去あるいは上書きは，各データ処理プログラム部分を実行中あるいはデータを使用中に実行される。上記公報に記載の方法は，少なくともデータ処理用のデータの一部あるいは全部が，消去又は上書きされて使用される前に，修正されることを特徴としている。
【０００４】
この修正は，データ処理プログラム部分内で規定通りにエントリーが実行されていること，実行されること，あるいは実行できることが確認された場合にのみおこなわれる。このとき，書き込むべきデータのみが修正され，既に書き込まれているデータは修正されない。このため，プログラミングの際の中断や障害に起因する誤機能あるいは機能不良を回避することができない。メモリ内で中断又は障害が一時記憶されない場合には，このような状況が多く発生する。このため，上記修正は，プログラミング可能なメモリ装置内に格納されているデータが規定に従わずに消去あるいは上書きされることを，簡易な方法で確実に排除するために，設けられる。
【０００５】
【発明が解決しようとする課題】
しかしながら，ドイツ公開公報第ＤＥ１９６１９３４５Ａ１号に記載されている自己制御データは，本来格納すべき制御機能プログラム及び制御機能データ（即ち，有用データ）の構成部分ではなく，別のビットパターンとして予定されるので，余分なメモリスペースが必要である。また，このとき，自己制御データの照合は，規則通りにアクセスできない有用データあるいはメモリ装置内に格納されない有用データの実行を妨害するため，アクセスできない有用データあるいは格納されない有用データの発生原因や発生時点は記録されない。さらに，この方法では，プログラミング前に完全に消去できるメモリ装置あるいはその構成要素でしか使用することができないので，単なるオーバープログラミング（即ち，データの上書き）は，実行されない。また，上記公報は，一部にエラーのあるプログラミングを無視して一種の非常制御プログラムを実行することを目的とし，機能するデータのみが使用される。
【０００６】
また，ドイツ公開公報第ＤＥ１９６２３１４５Ａ１号は，修正が既に実行されている場合には，プログラムを保護することができない。かかる障害あるいは中断により，データの損失，不完全なプログラミングが発生し，制御装置の機能不全や誤機能が発生する。
【０００７】
従って，本発明の課題は，制御装置のメモリ機能保護方法及びその装置に関し，さらに詳細には，消去及び／又はプログラミングの中に中断又は障害が発生した場合に，制御装置のメモリ機能を保護することが可能な新規かつ改良された制御装置のメモリ機能保護方法及びその装置を提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するため，請求項１に記載の発明では，メモリの正しい消去及び／又はプログラミングを明示する識別子（Ｋ）を，前記メモリの消去及び／又はプログラミングされる領域に書き込むプログラミング手段を有し，前記メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする制御装置のメモリ機能保護方法であって，前記メモリに書き込まれた前記識別子（Ｋ）は，前記メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする前に，あるいは消去及び／又はプログラミングする際に変更されることを特徴とする制御装置のメモリ機能保護方法が提供される。
【０００９】
本項記載の発明では，識別子が，メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする前に，あるいは消去及び／又はプログラミングする際にプログラミングの完全性あるいは正しいと予測される識別子に変更されるので，プログラミングが完全でない場合にはプログラムが実施されず，あるいは書き込みが完全でない場合にはデータが使用されることはない。従って，プログラミングあるいは消去中に発生したエラーは，実行データの修正後に捕捉できる。
【００１０】
また，請求項２に記載の発明のように，前記識別子（Ｋ）は，後に消去及び／又はプログラミングされるメモリ領域，あるいは，最後に消去及び／又はプログラミングされるメモリ領域に書き込まれる如く構成すれば，識別子（Ｋ）は，できるだけ後の領域（好ましくは最後にプログラミングされる領域）に書き込まれるので，プログラミング処理が完全に正しく終了した場合にのみ，正確な識別子（Ｋ）が提供される。
【００１１】
また，請求項３に記載の発明のように，前記識別子（Ｋ）は，前記データ及び／又は前記プログラム構成部分として形成される如く構成すれば，識別子が，プログラム（特にプログラムアイデンティファイヤ自体）の構成部分として使用されるので，新たにメモリスペースを設ける必要がない。
【００１２】
上記課題を解決するため，請求項４に記載の発明では，メモリ内のデータ及び／又はプログラムをオーバープログラムする手段を有する制御装置のメモリ機能保護方法であって，前記識別子（Ｋ）は，前記メモリ内の前記データ及び／又は前記プログラムをオーバープログラミング（上書きによるプログラミング（以下、「オーバープログラミング」という））する際に，消去及び／又はプログラミングされるメモリ領域に書き込まれたデータ及び／又はプログラムから選択されることを特徴とする制御装置のメモリ機能保護方法が提供される。
【００１３】
本項記載の発明では，プログラミング処理に従う消去及び／又はプログラミングの前にデータ及び／又はプログラムを明確に消去することを省略することができる。即ち，メモリ内容の処理を阻止するには，識別子を単に識別できなくするだけで十分でありメモリ内容を消去する必要はないため，前以て完全に消去せずに，単純かつ迅速なオーバープログラミングにより書き込めるメモリも使用できる。
【００１４】
また，請求項５に記載の発明では，前記識別子（Ｋ）は，後に消去及び／又はプログラミングされるメモリ領域，あるいは，最後に消去及び／又はプログラミングされるメモリ領域に書き込まれたデータ及び／又はプログラムから選択される如く構成すれば，識別子（Ｋ）は，プログラム領域のメモリ領域のように，できるだけ後の領域に（好ましくは最後にプログラミングされる領域に）書き込まれ，プログラミング処理が完全に正しく終了した場合のみ正確な識別子（Ｋ）が提供される。
【００１５】
また，請求項６に記載の発明のように，前記選択された識別子（Ｋ）は，前記データ及び／又は前記プログラムを消去及び／又はプログラミングする前に，あるいは，消去及び／又はプログラミングの際に変更される如く構成すれば，識別子が，プログラミングが完全であり正しいことが予測される識別子に変更されるので，プログラミングが完全でない場合にはプログラムが実施されず，あるいは書き込みが完全でない場合にはデータが使用されることはない。
【００１６】
また，請求項７に記載の発明のように，前記識別子（Ｋ）は，前記メモリに書き込まれた前記データ及び／又は前記プログラムの予め設定された長さの少なくとも一部分として選択され，あるいは予め設定される如く構成すれば，識別子（Ｋ）の基本位置であるデータ及び／又はプログラム部分を容易に再び認識することができる。
【００１７】
また，請求項８に記載の発明のように，前記識別子（Ｋ）は，前記データ及び／又は前記プログラムの消去及び／又はプログラミングの際に識別されないように変更される如く構成すれば，識別子が，変更により，例えば消去又はオーバープログラミングにより無効にされ，比較照会あるいは探索照会の際に認識されないので，プログラミングが実行されずメモリを保護することができる。
【００１８】
また，請求項９に記載の発明のように，前記識別子（Ｋ）は，各前記データ及び／又は前記プログラムを識別するプログラム識別子の一部分として形成される如く構成すれば，プログラミングの完全性あるいは正しいと予測される識別子が，プログラム（特にプログラムアイデンティファイヤ自体）の構成部分として使用されるので，新たにメモリスペースを設ける必要がない。
【００１９】
また，請求項１０に記載の発明のように，前記識別子（Ｋ）は，前記メモリの消去及び／又はプログラミングの中断後，及び／又は消去及び／又はプログラミング後に，照合される如く構成すれば，プログラムを実行すべきか否かを判断することができる。
【００２０】
また，請求項１１に記載の発明のように，前記メモリの消去及び／又はプログラミングの中断は，前記メモリ内の一時記憶として格納される如く構成すれば，例えば，消去又はプログラミング中に中断やリセットされ，あるいは他の理由で装置電圧が低下した場合には，メモリ装置内（特にプログラム用のメモリ装置自体）中で，障害の時点と原因をメモリ内に格納でき，中断されたブートプログラムへの新たなエントリーが行うことができる。
【００２１】
また，請求項１２に記載の発明のように，前記メモリの消去及び／又はプログラミング前に，前記識別子及び／又は前記一時記憶が照合されて評価される如く構成すれば，識別子あるいは一時記憶を照合することにより，正しく書き込まれたメモリあるいはそのデータ及び／又はプログラムのみが制御のために読み出され，使用することができる。
【００２２】
上記課題を解決するため，請求項１３に記載のように，メモリの正しい消去及び／又はプログラミングを明示する識別子（Ｋ）を，消去及び／又はプログラミングされるメモリ領域に書き込むプログラミング手段を有し，前記メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする制御装置であって，前記プログラミング手段は，前記データ及び／又は前記プログラムの消去及び／又はプログラミングの前に，あるいは，消去及び／又はプログラミングの際に，前記メモリ内に書き込まれた識別子（Ｋ）を変更することを特徴とする制御装置が提供される。
【００２３】
本項記載の発明では，識別子が，プログラミングが完全であり正しいと予測される識別子に変更されるので，プログラミングが完全でない場合にはプログラムが実施されず，あるいは書き込みが完全でない場合にはデータが使用されることはない。
【００２４】
上記課題を解決するため，請求項１４に記載の発明のように，メモリ内のデータ及び／又はプログラムをオーバープログラミングする手段を有する制御装置であって，前記オーバープログラミング手段は，前記メモリの正しい消去及び／又はプログラミングを明示する識別子（Ｋ）を，消去及び／又はプログラミングされるメモリ領域に書き込まれたデータ及び／又はプログラムから選択することを特徴とする制御装置が提供される。
【００２５】
本項記載の発明では，プログラミング処理に従う消去及び／又はプログラミングの前にデータ及び／又はプログラムを明確に消去することを省略することができる。即ち，メモリ内容の処理を阻止するには，識別子を単に識別できなくするだけで十分でありメモリ内容を消去する必要はないため，前以て完全に消去せずに，単純かつ迅速なオーバープログラミングにより書き込めるメモリも使用できる。
【００２６】
【発明の実施の形態】
以下，本発明の好適な実施の形態について，添付図面を参照しながら詳細に説明する。尚，以下の説明及び添付図面において，同一の機能及び構成を有する構成要素については，同一符号を付することにより，重複説明を省略する。
【００２７】
（第１の実施の形態）
以下，図１を参照しながら，第１の実施の形態について説明する。図１は，本実施形態にかかるメモリ機能保護方法を実施するための制御装置である。
【００２８】
図１に示すように，符号１００は，コンピュータシステム（特に制御装置）を示す。本実施形態における制御装置１００の内部構造は，単に一例を示すものであり，各種変更することができる。本実施形態においては，マイクロプロセッサユニット（計算ユニット）１０６を有する構造を採用している。
【００２９】
マイクロプロセッサユニット１０６は，伝送系システム１０９（特にバスシステム）を介して他の構成要素と接続される。このマイクロプロセッサユニット１０６には，メモリ，コプロセッサなどが設けられている。また，マイクロプロセッサユニット１０６は，各構成部品範囲あるいは機能範囲（即ち，使用される構成要素など）に応じて，マイクロプロセッサチップ（セントラル  プロセッシング  ユニット），マイクロプロセッサ，マイクロコントローラ，マイクロコンピュータ，制御ユニット（エレクトロニック  コントロール  ユニット），計算ユニットなどの名称を任意に使用し，変更することができる。
【００３０】
符号１０４，１０５及び１０８は，制御装置内に設けられる種々のメモリ装置である。符号１０５は，特にデータ及び／又はプログラムの一時記憶に使用される，例えばＲＡＭ形式の揮発メモリである。同様に，ＲＡＭ１０５からプログラムルーチンを開始することができる。
【００３１】
符号１０４は，例えばフラッシュＥＰＲＯＭメモリなどの消去可能な不揮発メモリである。このフラッシュＥＰＲＯＭメモリは，消去及び／又はプログラミングに関して全く異なる複数のフラッシュＥＰＲＯＭを使用することができる。
【００３２】
例えば，第１のフラッシュＥＰＲＯＭは，例えば新しくプログラミングする前に，全部消去するフラッシュＥＰＲＯＭである。第２のフラッシュＥＰＲＯＭは，例えばブロック単位で消去及び／又はプログラミングするフラッシュＥＰＲＯＭである。第３のフラッシュＥＰＲＯＭは，明確な消去は必要なく，例えばページ単位でプログラミングできるフラッシュＥＰＲＯＭである。
【００３３】
また，不揮発性メモリ１０４以外に，新たな不揮発性メモリ１０８を別途設けることもできる。この不揮発性メモリ１０８は，例えばＲＯＭなどの消去不可能な固定メモリ，あるいは，例えばフラッシュＥＰＲＯＭの形式のＥＰＲＯＭなどの消去可能な不揮発性メモリを使用することができる。ここで注意すべきことは，メモリ装置の配置やメモリ装置の使用は任意であって，その数は増減できる点である。なお，本実施形態においては，プログラミング可能あるいは消去可能な不揮発性あるいはリフレッシュ可能なメモリ装置１０４を採用している。
【００３４】
符号１０７は，可能な周辺アッセンブリ（即ち，外部の周辺装置）を接続するためのインターフェイス装置である。必要に応じて，例えば他の周辺アッセンブリ，メモリ装置，マイクロプロセッサ又はマイクロコントローラなど装置１１０で示すような他の装置とアッセンブリをバスシステム１０９に接続することができる。
【００３５】
プログラミング自体は，まず，データ担体を挿入することにより制御装置１００内で実行される。また，例えば消去不可能な不揮発性メモリ１０８などの内部メモリからのデータにより実行することもできる。また，外部のプログラミング装置１０１（例えば第２の制御装置あるいはコンピュータ）を，インターフェイス１０２を介してシリアルに，あるいは可能なバスシステム１０３を介してパラレルに設置して，プログラム及びデータを書込むことができる。
【００３６】
内部プログラミングの場合には，一組の使用プログラム及び／又はデータを例えばＲＯＭなどの不揮発メモリ１０８に既に書き込まれているデータメモリから揮発性メモリ１０５及び／又は消去可能な不揮発性メモリ１０４にロードして，必要に応じて実行される。同様に，プログラム及び／又はデータは，周辺アッセンブリ１０７に接続されている周辺装置（例えばディスクドライブ又はＣＤ−ＲＯＭなどのデータ担体の読取り装置）を介して，データ担体により提供することもできる。当然ながら，外部プログラミング装置１０１においても，同様である。
【００３７】
以下，図２に基づいて，本実施形態にかかる不揮発性メモリ１０４を，詳細に説明する。図２は，本実施形態にかかる不揮発性メモリ１０４を，詳細に説明するためのブロック図である。なお，本実施形態においては，メモリ領域内が複数のメモリ領域２００−２０５に分割されているものとして説明する。
【００３８】
ここで，符号２０６は，プログラムメモリ領域２０５内のセルあるいはメモリ領域を示す。本実施形態で示すメモリ領域の割り当ては，単に説明のために使用するものであり，異なる複数のメモリ領域を割り当てることもできる。
【００３９】
例えばメモリ領域２００−２０３は，ベクトルテーブル及びベクトルデータを有する。また，メモリ領域２０４は，プログラムルーチンを有し，プログラムメモリ領域２０５は少なくとも１つの使用プログラムを有する。
【００４０】
内部プログラミングの場合には，例えばメモリ領域２００内には，このメモリ又は他のメモリのメモリ領域へのエントリーを有するブートベクトルが設けられている。
【００４１】
メモリ領域２０１には，例えばマイクロプロセッサ１０６を介してメモリの入出力調整を実行する所定の切換え機能が埋め込まれている。メモリ領域２０２には，利用かあるいはプログラミングかに応じて例えば他のコースを決定する例えば始動ルーチンが設けられている。メモリ領域２０３は，他のデータ及び／又はルーチンが必要に応じて設けられる。
【００４２】
メモリ領域２０４には，メモリ領域２０２内の始動プログラムを介して例えば揮発メモリ（例えばＲＯＭ）１０５にロードされ，他のプログラミング処理を制御する例えばプログラムルーチンが格納されている。
【００４３】
また，図２に示すメモリ領域の分割は，選択的に行われる。例えば外部プログラミング装置１０１を使用する場合にはメモリ領域２００−２０５の一部は省略することができる。このとき，不揮発メモリ１０４のプログラミングは，通常，最下位のメモリ領域から最上位のメモリ領域に向かって実行され，最後にメモリ領域２０６がプログラミングされる。
【００４４】
次いで，図３に基づいて，本実施形態にかかる不揮発メモリ１０４内のプログラミング識別子のデータ及び／又はプログラム部分を説明する。図３は，特に不揮発メモリ１０４内のプログラミング識別子３００のデータ及び／又はプログラム部分を示すブロック図である。
【００４５】
図３に示すように，プログラム識別子３００は，プログラミング処理の後の順番で，好ましくは最後にプログラミングされるように，例えばプログラムメモリ領域２０５のメモリ領域２０６に設けられる。
【００４６】
プログラム識別子３００は，複数の下位部分３０１−３０４に分割される。かかる下位部分３０１−３０４は，例えば予め設定可能な数のビット位置，文字，数あるいは任意の記号からなる予め設定可能な長さのコラムを有する。
【００４７】
プログラミング処理前あるいはプログラミングの際に，少なくとも１つの下位部分（例えば下位部分３０１）が識別子（Ｋ）として選択され，後の照合のために格納される。なお，例えば上記データ及び／又はプログラムの場合，あるいは反復されるプログラミング処理の場合には，所定の識別子を下位部分に固定することもできる。
【００４８】
また，識別子（Ｋ）は，複数のデータ及び／又はプログラム部分あるいはその下位部分から構成することもできる。このとき識別子（Ｋ）に含まれる下位部分は，データ及び／又はプログラム内のあらゆる位置で選択することができる。識別子（Ｋ）の基本位置は，例えばプログラム識別子３００のように，容易に再び認識できるデータ及び／又はプログラム部分が選択されるのが好ましい。このことにより，識別子として機能する１又は複数の下位部分も同様に容易に見出すことができる。この識別子（Ｋ）の正確な位置は，識別子（Ｋ）の照合を実行するために，変更後も明確でなければならない。
【００４９】
例えば識別子（Ｋ）として選択された下位部分３０１は，例えば６個の任意の記号を有する。例えばＧ４７Ｆ０３である識別子（Ｋ）（即ち，プログラム識別子３００の下位部分３０１）は，変更不可能であること（即ち一義的であること）から選択できる。このとき，データ及び／又はプログラム内の下位部分の正確な位置は，明確でなくても良い。
【００５０】
一方，プログラム識別子３００の最初の下位部分３０１である識別子（Ｋ）の位置，記号，ビット数は予め設定できるので，正確な位置が分かっている場合には，プログラミングされるあるいはプログラミングされたデータ及び／又はプログラム内で高い頻度で生じる識別子（Ｋ）を使用することもできる。この識別子（Ｋ）は自由に選択できるが，最後にプログラミングされる下位部分を識別子（Ｋ）として設定するのが効果的である。
【００５１】
次いで，図４に基づいて，本実施形態にかかるメモリ機能を保護するプログラムの実行方法を説明する。図４は，本実施形態にかかるメモリ機能を保護するプログラムの実行方法を示すフローチャートである。なお，本実施形態においては，例えば制御装置を制御する実際のプログラム（特に車両の駆動シーケンスを制御する制御装置における走行プログラム）に基づいて，例えば不揮発性メモリ１０４などのメモリを保護するプログラミング実行方法である。
【００５２】
本実施形態においては，制御装置がスイッチオンする際には，例えばソフトウェアプロトコルを介してプログラムセッションが開始され，自動的に駆動システムが変更され，次いでプログラミングされる。
【００５３】
かかる保護は，メモリ全体，１ブロックあるいは１ページを消去あるいはプログラミングする前に，使用されるフラッシュＥＰＲＯＭの種類に応じてメモリ全体の最終ブロック，最終ページあるいは最終セルの最後に書き込まれている以前の識別子が変更されることにより，あるいは例えば消去又はオーバープログラミングが無効にされることにより，比較照会又は探索照会の際に認識されないことで実行される。
【００５４】
かかる識別子（Ｋ）は，例えば文字あるいは数字からなる複数場所のコードであり，消去あるいはゼロにより上書きされる。このため，データ及び／又はプログラム，例えばプログラム識別子（いわゆるプログラムアイデンティファイヤ）の以前の部分が使用されるのが好ましい。このことにより，識別子（Ｋ）を新たにプログラミングする必要がない。
【００５５】
プログラミング処理あるいは消去プログラミング処理が全て終了し，識別子（Ｋ）が再び書き込まれた場合にのみ，プログラムが再び有効とされる。消去あるいはプログラミング中に何らかの中断やリセットが発生した場合，あるいは他の理由で装置電圧が遮断した場合には，変更された識別子（Ｋ）はまだ再び書き込まれず，プログラムは有効とならないので，プログラムが実行されることはない。このとき，使用されたフラッシュＥＰＲＯＭ内でこの中断が一時記憶される。
即ち，識別子（Ｋ）が無効であることから，新たな始動の際に，最初に存在しているプログラムが実行可能であるか否かを判断することができる。
【００５６】
識別子（Ｋ）が無効であることからプログラムが実行されない場合には，自動的に例えばＲＯＭ形式の消去不可能な不揮発性メモリ１０８，あるいはフラッシュＥＰＲＯＭなどの不揮発メモリ１０４の消去不可能な部分（特にブートステップ）のプログラミン駆動システムが呼び出され，新たなプログラミングが待機される。したがって，プログラミングされなかった，あるいは不完全にプログラミングされた，又は誤ってプログラミングされたフラッシュＥＰＲＯＭなどの不揮発メモリ１０４は，新たなプログラミングを阻止する原因とはならない。
【００５７】
まず，ステップ４００において，処理を開始する。次いで，ステップ４０１では，複数の異なる処理プログラム及びプログラムルーチンから選択して，処理プログラムが決定される。例えば車両の制御装置の場合には，例えば種々の走行プログラム，少なくとも１つのブートプログラムなどが該当する。
【００５８】
このとき，処理プログラムの決定は，プログラム識別子３００（いわゆるプログラムアイデンティファイヤ）の設定により，あるいは１又は複数のビット位置を有するフラグを選択することにより実行される。この設定は，ステップ４０２，４０３あるいは４０４で照合される。
【００５９】
ステップ４０４は，選択的に他のプログラムに移行する判断ステップである。
このステップ４０４のように他に判断ステップを付加することで，他の複数のプログラム（特に走行プログラムとブートプログラム又はプログラミングルーチン）に移行することができる。
【００６０】
このとき，同様にステップ４０１において，識別子（Ｋ）あるいは１又は複数の該当する下位部分を決定するのが好ましい。このことにより，例えば反復するプログラミング処理では，プログラミング処理の全体の識別子（Ｋ）を決定することができるほか，プログラミング処理毎にも設定きるので，全体として可変にすることができる。
【００６１】
ステップ４０２では，プログラム識別子あるいはフラグ選択により，走行プログラム１が選択されたか否かが判断される。走行プログラム１が選択された場合には，ステップ４０５に移行する。ステップ４０５では，続いて走行プログラム１に必要な初期化を実行するリセットが作動され，通信が構築される。
【００６２】
ステップ４０２で，走行プログラム１が選択されないと判断される場合には，例えばステップ４０３に移行し，プログラミング意図が存在するか否かが判断される。即ち，ステップ４０３では，ブートステップあるいはブートプログラムが，後続のプログラミングの証しとして選択されているか否かが判断される。
【００６３】
選択されていない（存在しない）と判断される場合には，例えばステップ４０４などの他のステップで，他のいずれかのプログラムが選択されたか判断され，例えばステップ４０４に基づいて他のプログラムへ飛躍することができる。一方，使用プログラムのいずれもが選択されていない場合には，ステップ４１４に移行し，処理が終了する。
【００６４】
一方，ステップ４０３で，ブートプログラム（例えばブートプログラム１）が選択されていると判断される場合には，ステップ４１０に移行する。ここでも同様に，復帰（リセット）と，ブートプログラム１に従属する初期化と通信の構築が実行される。その後，ステップ４１１に移行し，プログラミング装置のプログラミングモードのセッションが開始される。
【００６５】
その後，ステップ４１２に移行し，識別子（Ｋ）がプログラムの一部（特に好ましくはプログラム識別子３００，即ち，プログラムアイデンティファイヤの一部）として変更され，認識できないようにされる。このとき，識別子（Ｋ）の変更前に，この識別子並びにプログラミング処理の中断で実行された一時記憶が評価される。同様に，ここで識別子（Ｋ）の変更直前に初めて，制御装置１００あるいは外部プログラミング装置１０１により，識別子（Ｋ）を選択あるいは設定することができる。
【００６６】
また，ステップ４１２では，迅速に消去あるいはプログラミングするために，ボーレート切換えを実行することができる。このとき，より少ない通常通信レートからより高い消去及び／又はプログラミングレートに切り換えられる。
【００６７】
その後，ステップ４１３に移行し，本来の消去あるいはプログラミング処理が実行され，上記した例えばページ単位，ブロック単位，メモリ全体又はセル単位で，各使用されるメモリに消去及び／又はプログラミングされる。
【００６８】
次いで，ステップ４１５に移行し，このプログラミング処理の最後に，あるいは例えば障害，リセット又は制御装置１００あるいはマイクロプロセッサ１０６の無電流状態によりプログラミング処理が中断した後に，識別子（Ｋ）が正しいか否かが照合される。
【００６９】
識別子（Ｋ）が正しくないと判断された場合には，ステップ４１６に移行し，中断されたブートプログラムへの新たなエントリーが行われる。このとき，例えば中断の原因と時点に関する一時記憶がメモリ（特にプログラミングされるメモリ）に書き込まれる。
【００７０】
一方，識別子（Ｋ）が正しいと判断された場合には，ステップ４１４に移行し，処理が終了する。このとき，中断のないの完全なプログラミング後にも，識別子（Ｋ）または場合により存在する一時記憶の照合を実行することもできる。
【００７１】
識別子（Ｋ）は，図２のプログラムメモリ領域２０５のメモリ領域２０６のように，できるだけ後に（好ましくは最後に）プログラミングされる領域に書き込まれるので，プログラミング処理が完全にかつ正しく終了した場合にのみ，正確な識別子（Ｋ）が提供される。
【００７２】
安全上の理由から，原則的に使用プログラム（特に車両の走行プログラム）の開始時に（必要に応じてプログラミングあるいはブートプログラムの開始時に），ステップ４０２，４０３，４０４…において，識別子（Ｋ）と場合によって中断時の一時記憶も照合されて評価することができる。このとき，正しいプログラムが選択された後，同様に識別子（Ｋ）及び／又は中断時の一時記憶が照合されて，正しいと判断された場合にのみ，使用プログラムにエントリーされるのが好ましい。
【００７３】
ブートプログラム（例えばプログラミングルーチン）にエントリーしようとする場合（プログラミングが実行される場合）には，少なくとも識別子（Ｋ）が正しくない場合，あるいは一時記憶が存在する場合には，その事実が表示される。また，メモリプログラミングをセル単位，ページ単位又はブロック単位で保護する場合には，さらに，データあるいはプログラムのプログラムされない全ての部分で，識別子が正しいか否か，あるいは一時記憶が存在するか否か，を照合することができる。
【００７４】
消去あるいはプログラミング処理の開始前に（即ち，ステップ４１２において），識別子（Ｋ）が認識できないよう変更される。このとき，変更される識別子（Ｋ）は，プログラムの構成部分であるのが好ましい。
【００７５】
ステップ４０１で，ブートプログラムではなく例えば走行プログラム（即ち，使用プログラム）が選択される場合には，ステップ４０２，４０３，４０４あるいは場合によって以降のステップで認識される。かかる走行プログラム１の場合には，ステップ４０２を介してステップ４０５に移行し，上記処理が実行される。
【００７６】
ステップ４０６では，例えば使用プログラムの処理中に，プログラミングセッションを開始すべきか否かが判断される。開始すべきでないと判断される場合には，ステップ４０８に移行し，既にメモリ（特に不揮発メモリ）１０４内で選択されたプログラムが処理され，最終ステップ４１４に移行する。
【００７７】
一方，ステップ４０６で使用プログラム（特に走行プログラム）１の内部にプログラミング意図が認識された場合には，ステップ４０７に移行する。ステップ４０７では，所定の条件に従ってプログラミングモードのセッションが開始される。この条件は，例えば，特にデフォルトモードと関係するエンジンの未始動，特にボーレート変換が要求されている場合の承認（即ちシンタックスが正しいこと），などが挙げられる。かかる条件は，同様にステップ４１１で照会され，各条件を遵守して様々なエラー報告が詳細に出力される。
【００７８】
当然ながら，プログラミングモードのためのこれらの条件が満たされている場合には，特にソースアドレスと目標アドレスが他のメモリあるいはメモリ領域へ退避されて，ソフトウェアリセットが導入される。このとき，代わりに，不揮発性メモリ（例えばフラッシュＥＰＲＯＭ）１０４のプログラミングを実施すべきことを表示するコードをセットすることもできる。ソフトウェアリセットが付加される場合には，リセット後に初期化が実施され，フラッシュプログラミングのための入力されたコードが照会される。
【００７９】
コードが正しいと判断される場合には，このコードは，例えば，この行為に基づいて後に新しく同定できるようにするために，所望に変更される。この変更は，例えばコードを１ビット右へシフトすることにより実行できるほか，他の方法でも変更できる。
【００８０】
その後，ステップ４０９では，通信を確立する機能が呼び出され，ブートプログラムに関する通信が確立される。このため，以前のコードは既に存在せず，所望に変更されたコードが認識される。
【００８１】
また，ステップ４０９では，上記ステップ４１０のブートプログラムあるいはブートステップ内の通信開始の場合と同様に，初期化が実行される。このとき，同様に，通常の通信伝送率，通信実行の送信調節などの初期化が行われる。このとき，通信を確立する場合と同様に，例えばボーレート切換えのフラグがセットされ，通信経過における正の応答の送信直後に，ステップ４１２で，伝送率あるいはボーレートが再び切り換えることができる。ここでも同様に，プログラミングモードのセッションがアクティブにセットされる。通信確立の途中の正の応答後に，それがバッファに書き込まれて，送信処理が開始される。
【００８２】
その後，ステップ４１２に移行し，ボーレート切換えによりブートプログラム内の他のシーケンスが再び開始される。
【００８３】
以上，本発明に係る好適な実施の形態について説明したが，本発明はかかる構成に限定されない。当業者であれば，特許請求の範囲に記載された技術思想の範囲内において，各種の修正例及び変更例を想定し得るものであり，それらの修正例及び変更例についても本発明の技術範囲に包含されるものと了解される。
【００８４】
【発明の効果】
識別子が，メモリ内のデータ及び／又はプログラムを消去及び／又はプログラミングする前に，あるいは消去及び／又はプログラミングする際にプログラミングの完全性あるいは正しいと予測される識別子に変更される。この変更した識別子によりプログラミングが完全でない場合にはプログラムが実施されず，あるいは書き込みが完全でない場合にはデータが使用されることはない。
【図面の簡単な説明】
【図１】本実施形態にかかるメモリ機能保護装置を有する制御装置を示すブロック図である。
【図２】本実施形態にかかる不揮発メモリのメモリ領域を示すブロック図である。
【図３】本実施形態にかかるプログラム部分内の識別子（Ｋ）を示すブロック図である。
【図４】本実施形態にかかるメモリ機能保護方法を実施するためのフローチャートである。
【符号の説明】
１００          コンピュータシステム
１０１          外部プログラミング装置
１０２          インターフェイス
１０３          バスシステム
１０４，１０８  不揮発メモリ，
１０５          揮発メモリ
１０６          マイクロプロセッサ（計算ユニット）
１０７          周辺アッセンブリ
１０９          伝送系システム
２００−２０５  メモリ領域
２０６          メモリ領域
３００          プログラム識別子
３０１−３０４  下位部分
【図１】
0004880105.tif 000002
【図２】
0004880105.tif 000003
【図３】
0004880105.tif 000004
【図４】
0004880105.tif 000005