(57)【要約】【課題】プログラム書換え中に異常があっても、その後再び書換えを行うことで正常に書換えが完了でき、かつ、不揮発性メモリの必要量が少なくてすむような車載プログラム書換え制御装置を得る。【解決手段】車載コントローラ１の不揮発性メモリ５は、起動するプログラムを切換える起動切換えプログラムが格納された領域５１と、プログラムを書換える書換え制御プログラムを格納した領域５２と、車両を制御する車両制御プログラムを格納した領域５３とを有し、書換えツール１４は、不揮発性メモリ５のプログラムを書換えるに当って、一旦、領域５３に書換え制御プログラムを格納して、この書換え制御プログラムにより領域５２を書換え、その後領域５３を書換える書換え手順により書換えを行い、書換え途中に異常が発生した場合には、書換え手順の開始点を変更して書換え手順を実行するようにしたものである。【選択図】図１
2007316800.tif 000002
【特許請求の範囲】
【請求項１】
車両を制御する車載コントローラの不揮発性記憶媒体に記憶されたプログラムを、上記車載コントローラと通信路を介して接続された書換えツールにより書換える車載プログラム書換え制御装置において、上記不揮発性記憶媒体には、上記プログラムを書換える書換え制御プログラムを格納した第一の領域及び車両を制御する車両制御プログラムを格納した第二の領域がそれぞれ独立に書込み及び消去が可能なように設けられ、上記書換えツールは、上記第一の領域及び第二の領域を書換えるに当っては、上記第一の領域の書換え制御プログラムにより上記第二の領域を書換え制御プログラムに書換え、この書換えられた上記第二の領域の書換え制御プログラムにより上記第一の領域の書換え制御プログラムを新しい書換え制御プログラムに書換え、この書換えられた上記第一の領域の新しい書換え制御プログラムにより上記第二の領域の車両制御プログラムを新しい車両制御プログラムに書換える書換え手順を実行するとともに、上記書換えの途中で、異常が発生し、上記異常からの復旧時には、上記各領域の状態に応じた書換え制御プログラムにより上記書換え手順を再開することを特徴とする車載プログラム書換え制御装置。
【請求項２】
車両を制御する車載コントローラの不揮発性記憶媒体に記憶されたプログラムを、上記車載コントローラと通信路を介して接続された書換えツールにより書換える車載プログラム書換え制御装置において、上記不揮発性記憶媒体には、上記プログラムを書換える書換え制御プログラムを格納した第一の領域及び車両を制御する車両制御プログラムを格納した第二の領域及びプログラムを書換える書換え制御プログラムを格納する第三の領域がそれぞれ独立に書込み及び消去が可能なように設けられ、上記書換えツールは、上記第一の領域及び第二の領域を書換えるに当っては、上記第一の領域の書換え制御プログラムにより上記第三の領域を書換え制御プログラムに書換え、この書換えられた上記第三の領域の書換え制御プログラムにより上記第一の領域の書換え制御プログラムを新しい書換え制御プログラムに書換え、この書換えられた上記第一の領域の新しい書換え制御プログラムにより上記第二の領域の車両制御プログラムを新しい車両制御プログラムに書換える書換え手順を実行するとともに、上記書換えの途中で、異常が発生し、上記異常からの復旧時には、上記各領域の状態に応じた書換え制御プログラムにより上記書換え手順を再開することを特徴とする車載プログラム書換え制御装置。
【請求項３】
上記書換え制御プログラムは、自己の格納されている領域に対する上記書換えツールからの書換え要求に対しては書換えを行わないとともに、書換え不能を上記書換えツールに通知することを特徴とする請求項１または請求項２記載の車載プログラム書換え制御装置。
【請求項４】
上記書換え制御プログラムは、自己の識別情報を上記書換えツールに通知し、上記書換えツールは、上記通知に基き、上記各領域の状態を把握し、上記書換え手順を再開することを特徴とする請求項１または請求項２記載の車載プログラム書換え制御装置。
【請求項５】
異常からの復旧時に上記第一及び第二の領域に格納されたプログラムの起動を切換える起動切り換え手段を備え、上記起動切換え手段は、上記第一及び第二の領域の両方が正常である場合には、上記第二の領域に格納されたプログラムを優先的に起動することを特徴とする請求項１記載の車載プログラム書換え制御装置。
【請求項６】
異常からの復旧時に上記第一及び第三の領域に格納されたプログラムの起動を切換える起動切り換え手段を備え、上記起動切換え手段は、上記第一及び第三の領域の両方が正常である場合には、上記第一の領域に格納されたプログラムを優先的に起動することを特徴とする請求項２記載の車載プログラム書換え制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、車載コントローラの不揮発性メモリに書き込まれたプログラムの書換えを行う車載プログラム書換え制御装置に関するものである。
【背景技術】
【０００２】
車載コントローラの不揮発性メモリに書き込まれたプログラムの書換えについて、コスト削減の観点からプログラム書換え用の通信線が、ディーラー用の車両診断ツールなどが接続される通信線と共用される構成が増えてきている。これは、見方を変えると、一般ユーザでも通信や書換えを行うことが容易な状況になりつつあることになるため、例えば不正改造対策として、書換え通信におけるセキュリティ確保の必要性が増加してきている。
通常、ディーラーで行われる車載コントローラの制御プログラム更新においては、セキュリティ機能を含む通信プロトコルを定義し、そのプロトコルに従って書換えが行なわれている。このため、書換えプロトコルに対応するプログラムを車載コントローラに組み込む必要がある。さらに、最近では、市場投入後もセキュリティ確保のために書換えプロトコルを更新する要求も発生してきている。
また、車載コントローラの制御プログラムを更新するために、ディーラーにおけるプログラム書換えの実施が頻繁に行われるようになってきている。このため、仮にディーラーで誤った操作を行ったとしても、最終的にプログラム書換えを正常に完了できる信頼性が求められている。
【０００３】
このような状況に対する従来技術として、例えば特許文献１がある。
特許文献１では、不揮発性メモリに格納する方法として、リセット時判断プログラムと書換え制御プログラムの記憶領域と、車載プログラムの記憶領域を分けている。こうすることによって、車載プログラムを書換える時でも、リセット判断時プログラムと書換え制御プログラムの記憶領域は、そのまま残すことによって、書換え途中にバッテリが外されるなどしても、その後再び書換えを行うことで正常に書換えができる。
さらに、車載プログラムの一部として、リセット時判断プログラムと書換え制御プログラムを組み込むことで、書換え制御プログラムの変更も可能としている。
【０００４】
【特許文献１】特開２００４−２１０１８３号公報（第６〜１８頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１で、書換え制御プログラム自身を書換える場合、すでにあるリセット時判断プログラムと書換え制御プログラムの他に、車載プログラムを格納するための領域として、車載プログラムとリセット時判断プログラムと書換え制御プログラムを格納できるだけの大きさの領域が必要となる。すなわち、実際にはリセット時判断プログラムと書換え制御プログラムの両方を二重に格納できるだけの不揮発メモリが必要となるため、Ｈ／Ｗ（ハードウエア）が高価になる問題がある。
【０００６】
この発明は、上述のような課題を解決するためになされたものであり、プログラム書換え中に異常があっても、その後再び書換えを行うことで正常に書換えが完了でき、かつ、不揮発性メモリの必要量が少なくてすむような車載プログラム書換え制御装置を得ることを目的にしている。
【課題を解決するための手段】
【０００７】
この発明に係わる車載プログラム書換え制御装置においては、車両を制御する車載コントローラの不揮発性記憶媒体に記憶されたプログラムを、車載コントローラと通信路を介して接続された書換えツールにより書換える車載プログラム書換え制御装置において、不揮発性記憶媒体には、プログラムを書換える書換え制御プログラムを格納した第一の領域及び車両を制御する車両制御プログラムを格納した第二の領域がそれぞれ独立に書込み及び消去が可能なように設けられ、書換えツールは、第一の領域及び第二の領域を書換えるに当っては、第一の領域の書換え制御プログラムにより第二の領域を書換え制御プログラムに書換え、この書換えられた第二の領域の書換え制御プログラムにより第一の領域の書換え制御プログラムを新しい書換え制御プログラムに書換え、この書換えられた第一の領域の新しい書換え制御プログラムにより第二の領域の車両制御プログラムを新しい車両制御プログラムに書換える書換え手順を実行するとともに、書換えの途中で、異常が発生し、異常からの復旧時には、各領域の状態に応じた書換え制御プログラムにより書換え手順を再開するものである。
【発明の効果】
【０００８】
この発明は、以上説明したように、車両を制御する車載コントローラの不揮発性記憶媒体に記憶されたプログラムを、車載コントローラと通信路を介して接続された書換えツールにより書換える車載プログラム書換え制御装置において、不揮発性記憶媒体には、プログラムを書換える書換え制御プログラムを格納した第一の領域及び車両を制御する車両制御プログラムを格納した第二の領域がそれぞれ独立に書込み及び消去が可能なように設けられ、書換えツールは、第一の領域及び第二の領域を書換えるに当っては、第一の領域の書換え制御プログラムにより第二の領域を書換え制御プログラムに書換え、この書換えられた第二の領域の書換え制御プログラムにより第一の領域の書換え制御プログラムを新しい書換え制御プログラムに書換え、この書換えられた第一の領域の新しい書換え制御プログラムにより第二の領域の車両制御プログラムを新しい車両制御プログラムに書換える書換え手順を実行するとともに、書換えの途中で、異常が発生し、異常からの復旧時には、各領域の状態に応じた書換え制御プログラムにより書換え手順を再開するので、不揮発性メモリの状態に基づいて書換え手順の開始点を変更するため、書換え手順の最中に電源異常などの異常があっても、書換えが正常に完了可能であり、かつ、不揮発性メモリ容量を少なくすることができる。
【発明を実施するための最良の形態】
【０００９】
実施の形態１．
以下、実施の形態１を図に基づいて説明する。
図１は、この発明の実施の形態１による車載プログラム書換え制御装置を示すシステム構成図である。
図１において、車載プログラム書換え制御装置は、車載コントローラ１と書換えツール１４により構成される。車載コントローラ１は、マイコン２とＩ／Ｆ（インタフェース）８と通信Ｉ／Ｆ９からなる。マイコン２は、Ｉ／Ｆ８を介して車両２０に搭載されたエンジン１２の制御を行う。Ｉ／Ｆ８は、マイコン２がエンジン１２を制御するために必要な入出力を行うインターフェース回路である。また、マイコン２は、通信Ｉ／Ｆ９を介して通信路１３に接続されている。通信路１３には、さらに外部から書換えツール１４が接続される。マイコン１と書換えツール１４は、通信路１３と通信Ｉ／Ｆ９を通じて相互に送受信を行うことができる。
【００１０】
マイコン１の内部には、ＣＰＵ３、ＲＡＭ４、不揮発性メモリ５（不揮発性記憶媒体）、Ｉ／Ｆ６があり、それぞれがバス７を介して接続されている。ＣＰＵ３は、不揮発性メモリ５やＲＡＭ４に書き込まれたプログラムに従って処理を行い、Ｉ／Ｆ６からの入力に基づいてＲＡＭ４の内容を更新しながら、必要に応じてＩ／Ｆ６を介して出力を行う。
不揮発性メモリ５の内部には、さらに３つの領域、領域５１、領域５２（第一の領域）、領域５３（第二の領域）がある。領域５１、領域５２、領域５３は、独立に消去・書換えが可能である。
【００１１】
車両２０には、車載コントローラ１、エンジン１２、通信路１３の他にバッテリ１０とＩＧスイッチ１１がある。車載コントローラ１は、ＩＧスイッチ１１がＯＮのときにバッテリ１０からの給電によって動作する。ＩＧスイッチ１１がＯＦＦになると、車載コントローラ１への給電は停止され、車載コントローラ１の動作も停止する。
【００１２】
図２は、この発明の実施の形態１による車載プログラム書換え制御装置の不揮発性メモリの書換え中の状態遷移を示す図である。
図２において、領域５１、領域５２、領域５３毎に状態（ａ）〜（ｇ）が示され、各状態（ａ）〜（ｇ）での領域内容が、起動切り換え１００、書換え制御１１０、車両制御１２０、書換え制御（一次）１３０、新書換え制御１１１、新車両制御１２１で示されている。
ここで、書換え制御１１０、書換え制御（一次）１３０、新書換え制御１１１は、いずれも車両制御プログラム及び書換え制御プログラムを書換えるプログラムである。
また、車両制御１２０及び新車両制御１２１は、車両を制御するプログラムである。
なお、領域５２は、書換え制御１１０、新書換え制御１１１のみを格納できる大きさであればよい。
【００１３】
図３は、この発明の実施の形態１による車載プログラム書換え制御装置の不揮発性メモリの書換え手順を示すフローチャートである。
図４は、図３の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
図５は、図２の起動切り換え１００の処理内容を示すフローチャートである。
図６は、図２の書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の実行形態を示す図である。
図７は、図２の車両制御１２０、車両制御１２１の処理内容を示すフローチャートである。
図８は、図２の図２の書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の処理内容を示すフローチャートである。
【００１４】
次に動作について説明する。
マイコン１と書換えツール１４は、通信路１３と通信Ｉ／Ｆ９を通じて相互に送受信を行うことにより、書換えツール１４の書換え手順により、不揮発性メモリ５の領域５２及び領域５３の書換えを行う。
まず、領域５２の書換え制御１１０を新書換え制御１１１に書換え、領域５３の車両制御１２０を新車両制御１２１に書換える場合の不揮発性メモリ５の状態変化を、図２に従って説明する。
この書換えは、図２の状態（ａ）から始まる。領域５１には起動切り換え１００、領域５２には書換え制御１１０、領域５３には車両制御１２０が格納されている。
本発明の書換え手順では、最初に、領域５３を書換え制御（一次）１３０に書換える。
この書換えが開始されると、書換え制御１１０の機能によって、領域５３は、異常状態にされる。このとき不揮発性メモリ５は、状態（ｂ）となる。さらに書換えが進んで書換えが完了すると、領域５３は正常に戻り、その内容は、書換え制御（一次）１３０となる。このとき不揮発性メモリ５は状態（ｃ）である。
なお、車載コントローラ１は、領域５２と領域５３のそれぞれに対して、正常に書換えられたかどうかを判断する機能と、再始動後に領域５２と領域５３の正常な領域に配置された機能を起動する機能とを有する。
また、車載コントローラ１は、書換え操作中に機能を提供している書換え制御プログラムを識別する機能を有する。
【００１５】
次に、領域５２を新書換え制御１１１に書換える。
この書換えが開始されると、書換え制御（一次）１３０の機能によって、領域５２は異常状態にされる。このとき不揮発性メモリ５は状態（ｄ）となる。さらに書換えが進んで書換えが完了すると、領域５２は、正常に戻り、その内容は新書換え制御１１１となる。このとき不揮発性メモリは状態（ｅ）である。
最後に、領域５３を新車両制御１２１に書換える。
この書換えが開始されると、新書換え制御１１１の機能によって、領域５３は異常状態にされる。このとき不揮発性メモリ５は状態（ｆ）となる。さらに書換えが進んで書換えが完了すると、領域５３は、正常に戻り、その内容は新車両制御１２１となる。このとき不揮発性メモリは状態（ｇ）である。
状態（ｇ）では、領域５２が新書換え制御１１１、領域５３が新車両制御１２１となっており、書換えが完了していることが分かる。
【００１６】
次に、図２の状態遷移のもととなる書換え手順について、図３のフローチャートに基づいて説明する。このフローチャートは、書換えツール１４の処理である。
書換え開始時には、図２の状態（ａ）にある。書換え手順が開始されると、始めにステップ２５０が実行される。ステップ２５０では、領域５３は正常かつ新車両制御１２１であるかどうかが判断される。領域５３の内容は車両制御１２０であるため、ステップ２５１に進む。ステップ２５１では、領域５２は正常かつ新書換え制御１１１かどうかが判断される。領域５２は書換え制御１１０であるため、ステップ２５２に進む。ステップ２５２では、領域５３は、正常かつ書換え制御（一次）１３０かどうかが判断される。領域５３は車両制御１２０であるため、ステップ２０１に進む。
【００１７】
ステップ２０１では、領域５２のプログラム、すなわち書換え制御１１０に制御を移行し、ステップ２０２に進む。ステップ２０２で、領域５３を書換え制御（一次）１３０に書換える。ステップ２０２の開始と共に不揮発性メモリ５は、状態（ｂ）となり、ステップ２０２の完了時には状態（ｃ）になる。ステップ２０２の完了後、ステップ２１０に進む。ステップ２１０では、ステップ２０２の異常の有無を判定する。異常があれば異常終了し、異常がなければステップ２０３に進む。
ステップ２０３では、領域５３のプログラム、すなわち書換え制御（一次）１３０に制御を移行し、ステップ２０４に進む。ステップ２０４で、領域５２を新書換え制御１１１に書換える。ステップ２０４の開始と共に不揮発性メモリ５は状態（ｄ）となり、ステップ２０４の終了時には状態（ｅ）となる。ステップ２０４の完了後、ステップ２１１に進む。ステップ２１１では、ステップ２０４の異常の有無を判定する。異常があれば異常終了し、異常がなければステップ２０５に進む。
【００１８】
ステップ２０５では、領域５２のプログラム、すなわち新書換え制御１１１に制御を移行し、ステップ２０６に進む。ステップ２０６で、領域５３を新車両制御１２１に書換える。ステップ２０６の開始と共に不揮発性メモリ５は、状態（ｆ）となり、ステップ２０６の終了時には状態（ｇ）となる。ステップ２０６の完了後ステップ２１２に進む。ステップ２１２では、ステップ２０６の異常の有無を判定する。異常があれば異常終了し、異常がなければステップ２０７に進む。
ステップ２０７では、領域５３のプログラム、すなわち新車両制御１２１に制御を移行して制御を完了する。新車両制御１２１により、車載コントローラは車両の制御を再び開始する。
以上により、書換え手順途中で異常がない場合に不揮発性メモリ５の内容を書換えることができる。
【００１９】
続いて、書換え手順途中で電源供給異常などが発生し、正常に書換え手順を完了できなかった場合の書換え手順完了までの流れを説明する。
異常が発生すると、図３のステップ２１０、２１１、２１２において異常終了する。この場合、不揮発性メモリ５の内容は、図２の（ａ）〜（ｇ）までのいずれかの状態になっていることになる。
この後、電源供給異常などの異常要因を取り除いた後に、再度書換え手順を開始する。
まず、電源供給異常などの異常要因を取り除いた後再び車載コントローラを起動する。このとき、車載コントローラは、領域５１の起動切り換え１００に従って制御を行う。起動切り換え１００の処理内容を図５に示す。
【００２０】
図５のステップ３０１で、書換えツール１４からの起動要求を確認する。異常状態からの復旧であるため、書換えツール１４からの起動要求はなく、ステップ３０３に進む。ステップ３０３では、領域５３が正常かどうか判断し、領域５３が正常であればステップ３０４に進んで、領域５３のプログラムを起動し、異常であればステップ３０２に進んで、領域５２のプログラムを起動する。
したがって、図２の状態（ａ）では車載制御１２０が、状態（ｂ）では書換え制御１１０が、状態（ｃ）〜（ｅ）では書換え制御（一次）１３０が、状態（ｆ）では新書換え制御１１１が、状態（ｇ）では新車両制御１２１が起動されている。
【００２１】
図４は、書換え手順を起動したときの不揮発性メモリ５の状態とその後書換え完了までの流れを示す図であり、以下に、この内容に従ってその流れを説明する。
まず、不揮発性メモリ５が状態（ａ）だった場合には、異常がなかった場合と全く同様にして書換えが正常に完了する。
このことは、図４に以下のように表わされている。
まず、開始状態を表す黒丸から（ａ）に対する点線矢印として書換え手順を起動したときの状態を表している。また、不揮発性メモリ５の内容が変わるステップ２０２、２０４、２０６も示してある。例えば、状態（ａ）でステップ２０２が開始されると、状態（ｂ）となり、ステップ２０２の終了で状態（ｃ）になることを、状態（ａ）→状態（ｂ）→状態（ｃ）という矢印で表している。また、この遷移を起こしているステップが２０２であることをステップ２０２の矢印で示している。
【００２２】
同様に、ステップ２０４の実行によって状態（ｃ）→状態（ｄ）→状態（ｅ）となり、ステップ２０６の実行によって状態（ｅ）→状態（ｆ）→状態（ｇ）という遷移が起こることを表している。
また、状態間を結ぶ矢印の種類が変えてあるのは、書換え制御機能に使われるプログラムが違うことによるプロトコルの差異を表したものである。状態（ａ）→状態（ｂ）→状態（ｃ）の遷移は、書換え制御１１０に対応するプロトコルで行われ、状態（ｃ）→状態（ｄ）→状態（ｅ）の遷移は、書換え制御（一次）１３０に対応するプロトコルで行われ、状態（ｅ）→状態（ｆ）→状態（ｇ）の遷移は、新書換え制御１１１のプロトコルで行われることになる。
【００２３】
次に、不揮発性メモリ５が状態（ｂ）だった場合を考える。書換え手順は図３に従って進められる。
書換え手順が開始されると、始めにステップ２５０が実行される。ステップ２５０では、領域５３は正常かつ新車両制御１２１かどうかが判断され、領域５３が異常であるため、ステップ２５１に進む。ステップ２５１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は書換え制御１１０であるため、ステップ２５２に進む。ステップ２５２では、領域５３が正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は異常であるため、ステップ２０１に進む。
従って、ステップ２０１からの実行となり、異常がなかった場合と同様に不揮発メモリ５の状態遷移は、ステップ２０２から始まることがわかる。なお、状態（ｂ）でステップ２０２を開始すると、領域５３が異常となり、それは状態（ｂ）になるため、状態（ｂ）→状態（ｂ）という矢印が引かれている。
【００２４】
次に、不揮発性メモリ５が状態（ｃ）だった場合を考える。書換え手順は図３に従って進められる。
書換え手順が開始されると、始めにステップ２５０が実行される。ステップ２５０では、領域５３は正常かつ新車両制御１２１かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２５１に進む。ステップ２５１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は書換え制御１１０であるため、ステップ２５２に進む。ステップ２５２では、領域５３が正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２０３に進む。
従って、ステップ２０３からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２０４から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。
【００２５】
次に、不揮発性メモリ５が状態（ｄ）だった場合を考える。書換え手順は図３に従って進められる。
書換え手順が開始されると、始めにステップ２５０が実行される。ステップ２５０では、領域５３は正常かつ新車両制御１２１かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２５１に進む。ステップ２５１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は異常であるため、ステップ２５２に進む。ステップ２５２では、領域５３が正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２０３に進む。
従って、ステップ２０３からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２０４から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。なお、状態（ｄ）でステップ２０４を開始すると、領域５２が異常となり、それは状態（ｄ）になるため、状態（ｄ）→状態（ｄ）という矢印が引かれている。
【００２６】
次に、不揮発性メモリ５が状態（ｅ）だった場合を考える。書換え手順は図３に従って進められる。
書換え手順が開始されると、始めにステップ２５０が実行される。ステップ２５０では、領域５３は正常かつ新車両制御１２１かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２５１に進む。ステップ２５１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は新書換え制御１１１であるため、ステップ２５４に進む。ステップ２５４では、領域５３は正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２０５に進む。
従って、ステップ２０５からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２０６から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。
【００２７】
次に、不揮発性メモリ５が状態（ｆ）だった場合を考える。書換え手順は図３に従って進められる。
書換え手順が開始されると、始めにステップ２５０が実行される。ステップ２５０では、領域５３は正常かつ新車両制御１２１かどうかが判断され、領域５３は異常であるため、ステップ２５１に進む。ステップ２５１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は新書換え制御１１１であるため、ステップ２５４に進む。ステップ２５４では、領域５３は正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は異常であるため、ステップ２０６に進む。
従って、ステップ２０６からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２０６から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。なお、状態（ｆ）でステップ２０６を開始すると、領域５２が異常となり、それは状態（ｆ）になるため、状態（ｆ）→状態（ｆ）という矢印が引かれている。
【００２８】
最後に、不揮発性メモリ５が状態（ｇ）だった場合を考える。書換え手順は図３に従って進められる。
書換え手順が開始されると、始めにステップ２５０が実行される。ステップ２５０では、領域５３は正常かつ新車両制御１２１かどうかが判断され、領域５３は新車両制御１２１であるため、書換えを行う必要がなく終了する。
【００２９】
上記のように、電源供給などの異常発生後も、再度書換え手順を実施することによって正常に書換えを完了できることが分かる。
なお、本実施の形態１においては、図６に示すように、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は、不揮発メモリ５上のプログラムが起動され、ステップ４０１のように不揮発性メモリ５上に配置されたプログラムをそのまま実行することを想定している。
【００３０】
また、図２の車両制御１２０、新車両制御１２１の処理内容を図７に示す。
図７で、処理が開始されると、ステップ５０１で書換えツール１４からの要求を確認し、要求がなければステップ５０２で車両制御を行い、ステップ５０１に戻る。このようにして、書換えツール１４からの要求があるまでステップ５０２の車両制御を継続する。
この後、書換えツール１４からの要求があるとステップ５０３に進む。ステップ５０３では、現在車両がエンスト状態にあるなど、不揮発性メモリ５を書換えても安全な状態にあるかどうかを確認し、もし安全でないならば、ステップ５０４に進んで書換えツール１４に処理不可能応答を返し、再びステップ５０２の車両制御を継続する。ステップ５０３で、安全な状態であると判断された場合には、領域５２のプログラムを起動して処理を終わる。以後は領域５２のプログラムに従って動作する。
【００３１】
また、図２の書換え制御１２０、新書換え制御１２１、書換え制御（一次）１３０の処理内容を図８に示す。
図８の処理が開始されると、まずステップ６０１で全入出力を停止する。これは不揮発メモリ５の書き換え中にエンジン１２が駆動されて危険がないようにするためのである。その後、ステップ６０３で、書換えツール１４からの要求が来るのを待つ。要求が書換え要求だった場合には、ステップ６１０で、その対象領域が自領域かどうかを判断し、自領域でない場合にはステップ６１１に進む。
ステップ６１１では、実際の書換えを行い、ステップ６１２で、書換えツール１４に書換え正常応答を返し、ステップ６０３に戻る。
ステップ６１０で、自領域対象であった場合には、ステップ６１３に進み、書換えツール１４に対して書換え不能応答を行う。
【００３２】
以上のように、実施の形態１によれば、領域５２に書換え制御、領域５３に車両制御を格納する構成に基づき、領域５３に一次的に書換え制御（一次）１３０を格納する書換え手順を用いるとともに、各領域に格納されているプログラムの状態によって書換え手順の最初もしくは途中から選択的に行うように、書換え手順の開始点を変更することにより、電源供給などの異常発生後も再度書換え手順を実施すれば、正常に書換えを完了できるとともに、不揮発性メモリ５の領域５２、領域５３には最低限の書換え制御１１０、車両制御１２０のみを格納すればよい構成が可能になる。
【００３３】
また、本実施の形態１では  書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の実現するプロトコルで異なる制御が必要な場合も扱うことができるが、プロトコルが同一でも構わない場合には、このような区別を行う必要はない。例えば、多くの場合、新書換え制御１１１と書換え制御（一次）１３０は同一のプロトコルとすることができる。この場合には、書換え手順において、新書換え制御１１１と書換え制御（一次）１３０を区別した制御は必要でないため、それらの区別手順を省くことも可能が可能である。
【００３４】
また、本実施の形態１では、起動切り換え１００の配置として、不揮発性メモリ５内の領域５１の一部である構成を示したが、この起動切り換え１００の配置はこの限りではなく、例えばマイコン１のハードウェアとして実現されていてもよい。
【００３５】
実施の形態２．
不揮発性メモリ５として、たとえばフラッシュメモリなどを選択すると、フラッシュメモリの書き換え中にはフラッシュメモリの内容を参照できなくなるといった制約のあるマイコン２もある。このようなマイコン２を選択した場合に実施の形態１を適用することができない。実施の形態２は、このような場合に好適な実施の形態である。
【００３６】
実施の形態１では、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は、不揮発性メモリ５上のプログラムが起動され、それが実行されつづける構成であった。実施の形態２は、この点を変更し、不揮発メモリ５に格納されたプログラムを実行する際に一部または全部をＲＡＭ４に転送する構成とする。
【００３７】
実施の形態２は、図１のように構成されている。図３、図５を援用して説明する。
図９は、この発明の実施の形態２による車載プログラム書換え制御装置の書換え制御、新書換え制御、書換え制御（一次）の実行形態を示す図である。
図１０は、図９にある実行形態を適用した場合の実行時の不揮発性メモリ及びＲＡＭの状態を示す図である。
【００３８】
次に、動作について説明する。
図９により、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の実行形態について説明する。
ステップ４１１で、不揮発性メモリ５に格納されたプログラムの一部または全てをＲＡＭ４に転送する。続いて、ステップ４１２で、不揮発メモリ５上のプログラムを実行し、必要に応じてステップ４１３のようにＲＡＭ上のプログラムを実行し、再びステップ４１２に戻って、不揮発性メモリ５上のプログラムを実行する。
また、ステップ４１１で、不揮発メモリ５に格納されたプログラムをＲＡＭ４に転送したのち、ステップ４１４に示すように、ＲＡＭ４上のプログラムに実行を移し、そのままＲＡＭ４上のプログラムだけで制御を続けるという形態をとることも可能である。
【００３９】
図９のような実行形態をとることによる、プログラム実行中の不揮発性メモリ５とＲＡＭ４の状態は、図１０に示すようなものになる。すなわち、車載コントローラ１の起動時に、状態（ａ）（ｇ）では、特にＲＡＭ４上に転送されたプログラムはない。状態（ｂ）では、書換え制御サブ１１０−１が、状態（ｃ）（ｄ）（ｅ）では、書換え制御（一次）サブ１３０−１が、状態（ｆ）では、新書換え制御サブ１１１−１がＲＡＭ４に転送された形で実行される。
【００４０】
また、図３のステップ２０１、２０３、２０５でのプログラムの制御移行時にも、図９に従って、適切なプログラムがＲＡＭ４に転送される。
【００４１】
また、上述では、揮発性のＲＡＭ４を用いた制御をしているが、制御の元となるプログラムは、全て不揮発性メモリ５に格納された情報に基づいているため、途中で電源異常などの異常が発生しても実施の形態１と同様に書換えを正常に完了させることができる。これは、図５、図９の制御によりＲＡＭ４上の実行形態が復元されるためである。
【００４２】
以上のように、実施の形態２によれば、実施の形態１に対して、不揮発性メモリ５の内容を一部ＲＡＭ４に転送して実行する構成とすることで、不揮発性メモリ５によらないプログラム実行が可能となるとともに、実施の形態１と同様に書換え中の電源異常などの異常状態からも再度書換え手順を実行することで正常に書換え手順を完了することができる。
【００４３】
なお、本実施の形態２では、ＲＡＭ４にプログラムを転送することを利用することで、例えば不揮発性メモリ５に格納されるプログラムをデータとして圧縮格納し、ＲＡＭ４に転送する時点で展開して実行可能なプログラムにすることも可能である。これにより、不揮発性メモリ５の使用量を抑えることができる効果がある。
【００４４】
また、本実施の形態２では説明の都合上  ＲＡＭ４へのプログラム転送するタイミングを書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の開始時とした。しかし、転送タイミングは、初期化時に限定するものでなく、例えば不揮発性メモリ５の消去を行う時には消去用のサブルーチンだけを転送することによって、ＲＡＭ４の使用量を減らすことも可能である。
【００４５】
実施の形態３．
実施の形態１では、不揮発性メモリ５の内容について書き込まれているプログラムを識別できる情報が必要であったが、実施の形態３は、より簡略化したプログラムを識別できる情報によって、実施の形態１と同様に書換え手順途中で電源異常などの異常があっても再度書換え手順を実行することで、正常に書換え完了できる構成とした。
実施の形態３は、図１のように構成されている。図３を援用して説明する。
【００４６】
図１１は、この発明の実施の形態３による車載プログラム書換え制御装置の不揮発性メモリの書換え手順を示すフローチャートである。
図１２は、図１１の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
【００４７】
実施の形態３では、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は、書換え制御１１０と新書換え制御１１１を区別できる自己の識別情報を書換えツール１４に通知するようにした。
また、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は、それぞれのプログラムが書き込まれた領域そのものに対する書換え要求に対して書換え不可能を通知できる機能をも有している。
【００４８】
次に、動作について説明する。
図１１の書換え手順を示すフローチャートのうち、実際に不揮発性メモリ５の内容を書き換える手順に関わるステップ２０１、２０２、２０３、２０４、２０５、２０６、２０７、２１０、２１１、２１２については、図３で説明した内容と同一である。図３と異なるのは、開始から図３と同一ステップになる部分までの条件付けの処理である。
したがって、ここから実施の形態１と同様に正常な場合・異常な場合を含めて、図１１の書換え手順によって書換えが正常に完了することについて説明する。図１２は、書換え手順を起動したときの不揮発性メモリ５の状態とその後書換え完了までの流れを示す図であり、図１２は、実施の形態１の図４に対応する図である。
【００４９】
以下、図１１、図１２に従ってその流れを説明する。
まず、不揮発性メモリ５の内容が、状態（ａ）であった場合を考える。書換えは、図１１の手順に従って進められる。
書換え手順が開始されると、まずステップ２６０が実行される。ステップ２６０では、プロトコルは、各書換え制御の通知する識別情報により、新書換え制御１１１かどうかが判定され、状態（ａ）では、書換えが開始されると領域５２にある書換え制御１１０が起動するため、プロトコルは、書換え制御１１０であり、ステップ２６１に進む。ステップ２６１では、領域５３の書換えが可能かどうかが判定され、領域５２の書換え制御１１０で動作しているため、ステップ２６１は、ｙｅｓの判断となり、ステップ２０１に進む。以後は、図３の説明と同様にして書換えが正常に完了する。
【００５０】
図１２には、このことが以下のように示してある。
まず、開始状態を表す黒丸から（ａ）に対する点線矢印として書換え手順を起動したときの状態を表している。また、不揮発性メモリ５の内容が変わるステップ２０２、２０４、２０６も示してある。例えば、状態（ａ）でステップ２０２が開始されると、状態（ｂ）となり、ステップ２０２の終了で状態（ｃ）になることを、状態（ａ）→状態（ｂ）→状態（ｃ）という矢印で表している。
また、この遷移を起こしているステップが２０２であることをステップ２０２の矢印で示している。同様に、ステップ２０４の実行によって状態（ｃ）→状態（ｄ）→状態（ｅ）となり、ステップ２０６の実行によって状態（ｅ）→状態（ｆ）→状態（ｇ）という遷移が起こることを表している。
また、状態間を結ぶ矢印の種類が変えてあるのは、書換え制御機能に使われるプログラムが違うことによるプロトコルの差異を表したものである。状態（ａ）→状態（ｂ）→状態（ｃ）の遷移は書換え制御１１０に対応するプロトコルで行われ、状態（ｃ）→状態（ｄ）→状態（ｅ）の遷移は、書換え制御（一次）１３０に対応するプロトコルで行われ、状態（ｅ）→状態（ｆ）→状態（ｇ）の遷移は、新書換え制御１１１のプロトコルで行われることになる。
【００５１】
次に、不揮発性メモリ５の内容が、状態（ｂ）だった場合を考える。書換え手順は図１１に従って進められる。
書換え手順が開始されると、始めにステップ２６０が実行される。ステップ２６０では、プロトコルは新書換え制御１１１かどうかが判定され、状態（ｂ）では書換えが開始されると領域５２にある書き換え制御１１０が起動するため、プロトコルは書換え制御１１０であり、ステップ２６１に進む。ステップ２６１では、領域５３の書換えが可能かどうかが判定され、領域５２のプログラムで動作しているため、ステップ２６１はｙｅｓとなり、ステップ２０１に進む。以後は、図３の説明と同様にして書換えが正常に完了する。
なお、状態（ｂ）でステップ２０２を開始すると、領域５３が異常となり、それは状態（ｂ）になるため、状態（ｂ）→状態（ｂ）という矢印が引かれている。
【００５２】
次に、不揮発性メモリ５の内容が、状態（ｃ）だった場合を考える。書換え手順は図１１に従って進められる。
書換え手順が開始されると、始めにステップ２６０が実行される。ステップ２６０では、プロトコルは新書換え制御１１１かどうかが判定され、状態（ｃ）では書換えが開始されると領域５３にある書換え制御（一次）１３０が起動するため、プロトコルは書換え制御（一次）１３０であり、ステップ２６１に進む。ステップ２６１では、領域５３の書換えが可能かどうかが判定され、領域５３のプログラムで動作しているため、ステップ２６１はｎｏの判断となり、ステップ２０４に進む。以後は、図３の説明と同様にして書き換えが正常に完了する。
【００５３】
次に、不揮発性メモリ５の内容が、状態（ｄ）だった場合を考える。書換え手順は図１１に従って進められる。
書換え手順が開始されると、始めにステップ２６０が実行される。ステップ２６０では、プロトコルは新書換え制御１１１かどうかが判定され、状態（ｄ）では書換えが開始されると領域５３にある書換え制御（一次）１３０が起動するため、プロトコルは書換え制御（一次）１３０であり、ステップ２６１に進む。ステップ２６１では、領域５３の書換えが可能かどうかが判定され、領域５３のプログラムで動作しているため、ステップ２６１はｎｏの判断となり、ステップ２０４に進む。以後は、図３の説明と同様にして書き換えが正常に完了する。
なお、状態（ｄ）でステップ２０４を開始すると、領域５２が異常となり、それは状態（ｄ）になるため、状態（ｄ）→状態（ｄ）という矢印が引かれている。
【００５４】
次に、不揮発性メモリ５の内容が、状態（ｅ）だった場合を考える。書換え手順は図１１に従って進められる。
書換え手順が開始されると、始めにステップ２６０が実行される。ステップ２６０では、プロトコルは新書換え制御１１１かどうかが判定され、状態（ｅ）では書換えが開始されると領域５３にある書換え制御（一次）１３０が起動するため、プロトコルは書換え制御（一次）１３０であり、ステップ２６１に進む。ステップ２６１では、領域５３の書換えが可能かどうかが判定され、領域５３のプログラムで動作しているため、ステップ２６１はｎｏの判断となり、ステップ２０４に進む。
状態（ｅ）で領域５２を書換え開始すると、領域５２が異常となり、それは状態（ｄ）になるため、状態（ｅ）→状態（ｄ）という矢印が引かれている。
【００５５】
次に、不揮発性メモリ５の内容が、状態（ｆ）だった場合を考える。書換え手順は図１１に従って進められる。
書換え手順が開始されると、始めにステップ２６０が実行される。ステップ２６０では、プロトコルは新書換え制御１１１かどうかが判定され、状態（ｆ）では書換えが開始されると領域５２にある新書換え制御１１１が起動するため、プロトコルは新書換え制御１１１であり、ステップ２６２に進む。ステップ２６２では、領域５３の書換えの可否が判定され、領域５２にある新書換え制御１１１が起動しているため、ｙｅｓであり、ステップ２０６に進む。
状態（ｆ）で領域５３を書換え開始すると、領域５３が異常となり、それは状態（ｆ）になるため、状態（ｆ）→状態（ｆ）という矢印が引かれている。その後ステップ２０６が完了すると状態（ｇ）となり、以後は図３の説明と同様に処理が完了する。
【００５６】
最後に、不揮発性メモリ５の内容が、状態（ｇ）だった場合を考える。書換え手順は図１１に従って進められる。
書換え手順が開始されると、始めにステップ２６０が実行される。ステップ２６０では、プロトコルは新書換え制御１１１かどうかが判定され、状態（ｇ）では書換えが開始されると領域５２にある新書換え制御１１１が起動するため、プロトコルは新書換え制御１１１であり、ステップ２６２に進む。ステップ２６２では、領域５３の書換えの可否が判定され、領域５２にある新書換え制御１１１が起動しているため、ｙｅｓであり、ステップ２０６に進む。
状態（ｇ）で領域５３を書換え開始すると、領域５３が異常となり、それは状態（ｆ）になるため、状態（ｇ）→状態（ｆ）という矢印が引かれている。その後ステップ２０６が完了すると状態（ｇ）となり、以後は図３の説明と同様に処理が完了する。
【００５７】
実施の形態３によれば、上記のように、電源供給などの異常発生後も、再度書換え手順を実施することによって正常に書換えを完了できる。
また、実施の形態３は、実施の形態１と比べて状態（ｅ）（ｇ）の場合に不要な書換えを行ってしまうものの、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０について、書換え制御１１０と新書換え制御１１１を区別できる情報を通知できるとともに、それぞれのプログラムが書き込まれた領域そのものに対する書換え要求に対して書換え不可能を通知できる機能だけを想定し、それ以外のプログラムを識別する情報は要求しない点で、通信プロトコルを簡略化できる利点がある。
【００５８】
実施の形態４．
不揮発性メモリ５として、たとえばフラッシュメモリなどを選択すると、フラッシュメモリの書き換え中にはフラッシュメモリの内容を参照できなくなるといった制約のあるマイコンもある。このようなマイコンを選択した場合に実施の形態３を適用することができない。実施の形態４は、このような場合に好適な実施の形態である。
【００５９】
実施の形態３では、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は、不揮発性メモリ５上のプログラムが起動され、それが実行されつづける構成であった。実施の形態４は、この点を変更し、不揮発メモリ５に格納されたプログラムを実行する際に一部または全部をＲＡＭ４に転送する構成とする。
実施の形態４は、図１のように構成されている。図５、図９を援用して説明する。
実施の形態４の不揮発性メモリの状態遷移は、図１０による。
実施の形態４は、実施の形態３の不揮発性メモリの書換えを、揮発性のＲＡＭ４を用いて制御を行う。制御の元となるプログラムは、全て不揮発性メモリ５に格納された情報に基づいているため、途中で電源異常などの異常が発生しても実施の形態３と同様に書換えを正常に完了させることができる。これは、図５、図９の制御により、ＲＡＭ４上の実行形態が復元されるためである。
【００６０】
実施の形態４によれば、実施の形態３に対して、不揮発性メモリ５の内容を一部ＲＡＭ４に転送して実行する構成とすることで、不揮発性メモリ５によらないプログラム実行が可能となるとともに、実施の形態３と同様に書換え中の電源異常などの異常状態からも再度書換え手順を実行することで正常に書換え手順を完了することができる。
【００６１】
また、実施の形態４では、ＲＡＭ４にプログラムを転送することを利用することで、例えば不揮発性メモリ５に格納されるプログラムをデータとして圧縮格納し、ＲＡＭ４に転送する時点で展開して実行可能なプログラムにすることも可能である。これにより、不揮発性メモリ５の使用量を抑えることができる効果がある。
【００６２】
また、本実施の形態４では説明の都合上  ＲＡＭ４へのプログラム転送するタイミングを書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の開始時とした。しかし、転送タイミングは、初期化時に限定するものでなく、例えば不揮発性メモリ５の消去を行う時には消去用のサブルーチンだけを転送することによって、ＲＡＭ４の使用量を減らすことも可能である。
【００６３】
実施の形態５．
実施の形態１〜４では、領域５３を書換え制御（一次）１３０を格納するために利用するので、書換え中に異常がなかったとしても領域５２の書換えのために必ず領域５３を２回書換えなければならない。通常、不揮発性メモリ５には書換え上限回数があるため、書換え回数を抑えたいシステムに適さないことがある。
実施の形態５は、書換え制御（一次）１３０を格納するための専用領域を設けることで、領域５２を書換える際の書換え回数が１回で済むように構成した。これにより、不揮発性メモリの書換え回数を少なくしたい場合に好適である。
【００６４】
実施の形態５は、図１のように構成されている。図６を援用して説明する。
図１３は、この発明の実施の形態５による車載プログラム書換え装置の不揮発性メモリの書換え中の状態遷移を示す図である。
図１４は、この発明の実施の形態５による車載プログラム書換え装置の不揮発性メモリの書換え手順を示すフローチャートである。
図１５は、図１４の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
図１６は、図１３に示された起動切り換え１００の処理内容を示すデシジョンテーブルである。
図１７は、図１３に示された車両制御１２０、新車両制御１２１の処理内容を示すフローチャートである。
【００６５】
実施の形態５では、図１３に示すように、不揮発性メモリに領域５１、領域５２（第一の領域）、領域５３（第三の領域）、領域５４（第二の領域）と、実施の形態１〜４よりも１つ多い領域を準備する。さらに、実施の形態１〜４では、領域５３を車両制御１２０、新車両制御１２１、書換え制御（一次）１３０で共用していたが、実施の形態５では、領域５３を書換え制御（一次）１３０用とし、新たに設けた領域５４を車両制御１２０、新車両制御１２１を格納するために用いる点が異なる。
【００６６】
次に、実施の形態５について、領域５２では、書換え制御１１０を新書換え制御１１１に書換え、領域５３では、旧書換え制御（一次）１３０’を書換え制御（一次）１３０に書換え、領域５４では、車両制御１２０を新車両制御１２１に書換える場合の不揮発性メモリ５の状態変化を、図２に従って説明する。
書換えは、図１３の状態（ｈ）から始まる。領域５１には、起動切り換え１００、領域５２には、書換え制御１１０、領域５３には、旧書換え制御（一次）１３０’、領域５４には、車両制御１２０が格納されている。
【００６７】
書換え手順では、最初に、領域５３を書換え制御（一次）１３０に書換える。
書換えが開始されると、書換え制御１１０の機能によって、領域５３は異常状態にされる。このとき不揮発性メモリ５は状態（ｊ）となる。さらに書換えが進んで書換えが完了すると、領域５３は正常に戻り、その内容は書換え制御（一次）１３０となる。このとき不揮発性メモリ５は状態（ｋ）である。
【００６８】
次に、領域５２を新書換え制御１１１に書換える。
書換えが開始されると、書換え制御（一次）１３０の機能によって、領域５２は異常状態にされる。このとき不揮発性メモリ５は状態（ｍ）となる。さらに書換えが進んで書換えが完了すると、領域５２は正常に戻り、その内容は新書換え制御１１１となる。このとき不揮発性メモリは状態（ｎ）である。
【００６９】
最後に、領域５４を新車両制御１２１に書換える。
書換えが開始されると、新書換え制御１１１の機能によって、領域５４は異常状態にされる。このとき不揮発性メモリ５は状態（ｐ）となる。さらに書換えが進んで書換えが完了すると、領域５４は正常に戻り、その内容は新車両制御１２１となる。このとき不揮発性メモリは状態（ｑ）である。
状態（１）では、領域５２が新書換え制御１１１、領域５３が書換え制御（一次）１３０、領域５４が新車両制御１２１となっており、書換えが完了していることが分かる。
【００７０】
次に、図１３の状態遷移のもととなる書換え手順について、図１４のフローチャートに基づいて説明する。
書換え開始時には、図１３の状態（ｈ）にある。
書換え手順が開始されると、始めにステップ２７０が実行されると同時に、領域５２の書換え制御１１０が起動される。ステップ２７０では、領域５４は、正常かつ新車両制御１２１かどうかが判断され、領域５４の内容は、車両制御１２０であるため、ステップ２７１に進む。ステップ２７１では、領域５２は、正常かつ新書換え制御１１１かどうかが判断され、領域５２は書換え制御１１０であるため、ステップ２７２に進む。ステップ２７２では、領域５３は、正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は旧書換え制御１３０’であるため、ステップ２０１に進む。
【００７１】
ステップ２０１では、領域５２のプログラム、すなわち書換え制御１１０に制御を移行し、ステップ２０２に進む。ステップ２０２で、領域５３を書換え制御（一次）１３０に書換える。ステップ２０２の開始と共に不揮発性メモリ５は、状態（ｊ）となり、ステップ２０２の完了時には状態（ｋ）になる。ステップ２０２の完了後、ステップ２１０に進む。
ステップ２１０では、ステップ２０２の異常の有無を判定する。異常があれば異常終了し、異常がなければ、ステップ２０３に進む。
ステップ２０３では、領域５３のプログラム、すなわち書換え制御（一次）１３０に制御を移行し、ステップ２０４に進む。ステップ２０４で、領域５２を新書換え制御１１１に書換える。ステップ２０４の開始と共に不揮発性メモリ５は状態（ｍ）となり、ステップ２０４の終了時には状態（ｎ）となる。ステップ２０４の完了後、ステップ２１１に進む。
ステップ２１１では、ステップ２０４の異常の有無を判定する。異常があれば異常終了し、異常がなければステップ２０５に進む。
【００７２】
ステップ２０５では、領域５２のプログラム、すなわち新書換え制御１１１に制御を移行し、ステップ２７５に進む。ステップ２７５で、領域５４を新車両制御１２１に書換える。ステップ２７５の開始と共に不揮発性メモリ５は状態（ｐ）となり、ステップ２７５の終了時には状態（ｑ）となる。ステップ２７５の完了後、ステップ２１２に進む。
ステップ２１２では、ステップ２７５の異常の有無を判定する。異常があれば異常終了し、異常がなければステップ２７６に進む。
【００７３】
ステップ２７６では、領域５４のプログラム、すなわち新車両制御１２１に制御を移行して制御を完了する。新車両制御１２１により、車載コントローラは車両の制御を再び開始する。
以上により、書換え手順途中で異常がない場合に不揮発性メモリ５の内容を書換えることができる。
【００７４】
続いて、書換え手順途中で電源供給異常などが発生し、正常に書換え手順を完了できなかった場合の書換え手順完了までの流れを説明する。
異常が発生すると、図１４のステップ２１０、２１１、２１２において異常終了する。この場合、不揮発性メモリ５の内容は、図１３の（ｈ）〜（ｑ）までのいずれかの状態になっていることになる。
【００７５】
この後、電源供給異常などの異常要因を取り除いた後に再度書換え手順を開始する。
まず、電源供給異常などの異常要因を取り除いた後、再び車載コントローラを起動する。このとき、車載コントローラ１は、領域５１の起動切り換え１００に従って制御を行う。起動切り換え１００の処理内容を図１６に示す。図１６は、優先度に従って処理を決定するデシジョンテーブルである。異常状態からの復旧であるため、書換えツール１４からの起動要求はなく、図１６の優先度１〜４は、不成立で図１６の優先度５よりも低い項目が実行対象となる。
したがって、図１３の状態（ｈ）（ｊ）（ｋ）（ｍ）（ｎ）では、領域５４が正常なため、車両制御１２０が起動され、状態（ｐ）では、領域５４が異常で領域５２が正常なため、新書換え制御１１０が起動され、状態（ｑ）では、領域５４が正常なため、新車両制御１２１が起動される。
【００７６】
また、車両制御１２０、新車両制御１２１の動作を図１７に示す。
図１７で、処理が開始されると、ステップ５０１で、書換えツール１４からの要求を確認し、要求がなければステップ５０２で車両制御を行ない、ステップ５０１に戻る。このようにして、書換えツール１４からの要求があるまで、ステップ５０２の車両制御を継続する。
この後、書換えツール１４からの要求があると、ステップ５０３に進む。ステップ５０３では、現在車両がエンスト状態にあるなど、不揮発性メモリ５を書換えても安全な状態にあるかどうかを確認し、もし安全でないならば、ステップ５０４に進んで、書換えツール１４に処理不可能応答を返し、再びステップ５０２の車両制御を継続する。
ステップ５０３で、安全な状態であると判断された場合には、ステップ５１１で領域５２が正常かどうかを確認し、正常であれば領域５２のプログラムを起動して処理を終わる。以後は、領域５２のプログラムに従って動作する。ステップ５１１で異常であれば、領域５３のプログラムを起動して処理を終わる。以後は領域５３のプログラムに従って動作する。
【００７７】
図１５は、書換え手順を起動したときの不揮発性メモリ５の状態とその後書換え完了までの流れを示す図である。以下に、この内容に従ってその流れを説明する。
まず、不揮発性メモリ５が状態（ｈ）だった場合には、異常がなかった場合と全く同様にして書換えが正常に完了する。
このことは、図１５に以下のように表されている。
まず、開始状態を表す黒丸から（ｈ）に対する点線矢印として書換え手順を起動したときの状態を表している。また、不揮発性メモリ５の内容が変わるステップ２０２、２０４、２０６も示してある。例えば、状態（ｈ）でステップ２０２が開始されると、状態（ｊ）となり、ステップ２０２の終了で状態（ｋ）になることを、状態（ｈ）→状態（ｊ）→状態（ｋ）という矢印で表している。
また、この遷移を起こしているステップが２０２であることをステップ２０２の矢印で示している。同様に、ステップ２０４の実行によって状態（ｋ）→状態（ｍ）→状態（ｎ）となり、ステップ２０６の実行によって状態（ｎ）→状態（ｐ）→状態（ｑ）という遷移が起こることを表している。
また、状態間を結ぶ矢印の種類が変えてあるのは、書換え制御機能に使われるプログラムが違うことによるプロトコルの差異を表したものである。状態（ｈ）→状態（ｊ）→状態（ｋ）の遷移は書換え制御１１０に対応するプロトコルで行われ、状態（ｋ）→状態（ｍ）→状態（ｎ）の遷移は書換え制御（一次）１３０に対応するプロトコルで行われ、状態（ｎ）→状態（ｐ）→状態（ｑ）の遷移は、新書換え制御１１１のプロトコルで行われることになる。
【００７８】
次に、不揮発性メモリ５が状態（ｊ）だった場合を考える。書換え手順は図１４に従って進められる。
書換え手順が開始されると、始めにステップ２７０が実行される。車両制御１２０は、図１７に従って領域５２の書換え制御１１０を起動する。ステップ２７０では、領域５４は、正常かつ新車両制御１２１かどうかが判断され、領域５４は車両制御１２０であるため、ステップ２７１に進む。ステップ２７１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は書換え制御１１０であるため、ステップ２７２に進む。ステップ２７２では、領域５３は正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は異常であるため、ステップ２０１に進む。
従って、ステップ２０１からの実行となり、異常がなかった場合と同様に不揮発メモリ５の状態遷移はステップ２０２から始まることがわかる。なお、状態（ｊ）でステップ２０２を開始すると、領域５３が異常となり、それは状態（ｊ）になるため、状態（ｊ）→状態（ｊ）という矢印が引かれている。
【００７９】
次に、不揮発性メモリ５が状態（ｋ）だった場合を考える。書換え手順は図１４に従って進められる。
書換え手順が開始されると、始めにステップ２７０が実行される。車両制御１２０は、図１７に従って領域５２の書換え制御１１０を起動する。ステップ２７０では、領域５４は、正常かつ新車両制御１２１かどうかが判断され、領域５４は車両制御１２０であるため、ステップ２７１に進む。ステップ２７１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は書換え制御１１０であるため、ステップ２７２に進む。ステップ２７２では、領域５３は正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２０３に進む。
従って、ステップ２０３からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２０４から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。
【００８０】
次に、不揮発性メモリ５が状態（ｍ）だった場合を考える。書換え手順は図１４に従って進められる。
書換え手順が開始されると、始めにステップ２７０が実行される。車両制御１２０は、図１７に従って領域５２の書換え制御１１０を起動する。ステップ２７０では、領域５４は、正常かつ新車両制御１２１かどうかが判断され、領域５４は車両制御１２０であるため、ステップ２７１に進む。ステップ２７１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は書換え制御１１０であるため、ステップ２７２に進む。ステップ２７２では、領域５３は正常かつ書換え制御（一次）１３０かどうかが判断され、領域５３は書換え制御（一次）１３０であるため、ステップ２０３に進む。
従って、ステップ２０３からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２０４から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。
なお、状態（ｍ）でステップ２０４を開始すると、領域５２が異常となり、それは状態（ｍ）になるため、状態（ｍ）→状態（ｍ）という矢印が引かれている。
【００８１】
次に、不揮発性メモリ５が状態（ｎ）だった場合を考える。書換え手順は図１４に従って進められる。
書換え手順が開始されると、始めにステップ２７０が実行される。車両制御１２０は、図１７に従って領域５２の書換え制御１１０を起動する。ステップ２７０では、領域５４は、正常かつ新車両制御１２１かどうかが判断され、領域５４は車両制御１２０であるため、ステップ２７１に進む。ステップ２７１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は新書換え制御１１１であるため、ステップ２７５に進む。
従って、ステップ２７５からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２７６から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。
【００８２】
次に、不揮発性メモリ５が状態（ｐ）だった場合を考える。書換え手順は図１４に従って進められる。
書換え手順が開始されると、始めにステップ２７０が実行される。領域５２の新書換え制御１１１が動作している。ステップ２７０では、領域５４は、正常かつ新車両制御１２１かどうかが判断され、領域５４は異常であるため、ステップ２７１に進む。ステップ２７１では、領域５２は正常かつ新書換え制御１１１かどうかが判断され、領域５２は新書換え制御１１１であるため、ステップ２７５に進む。
従って、ステップ２７５からの実行となり、不揮発メモリ５の状態遷移は異常がなかった場合の途中、ステップ２７６から始まることがわかる。以後は異常がなかった場合と同様にして書き換えが正常に完了する。なお、状態（ｐ）でステップ２７５を開始すると、領域５２が異常となり、それは状態（ｐ）になるため、状態（ｐ）→状態（ｐ）という矢印が引かれている。
【００８３】
最後に、不揮発性メモリ５が状態（ｑ）だった場合を考える。書換え手順は図１４に従って進められる。
書換え手順が開始されると、始めにステップ２７０が実行される。領域５４の新車両制御１２１が動作している。ステップ２７０では、領域５４は、正常かつ新車両制御１２１かどうかが判断され、領域５４は新車両制御１２１であるため、書換えを行う必要がなく終了する。
上記のように、電源供給などの異常発生後も、再度書換え手順を実施することによって正常に書換えを完了できることが分かる。
【００８４】
なお、実施の形態５においては、図６に示すように、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は不揮発メモリ５上のプログラムが起動され、ステップ４０１にあるように不揮発性メモリ５上に配置されたプログラムをそのまま実行することを想定している。
【００８５】
実施の形態５によれば、以上のように、領域５２に書換え制御１１０、領域５３に書換え制御（一次）１３０、領域５４に車両制御１２０を格納する構成に基づき、各領域に格納されているプログラムの状態によって書換え手順の最初もしくは途中から選択的に行うという手順を採用することで、電源供給などの異常発生後も再度書換え手順を実施すれば正常に書換えを完了できるとともに、不揮発性メモリ５の領域５２、領域５３、領域５４の書換えに際して正常な場合には各領域の書換えが１回ですむ。
【００８６】
実施の形態６．
不揮発性メモリ５として、たとえばフラッシュメモリなどを選択すると、フラッシュメモリの書き換え中にはフラッシュメモリの内容を参照できなくなるといった制約のあるマイコン１もある。このようなマイコン１を選択した場合に実施の形態５を適用することができない。実施の形態６は、このような場合に好適な実施の形態である。
実施の形態５では、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は、不揮発性メモリ５上のプログラムが起動され、それが実行されつづける構成であった。実施の形態６は、この点を変更し、不揮発メモリ５に格納されたプログラムを実行する際に一部または全部をＲＡＭ４に転送する構成とする。
【００８７】
実施の形態６は、図１のように構成されている。図９、図１４、図１６を援用する。
図１８は、この発明の実施の形態６による車載プログラム書換え制御装置の不揮発性メモリの書換え中の不揮発性メモリ及びＲＡＭの状態遷移を示す図である。
実施の形態６では、書換え制御１１０、新書換え制御１１１書換え制御（一次）１３０の実行形態を、ＲＡＭを用いる図９のようにすることで、プログラム実行中の不揮発性メモリ５とＲＡＭ４の状態は、図１８に示すようなものになる。
すなわち、車載コントローラ１の起動時に、状態（ｈ）（ｊ）（ｋ）（ｍ）（ｎ）（ｑ）では、特にＲＡＭ上に転送されたプログラムはなく、状態（ｐ）では、新書換え制御サブ１１１−１が転送された形で実行される。また、図１４のステップ２０１、２０３、２０５で制御移行時にも、図９に従って起動される書換え制御プログラムに対応したプログラムがＲＡＭに転送される。
【００８８】
なお、上記では、揮発性のＲＡＭ４を用いた制御をしているが、制御の元となるプログラムは全て不揮発性メモリ５に格納された情報に基づいているため、途中で電源異常などの異常が発生しても、実施の形態３と同様に書換えを正常に完了させることができる。これは、図１６・図９の制御により、ＲＡＭ４上の実行形態が復元されるためである。
【００８９】
実施の形態６によれば、このように実施の形態５に対して、不揮発性メモリ５の内容を一部ＲＡＭ４に転送して実行する構成とすることで、不揮発性メモリ５によらないプログラム実行が可能となるとともに、実施の形態５と同様に書換え中の電源異常などの異常状態からも再度書換え手順を実行することで正常に書換え手順を完了することができる。
【００９０】
実施の形態６では、ＲＡＭ４にプログラムを転送することを利用することで、例えば不揮発性メモリ５に格納されるプログラムをデータとして圧縮格納し、ＲＡＭ４に転送する時点で展開して実行可能なプログラムにすることも可能である。これにより、不揮発性メモリ５の使用量を抑えることができる効果がある。
【００９１】
また、実施の形態６では、説明の都合上  ＲＡＭ４へのプログラム転送するタイミングを書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の開始時とした。しかし、転送タイミングは初期化時に限定するものでなく、例えば不揮発性メモリ５の消去を行う時には消去用のサブルーチンだけを転送することによって、ＲＡＭ４の使用量を減らすことも可能である。
【００９２】
実施の形態７．
実施の形態５では、不揮発性メモリ５の内容について書き込まれているプログラムを識別できる情報が必要であったが、実施の形態７は、より簡略化したプログラムを識別できる情報によって、実施の形態５と同様に書換え手順途中で電源異常などの異常があっても再度書換え手順を実行することで、正常に書換え完了できる構成にしている。
【００９３】
実施の形態７は、図１のように構成されている。図１４を援用する。
図１９は、この発明の実施の形態７による車載プログラム書換え制御装置の不揮発性メモリの書換え手順を示すフローチャートである。
図２０は、図１９の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
【００９４】
次に、動作について説明する。
実施の形態７では、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０について、書換え制御１１０と新書換え制御１１１を区別できる情報を通知できるとともに、それぞれのプログラムが書き込まれた領域そのものに対する書換え要求に対して書換え不可能を通知できる機能だけを想定し、それ以外のプログラムを識別する情報は要求しない。
【００９５】
図１９のフローチャートのうち、実際に不揮発性メモリ５の内容を書き換える手順に関わるステップ２０１、２０２、２０３、２０４、２０５、２７５、２７６、２１０、２１１、２１２については、図１４で説明した内容と同一である。図１４と異なるのは、開始から図１４と同一ステップになる部分までの条件付けの処理である。
以下に、実施の形態５と同様に正常な場合・異常な場合を含めて、図１９の書換え手順によって書換えが正常に完了することを説明する。図２０は、書換え手順を起動したときの不揮発性メモリ５の状態とその後書換え完了までの流れを示す図であり、図２０は、実施の形態５の図１５に対応する図である。この内容に従ってその流れを説明する。
【００９６】
まず、不揮発性メモリ５の内容が、状態（ｈ）であった場合を考える。書換えは図１９の手順に従って進められる。
書換え手順が開始されると、まず、ステップ２８０が実行される。状態（ｈ）では、領域５４の車両制御１２０が実行されているが、このステップの実行によって領域５２の書換え制御１１０が起動される。ステップ２８０では、プロトコルは新書換え制御１１１対応かどうかが判定されるが、プロトコルは書換え制御１１０であり、ステップ２８１に進む。ステップ２８１では、領域５３が書換え可能かどうかが判定されるが、領域５２の書換え制御１１０で動作しているため、ステップ２８１はｙｅｓの判断となり、ステップ２０１に進む。以後は、図１４の説明と同様にして書換えが正常に完了する。
【００９７】
図２０には、このことが以下のように示してある。まず、開始状態を表す黒丸から（ｈ）に対する点線矢印として書換え手順を起動したときの状態を表している。また、不揮発性メモリ５の内容が変わるステップ２０２、２０４、２０６も示してある。例えば、状態（ｈ）でステップ２０２が開始されると、状態（ｊ）となり、ステップ２０２の終了で状態（ｋ）になることを、状態（ｈ）→状態（ｊ）→状態（ｋ）という矢印で表している。また、この遷移を起こしているステップが２０２であることをステップ２０２の矢印で示している。
同様に、ステップ２０４の実行によって状態（ｋ）→状態（ｍ）→状態（ｎ）となり、ステップ２０６の実行によって状態（ｎ）→状態（ｐ）→状態（ｑ）という遷移が起こることを表している。
また、状態間を結ぶ矢印の種類が変えてあるのは、書換え制御機能に使われるプログラムが違うことによるプロトコルの差異を表したものである。状態（ｈ）→状態（ｊ）→状態（ｋ）の遷移は、書換え制御１１０に対応するプロトコルで行われ、状態（ｋ）→状態（ｍ）→状態（ｎ）の遷移は書換え制御（一次）１３０に対応するプロトコルで行われ、状態（ｎ）→状態（ｐ）→状態（ｑ）の遷移は、新書換え制御１１１のプロトコルで行われることになる。
【００９８】
次に、不揮発性メモリ５の内容が、状態（ｊ）だった場合を考える。書換え手順は図１９に従って進められる。
書換え手順が開始されると、まずステップ２８０が実行される。状態（ｊ）では領域５４の車両制御１２０が実行されているが、このステップの実行によって領域５２の書換え制御１１０が起動される。ステップ２８０では、プロトコルは新書換え制御１１１対応かどうかが判定されるが、プロトコルは書換え制御１１０であり、ステップ２８１に進む。ステップ２８１では、領域５３が書換え可能かどうかが判定されるが、領域５２の書換え制御１１０で動作しているため、ステップ２８１はｙｅｓの判断となり、ステップ２０１に進む。以後は、図１４の説明と同様にして書換えが正常に完了する。
なお、状態（ｊ）でステップ２０２を開始すると、領域５３が異常となり、それは状態（ｊ）になるため、状態（ｊ）→状態（ｊ）という矢印が引かれている。
【００９９】
次に、不揮発性メモリ５の内容が、状態（ｋ）だった場合を考える。書換え手順は図１９に従って進められる。
書換え手順が開始されると、まずステップ２８０が実行される。状態（ｋ）では領域５４の車両制御１２０が実行されているが、このステップの実行によって領域５２の書換え制御１１０が起動される。ステップ２８０では、プロトコルは新書換え制御１１１対応かどうかが判定されるが、プロトコルは書換え制御１１０であり、ステップ２８１に進む。ステップ２８１では、領域５３が書換え可能かどうかが判定されるが、領域５２の書換え制御１１０で動作しているため、ステップ２８１はｙｅｓの判断となり、ステップ２０１に進む。以後は、図１４の説明と同様にして書換えが正常に完了する。
【０１００】
次に、不揮発性メモリ５の内容が、状態（ｍ）だった場合を考える。書換え手順は図１９に従って進められる。
書換え手順が開始されると、まずステップ２８０が実行される。状態（ｍ）では領域５４の車両制御１２０が実行されているが、このステップの実行によって領域５３の書換え制御（一次）１３０が起動される。ステップ２８０では、プロトコルは新書換え制御１１１対応かどうかが判定されるが、プロトコルは書換え制御（一次）１３０であり、ステップ２８１に進む。ステップ２８１では、領域５３が書換え可能かどうかが判定されるが、領域５３の書換え制御（一次）１３０で動作しているため、ステップ２８１はｎｏの判断となり、ステップ２８２に進む。ステップ２８２では、領域５３の書換え制御（一次）１３０が起動され、ステップ２０４に進む。以後は、図１４の説明と同様にして書換えが正常に完了する。
なお、状態（ｍ）でステップ２０４を開始すると、領域５２が異常となり、それは状態（ｍ）になるため、状態（ｍ）→状態（ｍ）という矢印が引かれている。
【０１０１】
次に、不揮発性メモリ５の内容が、状態（ｎ）だった場合を考える。書換え手順は図１９に従って進められる。
書換え手順が開始されると、まずステップ２８０が実行される。状態（ｎ）では領域５４の車両制御１２０が実行されているが、このステップの実行によって領域５２の新書換え制御１１１が起動される。ステップ２８０では、プロトコルは新書換え制御１１１対応かどうかが判定されるが、プロトコルは新書換え制御１１１であり、ステップ２７５に進む。以後は、図１４の説明と同様にして書換えが正常に完了する。
【０１０２】
次に、不揮発性メモリ５の内容が、状態（ｐ）だった場合を考える。書換え手順は図１９に従って進められる。
書換え手順が開始されると、まずステップ２８０が実行される。状態（ｐ）では領域５２の新書換え制御１１１が実行されている。ステップ２８０では、プロトコルは新書換え制御１１１対応かどうかが判定されるが、プロトコルは新書換え制御１１１であり、ステップ２７５に進む。以後は、図１４の説明と同様にして書換えが正常に完了する。
状態（ｐ）で領域５４を書換え開始すると、領域５４が異常となり、それは状態（ｐ）になるため、状態（ｐ）→状態（ｐ）という矢印が引かれている。その後、ステップ２７５が完了すると状態（ｑ）となり、以後は、図１４の説明と同様に処理が完了する。
【０１０３】
最後に、不揮発性メモリ５の内容が、状態（ｑ）だった場合を考える。書換え手順は図１９に従って進められる。
書換え手順が開始されると、まずステップ２８０が実行される。
状態（ｎ）では領域５４の新車両制御１２１が実行されているが、このステップの実行によって領域５２の新書換え制御１１１が起動される。ステップ２８０では、プロトコルは新書換え制御１１１対応かどうかが判定されるが、プロトコルは書換え制御１１１であり、ステップ２７５に進む。以後は、図１４の説明と同様にして書換えが正常に完了する。
状態（ｑ）で領域５４を書換え開始すると、領域５４が異常となり、それは状態（ｐ）になるため、状態（ｑ）→状態（ｐ）という矢印が引かれている。その後、ステップ２７５が完了すると状態（ｑ）となり、以後は図１４の説明と同様に処理が完了する。
【０１０４】
実施の形態７によれば、上記のように、電源供給などの異常発生後も、再度書換え手順を実施することによって正常に書換えを完了できる。
また、実施の形態７は、実施の形態５と比べて状態（ｋ）（ｑ）の場合に不要な書換えを行ってしまうものの、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０について、書換え制御１１０と新書換え制御１１１を区別できる情報を通知できるとともに、それぞれのプログラムが書き込まれた領域そのものに対する書換え要求に対して書換え不可能を通知できる機能だけを想定し、それ以外のプログラムを識別する情報は要求しない点で通信プロトコルを簡略化できる利点がある。
【０１０５】
実施の形態８．
不揮発性メモリ５として、たとえばフラッシュメモリなどを選択すると、フラッシュメモリの書き換え中にはフラッシュメモリの内容を参照できなくなるといった制約のあるマイコンもある。このようなマイコンを選択した場合に実施の形態７を適用することができない。実施の形態８は、このような場合に好適な実施の形態である。
実施の形態７では、書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０は、不揮発性メモリ５上のプログラムが起動され、それが実行されつづける構成であった。実施の形態８は、この点を変更し、不揮発メモリ５に格納されたプログラムを実行する際に一部または全部をＲＡＭ４に転送する構成とする。
実施の形態８は、図１のように構成されている。図９、図１６を援用して説明する。
【０１０６】
実施の形態８では、揮発性のＲＡＭ４を用いた制御をしているが、制御の元となるプログラムは全て不揮発性メモリ５に格納された情報に基づいているため、途中で電源異常などの異常が発生しても実施の形態３と同様に書換えを正常に完了させることができる。これは、図１６・図９の制御によりＲＡＭ４上の実行形態が復元されるためである。
【０１０７】
実施の形態８によれば、このように実施の形態５に対して、不揮発性メモリ５の内容を一部ＲＡＭ４に転送して実行する構成とすることで、不揮発性メモリ５によらないプログラム実行が可能となるとともに、実施の形態５と同様に書換え中の電源異常などの異常状態からも再度書換え手順を実行することで、正常に書換え手順を完了することができる。
【０１０８】
また、実施の形態８では、ＲＡＭ４にプログラムを転送することを利用することで、例えば不揮発性メモリ５に格納されるプログラムをデータとして圧縮格納し、ＲＡＭ４に転送する時点で展開して実行可能なプログラムにすることも可能である。これにより、不揮発性メモリ５の使用量を抑えることができる効果がある。
【０１０９】
また、実施の形態８では、説明の都合上  ＲＡＭ４へのプログラム転送するタイミングを書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の開始時とした。しかし、転送タイミングは、初期化時に限定するものでなく、例えば不揮発性メモリ５の消去を行う時には消去用のサブルーチンだけを転送することによって、ＲＡＭ４の使用量を減らすことも可能である。
【図面の簡単な説明】
【０１１０】
【図１】この発明の実施の形態１による車載プログラム書換え制御装置を示すシステム構成図である。
【図２】この発明の実施の形態１による車載プログラム書換え制御装置の不揮発性メモリの書換え中の状態遷移を示す図である。
【図３】この発明の実施の形態１による車載プログラム書換え制御装置の不揮発性メモリの書換え手順を示すフローチャートである。
【図４】図３の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
【図５】図２の起動切り換え１００の処理内容を示すフローチャートである。
【図６】図２の書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の実行形態を示す図である。
【図７】図２の車両制御１２０、車両制御１２１の処理内容を示すフローチャートである。
【図８】図２の図２の書換え制御１１０、新書換え制御１１１、書換え制御（一次）１３０の処理内容を示すフローチャートである。
【図９】この発明の実施の形態２による車載プログラム書換え制御装置の書換え制御、新書換え制御、書換え制御（一次）の実行形態を示す図である。
【図１０】図９にある実行形態を適用した場合の実行時の不揮発性メモリ及びＲＡＭの状態を示す図である。
【図１１】この発明の実施の形態３による車載プログラム書換え制御装置の不揮発性メモリの書換え手順を示すフローチャートである。
【図１２】図１１の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
【図１３】この発明の実施の形態５による車載プログラム書換え装置の不揮発性メモリの書換え中の状態遷移を示す図である。
【図１４】この発明の実施の形態５による車載プログラム書換え装置の不揮発性メモリの書換え手順を示すフローチャートである。
【図１５】図１４の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
【図１６】図１３に示された起動切り換え１００の処理内容を示すデシジョンテーブルである。
【図１７】図１３に示された車両制御１２０、新車両制御１２１の処理内容を示すフローチャートである。
【図１８】この発明の実施の形態６による車載プログラム書換え制御装置の不揮発性メモリの書換え中の不揮発性メモリ及びＲＡＭの状態遷移を示す図である。
【図１９】この発明の実施の形態７による車載プログラム書換え制御装置の不揮発性メモリの書換え手順を示すフローチャートである。
【図２０】図１９の書換え手順において異常が発生した後、再度手順を開始したときの不揮発性メモリの状態遷移を示す図である。
【符号の説明】
【０１１１】
１  車載コントローラ
２  マイコン
３  ＣＰＵ
４  ＲＡＭ
５  不揮発性メモリ
６  Ｉ／Ｆ
７  バス
８  Ｉ／Ｆ
９  通信Ｉ／Ｆ
１０  バッテリ
１１  ＩＧスイッチ
１２  エンジン
１３  通信路
１４  書換えツール
【図１】
2007316800.tif 000003
【図２】
2007316800.tif 000004
【図３】
2007316800.tif 000005
【図４】
2007316800.tif 000006
【図５】
2007316800.tif 000007
【図６】
2007316800.tif 000008
【図７】
2007316800.tif 000009
【図８】
2007316800.tif 000010
【図９】
2007316800.tif 000011
【図１０】
2007316800.tif 000012
【図１１】
2007316800.tif 000013
【図１２】
2007316800.tif 000014
【図１３】
2007316800.tif 000015
【図１４】
2007316800.tif 000016
【図１５】
2007316800.tif 000017
【図１６】
2007316800.tif 000018
【図１７】
2007316800.tif 000019
【図１８】
2007316800.tif 000020
【図１９】
2007316800.tif 000021
【図２０】
2007316800.tif 000022