(57)【要約】【課題】プログラムの保持期間を確保しつつ、プログラムの書き換え時におけるバッテリの電力消費を抑制することができる車載装置を提供すること。【解決手段】車載装置は、バッテリ６０から電力供給されて動作し、不揮発性メモリ１２に記憶されたプログラムを、センター２００から送信された更新プログラムに書き換えるものである。車載装置は、センター２００から更新プログラムへの書き換えの要求があり、バッテリ６０に電力が供給されていない場合、バッテリ６０に電力が供給されている場合の書込電圧よりも低電圧な第１書込電圧として更新プログラムを不揮発性メモリ１２に書き込む。また、車載装置は、第１書込電圧として更新プログラムに書き換えた場合、バッテリ６０に電力が供給された後に、不揮発性メモリ１２への書込電圧を第１書込電圧よりも高電圧な第２書込電圧として、上記と同じ更新プログラムを不揮発性メモリ１２に書き込む。【選択図】図１
2019185398.tif 000002
【特許請求の範囲】
【請求項１】
バッテリ（６０）から電力供給されて動作し、プログラムを記憶した不揮発性メモリ（１２）を有しており、前記プログラムを車両の外部に設けられた外部機器（２００）から送信された更新プログラムに書き換える車載装置であって、
前記外部機器から前記更新プログラムへの書き換えの要求があり、前記バッテリに電力が供給されていない場合、前記バッテリに電力が供給されている場合よりも、前記不揮発性メモリへの書込電圧を低電圧として前記更新プログラムを前記不揮発性メモリに書き込むことで、前記更新プログラムに書き換える第１書換部（Ｓ２３）と、
前記第１書換部にて前記更新プログラムへの書き換えを実施した場合、前記バッテリに電力が供給された後に、前記不揮発性メモリへの書込電圧を前記第１書換部での書込電圧よりも高電圧として、前記第１書換部と同じ前記更新プログラムを前記不揮発性メモリに書き込むことで、前記更新プログラムに書き換える第２書換部（Ｓ３１）と、を備えている車載装置。
【請求項２】
前記第１書換部は、前記外部機器から前記更新プログラムへの書き換えの要求があり、前記バッテリに電力が供給されていない場合であり、且つ、前記車両が駐車状態の場合に、前記バッテリに電力が供給されている場合よりも、前記不揮発性メモリへの書込電圧を低電圧として前記更新プログラムを前記不揮発性メモリに書き込むことで、前記更新プログラムに書き換える請求項１に記載の車載装置。
【請求項３】
前記第２書換部は、前記第１書換部が前記更新プログラムを書き込んだ前記不揮発性メモリにおける領域と同じ領域に、前記更新プログラムを書き込む請求項１又は２に記載の車載装置。
【請求項４】
前記第２書換部は、前記バッテリに電力が供給されている間に、前記更新プログラムを書き込む請求項１乃至３のいずれか一項に記載の車載装置。
【請求項５】
前記第２書換部は、前記バッテリに電力が供給された後であり、前記車両のイグニッションスイッチがオフとなり、前記車載装置への電力供給が停止されるまでの間に、前記更新プログラムを書き込む請求項１乃至３のいずれか一項に記載の車載装置。
【請求項６】
前記バッテリへの電力の供給有無は、前記車両に搭載された他の制御装置からの情報に基づいて判定する請求項１乃至５のいずれか一項に記載の車載装置。
【請求項７】
前記外部機器から前記更新プログラムへの書き換えの要求があり、前記バッテリに電力が供給されている場合、前記第１書換部での書込電圧よりも高電圧として、前記更新プログラムを前記不揮発性メモリに書き込むことで、前記更新プログラムに書き換える第３書換部（Ｓ２４）と、
前記第３書換部で前記更新プログラムの書き込みを実施する場合、前記更新プログラムを書き込む前に、再度、前記バッテリに電力が供給されていることを確認してから、前記第３書換部による前記更新プログラムの書き込みを許可する確認部（Ｓ２６）と、をさらに備えている請求項１乃至６のいずれか一項に記載の車載装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、不揮発性メモリに記憶したプログラムを書き換え可能に構成された車載装置に関する。
【背景技術】
【０００２】
従来、特許文献１に開示された不揮発性半導体記憶装置がある。不揮発性半導体記憶装置は、第１の書換時間でメモリセルのデータ書き込み又はデータ消去を行う第１の動作モードと、第１の書換時間と異なる第２の書換時間でメモリセルのデータ書き込み又はデータ消去を行う第２の動作モードと、を備えている。また、不揮発性半導体記憶装置は、第１及び第２の動作モードのいずれかを選択するモード選択手段を備えている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−７６８７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、従来技術ではないが、車載装置は、販売店などでの有線書換器によるプログラム書き換えだけでなく、無線通信によって更新プログラムが随時配信され、更新プログラムを受信し次第、プログラムを更新プログラムに書き換える方法が考えられる。また、車載装置は、無線通信によって更新プログラムが配信されてプログラムを書き換える場合、車両に搭載されたバッテリの電力を消費して書き換えを行うことになる。
【０００５】
しかしながら、車載装置は、バッテリへの電力の供給が無い状態でプログラムを書き換えると、プログラムの書き換えで電力を消費した分、プログラムの書き換え後に車両が放置された場合にバッテリ上がりが起こりやすくなる。
【０００６】
本開示は、上記問題点に鑑みなされたものであり、プログラムの保持期間を確保しつつ、プログラムの書き換え時におけるバッテリの電力消費を抑制することができる車載装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本開示は、
バッテリ（６０）から電力供給されて動作し、プログラムを記憶した不揮発性メモリ（１２）を有しており、プログラムを車両の外部に設けられた外部機器（２００）から送信された更新プログラムに書き換える車載装置であって、
更新プログラムへの書き換えの要求があり、バッテリに電力が供給されていない場合、バッテリに電力が供給されている場合よりも、不揮発性メモリへの書込電圧を低電圧として更新プログラムを不揮発性メモリに書き込むことで、更新プログラムに書き換える第１書換部（Ｓ２３）と、
第１書換部にて更新プログラムへの書き換えを実施した場合、バッテリに電力が供給された後に、不揮発性メモリへの書込電圧を第１書換部での書込電圧よりも高電圧として、第１書換部と同じ更新プログラムを不揮発性メモリに書き込むことで、更新プログラムに書き換える第２書換部（Ｓ３１）と、を備えている車載装置。
【０００８】
このように、本開示では、更新プログラムへの書き換えの要求があり、バッテリに電力が供給されていない場合、低電圧で更新プログラムを不揮発性メモリに書き込むことで、プログラムの書き換えによるバッテリの電力消費を抑えることができる。よって、本開示は、プログラムを書き換えた後に車両が放置されたとしても、バッテリ上がりを抑制できる。
【０００９】
また、本開示は、低電圧でプログラムの書き換えを実施した場合、それ以降にバッテリに電力が供給された後に、高電圧として第１書換部と同じ更新プログラムを不揮発性メモリに書き込むことで、更新プログラムの保持期間を確保することができる。
【００１０】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態における制御装置とゲートウェイを含む車両の概略構成を示すブロック図である。
【図２】第１実施形態における不揮発性メモリの概略構成を示すブロック図である。
【図３】第１実施形態におけるゲートウェイの処理動作を示すフローチャートである。
【図４】第１実施形態における制御装置の書換処理を示すフローチャートである。
【図５】第１実施形態における制御装置のシャットダウン時の書換処理を示すフローチャートである。
【図６】第１実施形態における制御装置の第１書込モード時の処理動作を示すフローチャートである。
【図７】第１実施形態における制御装置の第２書込モード時の処理動作を示すフローチャートである。
【図８】第１実施形態における制御装置の第３書込モード時の処理動作を示すフローチャートである。
【図９】第１実施形態における第１書込モードでの書き込み後のメモリセルのＶｔｈ分布を示す図面である。
【図１０】第１実施形態における第２書込モードでの書き込み後のメモリセルのＶｔｈ分布を示す図面である。
【図１１】変形例１における制御装置の書換処理を示すフローチャートである。
【図１２】変形例２における制御装置とゲートウェイを含む車両の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下において、図面を参照しながら、本開示を実施するための複数の形態を説明する。各形態において、先行する形態で説明した事項に対応する部分には同一の参照符号を付して重複する説明を省略する場合がある。各形態において、構成の一部のみを説明している場合は、構成の他の部分については先行して説明した他の形態を参照し適用することができる。
【００１３】
（実施形態）
図１〜図１０を用いて、本実施形態における車載装置に関して説明する。本実施形態では、一例として、制御装置１０とゲートウェイ２０とを含む車載装置を採用する。また、本実施形態では、一例として、エンジン４０を備えた車両１００に搭載可能な車載装置を採用する。
【００１４】
まず、車載装置が搭載される車両１００の全体構成に関して説明する。図１に示すように、車両１００は、主に、車載装置としての制御装置１０とゲートウェイ２０とを備えている。また、車両１００は、複数の制御装置１０を備えている。複数の制御装置１０は、互いに異なる制御を実施する。本実施形態では、代表として一つの制御装置１０を図示している。
【００１５】
さらに、車両は、通信機３０、エンジン４０、オルタネータ５０、バッテリ６０、イグニッションスイッチ７０を備えている。なお、図１は、各構成要素間の破線が信号線を示しており、実線が電力線を示している。この点は、後程説明する図１２でも同様である。
【００１６】
通信機３０は、センター２００との通信を行う装置である。通信機３０は、ゲートウェイ２０と信号線を介して接続されている。
【００１７】
センター２００は、外部機器に相当する。センター２００は、車両１００の外部に設けられており、コンピュータや通信装置などを備えている。センター２００は、制御装置１０の不揮発性メモリ１２に記憶されているプログラムを更新するための更新プログラムを通信機３０へ無線通信にて配信する。また、センター２００は、更新プログラムを生成する機能を備えていてもよい。センター２００は、販売店などの更新プログラムの配信可能な施設とも言える。
【００１８】
更新プログラムは、不揮発性メモリ１２に記憶されたプログラムを更新するためのプログラムである。更新プログラムは、最新のプログラム、又は、最新のプログラムと不揮発性メモリ１２に記憶されたプログラムとの差分などを含んでいる。
【００１９】
なお、通信機３０は、センター２００から受信した更新プログラムをゲートウェイ２０に送信する。不揮発性メモリ１２に記憶された更新対象となるプログラムは、固定値および変数の初期値などのデータを含んでいてもよい。
【００２０】
エンジン４０は、車両１００の動力源である。オルタネータ５０は、エンジン４０が動作している時、エンジン４０の動力を利用して発電する。バッテリ６０は、電力の貯蓄と、制御装置１０、ゲートウェイ２０、通信機３０などの各装置への電力供給を行う。車両１００は、オルタネータ５０が発電した電力をバッテリ６０に蓄えることができる。よって、車両１００は、エンジン４０の動力によってバッテリ６０への充電を行うことができる。このため、車両１００は、エンジン４０が停止状態の場合、バッテリ６０への電力供給が行われない。つまり、バッテリ６０への電力供給が無い状態とは、エンジン４０の停止状態を指す。
【００２１】
イグニッションスイッチ７０は、車両１００の運転者によってオンからオフへの操作、及びオフからオンへの操作がされるものである。イグニッションスイッチ７０は、信号線を介して制御装置１０と接続されている。よって、制御装置１０には、イグニッションスイッチ７０がオンであることを示す信号、及びオフであることを示す信号が入力される。つまり、制御装置１０は、イグニッションスイッチ７０におけるオンからオフへの切り替わり、及びオフからオンへの切り替わりを認識することができる。
【００２２】
ゲートウェイ２０は、記憶部２１や演算処理装置などを備えている。ゲートウェイ２０は、バッテリ６０から電力供給されて動作する。ゲートウェイ２０は、通信機３０から送信された更新プログラムを受信すると記憶部２１に保存する。ゲートウェイ２０は、制御装置１０と信号線を介して接続されている。詳述すると、ゲートウェイ２０は、少なくとも一つの制御装置１０と通信可能に接続されていればよく、複数の制御装置１０と接続されていてもよい。
【００２３】
さらに、本実施形態では、バッテリ６０に対して電力供給がなされているか否かを判定する機能を有したゲートウェイ２０を採用している。ゲートウェイ２０は、制御装置１０に対してプログラム書き換えの開始要求を送信する前に、各制御装置１０と通信して得られた情報に基づいて、バッテリ６０への電力供給の有無を判定する。例えば、ゲートウェイ２０は、車両１００に搭載された、図１に示した制御装置１０とは異なる他の制御装置１０との通信で得られた情報に基づいて、バッテリ６０への電力供給の有無を判定する。図１に示した制御装置１０とは異なる他の制御装置１０は、プログラムの書き換え対象ではない制御装置とも言える。
【００２４】
また、例えばエンジン車の場合、ゲートウェイ２０は、制御装置１０の一つであるエンジン制御装置と通信を行い、エンジン制御装置からエンジン動作状態かエンジン停止状態かの状態情報を受信することで判定することができる。この場合、ゲートウェイ２０は、エンジン動作状態を示す状態情報を受信した場合はバッテリ６０への電力供給ありと判定し、エンジン停止状態を示す状態情報を受信した場合はバッテリ６０への電力供給なしと判定する。
【００２５】
なお、バッテリ６０への電力供給ありとは、バッテリ６０が充電されている状態である。一方、バッテリ６０への電力供給なしとは、バッテリ６０が充電されていない状態である。
【００２６】
ゲートウェイ２０は、例えば、制御装置１０におけるプログラムの書き換えを行う所定のタイミングで、書き換え対象の制御装置１０と通信する。そして、ゲートウェイ２０は、書き換え対象の制御装置１０に対して、プログラム書き換えの開始要求、更新プログラム、及びバッテリ６０への電力供給有無などの情報を送信する。なお、以下においては、プログラム書き換えの開始要求は、単に書換要求と略称で記載することもある。
【００２７】
制御装置１０は、電子制御装置（Electronic Control Unit）である。制御装置１０は、少なくとも一つの演算処理装置（ＣＰＵ）と、プログラムとデータとを記憶する記憶媒体としての少なくとも一つのメモリ装置（ＭＭＲ）とを有する。制御装置１０は、コンピュータによって読み取り可能な記憶媒体を備えるマイクロコンピュータによって提供される。記憶媒体は、コンピュータによって読み取り可能なプログラムを非一時的に格納する。記憶媒体は、半導体メモリ又は磁気ディスクなどによって提供されうる。さらに、制御装置１０は、データなどを一時的に記憶する記憶媒体を含んでいてもよい。
【００２８】
制御装置１０は、一つのコンピュータ、又はデータ通信装置によってリンクされた一組のコンピュータ資源によって提供されうる。プログラムは、制御装置１０によって実行されることによって、制御装置１０をこの明細書に記載される装置として機能させ、この明細書に記載される方法を実行するように制御装置１０を機能させる。制御装置１０は、多様な要素を提供する。それらの要素の少なくとも一部は、機能を実行するための手段と呼ぶことができ、別の観点では、それらの要素の少なくとも一部は、構成的なブロック、又はモジュールと呼ぶことができる。
【００２９】
具体的には、制御装置１０は、ＣＰＵを含むマイコン１１、メモリ装置に含まれる不揮発性メモリ１２及び揮発性メモリ１３、通信回路１４、電源回路１５などを備えている。制御装置１０は、センター２００から無線通信によって配信された更新プログラムを受信し、不揮発性メモリ１２に記憶しているプログラムを更新プログラムに書き換えることができる。
【００３０】
マイコン１１は、後程説明する電源回路１５から電力供給されて動作する。また、マイコン１１は、不揮発性メモリ１２に記憶されたプログラムを、センター２００から送信された更新プログラムに書き換える。一般的に、フラッシュメモリに代表される不揮発性メモリは、既に記憶されたデータを異なるデータに書き換える際に、予め書き換え対象の領域を消去する必要がある。つまり、マイコン１１は、不揮発性メモリ１２に記憶されたプログラムを消去してから、センター２００から送信された更新プログラムを不揮発性メモリ１２に書き込むことで、プログラムを更新プログラムに書き換える。ただし、不揮発性メモリの中には、書き換えの際に、予め書き換え対象の領域を消去する必要がない、例えば、強誘電体メモリ（ＦＲＡＭ、登録商標）も提案されている。このような不揮発性メモリ１２を搭載するマイコン１１においては、不揮発性メモリ１２に記憶されたプログラムを消去する工程は省略され得る。以下の実施例では、書き換えの際に、予め書き換え対象の領域の消去を必要とする不揮発性メモリを搭載したマイコン１１における構成および動作を記載するが、本開示はこれに限定されない。なお、制御装置１０は、マイコン１１がプログラムを実行することで、車両１００に搭載された車載機器を制御する。
【００３１】
不揮発性メモリ１２は、マイコン１１が実行するプログラムなどを記憶している。このプログラムは、例えば、制御装置１０が車載機器を制御するための制御プログラムなどである。しかしながら、本開示のプログラムは、これに限定されない。
【００３２】
図２に示すように、不揮発性メモリ１２は、制御部１２ａと、複数のメモリセルアレイ１２ｂを備えている。また、各メモリセルアレイ１２ｂは、複数のメモリセル１２ｃを含んでいる。つまり、不揮発性メモリ１２は、各メモリセル１２ｃにプログラムを記憶している。
【００３３】
制御部１２ａは、各メモリセル１２ｃに記憶されたデータの読み出し、各メモリセル１２ｃに記憶されたデータの消去、各メモリセル１２ｃへのデータの書き込みを行う。制御部１２ａは、各メモリセルアレイ１２ｂへ書き込みを行う場合、入力された書込データと、設定された書込電圧に応じて、書き込み対象のメモリセルアレイ１２ｂ（メモリセル１２ｃ）に対して書き込みパルス印加とベリファイを行う。ベリファイは、書き込み対象であるメモリセル１２ｃのＶｔｈが所望の電圧を超えたかどうかを確認する処理である。
【００３４】
特に、本開示の制御部１２ａは、書込電圧として少なくとも二つの値を取り得る。つまり、制御部１２ａは、書込電圧として、第１書込電圧と、第１書込電圧よりも高電圧である第２書込電圧を用いることができる。また、第２書込電圧は、不揮発性メモリ１２に記憶されたプログラムの保持期間を十分に確保できる程度の電圧である。
【００３５】
さらに、本実施形態では、書込電圧として第３書込電圧を用いることができる制御部１２ａを採用している。第３書込電圧は、例えば、第２書込電圧と同等の値や、第２書込電圧よりも高電圧の値など、不揮発性メモリ１２に記憶されたプログラムの保持期間を十分に確保できる程度の電圧であれば採用できる。よって、第１書込電圧は、第２書込電圧だけでなく、第３書込電圧よりも低電圧である。
【００３６】
不揮発性メモリ１２に書き込みを行う場合、メモリセル１２ｃに対する書込電圧は、書き込まれたデータの保持期間（信頼性）を確保するために、書き込んだデータの読み出しに必要な最低限度のＶｔｈよりもある程度のマージンを持った高い電圧が設定される。よって、第２書込電圧や第３書込電圧は、最低限度のＶｔｈよりもある程度のマージンを持った高い電圧であると好ましい。ここでのデータは、更新プログラムなどである。なお、制御部１２ａは、例えばマイコン１１のＣＰＵからの命令に応じて、読み出し、消去、書き込みを行う。
【００３７】
揮発性メモリ１３は、マイコン１１が演算した結果などを一時的に記憶しておく。通信回路１４は、ゲートウェイ２０と通信するための回路である。電源回路１５は、バッテリ６０から供給された電力をマイコン１１が利用可能な電圧に変換して、マイコン１１に電力供給する。
【００３８】
なお、制御装置１０が提供する手段及び／又は機能は、実体的なメモリ装置に記録されたソフトウェア及びそれを実行するコンピュータ、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの組み合わせによって提供することができる。例えば、制御装置１０がハードウェアである電子回路によって提供される場合、それは多数の論理回路を含むデジタル回路、又はアナログ回路によって提供することができる。
【００３９】
ここで、図３〜図１０を用いて、車載機器の処理動作に関して説明する。まずは、図３を用いて、ゲートウェイ２０の処理動作に関して説明する。ゲートウェイ２０は、通信機３０を介して、センター２００から書換要求があると、図３のフローチャートに示す処理を開始する。
【００４０】
ステップＳ１０では、センター２００から更新プログラムを受信する。ゲートウェイ２０は、センター２００から送信された更新プログラムを、通信機３０を介して受信する。
【００４１】
ステップＳ１１では、記憶部２１に更新プログラムを保存する。ゲートウェイ２０は、受信した更新プログラムを記憶部２１に保存する。
【００４２】
ステップＳ１２では、更新プログラムの保存が完了したか否かを判定する。ゲートウェイ２０は、受信した更新プログラムの記憶部２１への保存が完了したか否かを判定し、完了したと判定した場合はステップＳ１３へ進み、完了したと判定してない場合はステップＳ１０へ戻る。
【００４３】
ステップＳ１３では、バッテリ６０への電力供給があるか否かを判定する。ゲートウェイ２０は、上記のようにバッテリ６０に対する電力供給の有無を判定し、バッテリ６０への電力供給ありと判定した場合はステップＳ１４へ進み、バッテリ６０への電力供給なしと判定した場合はステップＳ１５へ進む。
【００４４】
このとき、ゲートウェイ２０は、車両１００に搭載された制御装置１０からの情報に基づいて、バッテリ６０への電力の供給有無を判定する。これによって、車載装置（ゲートウェイ２０）は、バッテリ６０への電力が供給されているか否かを判定するための回路を備えることなく、バッテリ６０への電力の供給有無を判定することができる。しかしながら、本開示は、これに限定されず、バッテリ６０への電力が供給されているか否かを判定するための回路を備えたゲートウェイ２０でも採用できる。
【００４５】
ステップＳ１４では、対象の制御装置１０へ第３書換要求を送信する。つまり、ゲートウェイ２０は、対象の制御装置１０への開始要求として、第３書換要求を送信する。第３書換要求は、第３書込モードでのプログラムの書き換えを示す要求である。また、第３書込モードは、書込電圧を第３書込電圧として、書き込み対象のメモリセルアレイ１２ｂに対して書き込みを行うモードである。なお、対象の制御装置１０とは、更新プログラムに書き換えるプログラムを有している制御装置１０である。
【００４６】
ステップＳ１５では、対象の制御装置１０へ第１書換要求を送信する。ゲートウェイ２０は、対象の制御装置１０への開始要求として、第１書換要求を送信する。第１書換要求は、第１書込モードでのプログラムの書き換えを示す要求である。また、第１書込モードは、書込電圧を第１書込電圧として、書き込み対象のメモリセルアレイ１２ｂに対して書き込みを行うモードである。なお、ゲートウェイ２０は、開始要求（第１書換要求又は第３書換要求）を送信すると、送信してからの経過時間の計時を開始する。ゲートウェイ２０は、例えば車両１００が駐車時などの場合、第１書換要求を送信する。
【００４７】
ステップＳ１６では、書換許可応答があるか否かを判定する。ゲートウェイ２０は、開始要求を送信した制御装置１０から書換許可応答があるか否かを判定し、書換許可応答ありと判定した場合はステップＳ１７へ進み、書換許可応答ありと判定しなかった場合はステップＳ１８へ進む。書換許可応答は、書き換え開始可能であることを示す応答である。つまり、ゲートウェイ２０は、書換許可応答がある場合、制御装置１０がプログラム書き換え開始可能な状態とみなしてステップＳ１７へ進み、書換許可応答がない場合、制御装置１０がプログラム書き換え開始可能な状態でないとみなしてステップＳ１８へ進む。
【００４８】
ステップＳ１７では、対象の制御装置１０に対して更新プログラムを送信する。ゲートウェイ２０は、記憶部２１に保存してある更新プログラムを、制御装置１０に対して送信する。
【００４９】
ステップＳ１８では、タイムアウト時間経過であるか否かを判定する。ゲートウェイ２０は、開始要求を送信してからの経過時間が、タイムアウト時間を経過したか否かを判定する。そして、ゲートウェイ２０は、経過時間がタイムアウト時間を経過したと判定してない場合はステップＳ１６へ戻る。つまり、ゲートウェイ２０は、開始要求を送信してからの経過時間がタイムアウト時間を経過するまで、書換許可応答を待ち続ける。
【００５０】
一方、ゲートウェイ２０は、経過時間がタイムアウト時間を経過したと判定した場合はステップＳ１９へ進む。つまり、ゲートウェイ２０は、制御装置１０が、プログラム書き換えが不可の状態であるとみなしてステップＳ１９へ進む。
【００５１】
なお、タイムアウト時間は、予め決められた値を採用することができる。タイムアウト時間は、例えば、通常（異常が発生していないなど）であれば、開始要求を送信してから書換許可応答を受信できる時間や、この時間にマージンを持たせた時間などである。
【００５２】
ステップＳ１９では、記憶部２１の更新プログラムを削除する。ゲートウェイ２０は、対象の制御装置１０に対して更新プログラムを送信した場合や、対象の制御装置１０がプログラム書き換え不可の状態である場合、記憶部２１の更新プログラムを削除する。このように、車載機器は、開始要求を送信してからの経過時間がタイムアウト時間を経過した場合、プログラムの書き換えを行わずに終了する。
【００５３】
なお、車両１００は、ゲートウェイ２０が開始要求を送信した後に、バッテリ６０への電力供給状態が切り換わることも起こり得る。このため、ゲートウェイ２０は、ステップＳ１７で更新プログラムを送信する前に、再度、ステップＳ１３を実行してもよい。この場合、ゲートウェイ２０は、ここでのバッテリ６０への電力供給有無の判定によって開始要求を変更する。
【００５４】
つまり、ゲートウェイ２０は、ステップＳ１５で第１書換要求を送信したものの、ステップＳ１７で更新プログラムを送信する前にバッテリ６０への電力供給がありと判定した場合は、開始要求として第３書換要求を送信する。逆に、ゲートウェイ２０は、ステップＳ１４で第３書換要求を送信したものの、ステップＳ１７で更新プログラムを送信する前に、バッテリ６０への電力供給がなしと判定した場合は、開始要求として第１書換要求を送信する。
【００５５】
これによって、ゲートウェイ２０は、制御装置１０に送信する開始要求を、バッテリ６０に対する電力供給の状態に確実に対応したものとすることができる。つまり、車載装置は、書込電圧を第３書込電圧として更新プログラムを書き込む際に、確実にバッテリ６０への電力の供給がなされている状況で、更新プログラムの書き込みを行うことができる。しかしながら、本開示は、これに限定されない。
【００５６】
次に、図４を用いて、制御装置１０の処理動作、つまり、プログラムを書き換える対象の制御装置１０の処理動作に関して説明する。制御装置１０は、ゲートウェイ２０から送信された開始要求を受信すると、図４のフローチャートに示す処理を開始する。
【００５７】
ステップＳ２０では、プログラム書き換え可能状態であるか否かを判定する。制御装置１０は、例えば書き換え対象となる不揮発性メモリ１２を何らかの処理のために使用している場合、プログラム書き換えが可能でない状態と判定する。一方、制御装置１０は、例えば書き換え対象となる不揮発性メモリ１２を使用していない場合、プログラム書き換えが可能状態と判定する。制御装置１０は、プログラム書き換え可能状態であると判定した場合、ステップＳ２１へ進み、プログラム書き換え可能でない状態と判定した場合、図４の処理を終了する。
【００５８】
ステップＳ２１では、ゲートウェイ２０に書換許可応答を送信する。制御装置１０は、ゲートウェイ２０に対して書換許可応答を送信することで、更新プログラムの送信を要求する。
【００５９】
ステップＳ２２では、書換要求が第１書換要求であるか否かを判定する。制御装置１０は、第１モードでプログラムの書き換えを行うか、第３モードでプログラムの書き換えを行うかを判定するために、書換要求が第１書換要求であるか否かを判定する。制御装置１０は、書換要求が第１書換要求であると判定した場合はステップＳ２３へ進み、書換要求が第１書換要求であると判定しなかった場合はステップＳ２４へ進む。
【００６０】
ステップＳ２３では、第１書込モードでプログラムの書き換えを行う（第１書換部）。制御装置１０は、書込電圧を第１書込電圧として更新プログラムを書き込みなどして、不揮発性メモリ１２に記憶されているプログラムの書き換えを行う。つまり、制御装置１０は、センター２００から更新プログラムへの書き換えの要求があり、バッテリ６０に電力が供給されていない場合、書込電圧を第１書込電圧として更新プログラムを書き込む、と言える。
【００６１】
一方、ステップＳ２４では、第３書込モードでプログラムの書き換えを行う（第３書換部）。制御装置１０は、書込電圧を第３書込電圧として更新プログラムを書き込みなどして、不揮発性メモリ１２に記憶されているプログラムの書き換えを行う。つまり、制御装置１０は、センター２００から更新プログラムへの書き換えの要求があり、バッテリ６０に電力が供給されている場合、書込電圧を第３書込電圧として更新プログラムを書き込むことで、更新プログラムに書き換える、と言える。
【００６２】
上記のように、第１書込電圧は、第３書込電圧よりも低電圧である。よって、制御装置１０は、バッテリ６０に電力が供給されていない場合、バッテリ６０に電力が供給されている場合よりも、書込電圧を低電圧として更新プログラムを不揮発性メモリ１２に書き込むことで、プログラムを更新プログラムに書き換える。なお、第１書込モード及び第３書込モード時の処理に関しては、後程詳しく説明する。
【００６３】
ステップＳ２５では、書込モードを記憶する。制御装置１０は、第２書込モードでプログラムの書き換えを行うか否かを判定するために、実行した書込モードを不揮発性メモリ１２に記憶する。
【００６４】
次に、図５を用いて、制御装置１０のシャットダウン時の書換処理に関して説明する。制御装置１０は、イグニッションスイッチ７０がオンからオフに切り換わると、図５のフローチャートに示す処理を開始する。つまり、図５は、制御装置１０のシャットダウン処理時に行なわれる書換処理を示すフローチャートである。なお、バッテリ６０は、イグニッションスイッチ７０がオンの場合、エンジン４０の動力を利用してオルタネータ５０が発電し、オルタネータ５０から電力供給がなされる。よって、イグニッションスイッチ７０がオンからオフに切り換わった場合、バッテリ６０は、電力供給が行われた後の状態とみなすことができる。
【００６５】
ステップＳ３０では、前回の書込モードが第１書込モードであったか否かを判定する。制御装置１０は、不揮発性メモリ１２を確認して、前回の書込モードが第１書込モードであったか否かを判定する。そして、制御装置１０は、前回の書込モードが第１書込モードであったと判定した場合はステップＳ３１へ進み、前回の書込モードが第１書込モードであったと判定しなかった場合は図５の処理を終了する。
【００６６】
ステップＳ３１では、第２書込モードでプログラムの書き換えを行う（第２書換部）。制御装置１０は、書込電圧を第２書込電圧として更新プログラムを書き込みなどして、不揮発性メモリ１２に記憶されているプログラムの書き換えを行う。第２書込モードは、書込電圧を第２書込電圧として、書き込み対象のメモリセルアレイ１２ｂに対して書き込みを行うモードである。
【００６７】
つまり、制御装置１０は、バッテリ６０に電力が供給された後であり、イグニッションスイッチ７０がオフとなり、バッテリ６０から車載装置への電力供給が停止されるまでの間に更新プログラムを書き込む、と言える。これによって、車載装置は、制御装置１０が不揮発性メモリ１２のプログラムを実行していない時に、そのプログラムを書き換えることができる。これは、例えば、対象の制御装置１０がエンジン４０を制御するものである場合に好適である。
【００６８】
また、上記のように、第２書込電圧は、第１書込電圧よりも高電圧である。よって、制御装置１０は、第１書込モードで更新プログラムへの書き換えを実施した場合、バッテリ６０に電力が供給された後に、第２書込電圧として、第１書込モード時と同じ更新プログラムを不揮発性メモリ１２に書き込むことで、更新プログラムに書き換える。このように、制御装置１０は、バッテリ６０への電力供給が行われ、且つ、前回のプログラム書き換えが第１書込モードで行われた場合にのみ、第２書込モードで再書き込みを行う。
【００６９】
制御装置１０は、第２書込モードで更新プログラムを書き込む場合、第１書込モードで更新プログラムを書き込んだ不揮発性メモリ１２における領域と同じ領域に、更新プログラムを書き込むと好ましい。これによって、制御装置１０は、不揮発性メモリ１２におけるプログラムを書き込む領域が増加することを抑制できる。
【００７０】
しかしながら、本開示は、これに限定されず、第２書込モード時において、第１書込モードで更新プログラムを書き込んだ不揮発性メモリ１２における領域と異なる領域に更新プログラムを書き込んでもよい。これによっても、本開示は、プログラムの保持期間を確保しつつ、バッテリの電力消費を抑制することができるという、目的を達成することができる。
【００７１】
上記のように、制御装置１０は、第２書込モード時、ゲートウェイ２０からの要求ではなく、第１書込モードの後で、バッテリ６０への電力供給が行われたことをトリガとして、プログラムの書き換えを実施する。その一例として、本実施形態では、イグニッションスイッチ７０がオンからオフに切り替わったことで、第２書込モードでの書き込みを実施する例を採用した。
【００７２】
しかしながら、本開示は、これに限定されない。制御装置１０は、第１書込モードの後で、バッテリに電力が供給されている間に、第２書込モードで更新プログラムを書き込むものであってもよい（第２書換部）。
【００７３】
これによって、制御装置１０は、一旦バッテリ６０への電力が供給された後に、バッテリ６０への電力の供給が停止された状況で、更新プログラムを書き込む場合よりも、バッテリ６０上がりを抑制することができる。つまり、制御装置１０は、バッテリ６０への電力が供給されていない場合に、高電圧で更新プログラムを書き込む場合よりも、バッテリ上がりを抑制することができる。これは、例えば、対象の制御装置１０が電気自動車に搭載されている場合や、エンジン４０が動作中にプログラムの書き換えが可能なものである場合に好適である。
【００７４】
次に、図６を用いて、制御装置１０の第１書込モード時の処理動作に関して説明する。制御装置１０は、ステップＳ２２でＹＥＳ判定すると、図６のフローチャートに示す処理を開始する。つまり、制御装置１０は、バッテリ６０への電力供給がないと判断されたことでゲートウェイ２０から送信された第１書換要求を受信した場合、図６のフローチャートに示す処理を開始する。
【００７５】
ステップＳ４０では、書込電圧を第１書込電圧に設定する。制御部１２ａは、第１書込モードで更新プログラムを書き込むために、書込電圧を第１書込電圧に設定する。
【００７６】
ステップＳ４１では、書き込み対象のメモリセルアレイ１２ｂのプログラムを消去する。一般的に、例えばフラッシュメモリなどの不揮発性メモリ１２は、１から０の書き込みのみ可能なため、書き込みの事前に一度格納されているデータを消去する必要がある。よって、制御部１２ａは、更新プログラムを書き込む前に、書き込み対象のメモリセルアレイ１２ｂのプログラムを消去する。
【００７７】
ステップＳ４２では、更新プログラムを書込データとして制御部１２ａに入力する。例えば、マイコン１１のＣＰＵは、通信回路１４を介して受信した更新プログラムを制御部１２ａに入力する。
【００７８】
ステップＳ４３では、書込データに応じたパルスをメモリセル１２ｃに印加する。制御部１２ａは、各メモリセルアレイ１２ｂへ書き込みを行う場合、入力された書込データと、設定された書込電圧に応じて、書き込み対象のメモリセルアレイ１２ｂ（メモリセル１２ｃ）に対して書き込みのためのパルスを印加する。
【００７９】
ステップＳ４４では、メモリセル１２ｃのＶｔｈが狙い値を超えたか否かを判定する（ベリファイ）。制御部１２ａは、メモリセル１２ｃのＶｔｈが狙い値を超えたと判定していない場合は、書込データの書き込みが完了していないとみなしてステップＳ４３へ戻る。また、制御部１２ａは、メモリセル１２ｃのＶｔｈが狙い値を超えたと判定した場合は、書込データの書き込みが完了したとみなして図６の処理を終了する。
【００８０】
このように、制御部１２ａは、書き込みのためのパルス印加とベリファイを繰り返して、徐々に所望のＶｔｈに近づけることで、書込データをメモリセルアレイ１２ｂに書き込む。よって、本開示の車載装置は、車両１００が駐車している状況であっても、不揮発性メモリ１２に記憶されているプログラムを更新プログラムに書き換えることができる。
【００８１】
次に、図７を用いて、制御装置１０の第２書込モード時の処理動作に関して説明する。制御装置１０は、ステップＳ３０でＹＥＳ判定すると、図７のフローチャートに示す処理を開始する。
【００８２】
ステップＳ５０では、書込電圧を第２書込電圧に設定する。制御部１２ａは、第２書込モードで更新プログラムを書き込むために、書込電圧を第２書込電圧に設定する。
【００８３】
ステップＳ５１では、書き込み対象のメモリセルアレイ１２ｂの更新プログラムを揮発性メモリ１３に保存する。例えばマイコン１１のＣＰＵは、第１書込モードで書き込まれた更新プログラムを、書込電圧を高電圧として、再度不揮発性メモリ書き込むために、書き込み対象のメモリセルアレイ１２ｂの更新プログラムを揮発性メモリ１３に保存する。この更新プログラムは、ステップＳ５３、Ｓ５４で不揮発性メモリ１２に書き込まれると、揮発性メモリ１３に記憶させておく必要がない。よって、マイコン１１のＣＰＵは、更新プログラムを揮発性メモリ１３に一時的に保存する、と言える。
【００８４】
ステップＳ５２では、更新プログラムを書込データとして制御部１２ａに入力する。例えば、マイコン１１のＣＰＵは、揮発性メモリ１３に保存した更新データを書込データとして制御部１２ａに入力する。
【００８５】
ステップＳ５３、Ｓ５４は、ステップＳ４３、Ｓ４４と同様であるため、ステップＳ４３、Ｓ４４を参照することができる。
【００８６】
以上のように、第２書込モードは、既に不揮発性メモリ１２に更新プログラムが書き込まれている状態で開始される。このため、制御部１２ａは、同じ書込データを、書込電圧を変えて再書き込みする。
【００８７】
第１書込モードで書き込んだ場合、メモリセル１２ｃのＶｔｈ分布は、図９に示すようになる。これに対して、第２書込モードで書き込んだ場合、メモリセル１２ｃのＶｔｈ分布は、図１０に示すようになる。図１０には、第１書込モード時のＶｔｈと第２書込モード時のＶｔｈとを比較するために、第１書込モード時のＶｔｈ分布を破線で示している。
【００８８】
次に、図８を用いて、制御装置１０の第３書込モード時の処理動作に関して説明する。制御装置１０は、ステップＳ２２でＮＯ判定すると、図８のフローチャートに示す処理を開始する。つまり、制御装置１０は、バッテリ６０への電力供給があると判断されたことでゲートウェイ２０から送信された第３書換要求を受信した場合、図８のフローチャートに示す処理を開始する。
【００８９】
ステップＳ６０では、書込電圧を第３書込電圧に設定する。制御部１２ａは、第３書込モードで更新プログラムを書き込むために、書込電圧を第３書込電圧に設定する。なお、ステップＳ６１〜Ｓ６４は、ステップＳ４１〜Ｓ４４と同様であるため、ステップＳ４１〜Ｓ４４を参照することができる。
【００９０】
このように、本開示の車載装置は、バッテリ６０への電力供給がなされている状況で、プログラムを更新プログラムに書き換える場合、書込電圧として第３書込電圧を採用する。つまり、本開示の車載装置は、バッテリ上がりの虞が少ない状況では、書込電圧を第３書込電圧として更新プログラムを不揮発性メモリ１２に書き込むため、不揮発性メモリ１２に記憶されたプログラムの保持期間を十分に確保できる。なお、第３書込モードでのプログラムの書き換えは、通常時の書き換えと言うことができる。
【００９１】
以上のように、車載装置は、更新プログラムへの書き換えの要求があり、バッテリ６０に電力が供給されていない場合、書込電圧を第１書込電圧、すなわち第２書込電圧よりも低電圧として更新プログラムを不揮発性メモリに書き込む。これによって、車載装置は、バッテリ６０に電力が供給されていない場合において、プログラムの書き換えによるバッテリ６０の電力消費を抑えることができる。よって、車載装置は、プログラムを書き換えた後に車両１００が放置されたとしても、バッテリ上がりを抑制できる。
【００９２】
しかしながら、車載装置は、第１書込電圧で更新プログラムを書き込んだままでは、書き込まれた更新プログラムの保持期間が、第２書込電圧や第３書込電圧で書き込んだ場合よりも短い。
【００９３】
そこで、本開示は、第１書込電圧でプログラムの書き換えを実施した場合、それ以降にバッテリ６０に電力が供給された後に、第１書込電圧として書き込んだ更新プログラムと同じ更新プログラムを、書込電圧を第２書込電圧として不揮発性メモリ１２に書き込む。つまり、車載装置は、バッテリ６０の充電後に、一般的な０書き込み後のＶｔｈとなるように同じ更新プログラムの書き込みを再度行う。これによって、車載装置、更新プログラムの保持期間を確保することができる。すなわち、車載装置は、更新プログラムに書き換えられた、不揮発性メモリ１２に記憶されているプログラムの保持期間を確保することができる。このように、車載装置は、プログラムの保持期間を確保しつつ、バッテリ上がりを抑制できる。
【００９４】
さらに、車載装置は、書込電圧を第２書込電圧として書き込む場合、バッテリ６０に電力が供給された後であるため、書き込みによってバッテリ６０の電力を消費したとしても、バッテリ上がりの可能性を低減することができる。
【００９５】
なお、本実施形態では、センター２００から更新プログラムへの書換要求があり、バッテリ６０に電力が供給されていない場合に、書込電圧を第１書込電圧として更新プログラムを不揮発性メモリ１２に書き込む例を採用した。しかしながら、本開示は、これに限定されない。車載装置は、センター２００から更新プログラムへの書換要求があり、バッテリ６０に電力が供給されてなく、且つ、車両１００が駐車状態の場合に、書込電圧を第１書込電圧として更新プログラムを不揮発性メモリ１２に書き込んでもよい（第１書換部）。
【００９６】
車両１００は、燃費の節約や排出ガスの低減などを目的として、信号待ちの間などにエンジンを停止させる機能を有しているものがある。この場合、車両１００は、信号待ちの状態から信号が変わって運転手が発進操作をすることなどでエンジン４０を再始動する。このように、車両１００は、比較的短時間でエンジン４０を再始動することになる。
【００９７】
バッテリ６０は、このようにエンジン４０が停止している間、電力の供給が停止される。しかしながら、エンジン４０は、比較的短時間で再始動される。このため、バッテリ６０への電力供給も比較的短時間で再開される。
【００９８】
制御装置１０は、単にバッテリ６０に電力が供給されていないことで、第１書込電圧として更新プログラムを書き込んだ場合、比較的短時間でバッテリ６０への電力供給が再開される状況でも、第１書込電圧として更新プログラムを書き込むことになる。つまり、制御装置１０は、バッテリ上がりの可能性が低い状況であっても書込電圧を第１書込電圧にすることになる。
【００９９】
これに対して、制御装置１０は、バッテリに電力が供給されていない場合であり、且つ、車両１００が駐車状態の場合に、書込電圧を第１書込電圧にすることで、バッテリ上がりの可能性が低い状況で書込電圧を第１書込電圧にすることを抑制できる。なお、制御装置１０は、イグニッションスイッチ７０や他の制御装置からの信号に基づいて、駐車状態であるか否かを判定することができる。制御装置１０は、例えば、イグニッションスイッチ７０がオフや、ギヤがパーキングレンジなどの場合に、車両１００が駐車状態と判定する。
【０１００】
以上、本開示の好ましい実施形態について説明した。しかしながら、本開示は、上記実施形態に何ら制限されることはなく、本開示の趣旨を逸脱しない範囲において、種々の変形が可能である。以下に、本開示のその他の形態として、変形例１、変形例２に関して説明する。
【０１０１】
（変形例１）
まず、図１１を用いて、変形例１における車載装置に関して説明する。本変形例では、上記実施形態と同様の箇所が多いため、上記実施形態と異なる点を中心に説明する。変形例１の車載装置は、主に、制御装置１０の処理動作が異なる。なお、本変形例では、便宜的に、上記実施形態と同じ符号を用いる。また、図１１における図４と同じ処理に関しては、図４と同じステップ番号を用いる。
【０１０２】
上記のように、車両１００は、ゲートウェイ２０が開始要求を送信した後に、バッテリ６０への電力供給状態が切り換わることも起こり得る。そこで、制御装置１０は、ステップＳ２２において、書換要求が第１書換要求であると判定しなかった場合はステップＳ２６へ進む。ステップＳ２６では、ステップＳ１３でゲートウェイ２０が行った判定と同様に、バッテリ６０への電力供給があるか否かを判定する（確認部）。制御装置１０は、ゲートウェイ２０と同様に、バッテリ６０に対する電力供給の有無を判定し、バッテリ６０への電力供給ありと判定した場合はステップＳ２４へ進み、バッテリ６０への電力供給なしと判定した場合はステップＳ２５へ進む。
【０１０３】
つまり、制御装置１０は、ステップＳ２４で更新プログラムの書き込みを実施する場合、更新プログラムを書き込む前に、再度、バッテリ６０に電力が供給されていることを確認してから、ステップＳ２４での更新プログラムの書き込みを許可する。一方、制御装置１０は、ステップＳ２４で更新プログラムの書き込みを実施する場合、更新プログラムを書き込む前に、バッテリ６０に電力が供給されていないと、第３書換要求を受信していたとしても、ステップＳ２３へ進むことになる。つまり、制御装置１０は、第３書換要求を受信していたとしても、更新プログラムを書き込む際にバッテリ６０に電力が供給されていなかった場合、書込モードを第３書込モードから第１書込モードに変更して、プログラムの書き換えを行う。なお、ここでの、ステップＳ２４で更新プログラムの書き込みを実施する場合とは、ステップＳ２２でＮＯ判定された場合、すなわち第３書換要求を受信している場合を示している。
【０１０４】
これによって、車載装置は、書込電圧を第３書込電圧として更新プログラムを書き込む際に、確実にバッテリ６０への電力の供給がなされている状況で、更新プログラムの書き込みを行うことができる。当然ではあるが、変形例１の車載装置は、上記実施形態と同様の効果を奏することができる。
【０１０５】
（変形例２）
まず、図１２を用いて、変形例２における車載装置に関して説明する。本変形例では、上記実施形態と同様の箇所が多いため、上記実施形態と異なる点を中心に説明する。変形例２の車載装置は、主に、搭載される車両１００ａが異なる。つまり、本変形例の車載装置は、電気自動車である車両１００ａに搭載される。なお、図１２において、図１と同じ符号の構成要素は、図１と同様である。
【０１０６】
車両１００ａは、家屋、ディーラ、充電所などに設けられた車外充電器３００と電気的に接続可能に構成されている。また、車両１００ａは、車外充電器３００と電気的に接続された車載充電器８０を備えている。車載充電器８０は、バッテリ６０に電力を供給し、バッテリ６０を充電することができる。
【０１０７】
本変形例の車載装置は、制御装置１０とゲートウェイ２０ａを含んでいる。制御装置１０は、上記実施形態と同様である。一方、ゲートウェイ２０ａは、ゲートウェイ２０と異なり、車載充電器８０からの信号に基づいて、バッテリ６０へ電力が供給されているか否かを判定する。
【０１０８】
このように構成された変形例２の車載装置は、上記実施形態と同様の効果を奏することができる。つまり、車載装置は、電気自動車に搭載されていた場合であっても、上記実施形態と同様の効果を奏することができる。
【符号の説明】
【０１０９】
１０…制御装置、１１…マイコン、１２…不揮発性メモリ、１３…揮発性メモリ、１４…通信回路、１５…電源回路、２０，２０ａ…ゲートウェイ、２１…記憶部、３０…通信機、４０…エンジン、５０…オルタネータ、６０…バッテリ、７０…イグニッションスイッチ、８０…車載充電器、１００，１００ａ…車両、２００…センター、３００…車外充電器
【図１】
2019185398.tif 000003
【図２】
2019185398.tif 000004
【図３】
2019185398.tif 000005
【図４】
2019185398.tif 000006
【図５】
2019185398.tif 000007
【図６】
2019185398.tif 000008
【図７】
2019185398.tif 000009
【図８】
2019185398.tif 000010
【図９】
2019185398.tif 000011
【図１０】
2019185398.tif 000012
【図１１】
2019185398.tif 000013
【図１２】
2019185398.tif 000014