(57)【要約】【課題】外部装置とメインマイコン間のデータ通信量を抑えつつサブマイコン内のプログラムを更新する。【解決手段】電子機器は、第１のマイコンと、第２のマイコンと、外部装置との通信を行う通信部を備える。第１のマイコンは、第１プログラムを格納する第１格納部と、第１格納部に格納されている第１プログラムを用いて第１処理を実行する第１制御部を有する。第２のマイコンは、第２プログラムを格納する第２格納部と、第２格納部に格納されている第２プログラムを用いて第２処理を実行する第２制御部を有する。第２制御部は、通信部を用いて外部装置から、第１のマイコンが有する第１格納部に格納されている第１プログラムを更新するための差分データを取得し、取得された差分データと第２プログラムを用いて、第１のマイコンが有する第１格納部に格納されている第１プログラムを更新する。【選択図】図１
2019003625.tif 000002
【特許請求の範囲】
【請求項１】
第１プログラムを格納する第１格納部と、
前記第１格納部に格納されている第１プログラムを用いて第１処理を実行する第１制御部と、
を有する第１のマイクロコンピュータと、
第２プログラムを格納する第２格納部と、
前記第２格納部に格納されている第２プログラムを用いて第２処理を実行する第２制御部と、
を有する第２のマイクロコンピュータと、
外部装置との通信を行う通信部と、
を備え、
前記第２のマイクロコンピュータが有する前記第２制御部は、
前記通信部を用いて前記外部装置から、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新するための差分データを取得し、
前記取得された差分データと、前記第２格納部に格納されている第２プログラムを用いて、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新する、
電子機器。
【請求項２】
複数の前記第１のマイクロコンピュータを有し、
前記差分データには、前記複数の第１のマイクロコンピュータのうち更新対象となる第１のマイクロコンピュータを示す情報が含まれており、
前記第２のマイクロコンピュータが有する前記第２制御部は、
前記通信部を用いて前記差分データを取得すると、前記情報に基づいて前記更新対象となる第１のマイクロコンピュータを特定し、
前記特定された第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新する、
請求項１に記載の電子機器。
【請求項３】
前記第２のマイクロコンピュータは、
前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを格納する第３格納部を備え、
前記第２のマイクロコンピュータが有する前記第２制御部は、
前記通信部を用いて取得した前記差分データを用いて、前記第３格納部に格納されている前記第１プログラムを更新し、
前記第３格納部に格納されている、前記更新された第１プログラムを、前記第１のマイクロコンピュータに送信し、
前記第１のマイクロコンピュータが有する前記第１制御部は、
前記第２のマイクロコンピュータより送信された、前記更新された第１プログラムを、前記第１格納部に格納する、
請求項１又は請求項２に記載の電子機器。
【請求項４】
第１プログラムを格納する第１格納部、及び前記第１格納部に格納されている第１プログラムを用いて第１処理を実行する第１制御部を有する第１のマイクロコンピュータと、第２プログラムを格納する第２格納部、及び前記第２格納部に格納されている第２プログラムを用いて第２処理を実行する第２制御部を有する第２のマイクロコンピュータと、を備える電子機器で、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新するプログラム更新方法であって、
前記第２のマイクロコンピュータが有する前記第２制御部が、所定の外部装置から、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新するための差分データを取得する取得ステップと、
前記第２のマイクロコンピュータが有する前記第２制御部が、前記取得された差分データと、前記第２格納部に格納されている第２プログラムを用いて、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新する更新ステップと、
を含む、
プログラム更新方法。
【請求項５】
前記電子機器が、複数の前記第１のマイクロコンピュータを有したものであり、且つ、前記差分データに、前記複数の第１のマイクロコンピュータのうち更新対象となる第１のマイクロコンピュータを示す情報が含まれており、前記電子機器で、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新する、請求項４に記載のプログラム更新方法であって、
前記第２のマイクロコンピュータが有する前記第２制御部が、前記取得ステップにて前記差分データを取得すると、前記情報に基づいて前記更新対象となる第１のマイクロコンピュータを特定する特定ステップ
を含み、
前記更新ステップにて、前記特定ステップで特定された第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新する、
プログラム更新方法。
【請求項６】
前記第２のマイクロコンピュータが、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを格納する第３格納部を備える前記電子機器で、前記第１のマイクロコンピュータが有する前記第１格納部に格納されている第１プログラムを更新する、請求項４又は請求項５に記載のプログラム更新方法であって、
前記更新ステップにて、
前記第２のマイクロコンピュータが有する前記第２制御部が、
前記取得ステップにて取得した前記差分データを用いて、前記第３格納部に格納されている前記第１プログラムを更新し、
前記第３格納部に格納されている、前記更新された第１プログラムを、前記第１のマイクロコンピュータに送信し、前記送信した第１プログラムを、前記第１のマイクロコンピュータが有する前記第１制御部によって前記第１格納部に格納させる、
プログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器及びプログラム更新方法に関する。
【背景技術】
【０００２】
メインマイコンとサブマイコンを搭載した電子機器が知られている。この種の電子機器の具体的構成は、例えば特許文献１に記載されている。
【０００３】
特許文献１に記載の電子機器では、書換えツール（外部装置）を用いてサブマイコンの書き換えが行われる。具体的には、書換えツールからメインマイコンに、サブマイコンのリプログラム用データが転送される。メインマイコンは、転送されたリプログラム用データをサブマイコンに転送する。サブマイコンは、転送されたリプログラム用データを用いてサブマイコン内のプログラムを書き換える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−９９５２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１において、リプログラム用データは、サブマイコン内のプログラムを書き換える（全更新する）ためのデータであるため、サイズが大きい。メインマイコンは、サイズの大きいリプログラム用データを書換えツールから取得する必要がある。そのため、特許文献１では、書換えツールとメインマイコン間のデータ通信量が多いという問題が指摘される。
【０００６】
本発明は上記の事情に鑑みてなされたものであり、その目的とするところは、外部装置とメインマイコン間のデータ通信量を抑えつつサブマイコン内のプログラムを更新することが可能な電子機器及びプログラム更新方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係る電子機器は、第１のマイクロコンピュータと、第２のマイクロコンピュータと、外部装置との通信を行う通信部と、を備える。第１のマイクロコンピュータは、第１プログラムを格納する第１格納部と、第１格納部に格納されている第１プログラムを用いて第１処理を実行する第１制御部と、を有する。第２のマイクロコンピュータは、第２プログラムを格納する第２格納部と、第２格納部に格納されている第２プログラムを用いて第２処理を実行する第２制御部と、を有する。第２のマイクロコンピュータが有する第２制御部は、通信部を用いて外部装置から、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新するための差分データを取得し、取得された差分データと、第２格納部に格納されている第２プログラムを用いて、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新する。
【０００８】
また、本発明の一実施形態に係る電子機器は、複数の第１のマイクロコンピュータを有する構成としてもよい。この場合、差分データには、例えば、複数の第１のマイクロコンピュータのうち更新対象となる第１のマイクロコンピュータを示す情報が含まれている。そして、第２のマイクロコンピュータが有する第２制御部は、通信部を用いて差分データを取得すると、上記の情報に基づいて更新対象となる第１のマイクロコンピュータを特定し、特定された第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新する。
【０００９】
また、本発明の一実施形態において、第２のマイクロコンピュータは、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを格納する第３格納部を備える構成としてもよい。また、第２のマイクロコンピュータが有する第２制御部は、通信部を用いて取得した差分データを用いて、第３格納部に格納されている第１プログラムを更新し、上記の更新された第１プログラムを、第１のマイクロコンピュータに送信する構成としてもよい。この場合、第１のマイクロコンピュータが有する第１制御部は、第２のマイクロコンピュータより送信された、上記の更新された第１プログラムを、第１格納部に格納する。
【００１０】
本発明の一実施形態に係るプログラム更新方法は、第１プログラムを格納する第１格納部、及び第１格納部に格納されている第１プログラムを用いて第１処理を実行する第１制御部を有する第１のマイクロコンピュータと、第２プログラムを格納する第２格納部、及び第２格納部に格納されている第２プログラムを用いて第２処理を実行する第２制御部を有する第２のマイクロコンピュータと、を備える電子機器で、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新する方法であり、第２のマイクロコンピュータが有する第２制御部が、所定の外部装置から、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新するための差分データを取得する取得ステップと、第２のマイクロコンピュータが有する第２制御部が、取得された差分データと、第２格納部に格納されている第２プログラムを用いて、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新する更新ステップとを含む。
【００１１】
上記のプログラム更新方法は、電子機器が、複数の第１のマイクロコンピュータを有したものであり、且つ、差分データに、複数の第１のマイクロコンピュータのうち更新対象となる第１のマイクロコンピュータを示す情報が含まれている場合に、電子機器で、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新する方法であってもよい。この場合に、プログラム更新方法は、第２のマイクロコンピュータが有する第２制御部が、取得ステップにて差分データを取得すると、上記の情報に基づいて更新対象となる第１のマイクロコンピュータを特定する特定ステップを含み、更新ステップにて、特定ステップで特定された第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新するものであってもよい。
【００１２】
上記のプログラム更新方法は、第２のマイクロコンピュータが、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを格納する第３格納部を備える電子機器で、第１のマイクロコンピュータが有する第１格納部に格納されている第１プログラムを更新する方法であってもよい。この場合に、プログラム更新方法は、更新ステップにて、第２のマイクロコンピュータが有する第２制御部が、取得ステップにて取得した差分データを用いて、第３格納部に格納されている第１プログラムを更新し、上記の更新された第１プログラムを、第１のマイクロコンピュータに送信し、送信した第１プログラムを、第１のマイクロコンピュータが有する第１制御部によって第１格納部に格納させるものであってもよい。
【発明の効果】
【００１３】
本発明の一実施形態によれば、外部装置とメインマイコン間のデータ通信量を抑えつつサブマイコン内のプログラムを更新することが可能な電子機器及びプログラム更新方法が提供される。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態に係るプログラム更新システムの構成を示すブロック図である。
【図２】本発明の一実施形態に係るプログラム更新システムにおいて実行されるプログラム配信サーバとメインマイコン間の処理を示すシーケンス図である。
【図３】本発明の一実施形態に係るプログラム更新システムにおいて実行されるメインマイコンとサブマイコン間の処理を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について図面を参照しながら説明する。
【００１６】
図１は、本発明の一実施形態に係るプログラム更新システム１の構成を示すブロック図である。図１に示されるように、本実施形態に係るプログラム更新システム１は、プログラム配信サーバ１０（外部装置）及び電子機器２０を備えている。
【００１７】
電子機器２０は、例えば、道路を走行する車両に搭載された車載器であり、プログラム配信サーバ１０と無線通信可能に接続されている。なお、図１では、本実施形態の説明に必要な主たる構成要素を図示しており、サーバや電子機器等の装置として一般的な構成要素である筐体など、一部の構成要素については、その図示を適宜省略している。
【００１８】
電子機器２０は、車載器に限らず、例えば、スマートフォン、フィーチャフォン、ＰＨＳ（Personal Handy phone System）、タブレット端末、ノートＰＣ、ＰＤＡ（Personal Digital Assistant）、ＰＮＤ（Portable Navigation Device）、携帯ゲーム機等の携帯型端末であってもよい。
【００１９】
図１に示されるように、電子機器２０は、メインマイコン２１（第２のマイクロコンピュータ）、サブマイコン２２Ａ（第１のマイクロコンピュータ）、２２Ｂ（第１のマイクロコンピュータ）及び通信インタフェース２３を備えている。
【００２０】
メインマイコン２１は、リッチなＯＳ（Operating System）を搭載したマイクロコンピュータであり、電子機器２０全体の制御を統括して行う。
【００２１】
サブマイコン２２Ａ、２２Ｂは、夫々異なるＯＳであって、メインマイコン２１よりもプアなＯＳを搭載したマイクロコンピュータであり、電子機器２０内の特定の構成要素を制御する。一例として、サブマイコン２２Ａは電子機器２０の電源部を制御し、サブマイコン２２Ｂは電子機器２０のタッチパネルを制御する。メインマイコン２１とサブマイコン２２Ａ、２２Ｂは、シリアルバスを介して通信する。
【００２２】
なお、本実施形態では、サブマイコンを２つ搭載した構成例を示しているが、電子機器２０に搭載されるサブマイコンの数は２つに限らない。電子機器２０に搭載されるサブマイコンは、１つでもよく、また、３つ以上あってもよい。
【００２３】
電子機器２０は、通信インタフェース２３（通信部）に接続されたスマートフォンやタブレット端末等の通信機能を持つ情報処理端末又は車両内に搭載されたＴＣＵ（Telematics Communication Unit）を介してプログラム配信サーバ１０と無線通信する。通信インタフェース２３は、情報処理端末やＴＣＵ無しでの無線通信を可能とする無線通信インタフェースであってもよい。
【００２４】
図１に示されるように、メインマイコン２１は、メインＣＰＵ（Central Processing Unit）２１０（第２制御部）、フラッシュメモリ２１１（第２格納部）、ＲＡＭ（Random Access Memory）２１２及びストレージ２１３（第３格納部）を備えている。
【００２５】
フラッシュメモリ２１１には、メインマイコン２１を動作させるメインＯＳ２１１ａ（第２プログラム）が格納されている。なお、ＲＡＭ２１２及びストレージ２１３は、メインマイコン２１とは独立した別の構成要素であってもよい。
【００２６】
図１に示されるように、サブマイコン２２Ａは、サブＣＰＵ２２０Ａ（第１制御部）、フラッシュメモリ２２１Ａ（第１格納部）及びＲＡＭ２２２Ａを備えている。フラッシュメモリ２２１Ａには、サブマイコン２２Ａを動作させるサブＯＳ２２１ａＡ（第１プログラム）が格納されている。
【００２７】
サブマイコン２２Ｂもサブマイコン２２Ａと同じく、サブＣＰＵ２２０Ｂ（第１制御部）、フラッシュメモリ２２１Ｂ（第１格納部）、ＲＡＭ２２２Ｂを備えている。フラッシュメモリ２２１Ｂには、サブマイコン２２Ｂを動作させるサブＯＳ２２１ａＢ（第１プログラム）が格納されている。
【００２８】
なお、サブマイコン２２Ｂは、サブＯＳの更新（詳しくは後述）に関しては、サブマイコン２２Ａと同様に動作する。以下においては、説明の便宜上、サブマイコン２２Ｂの説明を、サブマイコン２２Ａの説明をもって適宜簡略又は省略する。
【００２９】
図１に示されるように、プログラム配信サーバ１０は、サーバＣＰＵ１１、ストレージ１２及び通信インタフェース１３を備えている。プログラム配信サーバ１０は、通信インタフェース１３を介して電子機器２０と無線通信する。
【００３０】
ストレージ１２には、プログラム配信サーバ１０を管理する事業者等によって作成された差分データが格納されている。差分データは、サブマイコン２２Ａや２２Ｂのフラッシュメモリに格納されているサブＯＳ２２１ａＡやサブＯＳ２２１ａＢを差分更新するためのバイナリデータである。以下、図２及び図３を用いてサブＯＳの差分更新について説明する。
【００３１】
《プログラム配信サーバ１０とメインマイコン２１間の処理》
図２は、プログラム配信サーバ１０とメインマイコン２１間の処理を示すシーケンス図である。
【００３２】
［図２の処理ステップＳ１１（管理情報の送信）］
メインマイコン２１のフラッシュメモリ２１１には、所定の管理情報２１１ｂが格納されている。管理情報２１１ｂは、サブＯＳ２２１ａＡ及び２２１ａＢを差分更新するために必要な情報であり、例えば「電子機器２０のＩＤ」、「電子機器２０の機種名」及び「各サブＯＳ（２２１ａＡ、ＯＳ２２１ａＢ）の現在のバージョン情報」を含む。以下、説明の便宜上、管理情報２１１ｂ内の「各サブＯＳの現在のバージョン情報」を「機器側バージョン情報」と記す。
【００３３】
「機器側バージョン情報」には、サブＯＳ２２１ａＡ及び２２１ａＢの種類を特定する情報が含まれる。メインマイコン２１（メインＣＰＵ２１０）は、フラッシュメモリ２１１に格納されている管理情報２１１ｂをプログラム配信サーバ１０に定期的に送信する。
【００３４】
［図２の処理ステップＳ１２（差分データの有無判定）］
プログラム配信サーバ１０（サーバＣＰＵ１１）は、処理ステップＳ１１にてメインマイコン２１より送信された管理情報２１１ｂを受信する。ストレージ１２には、サブＯＳを更新するための差分データが様々な機種向けに複数格納されている。
【００３５】
ストレージ１２には、データベースも格納されている。データベースには、ストレージ１２に現在格納されている各差分データを管理するためのレコードが登録されている。各差分データのレコードは、例えば「当該差分データによる更新対象のサブＯＳの種類」及び「当該差分データによる更新後のサブＯＳのバージョン情報」を持つフィールド群によって構成されており、ストレージ１２に格納されている当該差分データと関連付けられている。以下、説明の便宜上、「当該差分データによる更新後のサブＯＳのバージョン情報」を「更新後バージョン情報」と記す。
【００３６】
事業者等によって差分データがストレージ１２に追加や削除等される毎に、対応するレコードがデータベースに追加や削除等される。
【００３７】
サーバＣＰＵ１１は、メインマイコン２１より受信した管理情報２１１ｂを基にデータベースを検索する。具体的には、サーバＣＰＵ１１は、管理情報２１１ｂ内の「機器側バージョン情報」で特定されるサブＯＳの種類と一致する情報を持つレコードを検索し、検索されたレコード内の「更新後バージョン情報」と、管理情報２１１ｂ内の「機器側バージョン情報（但し、当該差分データによる更新対象のサブＯＳのバージョン情報）」とを比較する。
【００３８】
サーバＣＰＵ１１は、両者のバージョン情報が一致する場合、サブＯＳの更新が不要であると判定し、例えば更新不要の通知をメインマイコン２１に返す。これにより、メインマイコン２１（メインＣＰＵ２１０）は、サブＯＳ２２１ａＡ及び２２１ａＢの更新が不要であることを認識する。
【００３９】
［図２の処理ステップＳ１３（差分データの送信）］
これに対し、サーバＣＰＵ１１は、両者のバージョン情報が一致しない場合、サブＯＳの更新が必要であると判定し、例えば更新が必要であることを示す通知をメインマイコン２１に返すと共に、当該レコードと関連付けられた差分データをストレージ１２から読み出して、メインマイコン２１に送信する。
【００４０】
例えば、「更新後バージョン情報」がサブＯＳ２２１ａＡの「Ｖｅｒ１．１．１」を示し、管理情報２１１ｂ内のサブＯＳ２２１ａＡの「機器側バージョン情報」が「Ｖｅｒ１．１．０」を示す場合を考える。この場合、サーバＣＰＵ１１は、サブＯＳ２２１ａＡの更新が必要であると判定する。
【００４１】
なお、「更新後バージョン情報」で示されるバージョンと「機器側バージョン情報」で示されるバージョンが一致しているか否かという判定基準に代えて、「更新後バージョン情報」が「機器側バージョン情報」より新しいバージョンを示しているか否かを判定基準としても良い。
【００４２】
また、サーバＣＰＵ１１は、サブＯＳの更新が必要であると判定された場合に例えば更新が必要であることを示す通知をメインマイコン２１に返すと説明したが、このような通知をメインマイコン２１に返さなくても良い。この場合、メインマイコン２１は、例えば、サーバＣＰＵ１１からの差分データの受信に応答してサブＯＳの更新を開始するよう構成することができる。
【００４３】
［図２の処理ステップＳ１４（差分データの一時格納）］
本処理ステップＳ１４では、メインＣＰＵ２１０は、処理ステップＳ１３にてプログラム配信サーバ１０よりダウンロードした差分データをストレージ２１３に格納（一時格納）する。これにより、プログラム配信サーバ１０とメインマイコン２１間の処理が完了する。
【００４４】
《メインマイコン２１とサブマイコン間の処理》
図３は、メインマイコン２１とサブマイコン２２Ａ間の処理を示すシーケンス図である。なお、ここでは、図２の処理においてメインマイコン２１がサブＯＳ２２１ａＡの差分データをダウンロードしたものとして説明を行う。
【００４５】
［図３の処理ステップＳ２１（サブＯＳの更新）］
ストレージ２１３には、フラッシュメモリ２２１Ａ、２２１Ｂに現在格納されているものと同一バージョンのサブＯＳ２２１ａＡ、２２１ａＢが格納されている。また、ストレージ２１３には、プログラム配信サーバ１０よりダウンロードした差分データが格納されている。差分データのヘッダには、更新対象を示す情報が埋め込まれている。
【００４６】
メインＣＰＵ２１０は、ストレージ２１３に格納されている差分データのヘッダを参照して更新対象を特定し、特定された更新対象のサブＯＳと、当該差分データをＲＡＭ２１２に展開する。メインＣＰＵ２１０は、メインＯＳ２１１ａの差分更新ライブラリを用いて、ＲＡＭ２１２上でサブＯＳに対して差分データを適用する。これにより、サブＯＳが更新される。より具体的には、メインＣＰＵ２１０は、ストレージ２１３に格納されているサブＯＳ２２１ａＡの差分データのヘッダを参照することで更新対象のサブＯＳがサブＯＳ２２１ａＡであると特定し、ストレージ２１３に格納されているサブＯＳ２２１ａＡとサブＯＳ２２１ａＡの差分データをＲＡＭ２１２に展開する。メインＣＰＵ２１０は、メインＯＳ２１１ａの差分更新ライブラリを用いて、ＲＡＭ２１２上でサブＯＳ２２１ａＡに対して差分データを適用する。これにより、更新後のサブＯＳ２２１ａＡがＲＡＭ２１２に作成される。
【００４７】
一般に、差分更新機能等を提供するライブラリは、Linux（登録商標）やWindows（登録商標）等のリッチＯＳに対応するものが多く、独自に開発されたＯＳには対応していないことが多い。本実施形態では、サブＯＳ２２１ａＡ及び２２１ａＢには、例えば電子機器２０のメーカ側で独自に開発されたＯＳが採用されており、差分更新機能等を提供するライブラリが対応していない。
【００４８】
そこで、本実施形態に係る電子機器２０は、メインＯＳ２１１ａの差分更新ライブラリを利用してサブＯＳを更新するように構成されている。すなわち、サブＯＳ内に差分更新ライブラリを別途用意することなく、サブＯＳを更新することが可能となっている。差分更新ライブラリをメインマイコン２１に用意するだけでよいため、例えば差分更新ライブラリをメインマイコン２１と各サブマイコンに用意する場合と比べて、差分更新ライブラリのライセンス数を削減することができる。また、サブＯＳが差分更新機能等を提供するライブラリが対応しているＯＳである場合でも、本実施形態のようにメインＯＳの差分更新ライブラリを利用してサブＯＳを更新するように構成すると、差分更新ライブラリをメインマイコン２１のみに用意することで、全てのサブＯＳの更新が可能となる。
【００４９】
上述したように、差分データはバイナリデータである。そのため、メインＣＰＵ２１０は、更新対象のサブＯＳに依存せずサブＯＳを更新することができる。
【００５０】
［図３の処理ステップＳ２２（更新後のサブＯＳの格納）］
メインＣＰＵ２１０は、処理ステップＳ２１にて更新されたサブＯＳをストレージ２１３に格納する。なお、ストレージ２１３に格納されている旧バージョンのサブＯＳは、上書き消去されてもよく、また、例えば所定の世代数分は消去されずに残されてもよい。
【００５１】
［図３の処理ステップＳ２３（管理情報の更新）］
差分データのヘッダには、更新後のサブＯＳのバージョン情報が埋め込まれている。メインＣＰＵ２１０は、差分データのヘッダを参照して、管理情報２１１ｂ内の「機器側バージョン情報」を更新する。一例として、更新前のサブＯＳ２２１ａＡのバージョンがＶｅｒ１．１．０である場合を考える。この場合、メインＣＰＵ２１０は、差分データのヘッダに埋め込まれているバージョン情報（例えばＶｅｒ１．１．１）を参照して、管理情報２１１ｂ内の「Ｖｅｒ１．１．０」を「Ｖｅｒ１．１．１」に更新する。
【００５２】
［図３の処理ステップＳ２４（更新後のサブＯＳの送信）］
メインＣＰＵ２１０は、処理ステップＳ２２にてストレージ２１３に格納された更新後のサブＯＳを、処理ステップＳ２１にて特定された更新対象のサブＯＳを有するサブマイコンに送信する。本実施形態では、メインＣＰＵ２１０は、更新後のサブＯＳ２２１ａＡをサブマイコン２２Ａに送信する。なお、この送信データには、例えば、送信された更新後のサブＯＳ２２１ａＡで、フラッシュメモリ２２１Ａに格納されている旧バージョンのサブＯＳ２２１ａＡを更新するよう、サブマイコン２２Ａに指示するコマンドが含まれていてもよい。
【００５３】
［図３の処理ステップＳ２５（サブＯＳの更新）］
サブＣＰＵ２２０Ａは、処理ステップＳ２４にて送信された、新しいバージョンのサブＯＳ２２１ａＡにより、フラッシュメモリ２２１Ａに格納されている旧バージョンのサブＯＳ２２１ａＡを更新する。
【００５４】
このように、本実施形態では、差分データを用いて電子機器２０内のサブＯＳを更新する構成が採用されている。そのため、全更新データを用いてサブＯＳを更新する構成と比べて、更新に必要なデータのダウンロード時間が短縮すると共に、更新時に必要なパケット量が削減される。サブマイコンの搭載数が多い電子機器ほど、上記構成を採用したことによる、更新に必要なデータのダウンロード時間が短縮する効果及び更新時に必要なパケット量が削減される効果が高い。
【００５５】
また、本実施形態では、メインマイコン２１（ストレージ２１３）は、サブマイコン（フラッシュメモリ２２１Ａ、２２１Ｂ）と同一バージョンのサブＯＳを保持している。そのため、メインマイコン２１では、サブＯＳを更新するにあたり、サブマイコンからサブＯＳを読み出す必要がない。また、メインマイコン２１に保持されているサブＯＳは、サブマイコンに保持されているサブＯＳのバックアップとしての役割も果たす。
【００５６】
なお、上記においては、更新対象が１つ（サブＯＳ２２１ａＡのみ）の場合を例示したが、サブＯＳ２２１ａＡ、２２１ａＢの両方が同時に更新対象となる場合もある。この場合、メインＣＰＵ２１０は、プログラム配信サーバ１０から両方の差分データをダウンロードし、各差分データを用いてサブＯＳ２２１ａＡ、２２１ａＢの両方を更新して、サブマイコン２２Ａ、２２Ｂの夫々に送信する。サブＣＰＵ２２０Ａ、２２０Ｂは、それぞれ、メインマイコン２１より送信された、新しいバージョンのサブＯＳ２２１ａＡ、２２１ａＢにより、フラッシュメモリ２２１Ａ、２２１Ｂに格納されている旧バージョンのサブＯＳ２２１ａＡ、２２１ａＢを更新する。
【００５７】
以上が本発明の例示的な実施形態の説明である。本発明の実施形態は、上記に説明したものに限定されず、本発明の技術的思想の範囲において様々な変形が可能である。例えば明細書中に例示的に明示される実施例等又は自明な実施例等を適宜組み合わせた内容も本願の実施形態に含まれる。
【００５８】
上記実施形態では、メインマイコン２１（ストレージ２１３）がサブマイコン（フラッシュメモリ２２１Ａ、２２１Ｂ）と同一のサブＯＳ（サブＯＳ２２１ａＡ、２２１ａＢ）を保持しているが、別の実施形態では、電子機器２０がストレージ２１３を備えない（すなわち、メインマイコン２１がサブＯＳを保持しない）構成であってもよい。この場合、メインＣＰＵ２１０は、プログラム配信サーバ１０より差分データをダウンロードすると、図２の処理ステップＳ１４及び図３の処理ステップＳ２１−Ｓ２２に代えて、次の処理（１）〜（５）を実行する。
【００５９】
（１）ダウンロードされた差分データをＲＡＭ２１２に展開する。
（２）ＲＡＭ２１２に展開された差分データのヘッダを参照して更新対象のサブＯＳを特定する。
（３）特定された更新対象のサブＯＳに対応するサブマイコンに、サブＯＳの送信を要求する。
（４）要求に応じてサブマイコンより送信されたサブＯＳをＲＡＭ２１２に展開する。
（５）メインＯＳ２１１ａの差分更新ライブラリを用いて、要求に応じてサブマイコンより送信されたサブＯＳに対して差分データを適用することにより、更新後のサブＯＳをＲＡＭ２１２に作成する。
【００６０】
上記処理（１）〜（５）の実行後は、図３の処理ステップＳ２３〜Ｓ２５と同じ処理がメインマイコン２１とサブマイコン間で実行される。ただし、当該別の実施形態では、メインマイコン２１はストレージ２１３を有さないため、処理ステップＳ２４においては、更新後のサブＯＳは、ＲＡＭ２１２から更新対象のサブＯＳを有するサブマイコンに送信される。別の実施形態では、電子機器２０からストレージ２１３を省くことができるため、電子機器２０のコストが抑えられる。
【符号の説明】
【００６１】
１  プログラム更新システム
１０  プログラム配信サーバ
１１  サーバＣＰＵ
１２  ストレージ
１３  通信インタフェース
２０  電子機器
２１  メインマイコン
２２Ａ、２２Ｂ  サブマイコン
２３  通信インタフェース
２１０  メインＣＰＵ
２１１  フラッシュメモリ
２１２  ＲＡＭ
２１３  ストレージ
２２０Ａ、２２０Ｂ  サブＣＰＵ
２２１Ａ、２２１Ｂ  フラッシュメモリ
２２２Ａ、２２２Ｂ  ＲＡＭ
２１１ａ  メインＯＳ
２１１ｂ  管理情報２１１ｂ
２２１ａＡ、２２１ａＢ  サブＯＳ
【図１】
2019003625.tif 000003
【図２】
2019003625.tif 000004
【図３】
2019003625.tif 000005