(57)【特許請求の範囲】
【請求項１】
電気的にデータを書換え可能な不揮発性メモリを備え、外部からの指示によって前記不揮発性メモリのデータを書き換える第１のモードと、前記不揮発性メモリに格納されたアプリケーションプログラムに従って制御対象機器を制御する第２のモードと、を切り替え可能な自動車用電子制御装置において、
前記第１のモードで使用する書換えプログラムを、前記第２のモードにおいてオペレーティングシステムを起動させる起動プログラムが存在するときに動作する第１のプログラムと、前記起動プログラムが存在しないときにも動作する、前記オペレーティングシステムのサブセットを含んだ第２のプログラムと、を選択可能にした、
ことを特徴とする自動車用電子制御装置。
【請求項２】
電源投入又はリセットしても前記第１のプログラムが動作しない場合、前記第２のプログラムによる書換え処理に移行する、
ことを特徴とする請求項１に記載の自動車用電子制御装置。
【請求項３】
前記第１のプログラムは、前記第２のプログラムを書換え不能である、
ことを特徴とする請求項１又は請求項２に記載の自動車用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電気的にデータの書き換えが可能な不揮発性メモリを備えた自動車用電子制御装置に関する。
【背景技術】
【０００２】
自動車用電子制御装置は、電気的にデータの書き換えが可能な不揮発性メモリを搭載している。不揮発性メモリのデータを書き換える場合、特開２０１４−１６８９０号公報（特許文献１）に記載されるように、更新データを転送する書込みツールを電子制御装置に接続する。そして、書込みツールが電子制御装置に更新データを転送し、電子制御装置が更新データを不揮発性メモリに書き込む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１６８９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、電子制御装置の不揮発性メモリには、オペレーティングシステムをロードして起動するためのブートローダプログラムが書き込まれている。不揮発性メモリのデータを書き換える場合、不揮発性メモリの書換え領域を消去した後、そこに更新データを書き込むという手順を経る。ブートローダプログラムの書換え中、例えば、不揮発性メモリの消去後に電源障害又は通信障害によって電子制御装置がリセットされると、不揮発性メモリにブートローダプログラムが存在しなくなってしまう。このため、電源投入又はリセットしても、電子制御装置がオペレーティングシステムをロードすることができず、例えば、電子制御装置を分解して不揮発性メモリにブートローダプログラムを書き込まなければ、電子制御装置を使用できなくなってしまう。なお、ブートローダプログラムの書き換えは、例えば、その不具合解消、不揮発性メモリの全記憶領域の書き換えなどによって必要となる。
【０００５】
そこで、本発明は、書込みツールでブートローダプログラムを書き込めるようにした、自動車用電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
自動車用電子制御装置は、電気的にデータを書換え可能な不揮発性メモリを備え、外部からの指示によって不揮発性メモリのデータを書き換える第１のモードと、不揮発性メモリに格納されたアプリケーションプログラムに従って制御対象機器を制御する第２のモードと、を切り替え可能である。そして、自動車用電子制御装置は、第１のモードで使用する書換えプログラムを、第２のモードにおいてオペレーティングシステムを起動させる起動プログラムが存在するときに動作する第１のプログラムと、起動プログラムが存在しないときにも動作する、オペレーティングシステムのサブセットを含んだ第２のプログラムと、を選択可能である。
【発明の効果】
【０００７】
本発明によれば、書込みツールでブートローダプログラムを書き込むことができる。
【図面の簡単な説明】
【０００８】
【図１】データ書換えシステムの一例を示す概要図である。
【図２】電子制御装置の一例を示す内部構造図である。
【図３】フラッシュＲＯＭ（Read Only Memory）のメモリマップの一例を示す説明図である。
【図４】書換えツールの一例を示す内部構造図である。
【図５】電子制御装置が実行する処理の一例を示すフローチャートである。
【図６】データ書換え処理の一例を示すサブルーチンである。
【図７】フラッシュＲＯＭにブートローダプログラムが存在しないときのメモリマップの一例を示す説明図である。
【発明を実施するための形態】
【０００９】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、自動車に搭載される電子制御装置（ＥＣＵ：Electronic Control Unit）のデータを書き換える、データ書換えシステムの一例を示す。
【００１０】
データ書換え対象となるＥＣＵ１００は、ＣＡＮ（Controller Area Network），シリアル通信，ＦｌｅｘＲａｙ（登録商標）などのネットワークケーブル２００を介して、作業者がＥＣＵ１００のデータ書換え作業を行う、書換えツール３００に着脱可能に接続される。なお、ＥＣＵ１００と書換えツール３００とは、ネットワークケーブル２００を使用した有線接続に限らず、無線送受信器を使用した無線接続によって接続されるようにしてもよい。
【００１１】
ＥＣＵ１００は、自動車に搭載された各種機器、例えば、燃料噴射弁，変速機，電動ブレーキシステム、ＡＢＳ（Antilock Brake System），可変バルブタイミング機構，可変圧縮比機構などを制御する電子機器であって、マイクロコンピュータを内蔵している。具体的には、ＥＣＵ１００は、図２に示すように、ＣＰＵ（Central Processing Unit）などのプロセッサ１１０と、ネットワークに接続するための通信回路１２０と、不揮発性メモリの一例として挙げられるフラッシュＲＯＭ１３０と、揮発性メモリの一例として挙げられるＲＡＭ（Random Access Memory）１４０と、プロセッサ１１０，通信回路１２０，フラッシュＲＯＭ１３０及びＲＡＭ１４０を相互に接続するバス１５０と、を有している。ここで、通信回路１２０は、ネットワークケーブル２００を着脱可能に接続するコネクタ（図示せず）を含む。また、フラッシュＲＯＭ１３０は、電気的にデータを消去及び書込むことで、データを書換え可能である。
【００１２】
フラッシュＲＯＭ１３０には、図３に示すように、ブートローダプログラム、書換えプログラム、フェイルセーフブートローダプログラム、オペレーティングシステム、各種機器を制御するためのアプリケーションプログラム１〜ｎなどが格納されている。ここで、ブートローダプログラム、書換えプログラム及びフェイルセーフブートローダプログラムが、夫々、起動プログラム、第１のプログラム及び第２のプログラムの一例として挙げられる。
【００１３】
ブートローダプログラムは、オペレーティングシステムをＲＡＭ１４０にロードして起動する。書換えプログラムは、オペレーティングシステムの動作下で、書換えツール３００の指示に応答して、フェイルセーフブートローダプログラムが格納されている記憶領域を除く、フラッシュＲＯＭ１３０のデータを書き換える。フェイルセーフブートローダプログラムは、オペレーティングシステムが動作していない状態、即ち、ブートローダプログラムが存在しない状態において、書換えツール３００の指示に応答して、フェイルセーフブートローダプログラムが格納されている記憶領域を含む、フラッシュＲＯＭ１３０のデータを書き換える。なお、ブートローダプログラム、書換えプログラム、フェイルセーフブートローダプログラム、オペレーティングシステム、アプリケーションプログラム１〜ｎは、例えば、データに埋め込まれた識別子、フラッシュＲＯＭ１３０のメモリマップを管理するテーブルなどによって識別することができる。
【００１４】
ここで、フェイルセーフブートローダプログラムは、オペレーティングシステムが動作していなくとも、ＥＣＵ１００と書換えツール３００との間の通信機能、フラッシュＲＯＭ１３０のデータ書換え機能、フラッシュＲＯＭ１３０のデータ検証機能を実現できるように構成されている。従って、フェイルセーフブートローダプログラムは、オペレーティングシステムのサブセットを含んでいる。
【００１５】
そして、ＥＣＵ１００は、電源投入又はリセットが行なわれたときに、フラッシュＲＯＭ１３０のメモリマップ状態に応じて、ブートローダプログラム又はフェイルセーフブートローダプログラムを選択的に起動する。この選択的な起動は、例えば、ブートセクタを利用して実現することができる。
【００１６】
書換えツール３００は、作業者がＥＣＵ１００のデータ書換え作業を行う電子機器であって、例えば、パーソナルコンピュータなどのコンピュータから構成される。具体的には、書換えツール３００は、図４に示すように、ＣＰＵなどのプロセッサ３１０と、ネットワークに接続するための通信回路３２０と、ハードディスク装置，ＳＳＤ（Solid State Drive）などのストレージ３３０と、作業者へのインターフェースとなる入出力装置３４０と、を有している。ここで、通信回路３２０は、ネットワークケーブル２００を着脱可能に接続するコネクタ（図示せず）を含む。また、入出力装置３４０は、ＬＣＤ（Liquid Crystal Display）などのディスプレイと、キーボードと、マウスなどのポインティングデバイスと、を含む。ストレージ３３０は、例えば、図示しないネットワークに接続されたＮＡＳ（Network Attached Storage），サーバのストレージなどであってもよい。
【００１７】
ストレージ３３０には、ＥＣＵ１００のフラッシュＲＯＭ１３０を書き換えるための更新データが格納されている。更新データは、例えば、ブートローダプログラム、自動車に搭載された各種機器を制御するアプリケーションプログラム、そのアプリケーションプログラムで使用される定数，マップ（テーブル）などの制御パラメータなどを含む。なお、更新データは、更に、書換えプログラム、フェイルセーフブートローダプログラム、オペレーティングシステムを含むことができる。
【００１８】
そして、ＥＣＵ１００は、書換えツール３００からの指示によってフラッシュＲＯＭ１３０のデータを書き換える第１のモードと、フラッシュＲＯＭ１３０に格納されたアプリケーションプログラムに従って制御対象機器を制御する第２のモードと、を切り替え可能に構成されている。第１のモードで使用するデータ書換えプログラムとしては、第２のモードのブートローダプログラムが存在するときに動作する書換えプログラムと、ブートローダプログラムが存在しないときにも動作するフェイルセーフブートローダプログラムと、を選択可能である。また、ＥＣＵ１００は、電源投入又はリセットされてもブートローダプログラムが動作しない場合、フェイルセーフブートローダプログラムによる書換え処理に自動的に移行する。
【００１９】
図５は、ＥＣＵ１００に電源が投入、又は、ＥＣＵ１００がリセットされたことを契機として、ＥＣＵ１００のプロセッサ１１０が実行する処理の一例を示す。なお、ＥＣＵ１００のフラッシュＲＯＭ１３０のデータを書き換える場合には、作業者がＥＣＵ１００に書換えツール３００を接続して、ＥＣＵ１００に電源を投入する。
【００２０】
ステップ１（図では「Ｓ１」と略記する。以下同様。）では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０のブートセクタを検索し、例えば、そこにブートローダプログラムの識別子が格納されているか否かを介して、ブートローダプログラムがあるか否かを判定する。そして、ＥＣＵ１００のプロセッサ１１０は、フラッシュＲＯＭ１３０にブートローダプログラムがあると判定すれば、処理をステップ２へと進める（Ｙｅｓ）。一方、ＥＣＵ１００のプロセッサ１１０は、フラッシュＲＯＭ１３０にブートローダプログラムがないと判定すれば、処理をステップ８へと進める（Ｎｏ）。なお、フラッシュＲＯＭ１３０にブートローダプログラムがあるか否かは、例えば、ＥＣＵ１００が備えている、指定した順序でブートセクタを検索して起動する機能を利用して判定することができる。
【００２１】
ステップ２では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０のブートローダプログラムをＲＡＭ１４０にロードして起動する。そして、ブートローダプログラムが起動されると、ＥＣＵ１００のプロセッサ１１０は、フラッシュＲＯＭ１３０のオペレーティングシステムをＲＡＭ１４０にロードして起動し、アプリケーションプログラムを起動する準備をすることができる。なお、ブートローダプログラムの起動は、例えば、ＥＣＵ１００が備えている、指定した順序でブートセクタを検索して起動する機能により実現することができる。
【００２２】
ステップ３では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０の記憶領域を検索し、例えば、そこにアプリケーションプログラムの識別子が格納されているか否かを介して、アプリケーションプログラムがあるか否かを判定する。そして、ＥＣＵ１００のプロセッサ１１０は、フラッシュＲＯＭ１３０にアプリケーションプログラムがあると判定すれば、処理をステップ４へと進める（Ｙｅｓ）。一方、ＥＣＵ１００のプロセッサ１１０は、フラッシュＲＯＭ１３０にアプリケーションプログラムがないと判定すれば、処理をステップ７へと進める（Ｎｏ）。
【００２３】
ステップ４では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０のアプリケーションプログラムをＲＡＭ１４０にロードして起動する。なお、フラッシュＲＯＭ１３０に複数のアプリケーションプログラムがある場合には、ＥＣＵ１００のプロセッサ１１０は、例えば、予め設定された起動順序で各アプリケーションプログラムを順次起動する。
【００２４】
ステップ５では、ＥＣＵ１００のプロセッサ１１０が、ステップ４で起動した各アプリケーションプログラムに従って、例えば、燃料噴射弁，変速機，電動ブレーキシステム、ＡＢＳ，可変バルブタイミング機構，可変圧縮比機構などの各種機器を電子制御する。
【００２５】
ステップ６では、ＥＣＵ１００のプロセッサ１１０が、書換えツール３００からデータ書換え要求があるか否かを判定する。そして、ＥＣＵ１００のプロセッサ１１０は、データ書換え要求があると判定すれば、処理をステップ７へと進める（Ｙｅｓ）。一方、ＥＣＵ１００のプロセッサ１１０は、データ書換え要求がないと判定すれば、処理をステップ５へと戻す（Ｎｏ）。なお、ＥＣＵ１００に書換えツール３００が接続されていない場合には、書換えツール３００からＥＣＵ１００にデータ書換え要求が送信されないので、各種機器を電子制御する通常処理が実行されることとなる。
【００２６】
ステップ７では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０の書換えプログラムをＲＡＭ１４０にロードして起動する。そして、ＥＣＵ１００のプロセッサ１１０は、処理をステップ９へと進める。
【００２７】
ステップ８では、ＥＣＵ１００のプロセッサ１１０が、例えば、指定した順序でブートセクタを検索して起動する機能を利用して、フラッシュＲＯＭ１３０のフェイルセーフブートローダプログラムをＲＡＭ１４０にロードして起動する。即ち、ＥＣＵ１００のプロセッサ１１０は、フラッシュＲＯＭ１３０にブートローダプログラムが存在していないので、オペレーションシステムのサブセットを含むフェイルセーフブートローダプログラムを起動し、その機能を利用してブートローダプログラムを含む各種データをフラッシュＲＯＭ１３０に書き込みできるようにする。そして、ＥＣＵ１００のプロセッサ１１０は、処理をステップ９へと進める。
【００２８】
ステップ９では、ＥＣＵ１００のプロセッサ１１０が、書換えツール３００と協働して、ステップ７で起動した書換えプログラム、又は、ステップ８で起動したフェイルセーフブートローダプログラムによる、データ書換え処理のサブルーチンを実行する。なお、データ書換え処理の詳細は後述する。
【００２９】
ステップ１０では、ＥＣＵ１００のプロセッサ１１０が、以下に列挙する４つの条件の少なくとも１つが成立したか否かを介して、処理を終了させるか否かを判定する。そして、ＥＣＵ１００のプロセッサ１１０は、４つの条件の少なくとも１つが成立したと判定すれば、処理を終了させる（Ｙｅｓ）。一方、ＥＣＵ１００のプロセッサ１１０は、４つの条件の何れも成立していないと判定すれば、処理をステップ９へと戻す（Ｎｏ）。
【００３０】
第１の条件：フラッシュＲＯＭ１３０へのデータ書込みが完了、又は、書換えツール３００の署名改変
第２の条件：セッションタイムアウト（但し、フラッシュＲＯＭ１３０の全記憶領域を書き換える場合にはタイムアウトさせない）
第３の条件：ＥＣＵ１００がリセット指令を受信（但し、フラッシュＲＯＭ１３０の全記憶領域を書き換える場合のみ有効とし、通常は否定応答）
第４の条件：フラッシュＲＯＭ１３０の消去若しくは書込み異常、通信遮断などの通信障害（但し、全記憶領域又はブートセクタを書き換える場合のみ有効）
【００３１】
図６は、ＥＣＵ１００のプロセッサ１１０と書換えツール３００のプロセッサ３１０とが協働して実行する、データ書換え処理のサブルーチンの一例を示す。
【００３２】
ステップ２１では、書換えツール３００のプロセッサ３１０が、入出力装置３４０を利用して、ユーザに書換え対象を選択させる。即ち、書換えツール３００のプロセッサ３１０は、例えば、入出力装置３４０に書換え対象を選択させる画面を表示し、その中から少なくとも１つの書換え対象を選択させる。
【００３３】
ステップ２２では、書換えツール３００のプロセッサ３１０が、ステップ２１で選択された少なくとも１つの書換え対象から、１つの書換え対象を順次選定する。書換えツール３００のプロセッサ３１０は、例えば、第１回目の処理では最初に選択された書換え対象を選定し、第２回目以降の処理では選択された順序に従って書換え対象を順次選定する。
【００３４】
ステップ２３では、書換えツール３００のプロセッサ３１０が、例えば、ステップ２２で選定された書換え対象のアドレスを指定することで、ＥＣＵ１００のフラッシュＲＯＭ１３０における書換え対象が格納されている記憶領域の消去を、ＥＣＵ１００に要求する。
【００３５】
ステップ３１では、ＥＣＵ１００のプロセッサ１１０が、書換えツール３００からの消去要求に応答して、例えば、フラッシュＲＯＭ１３０の指定アドレスに所定データを書き込むことで、その記憶領域を消去する。
【００３６】
ステップ３２では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０における指定アドレスの記憶領域の消去が終了したことを、書換えツール３００に通知する。なお、このような通知は、ＥＣＵ１００と書換えツール３００との間で同期をとるために行われる（以下同様）。
【００３７】
ステップ２４では、書換えツール３００のプロセッサ３１０が、ＥＣＵ１００からの通知に応答して、ストレージ３３０から書換え対象の更新データを読み出し、これをＥＣＵ１００に送信する。なお、更新データは、所定サイズごとに分割して送信してもよい。
【００３８】
ステップ３３では、ＥＣＵ１００のプロセッサ１１０が、書換えツール３００から受信した更新データをフラッシュＲＯＭ１３０に書き込む。
ステップ３４では、ＥＣＵ１００のプロセッサ１１０が、フラッシュＲＯＭ１３０へのデータ書込みが終了したことを、書換えツール３００に通知する。
【００３９】
ステップ２５では、書換えツール３００のプロセッサ３１０が、全ての書換え対象を処理したか否かを判定する。そして、書換えツール３００のプロセッサ３１０は、全ての書換え対象を処理したと判定すれば、処理を終了させる（Ｙｅｓ）。一方、書換えツール３００のプロセッサ３１０は、全ての書換え対象を処理していないと判定すれば、処理をステップ２２へと戻す（Ｎｏ）。
【００４０】
かかる処理によれば、ＥＣＵ１００のフラッシュＲＯＭ１３０にブートローダブログラムが書き込まれていれば、ＥＣＵ１００のプロセッサ１１０は、ブートローダプログラムをＲＡＭ１４０にロードして起動することで、オペレーティングシステムを動作させる。そして、フラッシュＲＯＭ１３０にアプリケーションプログラムが書き込まれていれば、ＥＣＵ１００のプロセッサ１１０は、アプリケーションプログラムをＲＡＭ１４０にロードして起動することで、自動車に搭載された各種機器を電子制御する。
【００４１】
フラッシュＲＯＭ１３０にアプリケーションプログラムが書き込まれていなければ、ＥＣＵ１００が各種機器を電子制御できないので、アプリケーションプログラムをフラッシュＲＯＭ１３０に書き込み可能とすべく、ＥＣＵ１００のプロセッサ１１０は、書換えプログラムを起動する。また、ＥＣＵ１００のプロセッサ１１０が各種機器を電子制御しているとき、ＥＣＵ１００に接続された書換えツール３００からデータ書換え要求があると、ＥＣＵ１００のプロセッサ１１０は、書換えツール３００の要求に応答すべく、書換えプログラムを起動する。
【００４２】
そして、ＥＣＵ１００のプロセッサ１１０は、書換えツール３００からの指示に応答して、フラッシュＲＯＭ１３０のデータを書き換える。このとき、書換えプログラムは、フェイルセーフローダプログラムを書換え不能に構成されているため、例えば、フラッシュＲＯＭ１３０の全データを書き換えているときに、電源障害又は通信障害が発生しても、フラッシュＲＯＭ１３０からフェイルセーフブートローダプログラムが消失することを抑制できる。
【００４３】
一方、図７に示すように、フラッシュＲＯＭ１３０にブートローダプログラムが書き込まれていない場合、ＥＣＵ１００のプロセッサ１１０は、オペレーティングシステムを動作させることができない。このため、ＥＣＵ１００のプロセッサ１１０は、オペレーティングシステムのサブセットを含んだフェイルセーフブートローダプログラムを起動し、その機能を利用して、少なくともブートローダプログラムをフラッシュＲＯＭ１３０に書き込みできるようにする。
【００４４】
従って、ＥＣＵ１００において、フラッシュＲＯＭ１３０のブートローダプログラムを書き換えているときに、例えば、電源障害又は通信障害によってリセットされ、ブートローダプログラムが消去されても、ＥＣＵ１００を分解せずに、書換えツール３００の指示に応答して、フェイルセーフブートローダプログラムによってブートローダプログラムを書き込むことができる。
【００４５】
ここで、フラッシュＲＯＭ１３０のフェイルセーフブートローダプログラムは、例えば、バグなどを含んでいる可能性があるため、これも書換え対象となり得る。この場合、オペレーティングシステムの動作下において、書換えプログラムによってフェイルセーフブートローダプログラムを書き換えることができない。しかし、フェイルセーフブートローダプログラムは、フラッシュＲＯＭ１３０の全記憶領域を書換え可能であるため、これによってフェイルセーフブートローダプログラムを書き換えることができる。ここで、フェイルセーフブートローダプログラムは、フラッシュＲＯＭ１３０からＲＡＭ１４０へとロードされて起動されているので、フラッシュＲＯＭ１３０のフェイルセーフブートローダプログラムを書き換えても、何ら問題が発生しない。
【符号の説明】
【００４６】
１００  電子制御装置
１１０  プロセッサ
１３０  フラッシュＲＯＭ（不揮発性メモリ）
【図１】
0006408450.tif 000002
【図２】
0006408450.tif 000003
【図３】
0006408450.tif 000004
【図４】
0006408450.tif 000005
【図５】
0006408450.tif 000006
【図６】
0006408450.tif 000007
【図７】
0006408450.tif 000008