(57)【要約】【課題】制御装置の生産効率を向上させること。【解決手段】制御装置は、第１記憶部と、第１記憶部よりもＩ／Ｏ速度が速く所定数のデータブロックを記憶可能な第１記憶領域及び第２記憶領域を有する第２記憶部と、第１及び第２記憶領域の一方を転送先領域とし、書込装置から送信されたデータブロックを転送先領域に記憶させ、当該データブロックの検算値を書込装置に送信する制御部とを備える。書込装置は、その送信された検算値が適正な場合、次のデータブロックを送信する前に、制御部へブロック送信開始要求を送信する。制御部は、転送先領域に所定数のデータブロックが記憶され、かつ、書込装置からブロック送信開始要求を受信した場合、転送先領域を第１及び第２記憶領域の他方に切り替えると共に、切り替え前の転送先領域に記憶された所定数のデータブロックを第１記憶部に書き込ませる。【選択図】図１
2018092542.tif 000002
【特許請求の範囲】
【請求項１】
第１記憶部と、
前記第１記憶部よりもデータの入出力速度が速く、所定数のデータブロックを記憶可能な第１記憶領域および第２記憶領域を有する第２記憶部と、
前記第１および第２記憶領域の一方を転送先記憶領域として設定し、書込装置から送信されたデータブロックを前記転送先記憶領域に記憶させ、当該データブロックの検算値を前記書込装置に送信する制御を行う制御部と、
を備え、
前記書込装置は、前記制御部から送信された検算値が適正であるか否かを判定し、当該検算値が適正であると判定した場合、次のデータブロックを送信する前に、前記制御部に対してブロック送信開始要求を送信し、
前記制御部は、前記転送先記憶領域に所定数のデータブロックが記憶され、かつ、前記書込装置から前記ブロック送信開始要求を受信した場合、前記転送先記憶領域を前記第１および第２記憶領域の他方に切り替えると共に、切り替え前の転送先記憶領域に記憶された所定数のデータブロックを前記第１記憶部に書き込ませる、
制御装置。
【請求項２】
前記書込装置は、前記データブロックを複数のフレームに分割して送信し、
受信したフレームを順次、前記転送先記憶領域へ転送し、１つ分のデータブロックを転送し終えた場合、その旨の完了通知を前記制御部に通知するＤＭＡコントローラをさらに備え、
前記制御部は、
前記ＤＭＡコントローラから前記完了通知を受信し、
前記１つ分のデータブロックに係る検算値を前記書込装置へ送信する、
請求項１に記載の制御装置。
【請求項３】
制御装置へのデータ書き込み方法であって、
前記制御装置は、第１記憶部と、前記第１記憶部よりもデータの入出力速度が速く、所定数のデータブロックを記憶可能な第１記憶領域および第２記憶領域を有する第２記憶部と、を備えており、
書込装置は、前記制御装置へデータブロックを送信し、
前記制御装置は、前記第１および第２記憶領域の一方を転送先記憶領域として設定し、前記書込装置から送信されたデータブロックを前記転送先記憶領域に記憶させ、当該データブロックの検算値を前記書込装置へ送信し、
前記書込装置は、前記制御装置から送信された検算値が適正であるか否かを判定し、当該検算値が適正であると判定した場合、次のデータブロックを送信する前に、前記制御装置に対してブロック送信開始要求を送信し、
前記制御装置は、前記転送先記憶領域に所定数のデータブロックが記憶され、かつ、前記書込装置から前記ブロック送信開始要求を受信した場合、前記転送先記憶領域を前記第１および第２記憶領域の他方に切り替えると共に、切り替え前の転送先記憶領域に記憶された所定数のデータブロックを前記第１記憶部へ書き込ませる、
制御装置へのデータ書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両用の制御装置及び当該制御装置へのデータ書き込み方法に関する。
【背景技術】
【０００２】
車両用の電子制御装置（「ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）」という）は、電気的にデータの消去及び書き込みが可能な不揮発性メモリを搭載している。ＥＣＵは、不揮発性メモリに格納された制御プログラム及びキャリブレーションデータ等によって車載装置（例えば燃料噴射装置）を制御する。不揮発性メモリへの制御プログラム及びキャリブレーションデータの書き込みに要する時間を短縮することにより、ＥＣＵの生産効率が向上する。
【０００３】
特許文献１には、ＥＣＵが、書き込みデータを分割した分割データを受信し、第１のバッファ領域及び第２のバッファ領域のうち、一方のバッファ領域に対し受信した分割データをコピーする受信処理と、他方のバッファ領域を使用して、他方のバッファ領域に格納された分割データをＲＯＭに書き込む処理と、を並行に実行することが開示されている。また、ＥＣＵが、受信処理で使用したバッファ領域を次回の書き込み処理で使用すると共に、書き込み処理で使用したバッファ領域を次回の受信処理で使用することも開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−６８１０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ＥＣＵのメモリへ書き込むデータ量は増大しており、ＥＣＵの生産効率の向上のためには、当該メモリへのデータ書き込み処理に要する全体の時間をさらに短縮することが求められている。
【０００６】
本発明は、制御装置（ＥＣＵ）のメモリへのデータ書き込み処理に要する全体の時間を短縮することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係る制御装置は、第１記憶部と、第１記憶部よりもデータの入出力速度が速く、所定数のデータブロックを記憶可能な第１記憶領域および第２記憶領域を有する第２記憶部と、第１および第２記憶領域の一方を転送先記憶領域として設定し、書込装置から送信されたデータブロックを転送先記憶領域に記憶させ、当該データブロックの検算値を書込装置に送信する制御を行う制御部と、を備える。書込装置は、制御部から送信された検算値が適正であるか否かを判定し、当該検算値が適正であると判定した場合、次のデータブロックを送信する前に、制御部に対してブロック送信開始要求を送信する。制御部は、転送先記憶領域に所定数のデータブロックが記憶され、かつ、書込装置からブロック送信開始要求を受信した場合、転送先記憶領域を第１および第２記憶領域の他方に切り替えると共に、切り替え前の転送先記憶領域に記憶された所定数のデータブロックを第１記憶部に書き込ませる。
【発明の効果】
【０００８】
本発明によれば、制御装置（ＥＣＵ）のメモリへのデータ書き込み処理に要する全体の時間を短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る制御装置の構成例を示す図である。
【図２】データ書き込み処理の例を示すシーケンスチャートである。
【図３】書込装置におけるデータ書き込み処理の例を示すフローチャートである。
【図４】ＥＣＵのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）におけるデータ書き込み処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明に係る実施形態を説明する。
【００１１】
図１は、本実施形態に係る制御装置の構成例を示す図である。
【００１２】
車両用の制御装置の一例であるＥＣＵ２０は、工場において、ＥＣＵ２０に必要なデータを書き込むための装置である書込装置１０からデータが書き込まれる。ＥＣＵ２０に必要なデータは、例えば、エンジン制御プログラムやエンジン制御に係るキャリブレーションデータである。書込装置１０は、通信ネットワークの例であるＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１２を介して、ＥＣＵ２０にデータを書き込む。
【００１３】
ＥＣＵ２０は、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２２、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２６、フラッシュメモリ２８、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２４、及び、ＣＰＵ３０を備える。
【００１４】
通信Ｉ／Ｆ２２及びＤＭＡＣ２６は、第１バス４０を介して、双方向通信可能に接続されている。ＣＰＵ３０、ＤＭＡＣ２６、フラッシュメモリ２８及びＲＡＭ２４は、第２バス４２を介して、双方向通信可能に接続されている。第２バス４２は、第１バス４０よりも通信速度が高速である。
【００１５】
通信Ｉ／Ｆ２２は、ＣＡＮ１２の通信プロトコルに従うデータの送受信を制御するＩ／Ｆである。通信Ｉ／Ｆ２２は、通信バッファ２３を備えており、書込装置１０からＣＡＮ１２を介して送信されたフレームデータを、いったん通信バッファ２３に格納する。
【００１６】
フラッシュメモリ２８（本発明の第１記憶部として機能）は、ＣＰＵ３０から読み出されるエンジン制御プログラム及びキャリブレーションデータ等が格納される不揮発性メモリである。なお、フラッシュメモリ２８の代わりに、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）又はＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性メモリを用いてもよい。
【００１７】
ＲＡＭ２４（本発明の第２記憶部として機能）は、ＣＰＵ３０から実行されるプログラム及びデータが一時的に格納されるメモリである。ＲＡＭ２４は、揮発性メモリ又は不揮発性メモリの何れであってもよいが、Ｉ／Ｏ速度がフラッシュメモリ２８よりも速い。
【００１８】
ＤＭＡＣ２６は、通信バッファ２３に格納されたデータのＲＡＭ２４への転送を制御する。ＤＭＡＣ２６がＲＡＭ２４への転送を制御することにより、ＣＰＵ３０のＩ／Ｏ制御に係る負荷が軽減される。
【００１９】
車両走行時においては、ＣＰＵ３０は、フラッシュメモリ２８に格納されたプログラム及びデータを実行することにより、ＥＣＵ２０（本発明の制御部として機能）が有する機能を実現する。
【００２０】
しかし、本実施形態では、ＣＰＵ３０は、工場等におけるＥＣＵ２０の生産工程において、フラッシュメモリ２８へのデータ書き込み処理を実現するプログラム（「フラッシュライトプログラム」という）を実行する。フラッシュライトプログラムは、ＥＣＵ２０の所定の不揮発性メモリに格納されており、ＣＰＵ３０が書込装置１０から工場モード開始要求を受信することによって実行される。したがって、フラッシュライトプログラムは、通常の車両走行時には実行されない。また、ＥＣＵ２０の生産工程において、ＲＡＭ２４には、ＲＡＭ第１領域５０Ａ及びＲＡＭ第２領域５０Ｂの２つの転送先領域が確保される。
【００２１】
ＥＣＵ２０の生産工程において、ＣＰＵ３０は、ＤＭＡＣ２６に対して、書込装置１０から送信されるデータブロックの転送先として、一方の転送先領域（例えばＲＡＭ第１領域５０Ａ）を指定する。ＤＭＡＣ２６は、書込装置１０から送信されたデータブロックを、一方の転送先領域（例えばＲＡＭ第１領域５０Ａ）に転送する。ＤＭＡＣ２６は、１つのデータブロック分を一方の転送先領域に転送し終えた場合、その旨をＣＰＵ３０に通知する。ＣＰＵ３０は、その通知を受けて、一方の転送先領域に転送された１つ分のデータブロックの検算値（例えばチェックサム）を書込装置１０へ送信する。
【００２２】
書込装置１０は、ＣＰＵ３０から送信された検算値が適正か否かを判定し、当該検算値が適正であると判定した場合、次のデータブロックを送信する前に、ＣＰＵ３０に対してブロック送信開始要求を送信する。例えば、書込装置１０は、ＣＰＵ３０へ送信したデータブロックの検算値を保持しておき、ＣＰＵ３０から送信された当該データブロックの検算値と一致するか否を判定する。
【００２３】
ＣＰＵ３０は、一方の転送先記憶領域（例えばＲＡＭ第１領域５０Ａ）に所定数のデータブロックが転送され、かつ、書込装置１０からブロック送信開始要求を受信した場合、ＤＭＡＣ２６に対して、データブロックの転送先として、他方の転送先領域（例えばＲＡＭ第２領域５０Ｂ）を指定する。
【００２４】
ＤＭＡＣ２６は、ＣＰＵ３０から、上記の他方の転送先領域の指定を受けた場合、フラッシュメモリ２８のコントローラ（「フラッシュメモリコントローラ」という）に対して、一方の転送先領域内の所定数のデータブロックをフラッシュメモリ２８へ書き込む旨の指示（「フラッシュライト指示」という）を発行する。
【００２５】
なお、ＤＭＡＣ２６は、ＣＰＵ３０からの転送先領域の指定を受けること無く、例えば、転送先領域に所定数のデータブロックを転送し終えた場合に、フラッシュライト指示を発行する構成であってもよい。
【００２６】
上記構成によれば、他方の転送先領域に転送される最初のデータブロックに係るブロック送信開始要求の受信がトリガーとなって、データブロックの転送先が他方の転送先領域に切り替えられ、一方の転送先領域内の所定数のデータブロックがフラッシュメモリ２８に書き込まれる。ブロック送信開始要求は、書込装置１０がＥＣＵ２０に対して次のデータブロックを送信しても良いか否かを問い合わせるための情報であり、書込装置１０からＥＣＵ２０に対して転送先領域の切り換えを指示するための情報ではない。したがって、書込装置１０とＣＰＵ３０との間において、転送先領域を切り換えるための情報のやりとりが不要となり、その結果、書込装置１０からＥＣＵ２０へのデータ送信に要する時間が短縮される。また、書込装置１０側でＣＰＵ３０から送信された検算値に基づくデータブロックの破損をチェックすることにより、ＣＰＵ３０の処理負荷が軽減され、その結果、フラッシュメモリ２８へのデータ書き込みに要する時間が短縮される。これらの短縮により、フラッシュメモリ２８へのデータ書き込み処理の全体の時間が短縮され、ＥＣＵ２０の生産効率が向上する。
【００２７】
書込装置１０は、データブロックを複数のフレームに分割して順に送信する。ＤＭＡＣ２６は、書込装置１０から送信された複数のフレームを、受信した順に、ＣＰＵ３０から指定された転送先領域へ転送する。
【００２８】
上記構成によれば、データブロックにおけるフレームの位置を示す番号情報を不要にできる。これにより、書込装置１０からＥＣＵ２０へのデータ送信量を低減することができる。
【００２９】
次に、ＥＣＵ２０の生産工程における、ＥＣＵ２０へのデータ書き込み処理の具体例を、図２を参照しながら説明する。本実施形態では、ＲＡＭ第１領域５０Ａ及びＲＡＭ第２領域５０Ｂのサイズは、それぞれ、１６ブロックである。１ブロックのサイズは２５６フレームである。１フレームのサイズは８Ｂｙｔｅである。
【００３０】
図２は、データ書き込み処理の例を示すシーケンスチャートである。
【００３１】
まず、書込装置１０は、ＣＰＵ３０に対して工場モード開始要求を送信する（ＳＴ１０）。
【００３２】
次に、ＣＰＵ３０は、ＳＴ１０の工場モード開始要求を受信すると、工場モードを開始する。すなわち、上記のフラッシュライトプログラムが実行される。そして、ＣＰＵ３０は、書込装置１０に対して工場モード開始応答を送信する（ＳＴ１２）。
【００３３】
書込装置１０は、ＳＴ１２の工場モード開始応答を受信すると、第１ブロックに係る開始処理として、ＣＰＵ３０に対してブロック送信開始要求を送信する（ＳＴ１６）。
【００３４】
ＣＰＵ３０は、ＳＴ１６のブロック送信開始要求を受信すると、ＤＭＡＣ２６に対して、これから通信バッファ２３に格納される２５６×１６個分（つまり１６ブロック分）のフレームの転送先領域として、ＲＡＭ第１領域５０Ａを指定する（ＳＴ１８）。この転送先領域を切り換える処理を、「転送先切替処理」という。
【００３５】
次に、ＣＰＵ３０は、書込装置１０に対してブロック送信開始応答を送信する（ＳＴ２０）。このとき、ＣＰＵ３０は、ブロック送信開始要求の受信数をカウントする。
【００３６】
書込装置１０は、ＳＴ２０のブロック送信開始応答を受信すると、第１ブロックを複数のフレームに分割して、順次、通信Ｉ／Ｆ２２へ送信する。ＤＭＡＣ２６は、通信バッファ２３に格納されたフレームを、受信した順に、転送先領域であるＲＡＭ第１領域５０Ａへ転送する（Ｄ１）。
【００３７】
ＤＭＡＣ２６は、２５６個のフレーム（第１ブロック分）を、ＲＡＭ第１領域５０Ａへ転送し終えると、完了通知をＣＰＵ３０へ送信する（ＳＴ２１）。
【００３８】
ＣＰＵ３０は、ＳＴ２１の完了通知を受信すると、ＲＡＭ第１領域５０Ａに転送された第１ブロックに係る検算値を算出する。そして、ＣＰＵ３０は、その算出した検算値を書込装置１０へ送信する（ＳＴ２２）。検算値は、例えば、第１ブロック分のデータのチェックサム値である。また、ＣＰＵ３０は、ＤＭＡＣ２６からの完了通知の受信数をカウントする。
【００３９】
書込装置１０は、ＳＴ２２の第１ブロックに係る検算値を受信すると、その受信した検算値が適正か否かを判定する（ＳＴ２４）。例えば、書込装置１０は、受信した検算値が、送信した第１ブロックに係る予め保持する検算値と一致するならば適正と判定する一方、検算値と不一致ならば不適正と判定する。その検算値が不適正と判定した場合、書込装置１０は、当該データ書き込み処理を中止する。ＲＡＭ２４に格納されたデータが破損しているからである。
【００４０】
その検算値が正しいと判定した場合、書込装置１０は、次の第２ブロックに係る処理として、ＣＰＵ３０に対してブロック送信開始要求を送信する。第２ブロックに係る処理は、上述の第１ブロックに係る処理と同様であるので説明を省略し、第１６ブロックに係る処理（Ｄ１６）の以後について説明する。
【００４１】
ＤＭＡＣ２６は、第１６ブロックをＲＡＭ第１領域５０Ａへ転送し終えると、つまり、第１６ブロックに係る受信フレーム数が「２５６個」に到達すると、完了通知をＣＰＵ３０へ送信する（ＳＴ３０）。
【００４２】
ＣＰＵ３０は、ＳＴ３０の完了通知を受信すると、ＲＡＭ第１領域５０Ａに格納された第１６ブロックに係る検算値を算出する。そして、ＣＰＵ３０は、その算出した検算値を書込装置１０へ送信する（ＳＴ３２）。また、ＣＰＵ３０は、ＤＭＡＣ２６から受信した完了通知の数をカウントする。その結果、完了通知の数がＲＡＭ第１領域５０Ａのサイズに相当する「１６個」に到達するので、ＣＰＵ３０は、ＲＡＭ第１領域５０Ａに、ブロックデータが限度いっぱいに格納されていることがわかる。
【００４３】
書込装置１０は、第１６ブロックの検算値が正しいと判定した場合（ＳＴ３４）、第１７ブロックに係る処理として、ＣＰＵ３０に対してブロック送信開始要求を送信する（ＳＴ４４）。
【００４４】
ＣＰＵ３０は、上述のとおりＲＡＭ第１領域５０Ａにブロックデータが限度いっぱいに格納されていることがわかっているので、ＳＴ４４のブロック送信開始要求を受信すると、転送先切替処理を実行する。すなわち、ＣＰＵ３０は、ＤＭＡＣ２６に対して、これから通信バッファ２３に格納される２５６×１６個分（つまり１６ブロック分）のフレームの転送先領域として、ＲＡＭ第２領域５０Ｂを指定する（ＳＴ４６）。これにより、第１７〜第３２ブロックの転送先は、ＲＡＭ第２領域５０Ｂへ切り替わる。
【００４５】
次に、ＣＰＵ３０は、書込装置１０に対して、ブロック送信開始応答を送信する（ＳＴ５０）。ＣＰＵ３０は、下記のフラッシュライト処理の完了通知（ＳＴ５４）を待つことなく、このブロック送信開始応答を送信する。これから受信する第１７〜第３２ブロックは、切り換え後のＲＡＭ第２領域５０Ｂに転送されるからである。
【００４６】
書込装置１０は、ＳＴ５０のブロック送信開始応答を受信すると、第１７ブロックを複数のフレームに分割して、順次、通信Ｉ／Ｆ２２へ送信する。ＤＭＡＣ２６は、通信バッファ２３に格納されたフレームを、受信した順に、転送先領域であるＲＡＭ第２領域５０Ｂへ転送する（Ｄ１７）。
【００４７】
なお、ＤＭＡＣ２６は、受信フレーム数が「２５６×１６個分」に到達したので、前回のフラッシュライト処理が完了している場合、フラッシュメモリコントローラに対して、ＲＡＭ第１領域５０Ａに格納された第１〜第１６ブロックをフラッシュメモリ２８へ書き込む旨の指示（フラッシュライト指示）を発行する（ＳＴ５２）。
【００４８】
ＳＴ５２の指示を受けたフラッシュメモリコントローラは、ＲＡＭ第１領域５０Ａの第１〜第１６ブロックをフラッシュメモリ２８へ書き込む処理を開始する（Ｗ１）。このＲＡＭ第１領域５０Ａ又はＲＡＭ第２領域５０Ｂのデータをフラッシュメモリ２８に書き込む処理を、フラッシュライト処理という。フラッシュメモリコントローラは、当該フラッシュライト処理を完了すると、ＣＰＵ３０に対して完了通知を発行する（ＳＴ５４）。
【００４９】
上述の処理によれば、ＲＡＭ第１領域５０Ａ又はＲＡＭ第２領域５０Ｂに格納済みのデータをフラッシュメモリ２８に書き込む処理と、書込装置１０から送信されるデータをＲＡＭ第１領域５０Ａ又はＲＡＭ第２領域５０Ｂに転送する処理とを、並列に実行することができる。
【００５０】
次に、書込装置１０から最終ブロック分のフレームが送信された後の処理について述べる。
【００５１】
書込装置１０は、最終ブロック分のデータを送信し終えた後、ＣＰＵ３０に対して、全ブロック検証要求を送信する（ＳＴ７２）。
【００５２】
ＣＰＵ３０は、ＳＴ７２の全ブロック検証要求を受信すると、フラッシュメモリコントローラから最終データに係る完了通知（ＳＴ７４）が送信されてくるのを待つ。
【００５３】
ＣＰＵ３０は、ＳＴ７４の完了通知を受信すると、フラッシュメモリ２８に全ブロックが正しく書き込まれているか否かを検証し、その検証結果を含む全ブロック検証応答を書込装置１０へ送信する（ＳＴ７６）。
【００５４】
書込装置１０は、ＳＴ７６の全ブロック検証応答を受信すると、当該応答に含まれる検証結果を確認する（ＳＴ７８）。ＳＴ７８の検証結果が「異常」である場合、書込装置１０は、当該データ書き込み処理を異常終了する。フラッシュメモリ２８に書き込まれたデータが破損しているからである。
【００５５】
ＳＴ７８の検証結果が「正常」である場合、書込装置１０は、ＣＰＵ３０に対して工場モード終了要求を送信する（ＳＴ８０）。
【００５６】
ＣＰＵ３０は、工場モード終了要求を受信すると、工場モードを終了し、書込装置１０に対して工場モード終了応答を送信する（ＳＴ８２）。
【００５７】
書込装置１０は、ＳＴ８２の工場モード終了要求を受信すると、当該データ書込処理を正常終了する。
【００５８】
図３は、書込装置１０におけるデータ書き込み処理の例を示すフローチャートである。
【００５９】
書込装置１０は、ＥＣＵ２０に対して工場モード開始要求を送信する（ＳＴ１００）。
【００６０】
次に、書込装置１０は、ＥＣＵ２０から、ＳＴ１００に対する工場モード開始応答を受信した場合、ＥＣＵ２０に対してブロック送信開始要求を送信する（ＳＴ１０２）。
【００６１】
次に、書込装置１０は、ＥＣＵ２０から、ＳＴ１０２に対するブロック送信開始応答を受信した場合、ＥＣＵ２０に対してフレームを順次送信する（ＳＴ１０４）。
【００６２】
次に、書込装置１０は、１ブロック分のフレームを送信し終えた後、ＥＣＵ２０から１ブロック分の検算値が送信されてくるまで待機する（ＳＴ１０６：ＮＯ）。
【００６３】
書込装置１０は、当該検算値を受信した場合（ＳＴ１０６：ＹＥＳ）、ＳＴ１０４で送信した１ブロック分の検算値と、ＳＴ１０６で受信した検算値とが一致するか否かを判定する（ＳＴ１０８）。
【００６４】
ＳＴ１０８の判定結果が「不一致」である場合（ＳＴ１０８：ＮＯ）、書込装置１０は、データ書き込み処理を異常終了する。
【００６５】
一方、ＳＴ１０８の判定結果が「一致」である場合（ＳＴ１０８：ＹＥＳ）、書込装置１０は、全ブロック分を送信し終えたか否かを判定する（ＳＴ１１０）。
【００６６】
ＳＴ１１０の判定の結果、未送信のブロックが残っている場合（ＳＴ１１０：ＮＯ）、書込装置１０は、ＳＴ１０２に戻り、残りの未送信のブロックを送信する。
【００６７】
ＳＴ１１０の判定の結果、全ブロックの送信を送信し終えている場合（ＳＴ１１０：ＹＥＳ）、書込装置１０は、ＥＣＵ２０に対して全ブロック検証要求を送信する（ＳＴ１１２）。
【００６８】
次に、書込装置１０は、ＥＣＵ２０から全ブロック検証応答を受信した後、全ブロック検証応答の結果が正常であるか否かを判定する（ＳＴ１１４）。
【００６９】
ＳＴ１１４の判定結果が「異常」である場合（ＳＴ１１４：ＮＯ）、書込装置１０は、データ書き込み処理を異常終了する。
【００７０】
ＳＴ１１４の判定結果が「正常」である場合（ＳＴ１１４：ＹＥＳ）、書込装置１０は、ＳＴ１１６において、ＥＣＵ２０に対して工場モード終了要求を送信する。
【００７１】
書込装置１０は、ＥＣＵ２０から工場モード終了応答を受信した後（ＳＴ１１６）、データ書き込み処理を正常終了する。
【００７２】
図４は、ＣＰＵ３０におけるデータ書き込み処理の例を示すフローチャートである。
【００７３】
ＣＰＵ３０は、書込装置１０から工場モード開始要求を受信すると、工場モードを開始し、書込装置１０に対して工場モード開始応答を送信する（ＳＴ２００）。
【００７４】
次に、ＣＰＵ３０は、書込装置１０からブロック送信開始要求が送信されてきたか否かについて判定する（ＳＴ２０２）。ＣＰＵ３０は、ブロック送信開始要求が送信されていない場合（ＳＴ２０２：ＮＯ）、処理をＳＴ２０２の前に戻す。
【００７５】
ＣＰＵ３０は、ブロック送信開始要求を受信した場合（ＳＴ２０２：ＹＥＳ）、ＤＭＡＣ２６に対して、これから通信バッファ２３に格納される２５６×１６個分のフレームの転送先領域を指定する（ＳＴ２０４）。転送先領域は、図２で説明したように、１６ブロック分のデータを受信する毎に、ＲＡＭ第１領域５０Ａ又はＲＡＭ第２領域５０Ｂとの間で交互に切り替わる。
【００７６】
次に、ＣＰＵ３０は、書込装置１０に対してブロック送信開始応答を送信する（ＳＴ２０６）。
【００７７】
次に、ＣＰＵ３０は、ＤＭＡＣ２６から転送先領域への１ブロック分の転送完了通知が送信されてきたか否かについて判定する（ＳＴ２０８）。ＣＰＵ３０は、当該完了通知が送信されていない場合（ＳＴ２０８：ＮＯ）、処理をＳＴ２０８の前に戻す。
【００７８】
ＣＰＵ３０は、ＳＴ２０８の完了通知を受信した場合（ＳＴ２０８：ＹＥＳ）、当該完了通知に係る１ブロック分のデータの検算値を算出する（ＳＴ２１０）。そして、ＣＰＵ３０は、その算出した検算値を、書込装置１０へ送信する。
【００７９】
次に、ＣＰＵ３０は、転送先領域に１６ブロック分のデータが転送されたか否かを判定する（ＳＴ２１２）。ＣＰＵ３０は、転送先領域に未だ１６ブロック分のデータが転送されていない場合（ＳＴ２１２：ＮＯ）、処理をＳＴ２０２へ戻し、次のブロック送信開始要求が送信されてくるまで待機する。
【００８０】
ＣＰＵ３０は、転送先領域に１６ブロック分のデータが転送された場合（ＳＴ２１２：ＹＥＳ）、書込装置１０からブロック送信開始要求が送信されてきたか否かを判定する（ＳＴ２１４）。
【００８１】
ＣＰＵ３０は、ブロック送信開始要求を受信した場合（ＳＴ２１４：ＹＥＳ）、処理をＳＴ２０４に戻す。このＳＴ２０４において、ＣＰＵ３０は、ＤＭＡＣ２６に対して、これから送信バッファ２３に格納される２５６×１６個分のフレームの転送先領域として、前回と異なる転送先領域を指示する。これにより、ＳＴ２１４に係るブロックは、切り換え後の転送先領域に転送される。
【００８２】
なお、ＤＭＡＣ２６は、ＣＰＵ３０から前回と異なる転送先領域の指示を受信した場合に、フラッシュメモリコントローラに対して、前回の転送先領域内の１６ブロック分に係るフラッシュライト指示を発行する。
【００８３】
ＣＰＵ３０は、ブロック送信開始要求が送信されてこない場合（ＳＴ２１４：ＮＯ）、書込装置１０から全ブロック検証要求が送信されてきたか否かを判定する（ＳＴ２２０）。
【００８４】
ＣＰＵ３０は、書込装置１０から全ブロック検証要求が送信されてこない場合（ＳＴ２２０：ＮＯ）、データ書込処理を異常終了する。書込装置１０からブロック送信開始要求が送信されず、且つ、全ブロック検証要求も送信されない場合、上記ＳＴ２１０で送信した検算値が不一致であったと推定できるからである。すなわち、転送先領域に格納された１６ブロック分のデータにエラーが含まれていると推定できるからである。
【００８５】
ＣＰＵ３０は、書込装置１０から全ブロック検証要求を受信した場合（ＳＴ２２０：ＹＥＳ）、フラッシュメモリコントローラから最終ブロックに係るフラッシュライト処理の完了通知が送信されてくるのを待つ（ＳＴ２２２）。
【００８６】
ＣＰＵ３０は、最終ブロックに係るフラッシュライト処理の完了通知を受信した後、フラッシュメモリ２８に書き込まれた全データを検証し、その検証結果を書込装置１０へ送信する（ＳＴ２２４）。検証結果には「正常」又は「異常」の何れかが含まれる。
【００８７】
次に、ＣＰＵ３０は、書込装置１０から工場モード終了要求を受信すると、書込装置１０に対して工場モード終了応答を送信し、工場モードを終了する（ＳＴ２２６）。
【００８８】
これにより、書込装置１０から送信されるフレームをＲＡＭ第１領域４０Ａ又はＲＡＭ第２領域５０Ｂの一方に転送する処理と、ＲＡＭ第１領域５０Ａ又はＲＡＭ第２領域５０Ｂの他方に格納済みの所定数のブロックデータをフラッシュメモリ２８に書き込む処理と、を並列に実行することができる。これにより、フラッシュメモリ２８へのデータ書き込みに要する時間を短縮することができる。
【００８９】
＜変形例＞
書込装置１０からＥＣＵ２０へのデータ送信量を削減することにより、当該送信に要する時間をさらに削減することができる。以下、一例を示す。
【００９０】
データの項目毎にデータ長（「項目データ長」という）が定義されている場合、そのデータ長に満たない部分は所定のデータ（例えば「０ｘＦＦ」）で埋められる（つまり、パディングされる）。
【００９１】
そこで、書込装置１０は、各項目のデータの先頭に当該データの実質のデータ長（「実質データ長」という）を付与し、パディングデータを削除する。そして、書込装置１０は、それらパディングデータを削除したデータを連結し、上記図２のように、当該連結データをブロック及びフレームに分割して、ＥＣＵ２０へ順次送信する。
【００９２】
その連結データを受信したＥＣＵ２０は、実質データ長を参照して、項目データを抽出する。そして、ＥＣＵ２０は、項目データ長に満たない部分をパディングして、フラッシュメモリ２８に書き込む。
【００９３】
実質データ長はパディングされたデータ長よりも小さいので、これにより、書込装置１０からＥＣＵ２０へのデータ送信量、すなわち、当該送信に要する時間がさらに削減される。その結果、ＥＣＵ２０が備えるフラッシュメモリ２８へのデータ書き込み処理に要する全体の時間がさらに短縮される。
【００９４】
＜効果＞
上記実施形態によれば、ＣＰＵ３０は、書込装置１０がＥＣＵ２０に対して次のデータブロックを送信しても良いか否かを問い合わせるための情報であるブロック送信開始要求の受信をトリガーとして、転送先領域の切り替え、及び、フラッシュメモリ２８への書き込み開始を実行することができる。したがって、書込装置１０とＣＰＵ３０との間において、転送先領域を切り換えるための情報のやりとりが不要となり、その結果、書込装置１０からＥＣＵ２０へのデータ送信に要する時間が短縮される。
【００９５】
また、書込装置１０側でＣＰＵ３０から送信された検算値に基づくデータブロックの破損をチェックすることにより、ＣＰＵ３０の処理負荷が軽減さされる。
【００９６】
また、ＲＡＭ第１領域５０Ａ又はＲＡＭ第２領域５０Ｂに格納済みのデータをフラッシュメモリ２８に書き込む処理と、書込装置１０から送信されるデータをＲＡＭ第１領域５０Ａ又はＲＡＭ第２領域５０Ｂに転送する処理とを、並列に実行することができる。
【００９７】
これらの結果、フラッシュメモリ２８へのデータ書き込み処理に要する全体の時間が短縮される。ＥＣＵ２０の生産効率が向上する。
【００９８】
＜注記＞
上記実施形態は、何れも本発明の実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその要旨、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００９９】
１０  書込装置
２０  ＥＣＵ
２２  通信Ｉ／Ｆ
２３  通信バッファ
２４  ＲＡＭ
２６  ＤＭＡＣ
２８  フラッシュメモリ
３０  ＣＰＵ
４０  第１バス
４２  第２バス
５０Ａ  ＲＡＭ第１領域
５０Ｂ  ＲＡＭ第２領域
【図１】
2018092542.tif 000003
【図２】
2018092542.tif 000004
【図３】
2018092542.tif 000005
【図４】
2018092542.tif 000006