(57)【要約】【課題】  制御用ソフトウェアを複数のＥＣＵで連携処理する自動車用制御システムにおいて、書き換えやインストール等の制御用ソフトウェアの管理処理を、不整合等を生ずることなくスムーズに実施できるようにする。【解決手段】  個々のサブモジュール６３の実行を司るサブユニット１が個別にサブモジュール６３を取得するのではなく、それらサブユニット１とは別に設けられた管理用の主ユニット１００が、当該のインストールないし更新に関与するサブモジュール６３の全てを一括して取得し、該主ユニット１００から各サブユニット１に自動車内通信ネットワークを介して対応するサブモジュール６３を分配するようにする。【選択図】    図１
2006298260.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵからなる主制御部を有した主ユニットと、ＣＰＵからなる主制御部を有するとともに前記主ユニットに自動車内通信ネットワークを介して接続される複数のサブユニットからなり、制御用ソフトウェアを複数の前記サブユニットにより連携的に実行することにより、自動車上に搭載される電子機器の制御処理を実施するようにした自動車用制御システムであって、
前記主ユニットは、
前記サブユニットに個別に対応した複数のサブモジュールの集合からなる前記制御用ソフトウェアを取得する制御用ソフトウェア取得手段と、
取得した前記制御用ソフトウェアを前記サブモジュールに分割するサブモジュール分割手段と、
各サブモジュールを、対応する前記サブユニットに前記自動車内通信ネットワークを介して送信するサブモジュール送信手段と、を有し、
各前記サブユニットは、
記憶内容が電気的に書き換え可能であって、外部からのリセット信号を受けても当該記憶内容を保持する不揮発性メモリと、
前記自動車内通信ネットワークを介して前記サブモジュールを受信するサブモジュール受信手段と、
受信した前記サブモジュールを前記不揮発性メモリに書き込むサブモジュール書込み手段と、を有してなることを特徴とする自動車用制御システム。
【請求項２】
前記サブモジュールに分割された形で前記サブユニット群に搭載されている前記制御用ソフトウェアの書き換えを行なうために、
前記制御用ソフトウェア取得手段は、書き換え後のバージョンに対応する制御用ソフトウェアを取得するものであり、
前記サブモジュール送信手段は、書き換えの影響を受ける複数のサブモジュールに対し、一括して各々対応する前記サブユニットに送信するものである請求項１記載の自動車用制御システム。
【請求項３】
前記サブモジュールは、各々プログラムブロック又はデータブロックからなる複数のコンポーネントの集合からなり、他方、各前記サブユニットの前記不揮発性メモリは、その記憶領域が、前記サブモジュールを構成するコンポーネントの切れ目とは無関係に設定された複数の書き換え単位ブロックに分割されるとともに、該書き換え単位ブロックを単位とする形で記憶内容の消去、書込み及び書き換えが可能とされてなり、さらに、各前記サブユニットは、
前記複数のコンポーネントを各々特定するコンポーネント特定情報と、各コンポーネントの前記不揮発性メモリ上への書込み領域を特定する書込み領域特定情報とを含むコンポーネント管理情報を記憶するコンポーネント管理情報記憶手段と、
該コンポーネント管理情報記憶手段の記憶内容に基づいて、更新の対象コンポーネントを前記不揮発性メモリ上にて検索するコンポーネント検索手段と、
前記コンポーネントの書き換えバッファ領域が形成されるＲＡＭと、
前記コンポーネント検索手段により検索された前記対象コンポーネントが属する書き換え単位ブロックの記憶内容を前記不揮発性メモリから読み出し、前記ＲＡＭ上の前記書き換えバッファ領域に複写する書き換え単位ブロック複写手段と、
前記書き換えバッファ領域上にコピーされた前記書き換え単位ブロックの記憶内容において前記対象コンポーネントに対し、変更、追加、消去又はそれらの２以上の組み合わせよりなる更新処理を行なうコンポーネント更新手段と、
前記更新処理がなされた前記書き換え単位ブロックの記憶内容を、前記書き換えバッファ領域から前記不揮発性メモリに書き戻す不揮発性メモリ書き戻し手段と、
を有してなる請求項２記載の自動車用制御システム。
【請求項４】
前記対象コンポーネントを、前記コンポーネント特定情報とともに外部から通信により取得する対象コンポーネント取得手段を有し、
前記コンポーネント検索手段は、該対象コンポーネント取得手段が取得したコンポーネント特定情報を用いて前記対象コンポーネントの前記不揮発性メモリ上での検索を行なうものであり、
前記コンポーネント更新手段は、前記対象コンポーネント取得手段が取得した新しいコンポーネントを、前記書き換えバッファ領域上の古いコンポーネントと置き換える形でこれを更新する請求項３記載の自動車用制御システム。
【請求項５】
前記対象コンポーネントの更新後のサイズが更新前のサイズと同等又はそれよりも小さい場合に、前記書き換え単位ブロック複写手段は、当該対象コンポーネントが属する書き換え単位ブロックを単位のみ前記書き換えバッファ領域上にコピーするものとされ、前記コンポーネント更新手段は、前記書き換えバッファ領域上にて、前記旧コンポーネントの書込み領域に前記新コンポーネントを上書きするものとされ、前記不揮発性メモリ書き戻し手段は、該更新処理がなされた前記書き換え単位ブロックの記憶内容を、コピー元の書き換え単位ブロックに上書きする形で書き戻すものとされている請求項４記載の自動車用制御システム。
【請求項６】
前記不揮発性メモリ上のアドレス空間にて複数の前記コンポーネントは、隣接するコンポーネントの間、先頭コンポーネントの前及び末尾コンポーネントの後の少なくともいずれかに空白の調整領域を生じさせる形で記憶されてなり、
前記対象コンポーネントの更新後のサイズが更新前のサイズよりも大きい場合に、前記調整領域を利用して該対象コンポーネントのサイズ変化を吸収するようにした請求項３ないし請求項５のいずれか１項に記載の自動車用制御システム。
【請求項７】
前記コンポーネントは前記不揮発性メモリ上でリロケータブルに構成されてなり、前記対象コンポーネントは、前記不揮発性メモリ上での格納領域の開始アドレス及び終了アドレスのいずれかが、更新前と更新後とで相違するものとなるように、前記不揮発性メモリ書き戻し手段により前記不揮発性メモリ上に書き戻される請求項６記載の自動車用制御システム。
【請求項８】
前記書込み領域特定情報は、前記不揮発性メモリ上での各コンポーネントの開始アドレス、終了アドレス及びサイズの情報を含むものであり、
前記対象コンポーネントの更新後のサイズが更新前のサイズよりも大きいか否かを、前記コンポーネント管理情報記憶手段に記憶されている対象コンポーネントの更新前のサイズ情報と、新たに取得する更新後のサイズ情報との比較により判定するとともに、前記不揮発性メモリ書き戻し手段は、前記コンポーネント更新手段により前記開始アドレス及び終了アドレスの情報が更新された前記対象コンポーネントを前記不揮発性メモリに書き戻す請求項７記載の自動車用制御システム。
【請求項９】
前記対象コンポーネントの前記更新に伴う増加方向のサイズ変化量が、前記対象コンポーネントの前又は後に隣接する調整領域に収まる場合において、前記書き換え単位ブロック複写手段は、該対象コンポーネントと、これに隣接する調整領域とを含む書き換え単位ブロックのみを前記書き換えバッファ領域に複写するものとされ、前記コンポーネント更新手段は、前記書き換えバッファ領域上にて、前記旧コンポーネントの書込み領域とこれに隣接する前記調整領域とにまたがる形で前記新コンポーネントを上書きするものとされ、前記不揮発性メモリ書き戻し手段は、該更新処理がなされた前記書き換え単位ブロックの記憶内容を、コピー元の書き換え単位ブロックに上書きする形で書き戻すものとされている請求項６ないし請求項８のいずれか１項に記載の自動車用制御システム。
【請求項１０】
前記不揮発性メモリ上に分散している複数の調整領域を、更新の対象でない非対象コンポーネントの移動により、前記対象コンポーネントのサイズ変化を吸収するのに十分となるように集合させ、当該集合させた調整領域に更新後の対象コンポーネントを書き戻すために、
前記書き換え単位ブロック複写手段は、移動させるべき前記非対象コンポーネントが属する書き換え単位ブロックのみ、前記対象コンポーネントが属する書き換え単位ブロックとともに前記書き換えバッファ領域上にコピーするものとされ、前記コンポーネント更新手段は、該非対象コンポーネントの移動のための書き換え処理と、前記対象コンポーネントの更新のための書き換え処理との双方を行なうものとされ、前記不揮発性メモリ書き戻し手段は、それら書き換えのなされた全ての書き換え単位ブロックを前記不揮発性メモリに書き戻すものとされる請求項６ないし請求項９のいずれか１項に記載の自動車用制御システム。
【請求項１１】
前記対象コンポーネントの前記更新に伴う増加方向のサイズ変化量が、前記対象コンポーネントの前又は後に隣接する調整領域に収まらない場合において、
前記書き換え単位ブロック複写手段は、前記対象コンポーネントが属する書き換え単位ブロックを前記書き換えバッファ領域上にコピーするものとされ、前記コンポーネント更新手段は、前記書き換えバッファ領域上にて前記対象コンポーネントを消去する処理を行なうものとされ、前記不揮発性メモリ書き戻し手段は、前記対象コンポーネントが消去された書き換え単位ブロックを、前記不揮発性メモリにおけるコピー元の書き換え単位ブロックに上書きする形で書き戻すとともに、
前記不揮発性メモリ内の前記末尾コンポーネントの後に隣接形成された末尾調整領域に、更新後の前記対象コンポーネントを書き込む調整書込み手段が設けられている請求項６ないし請求項１０のいずれか１項に記載の自動車用制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、自動車用制御システムに関する。
【背景技術】
【０００２】
【特許文献１】特開２００３−３３７７４８号公報
【特許文献２】特開２００３−１７２１９９号公報
【特許文献３】特開２００１-２２９０１４号公報
【０００３】
自動車には、各種機器（被制御要素）を制御するためにＥＣＵが搭載されている。ＥＣＵは、ＣＰＵからなる主制御部を有し、自動車上に搭載される電子機器の制御処理を予め定められた制御用ソフトウェアの実行に基づいて実施する（特許文献１〜３）。
【０００４】
ところで、近年は自動車に付与される機能はますます多様化及び複雑化する傾向にあり、制御ソフトウェアも大規模化して、１つのＥＣＵの処理能力では対応しきれなくなってきている。そこで、１つの制御用ソフトウェアを複数のＥＣＵに分散配置し、それら複数のＥＣＵにより大規模な制御ソフトウェアを連携して実行することが行われている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のような大規模な制御用ソフトウェアの場合、制御機能追加や変更を行なおうとした場合に、これを連携処理する複数のＥＣＵを横断する形で制御用ソフトウェアの書き換えを行なう必要がある。しかし、この制御用ソフトウェアの書き換えを、１つ１つのＥＣＵで個別に行った場合、制御用ソフトウェアのバージョン管理などの不整合により機能不全を引き起こす可能性がある。
【０００６】
本発明の課題は、制御用ソフトウェアを複数のＥＣＵで連携処理する自動車用制御システムにおいて、書き換えやインストール等の制御用ソフトウェアの管理処理を、不整合等を生ずることなくスムーズに実施できるようにすることにある。
【課題を解決するための手段及び発明の効果】
【０００７】
上記の課題を解決するために、本発明は、ＣＰＵからなる主制御部を有した主ユニットと、ＣＰＵからなる主制御部を有するとともに主ユニットに自動車内通信ネットワークを介して接続される複数のサブユニットからなり、制御用ソフトウェアを複数の前記サブユニットにより連携的に実行することにより、自動車上に搭載される電子機器の制御処理を実施するようにした自動車用制御システムにおいて、上記の課題を解決するために、主ユニットが、サブユニットに個別に対応した複数のサブモジュールの集合からなる制御用ソフトウェアを取得する制御用ソフトウェア取得手段と、取得した制御用ソフトウェアをサブモジュールに分割するサブモジュール分割手段と、各サブモジュールを、対応するサブユニットに自動車内通信ネットワークを介して送信するサブモジュール送信手段と、を有し、各サブユニットは、記憶内容が電気的に書き換え可能であって、外部からのリセット信号を受けても当該記憶内容を保持する不揮発性メモリと、自動車内通信ネットワークを介してサブモジュールを受信するサブモジュール受信手段と、受信したサブモジュールを不揮発性メモリに書き込むサブモジュール書込み手段と、を有してなることを特徴とする。
【０００８】
上記本発明の構成によると、サブモジュールの集合からなる大規模な制御ソフトウェアを、システムへのインストールないし更新のために取得する際に、個々のサブモジュールの実行を司るサブユニットが個別にサブモジュールを取得するのではなく、それらサブユニットとは別に設けられた管理用の主ユニットが、当該のインストールないし更新に関与するサブモジュールの全てを一括して取得し、該主ユニットから各サブユニットに自動車内通信ネットワークを介して対応するサブモジュールを分配するようにした。このように、主ユニットにより、更新等に関与するサブモジュールの取得及び個々のサブユニットへの書込みを一括管理するようにしたので、制御用ソフトウェアの管理処理を、不整合等を生ずることなくスムーズに実施できる。
【０００９】
例えば更新処理の場合は、各サブユニット群には、（旧バージョンの）制御用ソフトウェアはサブモジュールに分割された形で予め搭載されており、その書き換えを行なうために、上記の制御用ソフトウェア取得手段を、書き換え後のバージョンに対応する制御用ソフトウェアを取得するものとし、サブモジュール送信手段は、書き換えの影響を受ける全てのサブモジュールを、一括して各々対応するサブユニットに送信するものとして構成できる。サブモジュールを受信したサブユニットは、個々にそのサブモジュールを不揮発性メモリに書き込む。すなわち、制御用ソフトウェアの書き換え処理に関与するサブモジュールが主ユニットにて統括管理され、書き換えの必要なサブモジュールだけが対応するサブユニットに一元的に送信され書き換えが行われるので、更新の結果においてバージョン管理などの不整合により機能不全を引き起こす心配がない。
【００１０】
この場合、上記のサブモジュールは、各々プログラムブロック又はデータブロックからなる複数のコンポーネントの集合からなるものとして構成できる。各サブユニットの不揮発性メモリは、その記憶領域が、サブモジュールを構成するコンポーネントの切れ目とは無関係に設定された複数の書き換え単位ブロックに分割されるとともに、該書き換え単位ブロックを単位とする形で記憶内容の消去、書込み及び書き換えが可能とされたものを使用できる。そして、各サブユニットには、複数のコンポーネントを各々特定するコンポーネント特定情報と、各コンポーネントの不揮発性メモリ上への書込み領域を特定する書込み領域特定情報とを含むコンポーネント管理情報を記憶するコンポーネント管理情報記憶手段と、該コンポーネント管理情報記憶手段の記憶内容に基づいて、更新の対象コンポーネントを不揮発性メモリ上にて検索するコンポーネント検索手段と、コンポーネントの書き換えバッファ領域が形成されるＲＡＭと、コンポーネント検索手段により検索された対象コンポーネントが属する書き換え単位ブロックの記憶内容を不揮発性メモリから読み出し、ＲＡＭ上の書き換えバッファ領域に複写する書き換え単位ブロック複写手段と、書き換えバッファ領域上にコピーされた書き換え単位ブロックの記憶内容において対象コンポーネントに対し、変更、追加、消去又はそれらの２以上の組み合わせよりなる更新処理を行なうコンポーネント更新手段と、更新処理がなされた書き換え単位ブロックの記憶内容を、書き換えバッファ領域から不揮発性メモリに書き戻す不揮発性メモリ書き戻し手段と、を設けることができる。
【００１１】
サブモジュールが各々プログラムブロック又はデータブロックからなる複数のコンポーネントの集合として記述される場合、例えば、そのうちの一つのコンポーネントを修正したいときに、そのコンポーネントだけを更新できれば便利なことは明らかである。しかし、フラッシュメモリ（フラッシュＲＯＭ）のような、記憶容量の大きな不揮発性メモリは、書き換え単位ブロック単位でしか更新ができないメモリ構造上の要請がある。各コンポーネントを全て別の書き換え単位ブロックに格納すれば、コンポーネント単位での書き換えは一応可能にはなるが、これでは各書き換え単位ブロックに大きな空白領域が残存し、不揮発性メモリの利用効率が甚だしく低下する。
【００１２】
他方、サブモジュールを構成するコンポーネントの切れ目を、複数の書き換え単位ブロックの切れ目とは無関係に設定すれば、不揮発性メモリの有効利用を図ることができる。しかし、この場合は、書き換え単位ブロックと更新対象となるコンポーネント（対象コンポーネント）とは一義的に対応しなくなり、書き換え単位ブロックから対象コンポーネントを特定することは、もはや不可能である。そこで、上記構成では、複数のコンポーネントを各々特定するコンポーネント特定情報と、各コンポーネントの不揮発性メモリ上への書込み領域を特定する書込み領域特定情報とを含むコンポーネント管理情報をコンポーネント管理情報記憶手段に別途記憶しておき、該コンポーネント管理情報記憶手段の記憶内容に基づいて、更新の対象コンポーネントを不揮発性メモリ上にて検索する。そして、その検索された対象コンポーネントが属する書き換え単位ブロックを、ビット単位のランダム書き換えアクセスが可能なＲＡＭ上の書き換えバッファ領域に複写し、そこで、対象コンポーネントの更新（書き換え）を行った後、当該書き換え単位ブロックを不揮発性メモリに書き戻すようにした。これにより、更新に関与する特定のサブユニットにおいて、不揮発性メモリに格納されたサブモジュールをコンポーネント単位で更新することが可能となり、ひいては不揮発性メモリに搭載されているサブモジュールの書き換え処理を、より簡便かつ短時間で行なうことができるようになる。
【００１３】
更新の対象コンポーネントは、コンポーネント特定情報とともに外部から通信により取得することが可能である（対象コンポーネント取得手段）。この場合、コンポーネント検索手段は、該対象コンポーネント取得手段が取得したコンポーネント特定情報を用いて対象コンポーネントの不揮発性メモリ上での検索を行なうことができ、コンポーネント更新手段は、対象コンポーネント取得手段が取得した新しいコンポーネントを、書き換えバッファ領域上の古いコンポーネントと置き換える形でこれを更新するものとして構成できる。このようにすると、通信により取得した新しいコンポーネントを古いコンポーネントと置き換えるだけでＥＣＵ上の更新処理が終了し、サブモジュールの更新処理を一層簡便に行なうことができる。なお、更新後の書き換え単位ブロックは、更新の規模（及び対象コンポーネントの更新によるサイズ変化）により、もとの書き換え単位ブロックに書き戻すようにしても、空き領域を多く有する別の書き換え単位ブロックに書き戻すようにしてもいずれでもよい。
【００１４】
例えば、対象コンポーネントの更新後のサイズが更新前のサイズと同等又はそれよりも小さい場合には、書き換え単位ブロック複写手段は、当該対象コンポーネントが属する書き換え単位ブロックを単位のみ書き換えバッファ領域上にコピーするものとすることができる。また、コンポーネント更新手段は、書き換えバッファ領域上にて、旧コンポーネントの書込み領域に新コンポーネントを上書きするものとすることができ、不揮発性メモリ書き戻し手段は、該更新処理がなされた書き換え単位ブロックの記憶内容を、コピー元の書き換え単位ブロックに上書きする形で書き戻すものとすることができる。すなわち、対象コンポーネントが属する書き換え単位ブロックを書き換えバッファ領域上に複写して、対象コンポーネントの更新書き換え処理のみを行い、これを不揮発性メモリのもとの書き換え単位ブロックに書き戻すだけでよいので、更新処理を一層短時間で終了させることができる。
【００１５】
他方、不揮発性メモリ上のアドレス空間にて複数のコンポーネントは、隣接するコンポーネントの間、先頭コンポーネントの前及び末尾コンポーネントの後の少なくともいずれかに空白の調整領域を生じさせる形で記憶することができる。このようにすると、対象コンポーネントの更新後のサイズが更新前のサイズよりも大きい場合にも、調整領域を利用して該対象コンポーネントのサイズ変化を吸収することが可能である。
【００１６】
対象コンポーネントのサイズ変化量が大きい場合には、その（増加方向の）サイズ変化量を吸収可能な調整領域がどこに生じているかによって、更新後の対象コンポーネントの格納領域を不揮発性メモリ上で変更することも可能である。ただし、各コンポーネントは不揮発性メモリ上でリロケータブルに構成しておく必要がある（例えば、ベースアドレスからのオフセットのみによってすべてのメモリアクセスを指定したプログラムとしておく）。対象コンポーネントは、不揮発性メモリ上での格納領域の開始アドレス及び終了アドレスのいずれかが、更新前と更新後とで相違するものとなるように、不揮発性メモリ書き戻し手段により不揮発性メモリ上に書き戻されることとなる。
【００１７】
この場合、書込み領域特定情報は、不揮発性メモリ上での各コンポーネントの開始アドレス、終了アドレス及びサイズの情報を含むものとすることができる。これにより、対象コンポーネントの更新後のサイズが更新前のサイズよりも大きいか否かを、コンポーネント管理情報記憶手段に記憶されている対象コンポーネントの更新前のサイズ情報と、新たに取得する更新後のサイズ情報との比較により判定することができる。そして、不揮発性メモリ書き戻し手段は、コンポーネント更新手段により開始アドレス及び終了アドレスの情報が更新された対象コンポーネントを不揮発性メモリに書き戻すものとしておく。これにより、更新の必要が生じるたびに、その更新された開始アドレス及び終了アドレスを読み取ることで、当該コンポーネントがどこに書き込まれているかを適確に把握することができる。
【００１８】
不揮発性メモリ上では、隣接するコンポーネントの間に前述の調整領域を形成しておくと、更新によるコンポーネントの（増加方向の）サイズ変化が小さい場合に、これを簡単に吸収することができる。つまり、対象コンポーネントの更新に伴う増加方向のサイズ変化量が、該対象コンポーネントの前又は後に隣接する調整領域に収まる場合においては、書き換え単位ブロック複写手段は、該対象コンポーネントと、これに隣接する調整領域とを含む書き換え単位ブロックのみを書き換えバッファ領域に複写するものとすることができる。そして、コンポーネント更新手段は、書き換えバッファ領域上にて、旧コンポーネントの書込み領域とこれに隣接する調整領域とにまたがる形で新コンポーネントを上書きするものとでき、不揮発性メモリ書き戻し手段は、該更新処理がなされた書き換え単位ブロックの記憶内容を、コピー元の書き換え単位ブロックに上書きする形で書き戻すものとすることができる。この方法によると、更新前の対象コンポーネントのために確保してあったメモリ領域に、隣接する調整領域を合体させて拡張することで、その前後の非更新コンポーネントを移動させずに更新後のコンポーネントをもとの領域に書き戻すことができる。その結果、対象コンポーネントが属する書き換え単位ブロックを書き換えバッファ領域上に複写して、対象コンポーネントの更新書き換えのみを行い、これを不揮発性メモリのもとの書き換え単位ブロックに書き戻す処理だけでよくなり、拡張対象コンポーネントのサイズが増加しているにも拘わらず、更新処理を極めて短時間で終了させることができる。
【００１９】
なお、対象コンポーネントの更新による増加方向のサイズ変化量がより大きい場合は、次のような方式を採用することができる。すなわち、不揮発性メモリ上に分散している複数の調整領域を、更新の対象でない非対象コンポーネントの移動により、対象コンポーネントのサイズ変化を吸収するのに十分となるように集合させ、当該集合させた調整領域に更新後の対象コンポーネントを書き戻すようにする。この場合、書き換え単位ブロック複写手段は、移動させるべき非対象コンポーネントが属する書き換え単位ブロックのみ、対象コンポーネントが属する書き換え単位ブロックとともに書き換えバッファ領域上にコピーするものとする。また、コンポーネント更新手段は、該非対象コンポーネントの移動のための書き換え処理と、対象コンポーネントの更新のための書き換え処理との双方を行なうものとし、不揮発性メモリ書き戻し手段は、それら書き換えのなされた全ての書き換え単位ブロックを不揮発性メモリに書き戻すものとする。このようにすると、必要な調整領域の集合処理に関与する非対象コンポーネントが属する書き換え単位ブロックのみを、ＲＡＭ上で更新して不揮発性メモリに書き戻せばよく、サイズ増加が著しいコンポーネント更新であっても、これを迅速に行なうことが可能となる。
【００２０】
他方、対象コンポーネントの更新に伴う増加方向のサイズ変化量が、対象コンポーネントの前又は後に隣接する調整領域に収まらない場合においては、次のような方式を採用することも可能である。すなわち、書き換え単位ブロック複写手段を、対象コンポーネントが属する書き換え単位ブロックを書き換えバッファ領域上にコピーするものとする。そして、コンポーネント更新手段は、書き換えバッファ領域上にて対象コンポーネントを消去する処理を行なうものとし、不揮発性メモリ書き戻し手段は、対象コンポーネントが消去された書き換え単位ブロックを、不揮発性メモリにおけるコピー元の書き換え単位ブロックに上書きする形で書き戻すものとする。他方、不揮発性メモリ内の末尾コンポーネントの後に隣接形成された末尾調整領域に、更新後の対象コンポーネントを書き込む調整書込み手段を設けておく。この方式では、不揮発性メモリ上の古い対象コンポーネントを消去し、不揮発性メモリの末尾に確保してある末尾調整領域に、新しいコンポーネントを書き込むようにしたので、対象コンポーネントの更新による増加方向のサイズ変化量が非常に大きい場合にも対応できる利点がある。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態を、図面を参照して説明する。
図１は、本発明の自動車用制御システムの概念図である。この自動車用制御システム２００は、ＣＰＵを有した主ＥＣＵ（主ユニット）１００と、ＣＰＵを有するとともに主ＥＣＵ１００に通信バス（自動車内通信ネットワーク）を介して接続される複数のサブＥＣＵ（サブユニット）１からなり、制御用ソフトウェアを複数のサブユニットにより連携的に実行することにより、自動車上に搭載される電子機器の制御処理を実施するものである。制御用ソフトウェアは、各サブＥＣＵ１（Ａ，Ｂ，Ｃ‥）に個別に対応した複数のサブモジュール６３の集合からなるシステムパッケージソフトウェア６０として構成されている。
【００２２】
主ＥＣＵ１００には、以下の各要素が設けられている。
・制御用ソフトウェア取得手段：システムパッケージソフトウェア６０を取得する（図２のシリアルインターフェース６と、その動作制御をソフトウェア的に司る通信モジュール６１（図１：図２のプラットフォームに組み込まれている）からなる）。
・サブモジュール分割手段：取得したシステムパッケージソフトウェア６０をサブモジュール６３に分割する（分配機能：図２の管理ソフトウェア６２に組み込まれている）。
・サブモジュール送信手段：サブモジュールを、対応するサブユニットに自動車内通信ネットワークを介して送信する（図２のシリアルインターフェース６と、その動作制御をソフトウェア的に司る書き換えコントローラ（図１）からなる：図２の管理ソフトウェア６２に組み込まれている）。
【００２３】
また、各サブＥＣＵ１（Ａ，Ｂ，Ｃ‥）には、以下の各要素が設けられている。
・不揮発性メモリ：記憶内容が電気的に書き換え可能であって、外部からのリセット信号を受けても当該記憶内容を保持する（図３のフラッシュＲＯＭ５）。
・サブモジュール書込み手段：受信したサブモジュールを不揮発性メモリに書き込む（図３のプログラム受信・書込み／書換えツール２０によりソフトウェア的に実現される）。
【００２４】
図２は、主ＥＣＵ１００の電気的な構成図である。主ＥＣＵ１００は、ＣＰＵ３（主制御部）、ＲＯＭ５、ＲＡＭ４及び入出力部（Ｉ／Ｏポート）２がバス接続されたマイクロプロセッサからなる。ＲＯＭ５には、ソフトウェアの実行環境を与えるプラットフォームと、前述の管理ソフトウェア６２とからなる主ＥＣＵ用のソフトウェア１８が搭載されており、ＲＡＭ４にはその実行用のワークエリア１９が形成されている。システムパッケージソフトウェア６０のデータは、シリアルインターフェース６を介して通信バスを介して受信され、受信バッファ６Ｂに一旦格納された後、ＲＡＭ４内のパッケージソフトバッファ領域に転送される。
【００２５】
図３は、サブＥＣＵ１の電気的な構成図である。サブＥＣＵ１は、ＣＰＵ３からなる主制御部を有し、自動車上に搭載される電子機器（制御対象機器：被制御要素）の制御処理をソフトウェア１８の実行に基づいて、他のサブＥＣＵと連携して実施するものである。サブＥＣＵ１は、具体的には、ＣＰＵ３、ＲＯＭ５、ＲＡＭ４及び入出力部（Ｉ／Ｏポート）２がバス接続されたマイクロプロセッサからなり、本実施形態では自動車のボデー系の制御を司るボデー系ＥＣＵとして構成されている。ソフトウェア１８は、プラットフォームと、そのプラットフォーム上で動作する、前述のサブモジュール６３からなる（ＲＡＭ４内に、それらのワークエリアが確保されている）。サブＥＣＵ１は、必要に応じて外部からのスイッチやセンサからの入力信号等も参照しつつ、サブモジュール６３の実行により、各種ボデー系の制御対象機器（被制御要素）の動作制御を司る。
【００２６】
サブＥＣＵ１は、シリアル通信バスを介して他のサブＥＣＵ１及び主ＥＣＵ１００等と接続されており、シリアル通信バスとＥＣＵ１の内部バスとは、前述のシリアル通信インターフェース６を介して接続されている。このシリアル通信により、更新等に係るサブモジュール６３を受信する。なお、受信したサブモジュール６３は受信バッファ６Ｂに格納され、順次ＲＭＡ４上の書き換えバッファ領域２１に転送される。
【００２７】
次に、サブモジュール６３が最終的に格納されるＲＯＭ５は、記憶内容が電気的に書き換え可能であって、外部からのリセット信号を受けても当該記憶内容を保持する不揮発性メモリ、本実施形態では、フラッシュＲＯＭ（フラッシュメモリ）にて構成されている（以下、フラッシュＲＯＭ５ともいう）。フラッシュＲＯＭ５は、読み出し時の駆動電圧と書込み消去時の駆動電圧が異なり、後者（例えば９Ｖ）が前者（例えば５Ｖ：リセット信号も同レベルのエッジトリガ信号である）よりも高く設定されている。つまり、書込み／消去の信号電圧がリセット信号よりも電圧で制御されるため、リセット信号を受けてもフラッシュＲＯＭ５の記憶内容は保持される。
【００２８】
図４は、システムパッケージソフトウェア６０の構造を概念的に示すもので、ＲＡＭ４内のパッケージソフトバッファ領域内では、複数のサブモジュール６３が直列に格納され、サブモジュール名と転送先となるサブＥＣＵ１との対応関係が一義的に定められていて、各々対応するサブＥＣＵ１に転送処理される。また、各サブモジュール６３の先頭アドレス（ＭＡ１，ＭＡ３，ＭＡ５‥）には、転送先となるサブＥＣＵ１におけるフラッシュＲＯＭ５内の格納領域の先頭アドレス（ＳＡＡ−１，ＳＢＡ−１，ＳＣＡ−１‥）が一義的に対応付けられ、末尾アドレス（ＭＡ２，ＭＡ４，ＭＡ６‥）には、転送先となるサブＥＣＵ１におけるフラッシュＲＯＭ５内の格納領域の末尾アドレス（ＳＡＡ−２，ＳＢＡ−２，ＳＣＡ−２‥）が一義的に対応付けられる。なお、主ＥＣＵ１００が実行を司るサブモジュール６３’が含まれていてもよい。
【００２９】
各サブモジュール６３は、各々プログラムブロック（例えば関数ブロック）又はデータブロック（例えばパラメータテーブルなど）からなる複数のコンポーネント１０の集合として記述されている。
【００３０】
主ＥＣＵ１００は、例えば新しいバージョンのシステムパッケージソフトウェア６０を受信すると、管理ソフトウェア６２（図２）が、そのサブモジュールへの分割と各サブモジュール６３への送信処理とを行なう。図５は、その概略の処理の流れを示すもので、Ｓ１０１でシステムパッケージソフトウェアを受信すると、Ｓ１０２でこれを一旦ＲＡＭ４内のパッケージソフトバッファ領域（図２）に格納する。続いて、Ｓ１０３で、該システムパッケージソフトウェアをサブモジュールに分割し、各々そのサブモジュール名から転送先となるサブＥＣＵを特定し、これを各サブモジュールのヘッダ部分に書き込む。Ｓ１０４で、各サブモジュールを順次、通信バス上にシリアル通信により送出する。
【００３１】
図６は、各サブＥＣＵでのサブモジュール受信・書込みツールによる受信・書込み処理を示すもので、通信バスの通信状態を監視し、Ｓ２０１では、ヘッダ部分に転送先として自身のサブＥＣＵが指定されたサブモジュールデータが見出された場合はこれを受信し、Ｓ２０２でこれをＲＡＭ４の書き換えバッファ領域２１（図３）に転送する。Ｓ２０３では、該書き換えバッファ領域２１上で受信したサブモジュールに、フラッシュＲＯＭ５の格納領域に対応した先頭アドレスと末尾アドレスとを付与し、Ｓ２０４で、これをフラッシュＲＯＭ５の上記格納領域へ書き込む。
【００３２】
次に、図３のサブＥＣＵ１（及び主ＥＣＵ１００（図２））においては、フラッシュＲＯＭ（不揮発性メモリ）５は、その記憶領域が、ソフトウェア１８を構成するコンポーネント１０の切れ目とは無関係に設定された複数の書き換え単位ブロック１５（図７）に分割されており、該書き換え単位ブロック１５を単位とする形で記憶内容の消去、書込み及び書き換えが可能とされている。また、フラッシュＲＯＭ５内には、複数のコンポーネント１０を各々特定するコンポーネント特定情報と、各コンポーネント１０のフラッシュＲＯＭ（不揮発性メモリ）５上への書込み領域を特定する書込み領域特定情報とを含むコンポーネント管理情報が記憶されている（つまり、コンポーネント管理情報記憶手段の機能を担う）。図６のＳ２０３では、サブモジュールに含まれる各コンポーネントに係る、上記コンポーネント管理情報の付与ないし更新も行なう。
【００３３】
フラッシュＲＯＭ５には、ソフトウェア更新用のファームウェアとして、前述のプログラム受信・書込み／書換えツール２０が格納されている。プログラム受信・書込み／書換えツール２０は、コンポーネントレベルの書換え処理として、以下の各手段を機能実現するものである。
・コンポーネント検索手段：コンポーネント管理情報記憶手段の記憶内容に基づいて、更新の対象コンポーネント１０Ｄを不揮発性メモリ５上にて検索する。
・書き換え単位ブロック複写手段：コンポーネント検索手段により検索された対象コンポーネント１０Ｄが属する書き換え単位ブロック１５の記憶内容を不揮発性メモリ５から読み出し、ＲＡＭ４上の書き換えバッファ領域２１に複写する。
・コンポーネント更新手段：書き換えバッファ領域２１上にコピーされた書き換え単位ブロック１５の記憶内容において対象コンポーネント１０Ｄに対し、変更、追加、消去又はそれらの２以上の組み合わせよりなる更新処理を行なう（図７では、対象コンポーネントが関数１０（旧コンポーネント）であり、更新処理を行った状態のもの（関数１修正版：新コンポーネント）に符号１０Ｒを付与して区別している）。
・不揮発性メモリ書き戻し手段：更新処理がなされた書き換え単位ブロック１５の記憶内容を、書き換えバッファ領域２１から不揮発性メモリ５に書き戻す。
【００３４】
図８に示すように、本実施形態において各コンポーネント１０は、フラッシュＲＯＭ５のメモリアドレス空間内にて直列に配置されており、コンポーネント管理情報１７は、各コンポーネント１０内に分散配置している。具体的には、各コンポーネント管理情報１７は、対応するコンポーネント１０の先頭アドレス２２、サイズ（データサイズ）２３、コンポーネント名２６、末尾アドレス２５及び、そのコンポーネント１０の直後に隣接する後述の調整領域（末尾アドレス２５のあとに続く一定のアドレス空間領域を占める）のサイズ２４の各データを含んでいる。これらのデータは、対応するコンポーネント１０の先頭に位置するヘッダ領域に格納されるものである。ただし、図１４に示すように、コンポーネント管理情報を、各コンポーネント１０から切り離したテーブル３０の形で一括して記憶させてもよい。この場合、各コンポーネント１０には、検索の便宜を図るため、先頭アドレスと末尾アドレスは付与するようにする。
【００３５】
上記構成によると、複数のコンポーネント１０を各々特定するコンポーネント特定情報と、各コンポーネント１０の不揮発性メモリ５上への書込み領域を特定する書込み領域特定情報とを含むコンポーネント管理情報を、フラッシュＲＯＭ５上に別途記憶しておき、該コンポーネント管理情報記憶手段の記憶内容に基づいて、更新の対象コンポーネント１０Ｄを不揮発性メモリ５上にて検索する。そして、その検索された対象コンポーネント１０Ｄが属する書き換え単位ブロック１５を、ビット単位のランダム書き換えアクセスが可能なＲＡＭ４上の書き換えバッファ領域２１に複写し、そこで、対象コンポーネント１０Ｄの更新（書き換え）を行った後、当該書き換え単位ブロック１５を不揮発性メモリ５に書き戻す。
【００３６】
複数のサブＥＣＵ１にサブモジュール単位で分散配置されたシステムパッケージソフトウェアの機能変更や追加の際に、その変更・追加部分があるサブモジュール（もちろん複数であってもよい）内のあるコンポーネントに限られる場合は、そのコンポーネントが存在するサブモジュールだけを、当該サブモジュールを担当するサブＥＣＵにて限定的に書換え処理を行なえばよい。この場合、上記の機能により、そのサブＥＣＵ１のフラッシュＲＯＭ（不揮発性メモリ）５に格納されたサブモジュール６３をコンポーネント単位で更新することが可能となり、ひいては不揮発性メモリ５に搭載されているサブモジュール６３の書き換え処理を、より短時間で行なうことができる。
【００３７】
以下、さらに詳細に説明する。
例えば、あるサブモジュール内の更新に際し、更新済のバージョンの対象コンポーネント１０Ｒを、コンポーネント特定情報（コンポーネント名）２６とともに外部から通信により取得することができる（対象コンポーネント取得手段）。図７に示すように、プログラム受信・書込み／書換えツール２０は、通信取得されたコンポーネント特定情報２６を用いて対象コンポーネント１０ＤをフラッシュＲＯＭ５上で検索し、その取得した新しいコンポーネント１０Ｒを、書き換えバッファ領域２１上の古いコンポーネント１０Ｄと置き換える形でこれを更新する。
【００３８】
更新により、新コンポーネント１０Ｄは、古いコンポーネント１０よりもサイズが縮小したり、逆にサイズが増大したりすることがあり、また、元の書き換え単位ブロックとは異なる書き換え単位ブロック１５に書き戻されることもある。いずれの場合も、コンポーネント管理情報１７に含まれる先頭アドレス２２、末尾アドレス２５及びサイズ２３は更新により変化するので、該コンポーネント管理情報１７も書き換えバッファ領域２１上で合せて更新した後、フラッシュＲＯＭ５に書き戻すこととなる。
【００３９】
書き換えバッファ領域２１上における更新後の書き換え単位ブロックの内容は、更新の規模（特に、対象コンポーネント１０Ｄの更新によるサイズ変化）により、もとの書き換え単位ブロック１５に書き戻される場合と、空き領域を多く有する別の書き換え単位ブロック１５に書き戻される場合との二通りがある。対象コンポーネント１０Ｄの更新後のサイズ２３が更新前のサイズ２３と同等又はそれよりも小さい場合には、当該対象コンポーネント１０Ｄが属する書き換え単位ブロック１５のみ書き換えバッファ領域２１上にコピーする。そして、書き換えバッファ領域２１上にて、旧コンポーネント１０Ｄの書込み領域に新コンポーネント１０Ｒを上書きする。更新処理がなされた書き換え単位ブロック１５の記憶内容を、コピー元の書き換え単位ブロック１５に上書きする形で書き戻す。
【００４０】
他方、不揮発性メモリ５上のアドレス空間にて複数のコンポーネント１０は、隣接するコンポーネント１０の間、先頭コンポーネント１０の前及び末尾コンポーネント１０の後の少なくともいずれかに空白の調整領域１０Ａを生じさせる形で記憶しておけば、対象コンポーネント１０Ｄの更新後のサイズ２３が更新前のサイズ２３より多少大きくとも、調整領域１０Ａを利用して該対象コンポーネント１０Ｄのサイズ変化を吸収することが可能である。
【００４１】
対象コンポーネント１０Ｄのサイズ変化量が大きい場合には、その（増加方向の）サイズ変化量を吸収可能な調整領域１０Ａがどこに生じているかによって、更新後の対象コンポーネント１０Ｒの格納領域を不揮発性メモリ５上で変更することも可能である。ただし、各コンポーネント１０は不揮発性メモリ５上でリロケータブルに構成しておく必要がある（例えば、ベースアドレスからのオフセットのみによってすべてのメモリアクセスを指定したプログラムとしておく）。対象コンポーネント１０Ｄは、不揮発性メモリ５上での格納領域の開始アドレス２２及び終了アドレス２５のいずれかが、更新前と更新後とで相違するものとなるように、不揮発性メモリ書き戻し手段により不揮発性メモリ５上に書き戻されることとなる。
【００４２】
書込み領域特定情報を含むコンポーネント管理情報１７は、前述の通り、不揮発性メモリ５上での各コンポーネント１０の開始アドレス２２、終了アドレス２５及びサイズ２３の情報を含む。対象コンポーネント１０Ｄの更新後のサイズ２３が更新前のサイズ２３よりも大きいか否かは、コンポーネント管理情報記憶手段に記憶されている対象コンポーネント１０Ｄの更新前のサイズ２３情報と、新たに取得する更新後のサイズ２３情報との比較により判定することができる。そして、不揮発性メモリに更新後の内容を書き戻す際には、開始アドレス２２及び終了アドレス２５の情報が更新された対象コンポーネント１０Ｄも不揮発性メモリ５に書き戻すようにする。これにより、更新の必要が生じるたびに、その更新された開始アドレス２２及び終了アドレス２５を読み取ることで、当該コンポーネント１０Ｄがどこに書き込まれているかを適確に把握することができる。
【００４３】
対象コンポーネント１０Ｄの更新に伴う増加方向のサイズ変化量が、該対象コンポーネント１０の前又は後に隣接する調整領域１０Ａに収まる場合においては、図９及び図１０に示すように、該対象コンポーネント１０と、これに隣接する調整領域１０Ａとを含む書き換え単位ブロック１５のみを書き換えバッファ領域２１に複写する。そして、書き換えバッファ領域２１上にて、旧コンポーネント１０の書込み領域とこれに隣接する調整領域１０Ａとにまたがる形で新コンポーネント１０Ｄを上書きし、該更新処理がなされた書き換え単位ブロック１５の記憶内容を、コピー元の書き換え単位ブロック１５に上書きする形で書き戻す。
【００４４】
図９では、対象コンポーネント１０Ｄのサイズ増加量が、当該対象コンポーネント１０Ｄに続く調整領域１０Ａだけで吸収できる場合であり、開始アドレスＣ１は不変であり、終了アドレスＣ２がサイズＳ１とともに、Ｃ２’及びＳ１’に更新されて書き戻されている。図１０は、サイズ増加量が、当該対象コンポーネント１０Ｄの前後の調整領域１０Ａ，１０Ａを両方用いなければ吸収できない場合であり、開始アドレスＣ１、終了アドレスＣ２及びサイズＳ１が、それぞれＣ１’、Ｃ２’、Ｓ１’に更新されて書き戻されている。
【００４５】
なお、書き換えバッファ領域２１のメモリアドレス空間は、フラッシュＲＯＭ５上の各書き換え単位ブロック１５とともに、連続したアドレスから成り立っており、フラッシュＲＯＭ５のアドレス空間と一義的に対応付けられている。その結果、フラッシュＲＯＭ５の書き換え単位ブロック１５は、書き換えバッファ領域２１上の対応するアドレスブロックに一義的に書き込まれるようになっている。例えば、対象コンポーネント１０Ｄのサイズが書き換え単位ブロック１５のサイズより小さい場合、書き換えバッファ領域２１にコピーされた書き換え単位ブロック１５においては、対象コンポーネント１０Ｄの前後のコンポーネント１０の断片１０Ｆが一緒に切り取られる場合がある。しかし、更新されるのが対象コンポーネント１０Ｄだけであれば、断片１０Ｆは何も変更のないままフラッシュＲＯＭ５の元の書き換え単位ブロック１５に書き戻され、その前後の書き換え単位ブロック１５に続く断片と一体化して、元のコンポーネント１０として問題なく機能する。また、各コンポーネント１０は、その内部でアドレスが連続している限り、書き換えバッファ領域２１上で書き換えによりどこへ移動しようとも、フラッシュＲＯＭ５に書き戻された際には、格納領域が変化するだけで、書き換え単位ブロック１５による切り取りの影響を受けることなく元通りに復原される。
【００４６】
なお、対象コンポーネント１０の更新による増加方向のサイズ変化量がより大きい場合は、図１１のような方式を採用することができる。すなわち、不揮発性メモリ上に分散している複数の調整領域１０Ａを、更新の対象でない非対象コンポーネント１０の移動により、対象コンポーネント１０Ｄのサイズ変化を吸収するのに十分となるように集合させ、当該集合させた調整領域１０Ａに更新後の対象コンポーネント１０Ｄを書き戻す。この場合、対象コンポーネント１０Ｄが属する書き換え単位ブロック１５だけでなく、移動させるべき非対象コンポーネント１０が属する書き換え単位ブロック１５も、書き換えバッファ領域２１上にコピーする。そして、該非対象コンポーネント１０の移動のための書き換え処理と、対象コンポーネント１０Ｄの更新のための書き換え処理との双方を行いそれら書き換えのなされた全ての書き換え単位ブロック１５を不揮発性メモリ５に書き戻す。図１１において、各コンポーネントの開始アドレス、終了アドレス及びサイズのうち、更新により変化したものに「’」を付与している。
【００４７】
他方、図１２に示すように、対象コンポーネント１０Ｄの更新に伴う増加方向のサイズ変化量が、対象コンポーネント１０Ｄの前又は後に隣接する調整領域１０Ａに収まらない場合においては、次のような方式を採用することも可能である。すなわち、対象コンポーネント１０Ｄが属する書き換え単位ブロック１５を書き換えバッファ領域２１上にコピーする。そして、書き換えバッファ領域２１上にて対象コンポーネント１０Ｄを消去する処理を行なう。対象コンポーネント１０Ｄが消去された書き換え単位ブロック１５は、フラッシュＲＯＭ（不揮発性メモリ）５におけるコピー元の書き換え単位ブロック１５に上書きする形で書き戻す。他方、フラッシュＲＯＭ（不揮発性メモリ）５内の末尾コンポーネント１０の後に隣接形成された末尾調整領域１６’に、更新後の対象コンポーネント１０Ｒを書き込む（調整書込み手段）。
【００４８】
図１３は、以上の処理を包括的に行なうための、プログラム受信・書込み／書換えツール２０の処理フローの一例を示すものである。Ｓ１で新コンポーネント１０Ｒを受信した場合、Ｓ２でコンポーネント名をリードし、Ｓ３でフラッシュＲＯＭ５内の対応するコンポーネント１０Ｄを検索する。仮にその対象コンポーネントの番号をｍとする。この番号ｍのコンポーネントの前後の調整領域Ａのサイズを順次読み取って書込みスペース変数ΣＡ（デフォルト値は、旧コンポーネント１０ＤのサイズＳ）に加算し（Ｓ４，Ｓ５、Ｓ６）、ΣＡの値が新コンポーネント１０Ｒを格納するのに十分なサイズとなったところで加算を停止して（Ｓ７）、新コンポーネント１０Ｒを格納するための処理を行なう（Ｓ１５〜Ｓ１８、Ｓ１５〜Ｓ２３）。一方、コンポーネント間の調整領域Ａを全て加算しても、ΣＡの値が新コンポーネント１０Ｒを格納するのに不十分となっている場合は、図１２、すなわち末尾調整領域１６’に更新後の対象コンポーネント１０Ｒを書き込む処理を行なう（Ｓ２５〜Ｓ２８）。
【００４９】
本実施形態では、対象コンポーネント１０Ｄの前に位置する調整領域と、同じく後に位置する調整領域とを、交互に対象コンポーネント１０Ｄから遠ざかりながら加算するようにしている（Ｓ１０：変数ｉが対象コンポーネント１０Ｄの前に位置する調整領域の特定変数であり、変数ｋが対象コンポーネント１０Ｄの後に位置する調整領域の特定変数である）。しかし、対象コンポーネント１０Ｄの前（又は後）に位置する調整領域を集中して加算した後、対象コンポーネント１０Ｄの後（又は前）に位置する調整領域を集中して加算するロジックを採用することも可能である。
【００５０】
対象コンポーネント１０Ｄがコンポーネント列の中央にいつも位置するとは限らず、加算を継続するうちに、前又は後に位置する調整領域のどちらかが先に底をつく場合が一般的である。その判断をＳ１１で行い、前に位置する調整領域（ｉ側）に余りがあり、後に位置する調整領域（ｋ側）が尽きている場合は、ｋ側にはもはや調整領域が残っていないので、加算演算が継続することを考慮して、ｋ側の調整領域のサイズ加算値を以降はゼロに設定する（Ｓ１２，Ｓ１３）。他方、その逆の場合は、ｉ側の調整領域のサイズ加算値を以降はゼロに設定する（Ｓ２４，Ｓ１４）。Ｓ１１でｉ＝０であり、Ｓ２４でｋが最大値ｎを上回っていれば、Ｓ２５〜Ｓ２８に進み、図１２の処理となる。
【００５１】
一方、Ｓ１５でｉ＝ｋ＝ｍの場合、ΣＡは、対象コンポーネント１０Ｄの直後に位置する調整領域だけでサイズ変化を吸収できるので、Ｓ１６〜Ｓ１８に進み、図９の処理となる。また、それ以外の場合は、図１０又は図１１の処理となり、Ｓ１９で番号ｍを中心に、前側にｉだけ戻り、後側にｋだけ進んだ位置までの全てのコンポーネントを書き換えバッファ領域２１にコピーし、Ｓ２０及びＳ２１で、それらのコンポーネントを書き換えバッファ領域２１上で前詰及び後詰して、調整領域を番号ｍのコンポーネントの前後に集め、Ｓ２２で番号ｍのコンポーネント１０Ｄを新しいコンポーネント１０Ｒに書き換え、Ｓ２３で書き換えバッファ領域２１にコピーした全ての書き換え単位ブロックをフラッシュＲＯＭ５に書き戻す。
【００５２】
なお、新コンポーネント１０Ｒの増加方向のサイズ変化が、対象コンポーネント１０Ｄの前又は後に隣接する調整領域１０Ａの合計に収まらない場合に、図１１の処理に移行せずに、直ちに末尾調整領域１６を用いた図１２の処理に移行するようにプログラム受信・書込み／書換えツールを構成することも可能である。
【００５３】
なお、複数のサブＥＣＵ群に、新規にシステムパッケージソフトウェアをインストールする際は、図３の各サブＥＣＵ１にて、受信したサブモジュールを書き換えバッファ領域２１に転送した後、フラッシュＲＯＭ５に書込み処理を行なえばよく、フラッシュＲＯＭ５との間での書換え単位ブロックの転送／書き戻し処理は不要である。また、主ＥＣＵ１００がサブモジュールを受け持つ場合は、その更新処理用に、図２に示すごとく、同様のプログラム受信・書込み／書換えツール２０及び書き換えバッファ領域２１を設けておけばよい。
【図面の簡単な説明】
【００５４】
【図１】本発明の自動車用制御システムの全体構成を示す概念図。
【図２】主ＥＣＵの一例を示すブロック図。
【図３】サブＥＣＵの一例を示すブロック図。
【図４】システムパッケージソフトウェアの構成概念図。
【図５】管理ソフトウェアの処理の流れを示すフローチャート。
【図６】プログラム受信・書込み／書換えツールによる、サブモジュールの受信／書込み処理の流れを示すフローチャート。
【図７】本発明の概念説明図。
【図８】書き換え単位ブロックとコンポーネントとの関係を示す模式図。
【図９】本発明の第一の実施例を示す模式図。
【図１０】本発明の第二の実施例を示す模式図。
【図１１】本発明の第三の実施例を示す模式図。
【図１２】本発明の第四の実施例を示す模式図。
【図１３】上記第一〜第四の実施例を包括的に実現するプログラム書換えツールの処理の流れを示すフローチャートの一例。
【図１４】コンポーネント管理情報を、各コンポーネントから切り離したテーブルの形で一括記憶させる概念を示す図。
【符号の説明】
【００５５】
１  サブＥＣＵ
３  ＣＰＵ
４  ＲＡＭ
５  フラッシュＲＯＭ（不揮発性メモリ）
１０  コンポーネント
１０Ｄ  対象コンポーネント
１５  書き換え単位ブロック
１７  コンポーネント管理情報
２０  プログラム受信・書込み／書換えツール
２１  書き換えバッファ領域
６２  管理ソフトウェア（サブモジュール分割手段）
１００  主ＥＣＵ
２００  システムパッケージソフトウェア（制御用ソフトウェア）
【図１】
2006298260.tif 000003
【図２】
2006298260.tif 000004
【図３】
2006298260.tif 000005
【図４】
2006298260.tif 000006
【図５】
2006298260.tif 000007
【図６】
2006298260.tif 000008
【図７】
2006298260.tif 000009
【図８】
2006298260.tif 000010
【図９】
2006298260.tif 000011
【図１０】
2006298260.tif 000012
【図１１】
2006298260.tif 000013
【図１２】
2006298260.tif 000014
【図１３】
2006298260.tif 000015
【図１４】
2006298260.tif 000016