説明

自動車用電子制御装置

【課題】自動車用電子制御装置において、不揮発性メモリの使用量を削減することを可能とする。
【解決手段】書込みツール200は、ECU100に対し、ECU100の通信環境を変更する処理、ROM110に書込むためのデータ(書込みデータ)をECU100において受信する処理、及び、書込みデータをROM110に書込む処理を含んだ書込みプログラムを転送する。ECU100は、転送された書込みプログラムをRAM130に展開した後、展開した書込みプログラムを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自動車用電子制御装置に関する。
【背景技術】
【0002】
自動車用のECU(Electronic Control Unit)などの自動車用電子制御装置は、電気的にデータの消去及び書込みが可能な不揮発性メモリ(例えばフラッシュROM(Read-Only Memory))を搭載している。
【0003】
電子制御装置は、特開2000−257502号公報(特許文献1)に記載されているように、不揮発性メモリに格納された制御プログラム等によって車載装置(例えば、燃料噴射装置)を制御する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−257502号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
制御プログラムに不具合があった場合、不具合を修正するため、制御プログラムのアップデートが実行される。アップデートでは、電子制御装置に対し、外部の装置から不具合を修正した制御プログラムが転送され、修正した制御プログラムを不揮発性メモリに書込む。このような書込み処理のために、不揮発性メモリには、制御プログラム等のデータを不揮発性メモリに書込むためのプログラムが予め格納されている。
【0006】
しかしながら、例えば、不揮発性メモリにデータを書込むプログラムは、制御プログラムのアップデートの場合等において一時的に使用されるため、常に不揮発性メモリに格納しておく必要はなかった。このため、そのプログラムのサイズ分だけ不揮発性メモリが無駄に使用されていた。
【0007】
そこで、本技術はこのような問題点に鑑み、電子制御装置において、不揮発性メモリの使用量を削減することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
本技術の一実施形態の自動車用電子制御装置は、通信によって任意のプログラムを取得する。また、自動車用電子制御装置は、取得したプログラムを揮発性メモリに展開し、展開したプログラムを実行する。
【発明の効果】
【0009】
本技術によれば、電子制御装置において、不揮発性メモリの使用量を削減することが可能となる。
【図面の簡単な説明】
【0010】
【図1】ECU製造工程及びアプリケーションプログラム書込み工程の説明図である。
【図2】ECU及び書込みツールの構成図である。
【図3】通信バッファ領域の詳細を示す図である。
【図4】アプリケーションプログラム書込み工程の手順をフローチャートで示した図である。
【図5】プログラム書込み全体処理の概要を示す図である。
【図6】通信環境が変更された後の、通信バッファ領域の詳細を示す図である。
【図7】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図8】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図9】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図10】書込みツールのデータ転送プログラムが実行する処理のフローチャートである。
【図11】ECUのRAM展開プログラムが実行する処理のフローチャートである。
【図12】ECUの書込みメインプログラムが実行する処理のフローチャートである。
【図13】ECUの書込みメインプログラムが実行する処理のフローチャートである。
【図14】ECUの書込みメインプログラムが実行する処理のフローチャートである。
【図15】ECUの書込みメインプログラムが実行する処理のフローチャートである。
【図16】ECUの書込みサブプログラムが実行する処理のフローチャートである。
【図17】アプリケーションプログラムの転送及び書込み処理の実施例のシーケンスを示す図である。
【発明を実施するための形態】
【0011】
以下、添付された図面を参照して本発明を実施するための実施形態について技術を詳細に説明する。
ECU100に搭載されたROM(例えば,フラッシュROM)に対し、アプリケーションプログラム(例えばエンジン制御プログラム)を書込むためのECU製造工程10及びアプリケーションプログラム書込み工程20を図1に示す。
【0012】
ECU製造工程10では、ECU100に搭載されたROMに、ハードウェアの検査プログラムが実行でき、後の工程でアプリケーションプログラムの書込みが可能となるような必要最低限のプログラム(以下、最低限プログラムと略記する)を書込み、検査する。なお、ECU製造工程10は、例えば、ECUサプライヤ等によって行われる作業の一部である。
【0013】
アプリケーションプログラム書込み工程20では、ECU100上のROMに対し、書込みツール200を使用することにより、車種に応じたアプリケーションプログラムを書込む。これにより、ECU製造工程10から供給されるECU100は、各車種用ECU100となる。なお、後の検査工程において、自動車に組付けられたECU100のROMに、その自動車に応じたアプリケーションプログラムが書き込まれているか否か検査する。また、アプリケーションプログラム書込み工程20は、例えば、自動車工場等のECU組付け工程に関連して行われる作業である。
【0014】
このように、ECU100は、アプリケーションプログラム書込み工程20のROM書込みの前までは各車種共通のものであるため、例えば、ECUサプライヤ等は、各車種共通のECUを製造し、自動車工場等に納品すればよい。従って、ECUサプライヤ等では、各車種ごとのECU100のプログラミング、製造及び納品管理等が不要となる。また、自動車工場等では、アプリケーションプログラム書込み工程20のROM書込みの前まで、各車種ごとのECU100の保持及び管理(在庫状況など)が不要となる。よって、これらの工程により、ECUサプライヤ及び自動車工場等では、製造及び管理等を大幅に削減できるメリットがある。
【0015】
しかしながら、自動車工場等において、従来では存在しなかったアプリケーションプログラム書込み工程20が新たなに追加される。このアプリケーションプログラム書込み工程20において、車種に応じたアプリケーションプログラムを迅速にROMに書込むことが要求される。この要求に応じるECU100及び書込みツール200の構成を図2に示す。
【0016】
ECU100は、車両用エンジンにおける燃料噴射や点火等を制御するためのものであり、ROM110、マイクロコンピュータ120、及び、揮発性メモリであるRAM(Random Access Memory)130、通信回路140を含んで構成される。ECU100は、CAN(Controller Area Network)などの通信回線300によって、書込みツール200に対し着脱可能に接続される。
【0017】
マイクロコンピュータ120は、CPU、及び、キャッシュメモリ等を備え、ROM110及びRAM130に格納された各種プログラムを実行する。
RAM130には、第1のバッファ領域133及び第2のバッファ領域134が存在する。第1のバッファ領域133及び第2のバッファ領域134は、ROM110にデータを書込むときに使用される。
【0018】
通信回路140には、通信バッファ領域141が存在する。通信バッファ領域141は、ECU100が通信回路140によって他の装置と通信するときに使用される。
書込みツール200は、ストレージ210(例えばハードディスク)及び通信回路240を含んで構成される。また、書込みツール200は、端末(例えば、パーソナルコンピュータ)及びECU100と接続する装置を含み、書込みツール200を操作する作業者が、書込みツール200に対し対話的に指示を出すことができる。書込みツール200はストレージ210に格納されている書込みデータを、ECU100に対して転送する。
【0019】
ストレージ210には、ECU100に転送されるアプリケーションプログラム等が格納されている。
通信回路240には、通信バッファ領域241が存在する。通信バッファ領域241は、書込みツール200が通信回路240によってECU100と通信するときに使用される。
【0020】
ここで、ECU100が、書込みツール200と通信するときに使用する通信バッファ領域141の詳細を図3に示す。
ECU100の通信バッファ領域141には、一定のサイズの通信バッファ(例えば、CANにおけるメールボックス)が複数存在する。ECU100は、各装置と通信するとき、通信バッファ領域141の通信バッファのうち、通信相手となる装置との通信用として予め割当てられている通信バッファを使用する。なお、それぞれの通信バッファは、データの送信に使用される送信バッファ(TX)、データの受信に使用される受信バッファ(RX)に分かれている。また、通信相手となる装置との通信用として予め割当てられている通信バッファの数を、車載状態の通信環境で使用する数とする。
【0021】
一方、書込みツール200の通信バッファ領域241には、一定のサイズの通信バッファが複数存在する。なお、通信バッファ領域241の通信バッファのサイズは、ECU100の通信バッファ領域141の通信バッファのサイズと同じである。
【0022】
図3において、ECU100の通信バッファ領域141には、ECU100が書込みツール200と通信するために使用する通信バッファ(以下、書込みツール用通信バッファと略記する)として、2個の通信バッファ(TX1個、RX1個)が、割り当てられている。また、通信バッファ領域141のその他の通信バッファは、書込みツール200以外の装置との通信用に割当てられている。
【0023】
従って、通信バッファのサイズが8バイトであり、かつ、ECU100が、1つのデータの受信ごとに書込みツール200にその応答を返すように、ECU100と書込みツール200との間で同期を取りながら通信を行う場合、1つのデータの受信に1個のRXを使用するため、ECU100が64バイトのデータを取得するまでに、16回の通信が必要になる。即ち、書込みツール200が64バイトのデータを8バイトごとに分けて転送し、ECU100は8バイト受信するごとに書込みツール200に応答を返すため、通信回数が16回となる。
【0024】
アプリケーションプログラム書込み工程20における手順を図4に示す。
ステップ1(図では「S1」と略記する。以下同様)では、作業者が、書込みツール200に、ECU100を接続する。ECU100は、接続されると電源が投入され、マイクロコンピュータ120が最低限プログラムを実行することによって、書込みツール200と通信可能になり、書込みツール200から転送されるデータの受信待ち状態となる。
【0025】
ステップ2では、作業者が、ROM110に書込むためのアプリケーションプログラム(例えば車種A用のエンジン制御プログラム)等を指定する。書込みツール200は、アプリケーションプログラムが指定されると、指定されたアプリケーションプログラムをECU100に転送する。ECU100は、転送されたアプリケーションプログラム等を受信しながら、アプリケーションプログラムをROM110に書き込む。以下、このステップ2の処理を、プログラム書込み全体処理と呼ぶ。
【0026】
ステップ3では、作業者が、書込みツール200からECU100を取外す。
なお、この後、ECU100は、各自動車に組付けられる。また、検査工程において、ECU100のROM110に正しいアプリケーションプログラムが書き込まれた否か(例えば、組付けられた自動車に応じたアプリケーションプログラムか否か)チェックされる。正しいアプリケーションプログラムが書き込まれていなければ、自動車に組付けられたECU100に対し、書込みツール200を接続し、正しいアプリケーションプログラムを書込む。
【0027】
図5に、プログラム書込み全体処理の概要を示す。
ステップ11では、書込みツール200は、作業者によって書込みプログラム及びROM110に書込むためのアプリケーションプログラムが指定されると、書込みプログラム及びアプリケーションプログラムを転送するデータ転送プログラムを起動する。そして、書込みツール200は、データ転送プログラムによって、ECU100に対し、書込みプログラム(例えば書込みプログラム2)の転送を開始するメッセージを送信すると共に、指定された書込みプログラムを転送する。
【0028】
ここで、作業者が指定する書込みプログラムは、ストレージ210に存在する書込みプログラムデータベース211に格納されている。書込みプログラムは、ECU100に転送され、通信環境の変更などの初期化処理、書込みデータの受信処理、及び、書込みデータをROM110に書込む処理をECU100上で実行する。また、書込みプログラムは、書込みメインプログラム及び書込みサブプログラムから構成される。
【0029】
書込みメインプログラムは、ECU100に転送された後にECU100上で動作し、書込みツール200とECU100との間で、書込みプログラムに応じた通信環境(通信バッファの使用方法、通信速度、暗号化方式等)を確立する。また、書込みメインプログラムは、書込みツール200から転送されるアプリケーションプログラムを、書込みプログラムに応じた書込み条件(書込むROMの領域のアドレス等)によってROM110に書込む。書込みサブプログラムは、書込みメインプログラムから起動され、通信バッファ領域141にある受信データを、第1のバッファ領域及び第2のバッファ領域にコピーする。
【0030】
さらに、作業者が指定するアプリケーションプログラムは、ストレージ210に存在するアプリケーションプログラムデータベース212に格納されている。各アプリケーションプログラムは、それぞれの車種に応じたエンジン制御用プログラム等である。
【0031】
ステップ12では、ECU100が、書込みプログラムの転送元である書込みツール200から、書込みプログラムの転送を開始するメッセージを受信すると、ROM110に格納されているRAM展開プログラムを起動する。ここで、RAM展開プログラムは、ECU100が受信した書込みプログラムをRAM130上に展開する処理を行う。従って、ECU100は、書込みプログラムを受信しながら、RAM展開プログラムによって、受信した書込みプログラムをRAM130に展開する。
【0032】
ステップ13で、ECU100は、書込みプログラムの展開が完了すると、RAM展開プログラムによって、RAM130に展開した書込みプログラムを起動する。
ステップ14で、ECU100は、書込みプログラムによって、ECU100と書込みツール200との間の通信環境を、その書込みプログラムに応じた通信環境に変更し、書込みツール200に対し、アプリケーションプログラムの送信を要求するメッセージを送信する。
【0033】
ステップ15で、書込みツール200が、アプリケーションプログラムの送信を要求するメッセージを受信すると、データ転送プログラムによって、ECU100に対し、作業者によって指定されたアプリケーションプログラム(例えば、アプリケーションプログラム1)の転送を開始する。
【0034】
ステップ16で、ECU100は、書込みツール200からアプリケーションプログラムを受信しながら、書込みメインプログラム及び書込みサブプログラムによって、書込み条件に基づき、受信したアプリケーションプログラムを、ROM110に書き込む。
【0035】
なお、書込み終了後、ECU100は書込みツール200から取外され、電源がOFFになる。次にECU100の電源が投入されたとき、ECU100の通信環境は、初期状態(ステップ1のときと同様の通信環境)に戻る。また、プログラム書込み全体処理の途中で、何からの異常(例えば、書込みプログラム動作時、書込みツール200との通信が切断された等)が発生した場合は、ECU100が自らをリセットする。そして、ECU100の通信環境は、初期状態に戻る。
【0036】
従って、書込みプログラムを選択することで、プログラム書込み全体処理において、使用する通信環境及びアプリケーションプログラムの書込み条件等に応じて、より適した書込みプログラムを動作させることができる。このため、例えば、通信速度がより高速な書込みプログラムを動作させることで高速に通信を行い、プログラム書込み全体処理を高速化することができる。
【0037】
また、プログラム書込み全体処理のときに、書込みプログラムがECU100に転送されるため、書込みプログラムをROM110に格納する必要がなくなり、ROM110の使用量を削減することができる。
【0038】
さらに、書込みプログラムを変更することにより、プログラム書込み全体処理に新しい機能を追加することができる。
なお、ECU100に書込みツール200に加えて他の装置が接続された状況でも、ECU100は、プログラム書込み全体処理の間、他の装置との通信を遮断し、書込みツール200のみと通信するようにすれば、プログラム書込み全体処理を実行することができる。
【0039】
ECU100に書込みツール200に加えて他の装置が接続された状況で、プログラム書込み全体処理を行う例として、ECU100が自動車に組付けられた状態で、アプリケーションプログラムの書込みを実施することが挙げられる。
【0040】
この場合、通信路の競合を防ぐため、ECU100は、書込みツール200と通信するときに使用する通信環境は、他の装置と共通する通信環境(例えば、通信速度が共通)である必要がある。このため、作業者は、書込みプログラムを、他の装置と共通の通信環境を確立するものを指定し、プログラム書込み全体処理を実施する。このとき、ECU100は、書込みツール200のみと通信し、他の装置との通信を遮断する。
【0041】
次に、ECU100が、書込みツール200から転送されるアプリケーションプログラムを受信するときに使用する、通信バッファ領域141の使用方法を説明する。
アプリケーションプログラム書込み工程20のような状況において、ECU100は、書込みツール200以外の装置と通信しないため、書込みツール200以外の装置と通信するために予め割当てられた通信バッファ(以下、他の装置用通信バッファと略記する)は、使用されない。
【0042】
このため、書込みプログラムは、書込みツール用通信バッファに加えて他の装置用通信バッファを、ECU100と書込みツール200との間の通信に使用するように変更することができる。
【0043】
変更後の通信バッファ領域141の詳細を示したのが図6である。
図6の例では、ECU100は、書込みツール200と通信するとき、書込みツール用通信バッファとして2個の通信バッファ、及び、他の装置用通信バッファのうちの7個の通信バッファを使用する。このとき、ECU100が使用する9個の通信バッファは、TXとして1個、RXとして8個を設定する。なお、このとき、書込みツール200の通信バッファ領域241の通信バッファは、TXが8個、RXが1個となる。
【0044】
例えば、1つの通信バッファのサイズが8バイトであり、かつ、ECU100が、1つのデータの受信ごとに書込みツール200にその応答を返すように、ECU100と書込みツール200との間で同期を取りながら通信を行う場合、1つのデータの受信に8個の
RXが使用できるため、ECU100が64バイトのデータを書込みツール200から取得するまで、従来と比較して、9回の通信ですむことになる。即ち、書込みツール200が64バイトのデータを1つのデータとして8バイトごとに分けて転送し、ECU100は8バイトのデータを8個受信するごとに書込みツール200に応答を返す。このため、通信回数が9回となる。
【0045】
なお、書込みプログラムは、ECU100が書込みツール200との通信に使用する通信バッファの数を、データの送受信のサイズ、データの送受信のサイズの整数倍、ROM110への1回の書込みのサイズ又はROM110への1回の書込みのサイズの整数倍等に応じた数にしてもよい。
【0046】
このように、書込みツール用通信バッファに加えて他の装置用通信バッファも使用して通信することができるため、同期をとるような通信では、通信回数が少なくなり、データの転送に要する時間が減少し、データの転送の高速化が図れる。また、他の装置用通信バッファを使用するため、通信バッファのオーバライトを気にすることなく、書込みツール200が連続してデータを転送することができる。
【0047】
なお、通信バッファ領域141のうち、どの装置にも割当てられていない未使用の通信バッファがあれば、書込みプログラムが、未使用の通信バッファを、ECU100と書込みツール200との間の通信で使用するように変更することもできる。
【0048】
次に、プログラム書込み全体処理において動作する各プログラムを説明する。
図7及び図8は、書込みツール200において、書込みプログラム及びアプリケーションプログラムが作業者によって指定されたことを契機として、データ転送プログラムが、書込みツール200によって実行する処理のフローチャートを示す。
【0049】
ステップ31では、データ転送プログラムが、書込みプログラムの転送を開始することを示すメッセージ(書込みプログラムの転送開始メッセージ)をECU100に送信する。
【0050】
ステップ32では、データ転送プログラムが、指定された書込みプログラムのデータを、ECU100が1回の通信で受信可能なサイズだけ順次転送する。
ステップ33では、データ転送プログラムが、ECU100から次のデータの要求メッセージを受信したか否かを判定する。データ転送プログラムは、ECU100から次のデータの要求メッセージを受信していれば、処理をステップ34に進める(Yes)一方、ECU100から次のデータの要求メッセージを受信していなければ、処理をステップ33に戻す(No)。
【0051】
ステップ34では、データ転送プログラムが、指定された書込みプログラムの転送を完了したか否かを判定する。データ転送プログラムは、指定された書込みプログラムの転送を完了していれば、処理をステップ35に進める(Yes)一方、指定された書込みプログラムの転送を完了していなければ、処理をステップ32に戻す(No)。
【0052】
ステップ35では、データ転送プログラムが、書込みプログラムの転送が完了したことを示すメッセージ(書込みプログラムの転送完了メッセージ)をECU100に送信する。
【0053】
ステップ36では、データ転送プログラムが、ECU100からメッセージを受信したか否かを判定する。データ転送プログラムは、ECU100からメッセージを受信していれば、処理をステップ37に進める(Yes)一方、ECU100からメッセージを受信していなければ、処理をステップ36に戻す(No)。
【0054】
ステップ37では、データ転送プログラムは、ECU100から受信したメッセージが、書込みプログラムが正当に転送された旨のメッセージかを否かを判定する。データ転送プログラムは、受信したメッセージが、書込みプログラムが正当に転送された旨のメッセージであれば、処理をステップ38に進める(Yes)一方、受信したメッセージが、書込みプログラムが正当に転送された旨のメッセージでなければ、処理をステップ39に進める(No)。
【0055】
ステップ38では、データ転送プログラムが、アプリケーション転送処理サブルーチンを実行する。なお、アプリケーション転送処理サブルーチンは、指定されたアプリケーションプログラムのデータを、分割して転送する処理を行う。以下では、この分割して転送するデータを分割データと呼ぶ。
【0056】
ステップ39では、データ転送プログラムが、書込みプログラムを再度先頭から転送するような設定(例えば、書込みプログラムのインデックスを先頭に戻すなど)を行う。
【0057】
図9〜図10は、アプリケーション転送処理サブルーチンの処理のフローチャートを示す。
ステップ41では、データ転送プログラムは、書込みツール200がECU100よりメッセージを受信したか否かを判定する。データ転送プログラムは、ECU100よりメッセージを受信していれば、処理をステップ42に進める(Yes)一方、ECU100よりメッセージを受信していなければ、処理をステップ41に戻す(No)。
【0058】
ステップ42では、データ転送プログラムは、受信したメッセージが分割データの送信要求を示すメッセージ(分割データの送信要求メッセージ)か否か判定する。データ転送プログラムは、受信したメッセージが分割データの送信要求メッセージなければ、処理をステップ43に進める(Yes)一方、受信したメッセージが分割データの送信要求メッセージであれば、処理をステップ44に進める(No)。
【0059】
ステップ43では、データ転送プログラムは、受信したメッセージが分割データの再送要求を示すメッセージ(分割データの再送要求メッセージ)か否か判定する。データ転送プログラムは、受信したメッセージが分割データの再送要求メッセージでなければ、処理をステップ47に進める(Yes)一方、受信したメッセージが分割データの再送要求メッセージであれば、処理をステップ46に進める(No)。
【0060】
ステップ44では、データ転送プログラムが、指定されたアプリケーションプログラムのインデックスを表わす読出しポインタが指す位置からデータを読出し、その読出したデータにチェックサムを付加することで分割データを作成する。ここで、データの読出しサイズは、転送した書込みプログラムがECU100において確立する通信環境で使用する各RXのサイズの総計から、チェックサムのサイズを減算した値にする。
【0061】
また、読出しポインタの初期値は、アプリケーションプログラムの先頭のアドレスである。読出しポインタは、ステップ44が実行されるごとに、データの読出しサイズだけ加算される。
【0062】
例えば、転送した書込みプログラムが確立する通信環境で使用する各RXのサイズの総計が64バイト、及び、チェックサムのサイズが2バイトである場合、データの読出しサイズは62バイト、分割データのサイズは64バイトとなる。
【0063】
なお、データ検証用として、チェックサムの他にはCRC(Cyclic Redundancy Check)がある。また、分割データに対し、書込みツール200側で、何番目に転送した分割データであるかを示すシーケンス番号を分割データに含め、ECU100側で、受信した分割データのシーケンス番号をチェックすることで、正しい順序で分割データが受信できたかどうかチェックするようにしてもよい。
【0064】
ステップ45では、データ転送プログラムが、作成した分割データをECU100に転送する。このとき、データ転送プログラムは、分割データを転送するため、分割データを通信バッファ領域241のTXのサイズごとに分け、通信バッファ領域241の各TXに格納する。例えば、分割データが64バイト、及び、1個あたり8バイトのTXが通信バッファ領域241に8個ある場合、データ転送プログラムは、分割データを、8バイトごとに8個のデータに分けて各TXに格納する。
なお、TXに格納されたデータは、通信回路240によって、ECU100に転送される。
【0065】
ステップ46では、データ転送プログラムが、作成した分割データを再度、ECU100に転送する。
【0066】
ステップ47では、データ転送プログラムは、受信したメッセージが、分割データがECU100のROM110に正常に書込まれなかったことを示すメッセージ(分割データの書込みNGメッセージ)か否かを判定する。データ転送プログラムは、受信したメッセージが分割データ書込みNGメッセージでなければ、処理をステップ48に進める(Yes)一方、受信したメッセージが分割データの書込みNGメッセージであれば、処理をステップ50に進める(No)。
【0067】
ステップ48では、データ転送プログラムが、読出しポインタがアプリケーションプログラムの最後まで到達したか否かを介し、アプリケーションプログラムの転送を最後まで完了したか否かを判定する。データ転送プログラムは、アプリケーションプログラムの転送を最後まで完了していれば、処理をステップ49に進める(Yes)一方、アプリケーションプログラムの転送を最後まで完了していなければ、処理をステップ41に進める(No)。
【0068】
ステップ49では、データ転送プログラムが、アプリケーションプログラムの転送が完了したことを示すメッセージ(アプリケーションの転送完了メッセージ)をECU100に送信する。
【0069】
ステップ50では、データ転送プログラムが、アプリケーションプログラムを再度先頭から転送するために、読出しポインタの値をアプリケーションプログラムの先頭アドレスに設定する。
【0070】
図11は、ECU100が書込みプログラムの転送開始メッセージを受信したことを契機として、RAM展開プログラムがECU100によって実行する処理のフローチャートを示す。
【0071】
ステップ51では、RAM展開プログラムは、ECU100が書込みツール200からデータを受信したか否かを判定する。RAM展開プログラムは、書込みツール200からデータを受信していれば、処理をステップ52に進める(Yes)一方、書込みツール200からデータを受信していなければ、処理をステップ51に戻す(No)。
【0072】
ステップ52では、RAM展開プログラムは、受信したデータが、書込みプログラムの転送完了メッセージであるか否かを判定する。RAM展開プログラムは、受信したデータが書込みプログラムの転送完了メッセージであれば、処理をステップ53に進める(Yes)一方、受信したデータが書込みプログラムの転送完了メッセージでなければ、処理をステップ56に進める(No)。
【0073】
ステップ53では、RAM展開プログラムが、チェックサム等によって、転送された書込みプログラムが正当か否かを判定する。RAM展開プログラムは、転送された書込みプログラムが正当であれば、処理をステップ54に進める(Yes)一方、転送された書込みプログラムが正当でなければ、処理をステップ58に進める(No)。
【0074】
ステップ54では、RAM展開プログラムが、書込みツール200に対し、書込みプログラムが正当に転送された旨のメッセージを送信する。
ステップ55では、RAM展開プログラムが、RAM130に展開した書込みプログラムのなかの書込みメインプログラムを起動する。
【0075】
ステップ56では、RAM展開プログラムが、受信した書込みプログラムのデータを通信バッファ領域141のRXからRAM130に展開する。
ステップ57では、RAM展開プログラムが、書込みツール200に対し、次のデータの要求メッセージを送信する。
【0076】
ステップ58では、RAM展開プログラムが、書込みツール200に対し、書込みプログラムが正当に転送されていない旨のメッセージを送信する。
【0077】
図12は、書込みメインプログラムが起動されたことを契機として、書込みメインプログラムが、ECU100によって実行する処理のフローチャートを示す。
【0078】
ステップ61では、書込みメインプログラムは、転送された書込みプログラムに応じて、ECU100が書込みツール200と通信するための通信環境を変更する。なお、ECU100が書込みツール200以外の他の装置と通信可能である場合は、通信環境を変更しないようにしてもよい。
【0079】
ステップ62では、書込みメインプログラムが、ROM書込み処理サブルーチンを実行する。なお、ROM書込み処理サブルーチンは、分割データの転送元である書込みツール200から分割データを受信し、分割データに基づいてアプリケーションプログラムのデータをROM110に書込む処理を行う。
【0080】
図13〜図15は、ROM書込み処理サブルーチンを示す。
ステップ71では、書込みメインプログラムが、第1のバッファ領域133を、書込みツール200から受信する分割データをコピーするためのコピー用の領域に設定する。
【0081】
ステップ72では、書込みメインプログラムが、書込みサブプログラムを起動する。
ステップ73では、書込みメインプログラムが、ROM110に書込むデータ(アプリケーションプログラムのデータ)のうち、何番目のデータが処理中であるかを表わすカウンタである変数nに1を代入する。
【0082】
ステップ74では、書込みメインプログラムは、初回の分割データを取得するために、分割データの送信要求メッセージを書込みツール200に送信する。
ステップ75では、書込みメインプログラムは、書込みツール200から受信した分割データがコピー用の領域にコピーされたことを示すメッセージ(分割データのコピー完了メッセージ)を書込みサブプログラムより通知されたか否か判定する。書込みメインプログラムは、分割データのコピー完了メッセージが通知されていれば、処理をステップ76に進める(Yes)一方、分割データのコピー完了メッセージが通知されていなければ、処理をステップ75に戻す(No)。
【0083】
ステップ76では、書込みメインプログラムが、コピー用の領域に格納された初回の分割データを参照し、分割データに含まれたチェックサムを利用することによって、初回の分割データが正常に受信できたか否かを判定する。書込みメインプログラムは、初回の分割データが正常に受信できていれば、処理をステップ77に進める(Yes)一方、初回の分割データが正常に受信できていなければ、処理をステップ78に進める(No)。
【0084】
ステップ77では、書込みメインプログラムが、第1のバッファ領域133を、ROM110に分割データを書込むときに使用する書込み用の領域に設定するとともに、第2のバッファ領域134をコピー用の領域に設定する。
【0085】
ステップ78では、書込みメインプログラムが、初回の分割データを再度取得するために、分割データの再送要求メッセージを書込みツール200に送信する。なお、分割データの再送要求メッセージと共に、分割データを正常に受信できなかったことを示すメッセージ(分割データの受信NGメッセージ)を、書込みツール200に送信するようにしてもよい。
【0086】
ステップ79では、書込みメインプログラムが、2番目の分割データを取得するために分割データの送信要求メッセージを書込みツール200に送信する。なお、分割データの送信要求メッセージと共に、前回の分割データを正常に受信できたことを示すメッセージ(分割データの受信OKメッセージ)を、書込みツール200に送信してもよい。
【0087】
ステップ80では、書込みメインプログラムが、書込み用の領域に格納されているn番目の分割データからチェックサムを取り除き、書込み条件に従って、書込み用の領域に格納されているデータをROM110に書込む。
【0088】
ステップ81では、書込みメインプログラムが、書込みデータのベリファイを実行することによって、n番目のデータがROM110に正常に書込まれたか否か判定する。書込みメインプログラムは、n番目のデータがROM110に正常に書込まれていれば、処理をステップ82に進める(Yes)一方、n番目のデータがROM110に正常に書込まれていなければ、処理をステップ84に進める(No)。
【0089】
なお、書込みデータのベリファイは、例えば、書込み用の領域の内容と、書き込んだROM110の領域の内容とを比較することで行われる。
【0090】
ステップ82では、書込みメインプログラムが、分割データのコピー完了メッセージが書込みサブプログラムから通知されたか否かを判定する。書込みメインプログラムは、分割データのコピー完了メッセージが通知されていれば、処理をステップ83に進める(Yes)一方、分割データのコピー完了メッセージが通知されていなければ、処理をステップ82に戻す(No)。
【0091】
ステップ83では、書込みメインプログラムは、コピー用の領域に格納されたデータが、アプリケーションの転送完了メッセージであるか否か判定する。書込みメインプログラムは、コピー用の領域に格納されたデータがアプリケーションの転送完了メッセージであれば、処理を終了する(Yes)一方、コピー用の領域に格納されたデータがアプリケーションの転送完了メッセージでなければ、処理をステップ87に進める(No)。
【0092】
ステップ84では、書込みメインプログラムが、分割データの書込みNGメッセージを、書込みツール200に送信する。
ステップ85では、書込みメインプログラムが、書込みを行ったROM110の領域のデータを消去する。
【0093】
ステップ86では、書込みメインプログラムが、第1のバッファ領域133を、コピー用の領域に設定する。
ステップ87では、書込みメインプログラムが、コピー用の領域にコピーされたn+1番目の分割データをチェックサムにより検証することによって、n+1番目の分割データが正常に受信できたか否かを判定する。書込みメインプログラムは、n+1番目の分割データが正常に受信できていれば、処理をステップ88に進める(Yes)一方、n+1番目の分割データが正常に受信できていなければ、処理をステップ91に進める(No)。なお、n+1番目の分割データの検証は、n+1番目の分割データを受信した直後に書込みサブプログラムが行ってもよい。
【0094】
ステップ88では、書込みメインプログラムが、コピー用に設定されていたバッファ領域を書込み用の領域にすると共に、書込み用に設定されていたバッファ領域をコピー用の領域にする。
【0095】
ステップ89では、書込みメインプログラムが、n+2番目の分割データを取得するために、分割データの送信要求メッセージを書込みツール200に送信する。
なお、分割データの送信要求メッセージと共に、n番目の分割データをROM110に書込んだ旨のメッセージ(分割データの書込みOKメッセージ)及びn+1番目の分割データを受信した旨のメッセージ(分割データの受信OKメッセージ)を書込みツール200に送信するようにしてもよい。
【0096】
ステップ90では、書込みメインプログラムが、nに1を加算する。
ステップ91では、書込みメインプログラムが、n+1番目の分割データを再度取得するために、分割データの再送要求メッセージを書込みツール200に送信する。なお、分割データの再送要求メッセージと共に、n+1番目の分割データが正常に受信できなかった旨のメッセージ(分割データの受信NGメッセージ)を、書込みツール200に送信するようにしてもよい。
【0097】
図16は、ECU100が書込みツール200からデータを受信したことを契機として、書込みサブプログラムがECU100によって実行する処理のフローチャートを示す。
ステップ101では、書込みサブプログラムが、受信した分割データを、通信バッファ領域141のRXからコピー用の領域にコピーする。
【0098】
ステップ102では、書込みサブプログラムが、分割データのコピー完了メッセージを、書込みメインプログラムに通知する。
なお、コピー用の領域を、通信バッファ領域141のRXに相当する領域に設定し、ECU100が、コピー用の領域を使用してデータを受信するようにしてもよい。この場合、通信バッファ領域141のRXからコピー用の領域に分割データをコピーする処理が不要となる。
【0099】
また、分割データの送信要求からコピー完了までの処理時間と、データをROM110に書込み及び検証処理に要する時間とで差がある場合、いずれかの時間の長い方の処理が完了したときに、次の分割データの受信処理と、データをROM110に書込む処理とを開始するようにしてもよい。
【0100】
このように、受信した分割データをECU100のRXにコピーし、ROM110に書込みを行うためのバッファ領域を2つ用意する。そして、2つのバッファ領域のうち、一方のバッファ領域を、ROM110に対する書込み処理に使用している間、他方のバッファ領域を、ECU100が受信した分割データをコピーする処理に使用する。これにより、ECU100において、一方のバッファ領域を使用しROM110にデータを書込む処理と、分割データの受信、及び、受信した分割データを他方のバッファ領域にコピーする処理とを並列に行うことができる。このため、プログラム書込み全体処理に要する時間を削減することができる。
【0101】
また、これらの処理を実現するには、ECU100側の処理を変更すればよいため、書込みツール200を大幅に変更することなく、プログラム書込み全体処理に要する時間を削減することができる。
【0102】
アプリケーションプログラムの転送及び書込み処理の実施例のシーケンスは図17に示すとおりとなる。ここで、書込みツール200が転送するプログラムの大きさは、180バイトである。また、ECU100の各RXのサイズの総計は64バイトである。
【0103】
ECU100は、初回の分割データの送信要求メッセージを、書込みツール200に送信する。
書込みツール200は、アプリケーションプログラムのデータのうち、最初の62バイトのデータを読み、2バイトのチェックサムを付加して初回の分割データを作成し、ECU100に転送する。
【0104】
ECU100は、初回の分割データを受信した後、初回の分割データを通信バッファ領域141のRXから第1のバッファ領域133にコピーする。次に、ECU100は、初回の分割データの検証を行い、第2の分割データの送信要求メッセージを書込みツール200に送信する。また、ECU100は、第1のバッファ領域133を使用し、データをROM110に書込む処理、及び、書込みデータの検証を行う。
【0105】
書込みツール200は、第2の分割データの送信要求メッセージを受信すると、次に転送する62バイトのデータを読み、チェックサムを付加して第2の分割データを作成し、ECU100に転送する。
【0106】
ECU100は、第2の分割データを受信した後、第2の分割データを通信バッファ領域141のRXから第2のバッファ領域134にコピーする。次に、ECU100は、第2の分割データの検証を行う。また、ECU100は、第2の分割データの検証及び初回の書込みデータの検証が完了すると、第3の分割データの送信要求メッセージを書込みツール200に送信する。さらに、ECU100は、第2のバッファ領域134を使用し、データをROM110に書込む処理、及び、書込みの検証を行う。
【0107】
書込みツール200が、第3の分割データの送信要求メッセージを受信した後、残りの56バイトのデータを読み、チェックサムを付加して第3の分割データを作成し、ECU100に転送する。
【0108】
ECU100が、第3の分割データを受信した後の処理は、第2データを受信した後の処理と同様である。
書込みツール200は、第4の分割データの送信要求メッセージを受信すると、アプリケーションの転送完了メッセージをECU100に送信する。
【0109】
なお、本実施形態はECU100を例にしたものであるが、ECU100に代えて、不揮発性メモリを搭載した他の電子制御装置にも適用できる。また、1つの書込みツール200に複数のECU100を接続し、1つの書込みツール200が、各ECU100に対し、ROM110に書き込むためのデータを時分割に転送するようにしてもよい。
【0110】
ここで、前記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
(イ)前記プログラムによって、データを送受信することを特徴とする請求項1〜請求項3のいずれか1つに記載の自動車用電子制御装置。
受信したプログラムによって、データを送受信することで、不揮発性メモリに格納しているプログラムに依拠することなく、データを取得することができる。これにより、データを取得する処理を変更することができる。
【0111】
(ロ)前記プログラムによって、電気的にデータの消去及び書込みが可能な不揮発性メモリにデータを書込むことを特徴とする請求項1〜請求項3、又は、(イ)のいずれか1つに記載の自動車用電子制御装置。
【0112】
不揮発性メモリに格納しているプログラムに依拠することなく、受信したプログラムによってデータを不揮発性メモリに書込むことができる。これにより、データを不揮発性メモリに書込む処理を変更することができる。
【符号の説明】
【0113】
100 ECU
130 RAM

【特許請求の範囲】
【請求項1】
通信によって任意のプログラムを取得可能な自動車用電子制御装置であって、
取得した前記プログラムを揮発性メモリに展開し、展開した前記プログラムを実行することを特徴とする自動車用電子制御装置。
【請求項2】
前記プログラムの実行によって、他の装置と通信するための通信環境を変更することを特徴とする請求項1に記載の自動車用電子制御装置。
【請求項3】
前記プログラムの転送元の装置以外の装置と通信できないときに、通信環境の変更が可能であることを特徴とする請求項2に記載の自動車用電子制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2013−69005(P2013−69005A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2011−205441(P2011−205441)
【出願日】平成23年9月21日(2011.9.21)
【出願人】(509186579)日立オートモティブシステムズ株式会社 (2,205)
【Fターム(参考)】