IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ニチコン株式会社の特許一覧

特許7491765ファームウェア更新システムおよびファームウェア更新方法
<>
  • 特許-ファームウェア更新システムおよびファームウェア更新方法 図1
  • 特許-ファームウェア更新システムおよびファームウェア更新方法 図2
  • 特許-ファームウェア更新システムおよびファームウェア更新方法 図3
  • 特許-ファームウェア更新システムおよびファームウェア更新方法 図4
  • 特許-ファームウェア更新システムおよびファームウェア更新方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-20
(45)【発行日】2024-05-28
(54)【発明の名称】ファームウェア更新システムおよびファームウェア更新方法
(51)【国際特許分類】
   G06F 8/65 20180101AFI20240521BHJP
   G06F 9/445 20180101ALI20240521BHJP
【FI】
G06F8/65
G06F9/445
【請求項の数】 4
(21)【出願番号】P 2020127736
(22)【出願日】2020-07-28
(65)【公開番号】P2022024904
(43)【公開日】2022-02-09
【審査請求日】2023-01-17
(73)【特許権者】
【識別番号】000004606
【氏名又は名称】ニチコン株式会社
(74)【代理人】
【識別番号】110001841
【氏名又は名称】弁理士法人ATEN
(72)【発明者】
【氏名】角田 寿紀
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2004-318871(JP,A)
【文献】特開2016-174196(JP,A)
【文献】特開2011-085977(JP,A)
【文献】特開2008-299709(JP,A)
【文献】特開2020-102141(JP,A)
【文献】特開2012-248189(JP,A)
【文献】国際公開第2019/207729(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/65
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
ファームウェアが記憶される記憶装置を有するマイコンと、
前記マイコンに接続されるコントローラと、を備えたファームウェア更新システムであって、
前記記憶装置は、
前記ファームウェアがそれぞれ記憶される2つのバンクと、
前記2つのバンクに対してそれぞれ設けられ、前記ファームウェアが起動可能であるか否かを示す起動可否情報を記憶する2つの可否情報記憶部と、
前記ファームウェアを起動させるブートローダ、を記憶するブートローダ記憶部と、を有し、
前記コントローラが、
前記マイコンから、前記2つのバンクのどちらが、前記ファームウェアが動作中の動作バンクであるかの情報を取得し、
前記マイコンに、前記2つのバンクのうち前記動作バンクでない非動作バンクに、更新するための前記ファームウェアのデータを送信し、
前記マイコンは、
前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアが起動不可能であることを示す情報とした状態で、前記非動作バンクへの前記ファームウェアのデータの書き込みを行い、
前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記非動作バンクに記憶された前記ファームウェアを起動可能であることを示す情報に変更したうえで、再起動して前記ブートローダを実行させ、
前記ブートローダは、前記2つの可否情報記憶部に記憶された前記起動可否情報に基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させ
前記ファームウェアは、自身を識別するための識別情報を含み、
前記識別情報は、前記ファームウェアに対応する機器固有の情報を含み、
前記ブートローダは、
前記2つの可否情報記憶部に記憶された前記起動可否情報と、前記2つのバンクに記憶された前記ファームウェアの前記識別情報とに基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させ、
前記2つのバンクの各々について、前記バンクに対応する前記起動可否情報が前記ファームウェアを起動可能であることを示しており、かつ、当該バンクに記憶されている前記ファームウェアの前記識別情報に含まれる前記機器固有の情報が、前記マイコンが制御する機器の種類に対応するものである場合にのみ、当該バンクに記憶されている前記ファームウェアを起動可能と判断し、
前記マイコンは、
前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに書き込まれた前記ファームウェアの前記識別情報が正しいか否かを判断し、当該識別情報が正しい場合にのみ、前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更することを特徴とするファームウェア更新システム。
【請求項2】
前記識別情報は、前記ファームウェアのバージョンの情報を含み、
前記ブートローダは、
前記2つの可否情報記憶部に記憶された前記起動可否情報の両方が、前記ファームウェアを起動可能であることを示している情報である場合に、前記2つのバンク記憶された前記ファームウェアのうち、前記識別情報が示すバージョンが新しいほうの前記ファームウェアを起動させることを特徴とする請求項に記載のファームウェア更新システム。
【請求項3】
前記マイコンは、
前記コントローラから前記ファームウェアのデータを受信したときに、前記ファームウェアのデータに問題がないか否かを判断し、前記ファームウェアのデータに問題がない場合にのみ、前記非動作バンクへの前記ファームウェアのデータの書き込みを行うことを特徴とする請求項1または2に記載のファームウェア更新システム。
【請求項4】
ファームウェアが記憶される記憶装置を有するマイコンにおいて前記ファームウェアを更新するファームウェア更新方法であって、
前記記憶装置が、
前記ファームウェアがそれぞれ記憶される2つのバンクと、
前記2つのバンクに対してそれぞれ設けられ、前記ファームウェアが起動可能であるか否かを示す起動可否情報を記憶する2つの可否情報記憶部と、
前記ファームウェアを起動させるブートローダを記憶するブートローダ記憶部と、を有し、
前記マイコンから、前記2つのバンクのどちらが、前記ファームウェアが起動中の動作バンクであるかの情報を取得し、
前記マイコンに、前記2つのバンクのうち前記動作バンクでない非動作バンクに、更新するための前記ファームウェアのデータを送信し、
前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアが起動不可能であることを示す情報とした状態で、前記非動作バンクへの前記ファームウェアのデータの書き込みを行い、
前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記非動作バンクに記憶された前記ファームウェアを起動可能であることを示す情報に変更したうえで、前記マイコンを再起動させて前記ブートローダを実行して、
前記ブートローダに、前記2つの可否情報記憶部に記憶された前記起動可否情報に基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させ、
前記ファームウェアは、自身を識別するための識別情報を含み、
前記識別情報は、前記ファームウェアに対応する機器固有の情報を含み、
前記ブートローダに、
前記2つの可否情報記憶部に記憶された前記起動可否情報と、前記2つのバンクに記憶された前記ファームウェアの前記識別情報とに基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させ、
前記2つのバンクの各々について、前記バンクに対応する前記起動可否情報が前記ファームウェアを起動可能であることを示しており、かつ、当該バンクに記憶されている前記ファームウェアの前記識別情報に含まれる前記機器固有の情報が、前記マイコンが制御する機器の種類に対応するものである場合にのみ、当該バンクに記憶されている前記ファームウェアを起動可能と判断させ、
前記マイコンに、
前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに書き込まれた前記ファームウェアの前記識別情報が正しいか否かを判断させ、当該識別情報が正しい場合にのみ、前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更させることを特徴とするファームウェア更新方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ファームウェアを更新するためのファームウェア更新システム、および、ファームウェア更新方法に関する。
【背景技術】
【0002】
特許文献1に記載のファームウェア実行装置は、ファームウェア情報保持部と、メモリと、更新制御部と、管理情報保持部と、起動制御部と、を備えている。ファームウェア保持部は、ファームウェアを保持するための2つの領域(BANK-A,BANK-B)を有する。メモリは、ファームウェアの実行時の作業領域となる。更新制御部は、ファームウェアの更新のための制御を行う。管理情報保持部は、管理情報を保持する。起動制御部は、管理情報に基づいてファームウェアを起動させる。
【0003】
そして、特許文献1のファームウェア実行装置では、同文献の図4に示すように、ファームウェア情報保持部の上記2つの領域のうち一方の領域に保持されたファームウェアの実行中に、ファームウェアの更新要求があると、更新制御部が、更新用のファームウェアを他方の領域に書き込む(ステップS1)。次に、更新制御部が、自装置を再起動させて、他方の領域に保持されたファームウェアを起動する(ステップS2)。また、このとき、更新後のファームウェアの動作を確認する確認処理を実行し、正常であることを確認したときに、自装置を再起動させて他方の領域に保持されたファームウェアを起動する。
【0004】
次に、メモリに展開されている情報に基づくレジュームイメージを一方の領域に保持する(ステップS3)。次に、ファームウェアが他方の領域に保持され、レジュームイメージが一方の領域に保持されていることを、管理情報として管理情報保持部に記憶させる(ステップS4)。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2015-55917号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、特許文献1に記載されているようにしてファームウェアの更新を行う場合、ファームウェアの更新の途中で電源供給が遮断されてしまったときに、問題となることがある。
【0007】
例えば、上記ステップS1、S2の実行中に電源供給が遮断されてしまった場合、ファームウェア情報保持部の一方の領域に実行ファームウェア(更新前のファームウェア)が保持され、他方の領域に更新用のファームウェアが保持されているのに対して、管理情報は、一方の領域に実行ファームウェアが保持され、他方の領域にレジュームイメージが保持されていることを示している。そのため、その後、装置が再起動されたときに、この管理情報に基づいて、一方の領域に保持された実行ファームウェアで起動することができるが、他方の領域に記憶されている更新用のファームウェアをレジュームイメージとしてメモリに展開しようとすることになり、装置を正常に起動させることができなくなってしまう。
【0008】
また、上記ステップS3の実行中に、電源供給が遮断されてしまった場合、ファームウェア情報保持部の一方の領域にレジュームイメージが保持され、他方の領域に更新用のファームウェアが保持されているのに対して、管理情報は、一方の領域に実行ファームウェアが保持され、他方の領域にレジュームイメージが保持されていることを示している。つまり、ファームウェア情報保持部と管理情報保持部の領域に保持された情報が逆転した状態になる。そのため、その後、装置が再起動されたときに、この管理情報に基づいて、一方の領域に保持されたレジュームイメージを、実行ファームウェアとして起動させようとすることになり、装置を起動させることすらできなくなってしまう。
【0009】
本発明の目的は、更新の途中で電源供給が遮断された場合でも、正常に起動することが可能なファームウェア更新装置、および、ファームウェア更新方法を提供することである。
【課題を解決するための手段】
【0010】
第1の発明に係るファームウェア更新装置は、ファームウェアが記憶される記憶装置を有するマイコンと、前記マイコンに接続されるコントローラと、を備えたファームウェア更新システムであって、前記記憶装置は、前記ファームウェアがそれぞれ記憶される2つのバンクと、前記2つのバンクに対してそれぞれ設けられ、前記ファームウェアが起動可能であるか否かを示す起動可否情報を記憶する2つの可否情報記憶部と、前記ファームウェアを起動させるブートローダ、を記憶するブートローダ記憶部と、を有し、前記コントローラが、前記マイコンから、前記2つのバンクのどちらが、前記ファームウェアが動作中の動作バンクであるかの情報を取得し、前記マイコンに、前記2つのバンクのうち前記動作バンクでない非動作バンクに、更新するための前記ファームウェアのデータを送信し、前記マイコンは、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアが起動不可能であることを示す情報とした状態で、前記非動作バンクへの前記ファームウェアのデータの書き込みを行い、前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更したうえで、再起動して前記ブートローダを実行させ、前記ブートローダは、前記2つの可否情報記憶部に記憶された前記起動可否情報に基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させる。
【0011】
本発明によると、ファームウェアの更新の途中のどの時点で電源供給が遮断されてしまった場合でも、ファームウェアを起動できなくなってしまうことがない。また、2つのバンクのうち一方のバンクに記憶されているファームウェアが起動できない場合でも、他方のバンクに記憶されたファームウェアを起動させることができる。すなわち、ファームウェアイメージの二重化を実現することができる。
【0012】
第2の発明に係るファームウェア更新システムは、第1の発明に係るファームウェア更新システムにおいて、前記ファームウェアは、自身を識別するための識別情報を含み、前記ブートローダは、前記2つの可否情報記憶部に記憶された前記起動可否情報と、前記2つのバンクに記憶された前記ファームウェアの前記識別情報とに基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させる。
【0013】
本発明によると、2つのバンクの両方においてファームウェアを起動可能な場合に、より適切なファームウェアを起動させることができる。
【0014】
第3の発明に係るファームウェア更新システムは、第2の発明に係るファームウェア更新システムであって、前記識別情報は、前記ファームウェアのバージョンの情報を含み、前記ブートローダは、前記2つの可否情報記憶部に記憶された前記起動可否情報の両方が、前記ファームウェアを起動可能であることを示している情報である場合に、前記2つのバンク記憶された前記ファームウェアのうち、前記識別情報が示すバージョンが新しいほうの前記ファームウェアを起動させる。
【0015】
本発明によると、2つのバンクの両方においてファームウェアを起動可能な場合に、よりバージョンの新しいほうのファームウェアを起動させことができる。
【0016】
第4の発明に係るファームウェア更新システムは、第2または第3の発明に係るファームウェア更新システムであって、前記識別情報は、前記ファームウェアに対応する機器固有の情報を含み、前記ブートローダは、前記2つのバンクの各々について、前記バンクに対応する前記起動可否情報が前記ファームウェアを起動可能であることを示しており、かつ、当該バンクに記憶されている前記ファームウェアの前記識別情報に含まれる前記機器固有の情報が、前記マイコンが制御する機器の種類に対応するものである場合にのみ、当該バンクに記憶されている前記ファームウェアを起動可能と判断し、前記マイコンは、前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに書き込まれた前記ファームウェアの前記識別情報が正しいか否かを判断し、当該識別情報が正しい場合にのみ、前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更する。
【0017】
本発明によると、非動作バンクへのファームウェアの書き込みが完了したときに、当該ファームウェアの識別情報に含まれる機器固有の情報が、マイコンが制御する機器の種類に対応するものであることを確認してから、非動作バンクに対応する起動可否情報がファームウェアを起動可能なことを示す情報に変更することができる。
【0018】
第5の発明に係るファームウェア更新システムは、第1~第4のいずれかの発明に係るファームウェア更新システムであって、前記マイコンは、前記コントローラから前記ファームウェアのデータを受信したときに、前記ファームウェアのデータに問題がないか否かを判断し、前記ファームウェアのデータに問題がない場合にのみ、前記非動作バンクへの前記ファームウェアのデータの書き込みを行う。
【0019】
本発明によると、非動作バンクに不正なデータが書き込まれてしまうのを防止することができる。
【0020】
また、コントローラから受信したファームウェアのデータに問題がない場合にのみ、非動作バンクへのファームウェアのデータの書き込みを行うため、ファームウェアの書き込み後に、動作確認を行うための再起動などが不要となる。これにより、ファームウェアの更新を高速に行うことができる。
【0021】
第6の発明に係るファームウェア更新方法は、ファームウェアが記憶される記憶装置を有するマイコンにおいて前記ファームウェアを更新するファームウェア更新方法であって、前記記憶装置が、前記ファームウェアがそれぞれ記憶される2つのバンクと、前記2つのバンクに対してそれぞれ設けられ、前記ファームウェアが起動可能であるか否かを示す起動可否情報を記憶する2つの可否情報記憶部と、前記ファームウェアを起動させるブートローダを記憶するブートローダ記憶部と、を有し、前記マイコンから、前記2つのバンクのどちらが、前記ファームウェアが起動中の動作バンクであるかの情報を取得し、前記マイコンに、前記2つのバンクのうち前記動作バンクでない非動作バンクに、更新するための前記ファームウェアのデータを送信し、前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアが起動不可能であることを示す情報とした状態で、前記非動作バンクへの前記ファームウェアのデータの書き込みを行い、前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更したうえで、前記マイコンを再起動させて前記ブートローダを実行して、前記ブートローダに、前記2つの可否情報記憶部に記憶された前記起動可否情報に基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させる。
【発明の効果】
【0022】
本発明によれば、ファームウェアの更新中のどの時点で電源供給が遮断されてしまった場合でも、ファームウェアを起動できなくなってしまうことがない。また、ファームウェアイメージの二重化を実現することができる。
【図面の簡単な説明】
【0023】
図1】本発明の実施形態に係るファームウェア更新システムの構成を示すブロック図である。
図2】ファームウェアの更新時のコントローラにおける処理の流れを示すフローチャートである。
図3】ファームウェアの更新時のマイコンにおける処理の流れを示すフローチャートである。
図4】ブートローダの処理の流れを示すフローチャートである。
図5】内蔵フラッシュメモリの状態を説明するための図であり、(a)が第2可否情報記憶部に記憶される起動可否情報をファームウェアを起動不可能であることを示す情報に変更する前の状態を示し、(b)が(a)の後、第2バンクへのファームウェアのデータの書き込みが完了するまでの状態を示し、(c)が(b)の後、第2可否情報記憶部に記憶される起動可否情報をファームウェアを起動可能であることを示す情報に変更する前の状態を示し、(d)が(c)よりも後の状態を示している。
【発明を実施するための形態】
【0024】
以下、本発明の好適な実施形態について説明する。
【0025】
<ファームウェア更新システムの全体構成>
図1に示すように、本実施形態に係るファームウェア更新システム1は、マイコン2とコントローラ3とを備えている。マイコン2は、各種の機器に設けられ、当該機器の動作を制御する。コントローラ3は、後述するようにマイコン2に記憶されたファームウェアを更新するときに、マイコン2と通信可能に接続される。
【0026】
<マイコンの構成>
マイコン2は、内蔵フラッシュメモリ10(本発明の「記憶装置」)を有する。内蔵フラッシュメモリ10は、第1バンク11と、第2バンク12と、第1可否情報記憶部13と、第2可否情報記憶部14と、ブートローダ記憶部15とを有する。なお、本実施形態では、第1バンク11および第2バンク12が、本発明の「2つのバンク」に相当し、第1可否情報記憶部13および第2可否情報記憶部14が、本発明の「2つの可否情報記憶部」に相当する。
【0027】
第1バンク11および第2バンク12は、それぞれ、ファームウェアを記憶するための領域である。また、ファームウェアには、自身を識別するための識別情報が含まれている。識別情報には、ファームウェアに対応する機器固有の情報、ファームウェアのバージョンの情報などが含まれている。
【0028】
第1可否情報記憶部13は、第1バンク11についての、ファームウェアを起動可能であるか否かを示す起動可否情報を記憶するための領域である。第2可否情報記憶部14は、第2バンク12についての、ファームウェアを起動可能であるか否かを示す起動可否情報を記憶するための領域である。
【0029】
ブートローダ記憶部15は、ブートローダを記憶するための領域である。ブートローダとは、マイコン2の起動時に実行される、ファームウェアを起動させるためのプログラムのことである。このブートローダは、後述するように、第1可否情報記憶部13および第2可否情報記憶部に記憶された起動可否情報と、ファームウェアに含まれる識別情報とに基づいて、第1バンク11および第2バンク12のいずれかに記憶されたファームウェアを選択的に起動させる。
【0030】
<ファームウェアの更新時の処理>
次に、ファームウェア更新システム1において、ファームウェアを更新するための処理の流れについて説明する。本実施形態では、マイコン2が、ブートローダによって起動された、第1バンク11および第2バンク12のいずれかに記憶されたファームウェアに基づいて機器の制御を行っている状態で、ファームウェアの更新を行う。
【0031】
ファームウェア更新システム1において、ファームウェアを更新するときには、コントローラ3をマイコン2と通信可能に接続する。ここで、コントローラ3には、第1バンク11用の更新ファームウェアデータと、第2バンク用の更新ファームウェアデータとが記憶されている。第1バンク11用の更新ファームウェアデータとは、第1バンク11上で動作する、更新するためのファームウェアのデータである。第2バンク12用の更新ファームウェアデータとは、第2バンク12上で動作する、更新するためのファームウェアのデータである。
【0032】
第1バンク11用の更新ファームウェアデータと第2バンク用の更新ファームウェアデータとでは、ファームウェアの内容は同じであるが、内蔵フラッシュメモリ10における、ファームウェアの実行アドレスが異なる。また、第1バンク11および第2バンク12用の更新ファームウェアデータにも、上記識別情報が含まれている。
【0033】
そして、コントローラ3がマイコン2に接続されたファームウェア更新システム1では、例えば、作業者がファームウェアの更新を開始させるための適宜の操作を行うことにより、コントローラ3に、図2のフローに示す処理を開始させる。
【0034】
図2は、ファームウェアの更新時のコントローラにおける処理の流れを示すフローチャートである。図2のフローについてより詳細に説明すると、コントローラ3は、まず、マイコン2に動作バンクの問い合わせを行う(S101)。動作バンクの問い合わせとは、第1バンク11および第2バンク12のどちらが、ファームウェアが起動中の動作バンクであるかについての問い合わせのことである。
【0035】
また、コントローラ3によりS101の動作バンクの問い合わせが行われると、マイコン2は、図3のフローに示す処理を開始する。図3は、ファームウェアの更新時のマイコンにおける処理の流れを示すフローチャートである。図3のフローについてより詳細に説明すると、マイコン2は、まず、コントローラ3のS101の問い合わせに対して、第1バンク11および第2バンク12のどちらが動作バンクであるかの情報(以下、「動作バンクの情報」とすることがある)をコントローラ3に送信する(S201)。このとき、マイコンは、例えば、内蔵フラッシュメモリ10の、動作しているファームウェアの識別情報が配置されているアドレスに基づいて、第1バンク11および第2バンク12のどちらが動作バンクであるかを判断する。
【0036】
図2に示すように、コントローラ3は、S101の動作バンクの問い合わせの後、マイコン2から動作バンクの情報を受信するまで待機する(S102:NO)。そして、コントローラ3は、マイコン2から動作バンクの情報を受信したときに(S102:YES)、ファームウェア更新の開始指示をマイコン2に送信する(S103)。
【0037】
図3に示すように、マイコン2は、S201で動作バンクの情報を送信した後、コントローラ3からファームウェア更新の開始指示を受信するまで待機する(S202:NO)。そして、マイコン2は、コントローラ3からファームウェア更新の開始指示を受信したときに(S202:YES)、第1バンク11及び第2バンク12のうち動作バンクでない非動作バンクに対応する可否情報記憶部(第1可否情報記憶部13および第2可否情報記憶部14のいずれか)に記憶されている起動可否情報を、ファームウェアが起動不可能であることを示す情報に変更したうえで(S203)、ファームウェア更新の開始応答をコントローラ3に送信する(S204)。
【0038】
コントローラ3は、図2に示すように、S103のファームウェア更新開始指示の送信後、ファームウェア更新の開始応答を受信するまで待機する(S104:NO)。そして、ファームウェア更新の開始応答の信号を受信したときに(S104:YES)、コントローラ3は、非動作バンク用の更新ファームウェアデータをマイコン2に送信する(S105)。
【0039】
マイコン2は、図3に示すように、S204のファームウェア更新の開始応答の送信後、更新ファームウェアデータを受信するまで待機し(S205:NO)、更新ファームウェアデータを受信したときに(S205:YES)、受信した更新ファームウェアデータに問題がないか否かを判定する(S206)。S206では、例えば、マイコン2は、受信した更新ファームウェアデータが不正なデータである場合、受信した更新ファームウェアデータの書き込みアドレスが不正である場合、受信した更新ファームウェアデータの定量毎のチェックサムの結果が異常である場合などに、受信した更新ファームウェアデータに問題があると判定する。
【0040】
受信した更新ファームウェアデータに問題がある場合には(S206:NO)、マイコン2は、エラー信号をコントローラ3に出力し(S207)、更新処理を終了する。受信した更新ファームウェアデータに問題がない場合には(S206:YES)、マイコン2は、非動作バンクへの更新ファームウェアデータの書き込みを行う(S208)。そして、非動作バンクへの更新ファームウェアデータの書き込みが完了したときに、マイコン2は、更新ファームウェアデータの書き込みが完了したことを示す更新データ応答を、コントローラ3に送信する(S209)。
【0041】
コントローラ3は、図2に示すように、S105で更新ファームウェアデータを送信した後、エラー信号を受信していなければ(S108:NO)、更新データ応答を受信するまで待機する(S106:NO)。また、更新データ応答の受信の待機中に(S106:NO)、エラー信号を受信したときには(S108:YES)、処理を終了する。そして、更新データ応答を受信したときに(S106:YES)、コントローラ3は、全ての更新ファームウェアデータの送信が完了したか否かを判定する(S107)。
【0042】
ここで、本実施形態では、コントローラ3が、S105において、更新ファームウェアデータを一部分ずつ分割して送信している。S107では、上述したように分割して送信する更新ファームウェアデータが全て送信されたか否かを判定する。
【0043】
そして、全ての更新ファームウェアデータの送信が完了していない場合には(S107:NO)、S105に戻り、全ての更新ファームウェアデータの送信が完了したときに(S107:YES)、処理を終了する。
【0044】
一方、マイコン2は、図3に示すように、S209の更新データ応答の送信後、全ての更新ファームウェアデータの受信が完了したか否かを判定する(S210)。ここで、本実施形態では、上述したようにコントローラ3から分割された更新ファームウェアデータの一部分を受信する毎に、その都度、受信したデータを非動作バンクに書き込む。これにより、マイコン2に、受信した更新ファームウェアデータを一時的に記憶しておくために別途メモリなどを設ける必要がない。そして、S210では、上述したように分割されてコントローラ3から送られてきた更新ファームウェアデータの全てのデータを受信したか否かを判定する。
【0045】
全ての更新ファームウェアデータの受信が完了していない場合には(S210:NO)、S205に戻る。全ての更新ファームウェアデータの受信が完了したときには(S210:YES)、マイコン2は、非動作バンクに書き込まれた更新ファームウェアデータに含まれる識別情報に問題がないか否かを判定する(S211)。S211では、例えば、当該識別情報が示す機器固有情報が、マイコン2が制御する機器に対応するものでない場合に、識別情報に問題があると判定する。
【0046】
識別情報に問題がある場合には(S211:NO)、マイコン2は、エラー信号をコントローラ3に出力し(S207)、更新処理を終了する。識別情報に問題がない場合には(S211:YES)、マイコン2は、非動作バンクに対応する可否情報記憶部に記憶されている起動可否情報を、ファームウェアを起動可能であることを示す情報に変更したうえで(S212)、再起動処理を行う(S213)。再起動処理では、現在起動中のファームウェアを終了させたうえで、ブートローダを起動させる。
【0047】
S213の再起動処理で起動されたブートローダは、図4のフローに沿って処理を行う。なお、ブートローダは、マイコン2が制御している機器の電源がオンになったときなど、S213の再起動処理以外のマイコン2の起動時においても図4のフローに沿って処理を行う。
【0048】
図4のフローについてより詳細に説明すると、ブートローダは、第1可否情報記憶部13および第2可否情報記憶部14に記憶された起動可否情報と、第1バンク11および第2バンク12に記憶されたファームウェアの識別情報とに基づいて、第1バンク11および第2バンク12のそれぞれについて、ファームウェアを起動可能か否かを判断する。
【0049】
具体的には、ブートローダは、第1可否情報記憶部13に記憶された起動可否情報が、ファームウェアを起動可能なことを示しており、かつ、第1バンク11に記憶されたファームウェアの識別情報に含まれる機器固有情報が、マイコン2によって制御される機器の種類に対応している場合に、第1バンク11に記憶されているファームウェアを起動可能であると判断する。
【0050】
同様に、ブートローダは、第2可否情報記憶部14に記憶された起動可否情報が、ファームウェアを起動可能なことを示しており、かつ、第2バンク12に記憶されたファームウェアの識別情報に含まれる機器固有情報が、マイコン2によって制御される機器の種類に対応している場合に、第2バンク12に記憶されているファームウェアを起動可能であると判断する。
【0051】
そして、第1バンク11および第2バンク12のうち、第1バンク11についてのみファームウェアを起動可能な場合には(S301:YES)、ブートローダは、第1バンク11に記憶されたファームウェアを起動させる(S302)。
【0052】
また、第1バンク11および第2バンク12のうち、第2バンク12についてのみファームウェアを起動可能な場合には(S301:NO、S303:YES)、ブートローダは、第2バンク12に記憶されたファームウェアを起動させる(S304)。
【0053】
第1バンク11および第2バンク12の両方についてファームウェアを起動可能な場合には(S301:NO、S303:NO、S305:YES)、ブートローダは、第1バンク11および第2バンク12に記憶されたファームウェアの識別情報に含まれるバージョンの情報に基づいて、どちらのバンクに記憶されたファームウェアのバージョンがより新しいかを判断する(S306)。
【0054】
そして、第1バンク11に記憶されたファームウェアのバージョンのほうが新しい場合には(S306:YES)、ブートローダは、第1バンク11に記憶されたファームウェアを起動させる(S302)。一方、第2バンク12に記憶されたファームウェアのバージョンのほうが新しい場合には(S306:NO)、ブートローダは、第2バンク12に記憶されたファームウェアを起動させる(S304)。
【0055】
第1バンク11および第2バンク12の両方についてファームウェアが起動不可能な場合には(S301:NO、S303:NO、S305:NO)、ブートローダはエラー信号を出力して(S307)、処理を終了する。
【0056】
<更新途中に電源供給が遮断した場合のマイコンの状態>
次に、上述したようにしてファームウェアを更新している途中の各時点において停電等によって電源供給が遮断してしまった場合の内蔵フラッシュメモリ10の状態について説明する。なお、ここでは、第1バンク11に記憶されたファームウェアの動作中に、第2バンク12への更新ファームウェアデータの書き込みを行う場合、すなわち、第1バンク11が動作バンクであり、第2バンク12が非動作バンクである場合を例に挙げて説明する。
【0057】
まず、S101~S103、S201~S203のいずれかの処理の途中に、電源供給が遮断されてしまった場合を考える。
【0058】
この場合には、第1バンク11および第2バンク12に記憶されているファームウェアのデータ、および、第1可否情報記憶部13および第2可否情報記憶部14に記憶されている起動可否情報に対する変更等が行われていない。したがって、図5(a)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第2バンク12に更新前のファームウェアが記憶され、可否情報記憶部13、14に記憶された起動可否情報の両方が、ファームウェアを起動可能であることを示している。
【0059】
そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11記憶されたファームウェアを起動させることになり、問題がない。
【0060】
ここで、図5(a)においては、第1バンク11、第2バンク12、第1可否情報記憶部13および第2可否情報記憶部14の括弧書きの内容が、各部分に記憶されている内容を示している。また、図5(a)中の「FW」とはファームウェアのことである。以下に説明する図5(b)~(d)についても同様である。
【0061】
次に、S104~S107、S204~S210のいずれかの処理の途中に、電源供給が遮断された場合を考える。
【0062】
この場合には、図5(b)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第1可否情報記憶部13に記憶された起動可否情報が、ファームウェアを起動可能であることを示している。一方で、第2バンク12においては、更新前のファームウェアが記憶された状態、または、ファームウェアの更新途中の状態となっているのに対して、第2可否情報記憶部14に記憶された起動可否情報が、ファームウェアを起動不可能であることを示している。
【0063】
そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11記憶されたファームウェアを起動させることになり、問題がない。
【0064】
次に、S211、S212のいずれかの処理の途中に、電源供給が遮断された場合を考える。
【0065】
この場合には、図5(c)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第1可否情報記憶部13に記憶された起動可否情報が、ファームウェアを起動可能であることを示しているが、第2可否情報記憶部14に記憶された起動可否情報が、ファームウェアを起動不可能であることを示している。
【0066】
そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11に記憶されたファームウェアを起動させることになり、問題がない。
【0067】
また、S212の処理が完了した後に、電源供給が遮断された場合には、図5(d)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第2バンク12に更新後のファームウェアが記憶され、可否情報記憶部13、14に記憶された起動可否情報の両方が、ファームウェアを起動可能であることを示している。そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11および第2バンク12に記憶されたファームウェアのうち、バージョンの新しい方のファームウェアが起動される。
【0068】
これにより、第2バンク12に記憶された更新後のファームウェアが、第1バンク11に記憶されたファームウェアよりもバージョンの新しいものである場合には、第2バンク12に記憶された更新後のファームウェアが起動される。第2バンク12に記憶された更新後のファームウェアが、第1バンク11に記憶されたファームウェアよりもバージョンの古いものである場合には、第1バンク11に記憶された更新前のファームウェアが起動される。なお、第2バンク12に記憶された更新後のファームウェアが、第1バンク11に記憶されたファームウェアとバージョンが同じものである場合には、第1バンク11および第2バンク12のどちらかに記憶されたファームウェアが起動されるようすればよい。
【0069】
以上のように、本実施形態の場合には、ファームウェアの更新のための処理のどの時点で電源供給が遮断されてしまった場合でも、電源供給が回復し、マイコン2が再起動されたときに、ファームウェアを正常に起動させることができる。
【0070】
また、上述したのとは逆に、第2バンク12に記憶されたファームウェアの動作中に、第1バンク11に記憶されるファームウェアを更新する場合、すなわち、第2バンク12が動作バンクであり、第1バンク11が非動作バンクである場合には、第1バンク11と第2バンク12、および、第1可否情報記憶部13と第2可否情報記憶部14とで、記憶されている内容が、上述したのと逆になるだけである。
【0071】
<効果>
本実施形態では、マイコン2の内蔵フラッシュメモリ10が、ファームウェアを記憶する2つのバンク(第1バンク11、第2バンク12)と、2つのバンクに対応する2つの可否情報記憶部(第1可否情報記憶部13、第2可否情報記憶部14)と、ブートローダ記憶部15とを有する。そして、ファームウェアの更新時に、2つのバンクのうち、非動作バンクに対応する可否情報記憶部に記憶される起動可否情報を、ファームウェアを起動不可能であることを示す情報としたうえで、非動作バンクに更新後のファームウェアのデータを書き込む。これにより、上述したように、ファームウェアの更新中のどの時点で電源供給が遮断されてしまった場合でも、ファームウェアを起動できなくなってしまうことがない。
【0072】
また、本実施形態では、2つのバンクのうち一方のバンクに記憶されているファームウェアが起動できない場合でも、他方のバンクに記憶されたファームウェアが起動可能であれば、当該ファームウェアを起動することができる。すなわち、ファームウェアイメージの二重化を実現することができる。
【0073】
また、本実施形態では、ファームウェアが自身を識別するための識別情報を含んでおり、ブートローダが、2つの可否情報記憶部に記憶された起動可否情報と、識別情報とに基づいて、2つのバンクのいずれかに記憶されたファームウェアを起動させる。これにより、より適切なファームウェアを起動させることができる。
【0074】
また、本実施形態では、識別情報がファームウェアのバージョンの情報を含んでいる。そして、2つのバンクの両方においてファームウェアを起動可能な場合に、よりバージョンの新しいほうのファームウェアを起動させる。これにより、より新しいファームウェアを起動させることができる。
【0075】
また、本実施形態では、非動作バンクへの更新ファームウェアデータの書き込みが完了した後に、非動作バンクに書き込まれた更新ファームウェアデータに含まれる識別情報に問題がないか否かを判定する。そして、当該識別情報に問題がない場合にのみ、非動作バンクに対応する起動可否情報を、ファームウェアを起動可能であることを示す情報に変更する。これにより、非動作バンクにマイコン2が制御する機器に対応する更新ファームウェアが書き込まれ、非動作バンクに記憶されたファームウェアが確実に起動可能な状態となってから、非動作バンクに対応する起動可否情報を、ファームウェアを起動可能なことを示す情報とすることができる。
【0076】
また、本実施形態では、マイコン2がコントローラ3から更新ファームウェアデータを受信したときに、更新ファームウェアデータに問題がないか否かを判断し、問題がない場合にのみ、非動作バンクへの更新ファームウェアデータの書き込みを行う。これにより、非動作バンクに、適切でないファームウェアデータが書き込まれてしまうことを防止することができる。
【0077】
また、マイコン2が、コントローラ3から受信した更新ファームウェアデータに問題がない場合にのみ、非動作バンクへの更新ファームウェアデータの書き込みを行うため、ファームウェアの書き込み後に、動作確認を行うための再起動などが不要となる。これにより、ファームウェアの更新を高速に行うことができる。
【0078】
<変形例>
以上、本発明の好適な実施形態について説明したが、本発明は上述の実施形態に限られるものではなく、特許請求の範囲に記載の限りにおいて様々な変更が可能である。
【0079】
上述の実施形態では、ファームウェアの更新時に、マイコン2が、非動作バンクへの更新ファームウェアデータの書き込みの完了後に、非動作バンクに書き込まれた更新ファームウェアデータに含まれる識別情報に問題がないか否かを判定する。そして、当該識別情報に問題がない場合にのみ、非動作バンクに対応する起動可否情報を、ファームウェアを起動可能であることを示す情報に変更する。しかしながら、これには限られない。
【0080】
例えば、非動作バンクへの更新ファームウェアデータの書き込みの完了後、上記判定を行うことなく、非動作バンクに対応する可否情報記憶部に記憶された起動可否情報を、ファームウェアを起動可能であることを示す情報に変更してもよい。非動作バンクへの更新ファームウェアデータの書き込みが完了していれば、通常は、非動作バンクに記憶されたファームウェアは起動可能となるため、上記判定を行わなくても問題となることはほぼない。また、仮に、非動作バンクに書き込まれた更新ファームウェアが、マイコン2が制御する機器に対応するものでない場合には、ファームウェアの識別情報に含まれる機器固有情報が、マイコン2が制御する機器の種類に対応するものではないため、ブートローダが非動作バンクに記憶されたファームウェアを起動してしまうことはない。
【0081】
また、上述の実施形態では、非動作バンクへの更新ファームウェアデータの書き込みを行う前に、マイコン2が、受信した更新ファームウェアデータに問題がないか否かを判断したが、これには限られない。
【0082】
例えば、マイコン2が、コントローラ3から更新ファームウェアデータを受信したときに、更新ファームウェアデータに問題がないか否かの判定を行わずに、非動作バンクへの当該更新ファームウェアデータの書き込みを行うようにしてもよい。通常、コントローラ3からマイコン2に異なる機器のファームウェアが送信されることはない。また、仮に、非動作バンク2に異なる機器の更新ファームウェアデータが書き込まれてしまった場合、当該ファームウェアの識別情報に含まれる機器固有情報が、マイコン2が制御する機器の種類に対応しない。
【0083】
したがって、例えば、上述の実施形態で説明したように、起動可否情報がファームウェアを起動可能であることを示しており、かつ、識別情報に含まれる機器固有情報が、マイコン2が制御する機器の種類に対応している場合にのみ、ファームウェアを起動させるようにしておけば、異なる機器のファームウェアを起動してしまうことはない。
【0084】
あるいは、例えば、更新ファームウェアデータの書き込み後に、S211の判断を行うようにすれば、非動作バンクに異なる機器のファームウェアのデータが記憶された状態で、非動作バンクに対応する起動可否情報が、ファームウェアを起動可能であることを示す情報に変更されることがない。したがって、非動作バンクに書き込まれた、異なる機器のファームウェアが起動されてしまうことがない。
【0085】
また、上述の実施形態では、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、第1バンク11および第2バンク12に記憶された識別情報に含まれるファームウェアのバージョンの情報を参照し、バージョンの新しい方のファームウェアを起動させるようにしたが、これには限られない。
【0086】
例えば、識別情報を、ファームウェアが作成された日時の情報を含むものとし、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、第1バンク11および第2バンク12に記憶された識別情報に含まれるファームウェアの作成日時の情報を参照し、作成日時の新しい方のファームウェアを起動させるようにしてもよい。
【0087】
さらには、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、識別情報に基づいて、どちらのバンクに記憶されたファームウェアを起動させるかを決定することにも限られない。例えば、内蔵フラッシュメモリ10に、第1バンク11および第2バンク12のうち、最後にファームウェアのデータの書き込みが行われたバンクの情報を記憶するための領域を設け、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、第1バンク11および第2バンク12のうち、最後にファームウェアのデータの書き込みが行われたバンクに記憶されたファームウェアを起動させるようにしてもよい。
【0088】
通常、後に書き込まれたファームウェアほどバージョンが新しい。そして、この場合には、上述したように、第1バンク11および第2バンク12のうち、どちらのバンクに最後にファームウェアのデータが書き込まれたかに基づいてファームウェアを起動させれば、よりバージョンの新しいファームウェアを起動させることができる。ただし、この場合、例えば、非動作バンクに、現在使用されているものよりもバージョンの古いファームウェアのデータが書き込まれてしまうと、第1バンク11および第2バンク12に記憶されたファームウェアのうち、よりバージョンの古いものが起動されてしまうことになる。
【符号の説明】
【0089】
1 ファームウェア更新システム
2 マイコン
3 コントローラ
10 内蔵フラッシュメモリ
11 第1バンク
12 第2バンク
13 第1可否情報記憶部
14 第2可否情報記憶部
15 ブートローダ記憶部
図1
図2
図3
図4
図5