JP7491765B2 - ファームウェア更新システムおよびファームウェア更新方法 - Google Patents

ファームウェア更新システムおよびファームウェア更新方法 Download PDF

Info

Publication number
JP7491765B2
JP7491765B2 JP2020127736A JP2020127736A JP7491765B2 JP 7491765 B2 JP7491765 B2 JP 7491765B2 JP 2020127736 A JP2020127736 A JP 2020127736A JP 2020127736 A JP2020127736 A JP 2020127736A JP 7491765 B2 JP7491765 B2 JP 7491765B2
Authority
JP
Japan
Prior art keywords
firmware
bank
stored
information
microcomputer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020127736A
Other languages
English (en)
Other versions
JP2022024904A (ja
Inventor
寿紀 角田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nichicon Corp
Original Assignee
Nichicon Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nichicon Corp filed Critical Nichicon Corp
Priority to JP2020127736A priority Critical patent/JP7491765B2/ja
Publication of JP2022024904A publication Critical patent/JP2022024904A/ja
Application granted granted Critical
Publication of JP7491765B2 publication Critical patent/JP7491765B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、ファームウェアを更新するためのファームウェア更新システム、および、ファームウェア更新方法に関する。
特許文献1に記載のファームウェア実行装置は、ファームウェア情報保持部と、メモリと、更新制御部と、管理情報保持部と、起動制御部と、を備えている。ファームウェア保持部は、ファームウェアを保持するための2つの領域(BANK-A,BANK-B)を有する。メモリは、ファームウェアの実行時の作業領域となる。更新制御部は、ファームウェアの更新のための制御を行う。管理情報保持部は、管理情報を保持する。起動制御部は、管理情報に基づいてファームウェアを起動させる。
そして、特許文献1のファームウェア実行装置では、同文献の図4に示すように、ファームウェア情報保持部の上記2つの領域のうち一方の領域に保持されたファームウェアの実行中に、ファームウェアの更新要求があると、更新制御部が、更新用のファームウェアを他方の領域に書き込む(ステップS1)。次に、更新制御部が、自装置を再起動させて、他方の領域に保持されたファームウェアを起動する(ステップS2)。また、このとき、更新後のファームウェアの動作を確認する確認処理を実行し、正常であることを確認したときに、自装置を再起動させて他方の領域に保持されたファームウェアを起動する。
次に、メモリに展開されている情報に基づくレジュームイメージを一方の領域に保持する(ステップS3)。次に、ファームウェアが他方の領域に保持され、レジュームイメージが一方の領域に保持されていることを、管理情報として管理情報保持部に記憶させる(ステップS4)。
特開2015-55917号公報
ここで、特許文献1に記載されているようにしてファームウェアの更新を行う場合、ファームウェアの更新の途中で電源供給が遮断されてしまったときに、問題となることがある。
例えば、上記ステップS1、S2の実行中に電源供給が遮断されてしまった場合、ファームウェア情報保持部の一方の領域に実行ファームウェア(更新前のファームウェア)が保持され、他方の領域に更新用のファームウェアが保持されているのに対して、管理情報は、一方の領域に実行ファームウェアが保持され、他方の領域にレジュームイメージが保持されていることを示している。そのため、その後、装置が再起動されたときに、この管理情報に基づいて、一方の領域に保持された実行ファームウェアで起動することができるが、他方の領域に記憶されている更新用のファームウェアをレジュームイメージとしてメモリに展開しようとすることになり、装置を正常に起動させることができなくなってしまう。
また、上記ステップS3の実行中に、電源供給が遮断されてしまった場合、ファームウェア情報保持部の一方の領域にレジュームイメージが保持され、他方の領域に更新用のファームウェアが保持されているのに対して、管理情報は、一方の領域に実行ファームウェアが保持され、他方の領域にレジュームイメージが保持されていることを示している。つまり、ファームウェア情報保持部と管理情報保持部の領域に保持された情報が逆転した状態になる。そのため、その後、装置が再起動されたときに、この管理情報に基づいて、一方の領域に保持されたレジュームイメージを、実行ファームウェアとして起動させようとすることになり、装置を起動させることすらできなくなってしまう。
本発明の目的は、更新の途中で電源供給が遮断された場合でも、正常に起動することが可能なファームウェア更新装置、および、ファームウェア更新方法を提供することである。
第1の発明に係るファームウェア更新装置は、ファームウェアが記憶される記憶装置を有するマイコンと、前記マイコンに接続されるコントローラと、を備えたファームウェア更新システムであって、前記記憶装置は、前記ファームウェアがそれぞれ記憶される2つのバンクと、前記2つのバンクに対してそれぞれ設けられ、前記ファームウェアが起動可能であるか否かを示す起動可否情報を記憶する2つの可否情報記憶部と、前記ファームウェアを起動させるブートローダ、を記憶するブートローダ記憶部と、を有し、前記コントローラが、前記マイコンから、前記2つのバンクのどちらが、前記ファームウェアが動作中の動作バンクであるかの情報を取得し、前記マイコンに、前記2つのバンクのうち前記動作バンクでない非動作バンクに、更新するための前記ファームウェアのデータを送信し、前記マイコンは、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアが起動不可能であることを示す情報とした状態で、前記非動作バンクへの前記ファームウェアのデータの書き込みを行い、前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更したうえで、再起動して前記ブートローダを実行させ、前記ブートローダは、前記2つの可否情報記憶部に記憶された前記起動可否情報に基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させる。
本発明によると、ファームウェアの更新の途中のどの時点で電源供給が遮断されてしまった場合でも、ファームウェアを起動できなくなってしまうことがない。また、2つのバンクのうち一方のバンクに記憶されているファームウェアが起動できない場合でも、他方のバンクに記憶されたファームウェアを起動させることができる。すなわち、ファームウェアイメージの二重化を実現することができる。
第2の発明に係るファームウェア更新システムは、第1の発明に係るファームウェア更新システムにおいて、前記ファームウェアは、自身を識別するための識別情報を含み、前記ブートローダは、前記2つの可否情報記憶部に記憶された前記起動可否情報と、前記2つのバンクに記憶された前記ファームウェアの前記識別情報とに基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させる。
本発明によると、2つのバンクの両方においてファームウェアを起動可能な場合に、より適切なファームウェアを起動させることができる。
第3の発明に係るファームウェア更新システムは、第2の発明に係るファームウェア更新システムであって、前記識別情報は、前記ファームウェアのバージョンの情報を含み、前記ブートローダは、前記2つの可否情報記憶部に記憶された前記起動可否情報の両方が、前記ファームウェアを起動可能であることを示している情報である場合に、前記2つのバンク記憶された前記ファームウェアのうち、前記識別情報が示すバージョンが新しいほうの前記ファームウェアを起動させる。
本発明によると、2つのバンクの両方においてファームウェアを起動可能な場合に、よりバージョンの新しいほうのファームウェアを起動させことができる。
第4の発明に係るファームウェア更新システムは、第2または第3の発明に係るファームウェア更新システムであって、前記識別情報は、前記ファームウェアに対応する機器固有の情報を含み、前記ブートローダは、前記2つのバンクの各々について、前記バンクに対応する前記起動可否情報が前記ファームウェアを起動可能であることを示しており、かつ、当該バンクに記憶されている前記ファームウェアの前記識別情報に含まれる前記機器固有の情報が、前記マイコンが制御する機器の種類に対応するものである場合にのみ、当該バンクに記憶されている前記ファームウェアを起動可能と判断し、前記マイコンは、前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに書き込まれた前記ファームウェアの前記識別情報が正しいか否かを判断し、当該識別情報が正しい場合にのみ、前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更する。
本発明によると、非動作バンクへのファームウェアの書き込みが完了したときに、当該ファームウェアの識別情報に含まれる機器固有の情報が、マイコンが制御する機器の種類に対応するものであることを確認してから、非動作バンクに対応する起動可否情報がファームウェアを起動可能なことを示す情報に変更することができる。
第5の発明に係るファームウェア更新システムは、第1~第4のいずれかの発明に係るファームウェア更新システムであって、前記マイコンは、前記コントローラから前記ファームウェアのデータを受信したときに、前記ファームウェアのデータに問題がないか否かを判断し、前記ファームウェアのデータに問題がない場合にのみ、前記非動作バンクへの前記ファームウェアのデータの書き込みを行う。
本発明によると、非動作バンクに不正なデータが書き込まれてしまうのを防止することができる。
また、コントローラから受信したファームウェアのデータに問題がない場合にのみ、非動作バンクへのファームウェアのデータの書き込みを行うため、ファームウェアの書き込み後に、動作確認を行うための再起動などが不要となる。これにより、ファームウェアの更新を高速に行うことができる。
第6の発明に係るファームウェア更新方法は、ファームウェアが記憶される記憶装置を有するマイコンにおいて前記ファームウェアを更新するファームウェア更新方法であって、前記記憶装置が、前記ファームウェアがそれぞれ記憶される2つのバンクと、前記2つのバンクに対してそれぞれ設けられ、前記ファームウェアが起動可能であるか否かを示す起動可否情報を記憶する2つの可否情報記憶部と、前記ファームウェアを起動させるブートローダを記憶するブートローダ記憶部と、を有し、前記マイコンから、前記2つのバンクのどちらが、前記ファームウェアが起動中の動作バンクであるかの情報を取得し、前記マイコンに、前記2つのバンクのうち前記動作バンクでない非動作バンクに、更新するための前記ファームウェアのデータを送信し、前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアが起動不可能であることを示す情報とした状態で、前記非動作バンクへの前記ファームウェアのデータの書き込みを行い、前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに対応する前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更したうえで、前記マイコンを再起動させて前記ブートローダを実行して、前記ブートローダに、前記2つの可否情報記憶部に記憶された前記起動可否情報に基づいて、前記2つのバンクのいずれかに記憶された前記ファームウェアを選択的に起動させる。
本発明によれば、ファームウェアの更新中のどの時点で電源供給が遮断されてしまった場合でも、ファームウェアを起動できなくなってしまうことがない。また、ファームウェアイメージの二重化を実現することができる。
本発明の実施形態に係るファームウェア更新システムの構成を示すブロック図である。 ファームウェアの更新時のコントローラにおける処理の流れを示すフローチャートである。 ファームウェアの更新時のマイコンにおける処理の流れを示すフローチャートである。 ブートローダの処理の流れを示すフローチャートである。 内蔵フラッシュメモリの状態を説明するための図であり、(a)が第2可否情報記憶部に記憶される起動可否情報をファームウェアを起動不可能であることを示す情報に変更する前の状態を示し、(b)が(a)の後、第2バンクへのファームウェアのデータの書き込みが完了するまでの状態を示し、(c)が(b)の後、第2可否情報記憶部に記憶される起動可否情報をファームウェアを起動可能であることを示す情報に変更する前の状態を示し、(d)が(c)よりも後の状態を示している。
以下、本発明の好適な実施形態について説明する。
<ファームウェア更新システムの全体構成>
図1に示すように、本実施形態に係るファームウェア更新システム1は、マイコン2とコントローラ3とを備えている。マイコン2は、各種の機器に設けられ、当該機器の動作を制御する。コントローラ3は、後述するようにマイコン2に記憶されたファームウェアを更新するときに、マイコン2と通信可能に接続される。
<マイコンの構成>
マイコン2は、内蔵フラッシュメモリ10(本発明の「記憶装置」)を有する。内蔵フラッシュメモリ10は、第1バンク11と、第2バンク12と、第1可否情報記憶部13と、第2可否情報記憶部14と、ブートローダ記憶部15とを有する。なお、本実施形態では、第1バンク11および第2バンク12が、本発明の「2つのバンク」に相当し、第1可否情報記憶部13および第2可否情報記憶部14が、本発明の「2つの可否情報記憶部」に相当する。
第1バンク11および第2バンク12は、それぞれ、ファームウェアを記憶するための領域である。また、ファームウェアには、自身を識別するための識別情報が含まれている。識別情報には、ファームウェアに対応する機器固有の情報、ファームウェアのバージョンの情報などが含まれている。
第1可否情報記憶部13は、第1バンク11についての、ファームウェアを起動可能であるか否かを示す起動可否情報を記憶するための領域である。第2可否情報記憶部14は、第2バンク12についての、ファームウェアを起動可能であるか否かを示す起動可否情報を記憶するための領域である。
ブートローダ記憶部15は、ブートローダを記憶するための領域である。ブートローダとは、マイコン2の起動時に実行される、ファームウェアを起動させるためのプログラムのことである。このブートローダは、後述するように、第1可否情報記憶部13および第2可否情報記憶部に記憶された起動可否情報と、ファームウェアに含まれる識別情報とに基づいて、第1バンク11および第2バンク12のいずれかに記憶されたファームウェアを選択的に起動させる。
<ファームウェアの更新時の処理>
次に、ファームウェア更新システム1において、ファームウェアを更新するための処理の流れについて説明する。本実施形態では、マイコン2が、ブートローダによって起動された、第1バンク11および第2バンク12のいずれかに記憶されたファームウェアに基づいて機器の制御を行っている状態で、ファームウェアの更新を行う。
ファームウェア更新システム1において、ファームウェアを更新するときには、コントローラ3をマイコン2と通信可能に接続する。ここで、コントローラ3には、第1バンク11用の更新ファームウェアデータと、第2バンク用の更新ファームウェアデータとが記憶されている。第1バンク11用の更新ファームウェアデータとは、第1バンク11上で動作する、更新するためのファームウェアのデータである。第2バンク12用の更新ファームウェアデータとは、第2バンク12上で動作する、更新するためのファームウェアのデータである。
第1バンク11用の更新ファームウェアデータと第2バンク用の更新ファームウェアデータとでは、ファームウェアの内容は同じであるが、内蔵フラッシュメモリ10における、ファームウェアの実行アドレスが異なる。また、第1バンク11および第2バンク12用の更新ファームウェアデータにも、上記識別情報が含まれている。
そして、コントローラ3がマイコン2に接続されたファームウェア更新システム1では、例えば、作業者がファームウェアの更新を開始させるための適宜の操作を行うことにより、コントローラ3に、図2のフローに示す処理を開始させる。
図2は、ファームウェアの更新時のコントローラにおける処理の流れを示すフローチャートである。図2のフローについてより詳細に説明すると、コントローラ3は、まず、マイコン2に動作バンクの問い合わせを行う(S101)。動作バンクの問い合わせとは、第1バンク11および第2バンク12のどちらが、ファームウェアが起動中の動作バンクであるかについての問い合わせのことである。
また、コントローラ3によりS101の動作バンクの問い合わせが行われると、マイコン2は、図3のフローに示す処理を開始する。図3は、ファームウェアの更新時のマイコンにおける処理の流れを示すフローチャートである。図3のフローについてより詳細に説明すると、マイコン2は、まず、コントローラ3のS101の問い合わせに対して、第1バンク11および第2バンク12のどちらが動作バンクであるかの情報(以下、「動作バンクの情報」とすることがある)をコントローラ3に送信する(S201)。このとき、マイコンは、例えば、内蔵フラッシュメモリ10の、動作しているファームウェアの識別情報が配置されているアドレスに基づいて、第1バンク11および第2バンク12のどちらが動作バンクであるかを判断する。
図2に示すように、コントローラ3は、S101の動作バンクの問い合わせの後、マイコン2から動作バンクの情報を受信するまで待機する(S102:NO)。そして、コントローラ3は、マイコン2から動作バンクの情報を受信したときに(S102:YES)、ファームウェア更新の開始指示をマイコン2に送信する(S103)。
図3に示すように、マイコン2は、S201で動作バンクの情報を送信した後、コントローラ3からファームウェア更新の開始指示を受信するまで待機する(S202:NO)。そして、マイコン2は、コントローラ3からファームウェア更新の開始指示を受信したときに(S202:YES)、第1バンク11及び第2バンク12のうち動作バンクでない非動作バンクに対応する可否情報記憶部(第1可否情報記憶部13および第2可否情報記憶部14のいずれか)に記憶されている起動可否情報を、ファームウェアが起動不可能であることを示す情報に変更したうえで(S203)、ファームウェア更新の開始応答をコントローラ3に送信する(S204)。
コントローラ3は、図2に示すように、S103のファームウェア更新開始指示の送信後、ファームウェア更新の開始応答を受信するまで待機する(S104:NO)。そして、ファームウェア更新の開始応答の信号を受信したときに(S104:YES)、コントローラ3は、非動作バンク用の更新ファームウェアデータをマイコン2に送信する(S105)。
マイコン2は、図3に示すように、S204のファームウェア更新の開始応答の送信後、更新ファームウェアデータを受信するまで待機し(S205:NO)、更新ファームウェアデータを受信したときに(S205:YES)、受信した更新ファームウェアデータに問題がないか否かを判定する(S206)。S206では、例えば、マイコン2は、受信した更新ファームウェアデータが不正なデータである場合、受信した更新ファームウェアデータの書き込みアドレスが不正である場合、受信した更新ファームウェアデータの定量毎のチェックサムの結果が異常である場合などに、受信した更新ファームウェアデータに問題があると判定する。
受信した更新ファームウェアデータに問題がある場合には(S206:NO)、マイコン2は、エラー信号をコントローラ3に出力し(S207)、更新処理を終了する。受信した更新ファームウェアデータに問題がない場合には(S206:YES)、マイコン2は、非動作バンクへの更新ファームウェアデータの書き込みを行う(S208)。そして、非動作バンクへの更新ファームウェアデータの書き込みが完了したときに、マイコン2は、更新ファームウェアデータの書き込みが完了したことを示す更新データ応答を、コントローラ3に送信する(S209)。
コントローラ3は、図2に示すように、S105で更新ファームウェアデータを送信した後、エラー信号を受信していなければ(S108:NO)、更新データ応答を受信するまで待機する(S106:NO)。また、更新データ応答の受信の待機中に(S106:NO)、エラー信号を受信したときには(S108:YES)、処理を終了する。そして、更新データ応答を受信したときに(S106:YES)、コントローラ3は、全ての更新ファームウェアデータの送信が完了したか否かを判定する(S107)。
ここで、本実施形態では、コントローラ3が、S105において、更新ファームウェアデータを一部分ずつ分割して送信している。S107では、上述したように分割して送信する更新ファームウェアデータが全て送信されたか否かを判定する。
そして、全ての更新ファームウェアデータの送信が完了していない場合には(S107:NO)、S105に戻り、全ての更新ファームウェアデータの送信が完了したときに(S107:YES)、処理を終了する。
一方、マイコン2は、図3に示すように、S209の更新データ応答の送信後、全ての更新ファームウェアデータの受信が完了したか否かを判定する(S210)。ここで、本実施形態では、上述したようにコントローラ3から分割された更新ファームウェアデータの一部分を受信する毎に、その都度、受信したデータを非動作バンクに書き込む。これにより、マイコン2に、受信した更新ファームウェアデータを一時的に記憶しておくために別途メモリなどを設ける必要がない。そして、S210では、上述したように分割されてコントローラ3から送られてきた更新ファームウェアデータの全てのデータを受信したか否かを判定する。
全ての更新ファームウェアデータの受信が完了していない場合には(S210:NO)、S205に戻る。全ての更新ファームウェアデータの受信が完了したときには(S210:YES)、マイコン2は、非動作バンクに書き込まれた更新ファームウェアデータに含まれる識別情報に問題がないか否かを判定する(S211)。S211では、例えば、当該識別情報が示す機器固有情報が、マイコン2が制御する機器に対応するものでない場合に、識別情報に問題があると判定する。
識別情報に問題がある場合には(S211:NO)、マイコン2は、エラー信号をコントローラ3に出力し(S207)、更新処理を終了する。識別情報に問題がない場合には(S211:YES)、マイコン2は、非動作バンクに対応する可否情報記憶部に記憶されている起動可否情報を、ファームウェアを起動可能であることを示す情報に変更したうえで(S212)、再起動処理を行う(S213)。再起動処理では、現在起動中のファームウェアを終了させたうえで、ブートローダを起動させる。
S213の再起動処理で起動されたブートローダは、図4のフローに沿って処理を行う。なお、ブートローダは、マイコン2が制御している機器の電源がオンになったときなど、S213の再起動処理以外のマイコン2の起動時においても図4のフローに沿って処理を行う。
図4のフローについてより詳細に説明すると、ブートローダは、第1可否情報記憶部13および第2可否情報記憶部14に記憶された起動可否情報と、第1バンク11および第2バンク12に記憶されたファームウェアの識別情報とに基づいて、第1バンク11および第2バンク12のそれぞれについて、ファームウェアを起動可能か否かを判断する。
具体的には、ブートローダは、第1可否情報記憶部13に記憶された起動可否情報が、ファームウェアを起動可能なことを示しており、かつ、第1バンク11に記憶されたファームウェアの識別情報に含まれる機器固有情報が、マイコン2によって制御される機器の種類に対応している場合に、第1バンク11に記憶されているファームウェアを起動可能であると判断する。
同様に、ブートローダは、第2可否情報記憶部14に記憶された起動可否情報が、ファームウェアを起動可能なことを示しており、かつ、第2バンク12に記憶されたファームウェアの識別情報に含まれる機器固有情報が、マイコン2によって制御される機器の種類に対応している場合に、第2バンク12に記憶されているファームウェアを起動可能であると判断する。
そして、第1バンク11および第2バンク12のうち、第1バンク11についてのみファームウェアを起動可能な場合には(S301:YES)、ブートローダは、第1バンク11に記憶されたファームウェアを起動させる(S302)。
また、第1バンク11および第2バンク12のうち、第2バンク12についてのみファームウェアを起動可能な場合には(S301:NO、S303:YES)、ブートローダは、第2バンク12に記憶されたファームウェアを起動させる(S304)。
第1バンク11および第2バンク12の両方についてファームウェアを起動可能な場合には(S301:NO、S303:NO、S305:YES)、ブートローダは、第1バンク11および第2バンク12に記憶されたファームウェアの識別情報に含まれるバージョンの情報に基づいて、どちらのバンクに記憶されたファームウェアのバージョンがより新しいかを判断する(S306)。
そして、第1バンク11に記憶されたファームウェアのバージョンのほうが新しい場合には(S306:YES)、ブートローダは、第1バンク11に記憶されたファームウェアを起動させる(S302)。一方、第2バンク12に記憶されたファームウェアのバージョンのほうが新しい場合には(S306:NO)、ブートローダは、第2バンク12に記憶されたファームウェアを起動させる(S304)。
第1バンク11および第2バンク12の両方についてファームウェアが起動不可能な場合には(S301:NO、S303:NO、S305:NO)、ブートローダはエラー信号を出力して(S307)、処理を終了する。
<更新途中に電源供給が遮断した場合のマイコンの状態>
次に、上述したようにしてファームウェアを更新している途中の各時点において停電等によって電源供給が遮断してしまった場合の内蔵フラッシュメモリ10の状態について説明する。なお、ここでは、第1バンク11に記憶されたファームウェアの動作中に、第2バンク12への更新ファームウェアデータの書き込みを行う場合、すなわち、第1バンク11が動作バンクであり、第2バンク12が非動作バンクである場合を例に挙げて説明する。
まず、S101~S103、S201~S203のいずれかの処理の途中に、電源供給が遮断されてしまった場合を考える。
この場合には、第1バンク11および第2バンク12に記憶されているファームウェアのデータ、および、第1可否情報記憶部13および第2可否情報記憶部14に記憶されている起動可否情報に対する変更等が行われていない。したがって、図5(a)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第2バンク12に更新前のファームウェアが記憶され、可否情報記憶部13、14に記憶された起動可否情報の両方が、ファームウェアを起動可能であることを示している。
そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11記憶されたファームウェアを起動させることになり、問題がない。
ここで、図5(a)においては、第1バンク11、第2バンク12、第1可否情報記憶部13および第2可否情報記憶部14の括弧書きの内容が、各部分に記憶されている内容を示している。また、図5(a)中の「FW」とはファームウェアのことである。以下に説明する図5(b)~(d)についても同様である。
次に、S104~S107、S204~S210のいずれかの処理の途中に、電源供給が遮断された場合を考える。
この場合には、図5(b)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第1可否情報記憶部13に記憶された起動可否情報が、ファームウェアを起動可能であることを示している。一方で、第2バンク12においては、更新前のファームウェアが記憶された状態、または、ファームウェアの更新途中の状態となっているのに対して、第2可否情報記憶部14に記憶された起動可否情報が、ファームウェアを起動不可能であることを示している。
そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11記憶されたファームウェアを起動させることになり、問題がない。
次に、S211、S212のいずれかの処理の途中に、電源供給が遮断された場合を考える。
この場合には、図5(c)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第1可否情報記憶部13に記憶された起動可否情報が、ファームウェアを起動可能であることを示しているが、第2可否情報記憶部14に記憶された起動可否情報が、ファームウェアを起動不可能であることを示している。
そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11に記憶されたファームウェアを起動させることになり、問題がない。
また、S212の処理が完了した後に、電源供給が遮断された場合には、図5(d)に示すように、第1バンク11に、それまで動作していたファームウェアが記憶され、第2バンク12に更新後のファームウェアが記憶され、可否情報記憶部13、14に記憶された起動可否情報の両方が、ファームウェアを起動可能であることを示している。そのため、電源供給が回復し、マイコン2が再起動されたときに、ブートローダが、図4のフローに沿って処理を行うことにより、第1バンク11および第2バンク12に記憶されたファームウェアのうち、バージョンの新しい方のファームウェアが起動される。
これにより、第2バンク12に記憶された更新後のファームウェアが、第1バンク11に記憶されたファームウェアよりもバージョンの新しいものである場合には、第2バンク12に記憶された更新後のファームウェアが起動される。第2バンク12に記憶された更新後のファームウェアが、第1バンク11に記憶されたファームウェアよりもバージョンの古いものである場合には、第1バンク11に記憶された更新前のファームウェアが起動される。なお、第2バンク12に記憶された更新後のファームウェアが、第1バンク11に記憶されたファームウェアとバージョンが同じものである場合には、第1バンク11および第2バンク12のどちらかに記憶されたファームウェアが起動されるようすればよい。
以上のように、本実施形態の場合には、ファームウェアの更新のための処理のどの時点で電源供給が遮断されてしまった場合でも、電源供給が回復し、マイコン2が再起動されたときに、ファームウェアを正常に起動させることができる。
また、上述したのとは逆に、第2バンク12に記憶されたファームウェアの動作中に、第1バンク11に記憶されるファームウェアを更新する場合、すなわち、第2バンク12が動作バンクであり、第1バンク11が非動作バンクである場合には、第1バンク11と第2バンク12、および、第1可否情報記憶部13と第2可否情報記憶部14とで、記憶されている内容が、上述したのと逆になるだけである。
<効果>
本実施形態では、マイコン2の内蔵フラッシュメモリ10が、ファームウェアを記憶する2つのバンク(第1バンク11、第2バンク12)と、2つのバンクに対応する2つの可否情報記憶部(第1可否情報記憶部13、第2可否情報記憶部14)と、ブートローダ記憶部15とを有する。そして、ファームウェアの更新時に、2つのバンクのうち、非動作バンクに対応する可否情報記憶部に記憶される起動可否情報を、ファームウェアを起動不可能であることを示す情報としたうえで、非動作バンクに更新後のファームウェアのデータを書き込む。これにより、上述したように、ファームウェアの更新中のどの時点で電源供給が遮断されてしまった場合でも、ファームウェアを起動できなくなってしまうことがない。
また、本実施形態では、2つのバンクのうち一方のバンクに記憶されているファームウェアが起動できない場合でも、他方のバンクに記憶されたファームウェアが起動可能であれば、当該ファームウェアを起動することができる。すなわち、ファームウェアイメージの二重化を実現することができる。
また、本実施形態では、ファームウェアが自身を識別するための識別情報を含んでおり、ブートローダが、2つの可否情報記憶部に記憶された起動可否情報と、識別情報とに基づいて、2つのバンクのいずれかに記憶されたファームウェアを起動させる。これにより、より適切なファームウェアを起動させることができる。
また、本実施形態では、識別情報がファームウェアのバージョンの情報を含んでいる。そして、2つのバンクの両方においてファームウェアを起動可能な場合に、よりバージョンの新しいほうのファームウェアを起動させる。これにより、より新しいファームウェアを起動させることができる。
また、本実施形態では、非動作バンクへの更新ファームウェアデータの書き込みが完了した後に、非動作バンクに書き込まれた更新ファームウェアデータに含まれる識別情報に問題がないか否かを判定する。そして、当該識別情報に問題がない場合にのみ、非動作バンクに対応する起動可否情報を、ファームウェアを起動可能であることを示す情報に変更する。これにより、非動作バンクにマイコン2が制御する機器に対応する更新ファームウェアが書き込まれ、非動作バンクに記憶されたファームウェアが確実に起動可能な状態となってから、非動作バンクに対応する起動可否情報を、ファームウェアを起動可能なことを示す情報とすることができる。
また、本実施形態では、マイコン2がコントローラ3から更新ファームウェアデータを受信したときに、更新ファームウェアデータに問題がないか否かを判断し、問題がない場合にのみ、非動作バンクへの更新ファームウェアデータの書き込みを行う。これにより、非動作バンクに、適切でないファームウェアデータが書き込まれてしまうことを防止することができる。
また、マイコン2が、コントローラ3から受信した更新ファームウェアデータに問題がない場合にのみ、非動作バンクへの更新ファームウェアデータの書き込みを行うため、ファームウェアの書き込み後に、動作確認を行うための再起動などが不要となる。これにより、ファームウェアの更新を高速に行うことができる。
<変形例>
以上、本発明の好適な実施形態について説明したが、本発明は上述の実施形態に限られるものではなく、特許請求の範囲に記載の限りにおいて様々な変更が可能である。
上述の実施形態では、ファームウェアの更新時に、マイコン2が、非動作バンクへの更新ファームウェアデータの書き込みの完了後に、非動作バンクに書き込まれた更新ファームウェアデータに含まれる識別情報に問題がないか否かを判定する。そして、当該識別情報に問題がない場合にのみ、非動作バンクに対応する起動可否情報を、ファームウェアを起動可能であることを示す情報に変更する。しかしながら、これには限られない。
例えば、非動作バンクへの更新ファームウェアデータの書き込みの完了後、上記判定を行うことなく、非動作バンクに対応する可否情報記憶部に記憶された起動可否情報を、ファームウェアを起動可能であることを示す情報に変更してもよい。非動作バンクへの更新ファームウェアデータの書き込みが完了していれば、通常は、非動作バンクに記憶されたファームウェアは起動可能となるため、上記判定を行わなくても問題となることはほぼない。また、仮に、非動作バンクに書き込まれた更新ファームウェアが、マイコン2が制御する機器に対応するものでない場合には、ファームウェアの識別情報に含まれる機器固有情報が、マイコン2が制御する機器の種類に対応するものではないため、ブートローダが非動作バンクに記憶されたファームウェアを起動してしまうことはない。
また、上述の実施形態では、非動作バンクへの更新ファームウェアデータの書き込みを行う前に、マイコン2が、受信した更新ファームウェアデータに問題がないか否かを判断したが、これには限られない。
例えば、マイコン2が、コントローラ3から更新ファームウェアデータを受信したときに、更新ファームウェアデータに問題がないか否かの判定を行わずに、非動作バンクへの当該更新ファームウェアデータの書き込みを行うようにしてもよい。通常、コントローラ3からマイコン2に異なる機器のファームウェアが送信されることはない。また、仮に、非動作バンク2に異なる機器の更新ファームウェアデータが書き込まれてしまった場合、当該ファームウェアの識別情報に含まれる機器固有情報が、マイコン2が制御する機器の種類に対応しない。
したがって、例えば、上述の実施形態で説明したように、起動可否情報がファームウェアを起動可能であることを示しており、かつ、識別情報に含まれる機器固有情報が、マイコン2が制御する機器の種類に対応している場合にのみ、ファームウェアを起動させるようにしておけば、異なる機器のファームウェアを起動してしまうことはない。
あるいは、例えば、更新ファームウェアデータの書き込み後に、S211の判断を行うようにすれば、非動作バンクに異なる機器のファームウェアのデータが記憶された状態で、非動作バンクに対応する起動可否情報が、ファームウェアを起動可能であることを示す情報に変更されることがない。したがって、非動作バンクに書き込まれた、異なる機器のファームウェアが起動されてしまうことがない。
また、上述の実施形態では、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、第1バンク11および第2バンク12に記憶された識別情報に含まれるファームウェアのバージョンの情報を参照し、バージョンの新しい方のファームウェアを起動させるようにしたが、これには限られない。
例えば、識別情報を、ファームウェアが作成された日時の情報を含むものとし、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、第1バンク11および第2バンク12に記憶された識別情報に含まれるファームウェアの作成日時の情報を参照し、作成日時の新しい方のファームウェアを起動させるようにしてもよい。
さらには、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、識別情報に基づいて、どちらのバンクに記憶されたファームウェアを起動させるかを決定することにも限られない。例えば、内蔵フラッシュメモリ10に、第1バンク11および第2バンク12のうち、最後にファームウェアのデータの書き込みが行われたバンクの情報を記憶するための領域を設け、第1バンク11および第2バンク12の両方において、ファームウェアの起動が可能な場合に、第1バンク11および第2バンク12のうち、最後にファームウェアのデータの書き込みが行われたバンクに記憶されたファームウェアを起動させるようにしてもよい。
通常、後に書き込まれたファームウェアほどバージョンが新しい。そして、この場合には、上述したように、第1バンク11および第2バンク12のうち、どちらのバンクに最後にファームウェアのデータが書き込まれたかに基づいてファームウェアを起動させれば、よりバージョンの新しいファームウェアを起動させることができる。ただし、この場合、例えば、非動作バンクに、現在使用されているものよりもバージョンの古いファームウェアのデータが書き込まれてしまうと、第1バンク11および第2バンク12に記憶されたファームウェアのうち、よりバージョンの古いものが起動されてしまうことになる。
1 ファームウェア更新システム
2 マイコン
3 コントローラ
10 内蔵フラッシュメモリ
11 第1バンク
12 第2バンク
13 第1可否情報記憶部
14 第2可否情報記憶部
15 ブートローダ記憶部

Claims (4)

  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つのバンクの各々について、前記バンクに対応する前記起動可否情報が前記ファームウェアを起動可能であることを示しており、かつ、当該バンクに記憶されている前記ファームウェアの前記識別情報に含まれる前記機器固有の情報が、前記マイコンが制御する機器の種類に対応するものである場合にのみ、当該バンクに記憶されている前記ファームウェアを起動可能と判断させ、
    前記マイコンに、
    前記非動作バンクへの前記ファームウェアのデータの書き込みの完了後に、前記非動作バンクに書き込まれた前記ファームウェアの前記識別情報が正しいか否かを判断させ、当該識別情報が正しい場合にのみ、前記非動作バンクに対して設けられた前記可否情報記憶部に記憶される前記起動可否情報を、前記ファームウェアを起動可能であることを示す情報に変更させることを特徴とするファームウェア更新方法。
JP2020127736A 2020-07-28 2020-07-28 ファームウェア更新システムおよびファームウェア更新方法 Active JP7491765B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020127736A JP7491765B2 (ja) 2020-07-28 2020-07-28 ファームウェア更新システムおよびファームウェア更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020127736A JP7491765B2 (ja) 2020-07-28 2020-07-28 ファームウェア更新システムおよびファームウェア更新方法

Publications (2)

Publication Number Publication Date
JP2022024904A JP2022024904A (ja) 2022-02-09
JP7491765B2 true JP7491765B2 (ja) 2024-05-28

Family

ID=80265707

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020127736A Active JP7491765B2 (ja) 2020-07-28 2020-07-28 ファームウェア更新システムおよびファームウェア更新方法

Country Status (1)

Country Link
JP (1) JP7491765B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004318871A (ja) 2003-03-31 2004-11-11 Ricoh Co Ltd 通信装置とその遠隔管理システム,os更新方法,プログラム,および記録媒体
JP2008299709A (ja) 2007-06-01 2008-12-11 Nec Corp ファームウェア更新システム、ネットワーク接続機器、ファームウェア更新方法及びプログラム
JP2011085977A (ja) 2009-10-13 2011-04-28 Hitachi Kokusai Electric Inc 信号処理装置
JP2012248189A (ja) 2011-05-24 2012-12-13 Heiderberger Druckmaschinen Ag オペレーティングシステムソフトウエアのインストール方法
JP2016174196A (ja) 2015-03-16 2016-09-29 富士通株式会社 通報システム、通報端末、センター装置および端末管理方法
WO2019207729A1 (ja) 2018-04-26 2019-10-31 三菱電機株式会社 産業用コンピュータ、産業用コンピュータシステム、オペレーティングシステム更新方法及びプログラム
JP2020102141A (ja) 2018-12-25 2020-07-02 東芝テック株式会社 情報処理装置及びプログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004318871A (ja) 2003-03-31 2004-11-11 Ricoh Co Ltd 通信装置とその遠隔管理システム,os更新方法,プログラム,および記録媒体
JP2008299709A (ja) 2007-06-01 2008-12-11 Nec Corp ファームウェア更新システム、ネットワーク接続機器、ファームウェア更新方法及びプログラム
JP2011085977A (ja) 2009-10-13 2011-04-28 Hitachi Kokusai Electric Inc 信号処理装置
JP2012248189A (ja) 2011-05-24 2012-12-13 Heiderberger Druckmaschinen Ag オペレーティングシステムソフトウエアのインストール方法
JP2016174196A (ja) 2015-03-16 2016-09-29 富士通株式会社 通報システム、通報端末、センター装置および端末管理方法
WO2019207729A1 (ja) 2018-04-26 2019-10-31 三菱電機株式会社 産業用コンピュータ、産業用コンピュータシステム、オペレーティングシステム更新方法及びプログラム
JP2020102141A (ja) 2018-12-25 2020-07-02 東芝テック株式会社 情報処理装置及びプログラム

Also Published As

Publication number Publication date
JP2022024904A (ja) 2022-02-09

Similar Documents

Publication Publication Date Title
JP6390644B2 (ja) プログラム更新システム、プログラム更新方法及びコンピュータプログラム
JP4810172B2 (ja) 制御装置及びバージョンアップ方法並びにプログラム
KR100415371B1 (ko) 컴퓨터
WO2013103023A1 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
JP2006260330A (ja) 計算機システムのファームウェアのバージョン管理方法及び情報処理装置
CN111026417A (zh) 一种嵌入式设备的升级方法及嵌入式设备
JP2007122151A (ja) ブート制御装置およびブート制御方法
JP5084853B2 (ja) ファームウエア更新装置、通信装置、電子機器、ファームウエア更新システム、ファームウエア更新方法及びプログラム
JPWO2004081791A1 (ja) 仮想計算機システム、仮想計算機システムにおけるファームウェアアップデート方法
JP2022142263A (ja) 情報処理装置及び情報処理プログラム
JP2002342102A (ja) プログラム更新方法およびプログラム更新方式
JP7491765B2 (ja) ファームウェア更新システムおよびファームウェア更新方法
JP2002189609A (ja) アクシデントに適応したソフトウェア更新方式および方法
EP4036712A1 (en) Ota master, update control method, non-transitory storage medium, and vehicle
CN114003242A (zh) 软件更新装置、更新控制方法、非临时存储介质及服务器
CN107247642B (zh) 用于系统开机时确定可执行映像文件的方法及装置
JPH10187454A (ja) Bios書き換え方式
JP2008217202A (ja) ディスクアレイ装置及びファームウェア更新方法
GB2576729A (en) Installing application program code on a vehicle control system
JP2003330724A (ja) 情報処理装置、情報処理方法、及びプログラム
JP2003122575A (ja) 情報処理装置
JPH0973437A (ja) マルチcpuシステム
JP2002073360A (ja) 起動情報書換装置
JPH1083358A (ja) プログラム書換方法およびプログラム書換機能付制御装置
JP2005078336A (ja) 画像形成装置と画像形成装置のプログラム書換方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240229

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240516

R150 Certificate of patent or registration of utility model

Ref document number: 7491765

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150