JP2010211295A - データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム - Google Patents

データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム Download PDF

Info

Publication number
JP2010211295A
JP2010211295A JP2009053795A JP2009053795A JP2010211295A JP 2010211295 A JP2010211295 A JP 2010211295A JP 2009053795 A JP2009053795 A JP 2009053795A JP 2009053795 A JP2009053795 A JP 2009053795A JP 2010211295 A JP2010211295 A JP 2010211295A
Authority
JP
Japan
Prior art keywords
data
update
new
unit
size
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.)
Granted
Application number
JP2009053795A
Other languages
English (en)
Other versions
JP5225163B2 (ja
Inventor
Akira Fujisawa
暁 藤澤
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009053795A priority Critical patent/JP5225163B2/ja
Publication of JP2010211295A publication Critical patent/JP2010211295A/ja
Application granted granted Critical
Publication of JP5225163B2 publication Critical patent/JP5225163B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】複数の組み込み機器のF/W(ファームウェア)の更新時間を短縮し、また、前記複数の組み込み機器に内蔵されている不揮発性メモリへのアクセス回数を減らすことにより不揮発性メモリの寿命を延ばせるF/W更新システムの提供を目的とする。
【解決手段】パソコン側ツール210は、新しいF/W291と組み込み機器に組み込まれている更新前F/Wとを特定のブロックサイズで分割する。パソコン側ツール210は、新しいF/W291のブロックと更新前F/Wのブロックとを比較し、ブロック毎に一致するか否かを示す差分情報を生成する。パソコン側ツール210は、差分情報に基づいて、更新前F/Wと異なる新しいF/W291の各ブロックを組み込み機器へ送信する。組み込み機器のF/W更新タスク310は、新しいF/W291の各ブロックを更新前F/Wの当該ブロックに書き込んで更新前F/Wを更新する。
【選択図】図1

Description

本発明は、例えば、組み込み機器のF/W(ファームウェア)を更新するデータ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラムに関するものである。
従来、組み込み機器のF/Wを新しいF/Wへ更新するには、上記F/Wのイメージ(データ)が格納されたコンパクトフラッシュ(登録商標)カードやUSBメモリ等の媒体を使用し、上記F/Wイメージを上記組み込み機器にインストールすることで行われていた。上記インストールとは、上記組み込み機器内の不揮発性メモリに上記F/Wイメージを書き込むことである。
しかし、F/Wの更新対象となる組み込み機器が複数ある場合、組み込み機器毎にF/Wの更新を行わなければならないため、F/Wの更新が煩雑となっていた。また、全ての組み込み機器のF/Wの更新を完了するのに時間がかかっていた。
この課題点の解決手段として、特許文献1に記載のF/W更新方式がある。
この方式は、複数の組み込み機器と管理サーバとをLAN(Local Area Network)で接続し、上記F/Wイメージを上記管理サーバから上記組み込み機器へ送信し、F/Wの更新を行う。
これにより、組み込み機器毎にF/Wの更新を行う必要がなくなるため、F/W更新にかかる時間や煩雑さを軽減することができる。
特開2004−288106号公報
上記特許文献1に記載されている方式では、上記管理サーバから、LANに接続されている上記組み込み機器へ上記F/Wイメージ全体を送信し、上記組み込み機器内の不揮発性メモリに上記F/Wイメージ全体を書き込んでいた。また、上記不揮発性メモリへデータを書き込むために上記不揮発性メモリのイレースが必要な場合、上記不揮発性メモリ上の更新前のF/Wのイレースを行ってから、上記F/Wイメージ全体を書き込んでいた。
この方式では、上記不揮発性メモリに書き込まれている上記更新前のF/Wに新しいF/Wと同じバイト列が存在した場合、当該箇所に同じバイト列を書き込む。上記イレースが必要な不揮発性メモリを内蔵している組み込み機器の場合、当該箇所のイレースを行ってから上記同じバイト列を書き込む。
このような方式でのF/Wの更新は、不揮発性メモリのイレース、F/Wイメージの書き込みに冗長な時間がかかる。また、不揮発性メモリへのアクセス回数が冗長となり、不揮発性メモリの寿命を早める。
本発明は、例えば、複数の組み込み機器のF/Wの更新時間を短縮し、また、前記複数の組み込み機器に内蔵されている不揮発性メモリへのアクセス回数を減らすことにより不揮発性メモリの寿命を延ばせるF/W更新システムの提供を目的とする。
本発明のデータ更新装置は、特定の機器で使用されている使用データと前記使用データとは少なくとも一部が異なる新データとを記憶媒体を用いて記憶するデータ記憶部と、前記データ記憶部に記憶された使用データを特定のサイズで複数の分割データにCPU(Central Processing Unit)を用いて分割する使用データ分割部と、前記データ記憶部に記憶された新データを前記特定のサイズで複数の分割データにCPUを用いて分割する新データ分割部と、前記使用データの分割データ毎に当該使用データの分割データとデータの並び順が対応する新データの分割データと同じであるか否かを示す情報を差分情報としてCPUを用いて生成する差分情報生成部と、前記差分情報生成部により生成された差分情報に基づいて新データの複数の分割データのうちデータの並び順が対応する使用データの分割データと異なる各分割データをCPUを用いて特定し、特定した新データの各分割データを差分データとして前記特定の機器に入力して前記特定の機器に前記使用データ内の前記差分データに対応する部分を前記差分データで更新させる差分データ入力部とを備える。
本発明によれば、例えば、複数の組み込み機器のF/Wの更新時間を短縮し、前記複数の組み込み機器に内蔵されている不揮発性メモリへのアクセス回数を減らすことにより不揮発性メモリの寿命を延ばせるF/W更新システムを提供できる。
実施の形態1におけるF/W更新システム100の構成図。 実施の形態1におけるパソコン側ツール210の構成図。 実施の形態1におけるパソコン200のハードウェア資源の一例を示す図。 実施の形態1におけるF/W更新方法の概要図。 実施の形態1におけるF/W更新方法の概要図。 実施の形態1におけるF/W更新方法を示すフローチャート。 実施の形態1におけるF/W更新方法を示すフローチャート。 実施の形態1における機器構成管理ファイル299の構成を示す図。 実施の形態1における更新前F/Wハッシュファイル作成処理(S120)のフローチャート。 実施の形態1における更新前F/Wと更新前F/Wハッシュファイル292との関係図。 実施の形態1における新F/Wハッシュファイル作成処理(S130)のフローチャート。 実施の形態1における差分情報ファイル作成処理(S140)の概要図。 実施の形態1における更新前F/W差分領域イレース処理(S150)の概要図。 実施の形態1における更新前F/W差分領域イレース処理(S150)のフローチャート。 実施の形態1における更新前F/W差分領域書き込み処理(S160)の概要図。
実施の形態1.
複数の組み込み機器それぞれのF/W(ファームウェア)を新しいバージョンのファームウェアに更新するF/W更新システムについて説明する。但し、F/Wは更新対象データの一例である。
図1は、実施の形態1におけるF/W更新システム100の構成図である。
実施の形態1におけるF/W更新システム100の構成について、図1に基づいて以下に説明する。
F/W更新システム100は、F/Wが組み込まれた組み込み機器(301〜304)と、各組み込み機器のF/Wを新しいF/W291に更新するパソコン200(データ更新装置の一例)とを有する。
各組み込み機器はケーブル101でパソコン200に接続され、パソコン200と各組み込み機器とはケーブル101を介して通信を行う。ケーブル101は通信回線の一例である。例えば、パソコン200と各組み込み機器とは無線で通信を行ってもよい。
組み込み機器の台数は、4つ未満または5つ以上であっても構わない。
各F/Wは、ウイルスや不正アクセス等による改ざんが成されていないものとする。
パソコン200の処理速度は十分に速いものとする。組み込み機器の処理速度および組み込み機器に内蔵されている不揮発性メモリ390へのアクセス速度は遅いものとする。ケーブル101の通信速度は十分に速いものとする。
F/Wは、不揮発性メモリ390(記憶媒体、記憶装置の一例)に書き込まれることにより、組み込み機器に組み込まれる(インストールされる)。書き込みは記憶や設定を意味する。
各組み込み機器は、F/W更新タスク310、不揮発性メモリ390およびCPU(Central Processing Unit)(図示省略)を備える。不揮発性メモリ390には更新前F/Wが記憶されている。
F/W更新タスク310は、組み込まれているF/Wをパソコン200からコマンド110で送信される新しいF/W291によりCPUを用いて更新する。
組み込み機器A301と組み込み機器B302とには、旧バージョン(例えば、バージョン「V」)のF/Wが組み込まれているものとする。以下、組み込み機器A301と組み込み機器B302とに組み込まれて使用されているF/Wを「更新前F/W(1)391」という。
組み込み機器C303と組み込み機器D304とには、更新前F/W(1)391より新しいバージョン(例えば、バージョン「V」)のF/Wが組み込まれているものとする。以下、組み込み機器C303と組み込み機器D304とに組み込まれて使用されているF/Wを「更新前F/W(2)392」という。
更新前F/W(1)391と更新前F/W(2)392とは少なくともデータの一部が異なる。更新前F/W(1)391のデータサイズと更新前F/W(2)392のデータサイズとは同じであっても異なっていても構わない。
パソコン200は、パソコン側ツール210およびパソコン側記憶部290を備える。
パソコン側ツール210は、新しいF/W291をコマンド110で各組み込み機器へ送信して、各組み込み機器に更新前F/Wを更新させる。
パソコン側記憶部290は、パソコン200で使用される各データを記憶媒体を用いて記憶する記憶装置である。例えば、パソコン側記憶部290には新しいF/W291が記憶されている。
新しいF/W291は、各更新前F/Wより新しいバージョン(例えば、バージョン「V」)のF/Wである。新しいF/W291と各更新前F/Wとは少なくともデータの一部が異なる。新しいF/W291のデータサイズと各更新前F/Wのデータサイズとは同じであっても異なっても構わない。
図2は、実施の形態1におけるパソコン側ツール210の構成図である。
実施の形態1におけるパソコン側ツール210の構成について、図2に基づいて以下に説明する。
パソコン側ツール210は、ツール制御部211、更新前F/Wハッシュファイル作成部212(使用データ分割部、使用データハッシュ値算出部の一例)、新F/Wハッシュファイル作成部213(新データ分割部、新データハッシュ値算出部の一例)、差分情報ファイル作成部214(差分情報生成部の一例)、差分データ出力部215(差分データ入力部の一例)およびパソコン側通信部219を備える。
パソコン側記憶部290(データ記憶部の一例)には、新しいF/W291の他に、機器構成管理ファイル299、更新前F/Wハッシュファイル292、新F/Wハッシュファイル293、差分情報ファイル294、更新前F/W(1)391および更新前F/W(2)392が記憶される。機器構成管理ファイル299はシステム管理者により予め記憶される。更新前F/Wハッシュファイル292、新F/Wハッシュファイル293および差分情報ファイル294はそれぞれ、更新前F/Wハッシュファイル作成部212、新F/Wハッシュファイル作成部213および差分情報ファイル作成部214により生成されて記憶される。更新前F/W(1)391および更新前F/W(2)392は、更新前F/Wハッシュファイル作成部212により組み込み機器から取得されて記憶される。
各「〜ファイル」については後述する。
ツール制御部211は、パソコン側ツール210の各「〜部」をCPUを用いて制御する。
パソコン側通信部219は、各組み込み機器と通信する通信装置である。
例えば、パソコン側通信部219は、新しいF/W291や差分情報ファイル294を含んだコマンド110を各組み込み機器へ送信する。また例えば、パソコン側通信部219は、各組み込み機器から更新前F/Wを受信する。
更新前F/Wハッシュファイル作成部212は、パソコン側通信部219を用いて各組み込み機器から更新前F/W(使用データの一例)を受信する。更新前F/Wハッシュファイル作成部212は、組み込み機器A301または組み込み機器B302から更新前F/W(1)391を受信し、受信した更新前F/W(1)391をパソコン側記憶部290に記憶する。更新前F/Wハッシュファイル作成部212は、組み込み機器C303または組み込み機器D304から更新前F/W(2)392を受信し、受信した更新前F/W(2)392をパソコン側記憶部290に記憶する。
更新前F/Wハッシュファイル作成部212は、更新前F/Wを特定のブロックサイズで複数の分割データにCPUを用いて分割する。
例えば、更新前F/Wハッシュファイル作成部212は、組み込み機器A301により更新前F/W(1)391に対して1回あたりに書き込まれるデータのサイズとして予め定められた書き込み単位サイズWと、組み込み機器B302により更新前F/W(1)391に対して1回あたりに書き込まれるデータのサイズとして予め定められた書き込み単位サイズWとの公倍数となるサイズをブロックサイズとして更新前F/W(1)391を分割する。
同様に、更新前F/Wハッシュファイル作成部212は、組み込み機器C303により更新前F/W(2)392に対して1回あたりに書き込まれるデータのサイズとして予め定められた書き込み単位サイズWと、組み込み機器D304により更新前F/W(2)392に対して1回あたりに書き込まれるデータのサイズとして予め定められた書き込み単位サイズWとの公倍数となるサイズをブロックサイズとして更新前F/W(2)392を分割する。
また例えば、更新前F/Wハッシュファイル作成部212は、書き込み単位サイズWと、書き込み単位サイズWと、組み込み機器A301により更新前F/W(1)391に対して1回あたりにイレースされるデータのサイズとして予め定められたイレース単位サイズEと、組み込み機器B302により更新前F/W(1)391に対して1回あたりにイレースされるデータのサイズとして予め定められたイレース単位サイズEとの公倍数となるサイズをブロックサイズとして更新前F/W(1)391を分割する。
同様に、更新前F/Wハッシュファイル作成部212は、書き込み単位サイズWと、書き込み単位サイズWと、組み込み機器C303により更新前F/W(2)392に対して1回あたりにイレースされるデータのサイズとして予め定められたイレース単位サイズEと、組み込み機器D304により更新前F/W(2)392に対して1回あたりにイレースされるデータのサイズとして予め定められたイレース単位サイズEとの公倍数となるサイズをブロックサイズとして更新前F/W(2)392を分割する。
イレースとは、データの削除、初期値の設定やメモリ領域の初期化を意味する。
さらに、更新前F/Wハッシュファイル作成部212は、所定のハッシュ関数により更新前F/Wの分割データ毎にハッシュ値をCPUを用いて算出する。更新前F/Wハッシュファイル作成部212は、更新前F/Wの各分割データのハッシュ値を設定した更新前F/Wハッシュファイル292を生成し、生成した更新前F/Wハッシュファイル292をパソコン側記憶部290に記憶する。
新F/Wハッシュファイル作成部213は、新しいF/W291(新データの一例)を更新前F/Wのブロックサイズで複数の分割データにCPUを用いて分割する。
さらに、新F/Wハッシュファイル作成部213は、前記ハッシュ関数により新しいF/W291の分割データ毎にハッシュ値をCPUを用いて算出する。新F/Wハッシュファイル作成部213は、新しいF/W291の各分割データのハッシュ値を設定した新F/Wハッシュファイル293を生成し、生成した新F/Wハッシュファイル293をパソコン側記憶部290に記憶する。
差分情報ファイル作成部214は、更新前F/Wの分割データ毎に当該更新前F/Wの分割データとデータの並び順が対応する新しいF/W291の分割データと同じであるか否かを示す差分情報ファイル294をCPUを用いて生成し、生成した差分情報ファイル294をパソコン側記憶部290に記憶する。
例えば、差分情報ファイル作成部214は、更新前F/Wハッシュファイル292に設定されているハッシュ値と新F/Wハッシュファイル293に設定されているハッシュ値とに基づいて差分情報ファイル294を生成する。
また例えば、差分情報ファイル作成部214は、更新前F/Wの分割データ毎に当該更新前F/Wの分割データとデータの並び順が対応する新しいF/W291の分割データと同じであるか否かを1ビットで表して差分情報ファイル294を生成する。
差分データ出力部215は、差分情報ファイル294に基づいて、新しいF/W291の複数の分割データのうち、データの並び順が対応する更新前F/Wの分割データと異なる各分割データをCPUを用いて特定する。
さらに、差分情報ファイル作成部214は、特定した新しいF/W291の各分割データを差分データとしてパソコン側通信部219を用いて特定の組み込み機器に送信する。
図3は、実施の形態1におけるパソコン200のハードウェア資源の一例を示す図である。
図3において、パソコン200は、CPU911(マイクロプロセッサ、マイクロコンピュータともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、ドライブ装置904、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。ドライブ装置904は、FD(Flexible・Disk・Drive)、CD(Compact Disc)、DVD(Digital・Versatile・Disc)などの記憶媒体を読み書きする装置である。
通信ボード915は、有線または無線で、LAN、インターネット、電話回線などの通信網を介して(または、直接)、各組み込み機器に接続している。
磁気ディスク装置920には、OS921(オペレーティングシステム)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。
プログラム群923には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU911により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
ファイル群924には、実施の形態において説明する「〜部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
図4および図5は、実施の形態1におけるF/W更新方法の概要図である。
実施の形態1におけるF/W更新方法の概要について、図4および図5に基づいて以下に説明する。
図4において、パソコン200のパソコン側ツール210は、新しいF/W291を構成する各ブロックのハッシュ値を設定した新F/Wハッシュファイル293を生成(S130)すると共に、組み込み機器の更新前F/Wを構成する各ブロックのハッシュ値を設定した更新前F/Wハッシュファイル292を生成する(S120)。
パソコン側ツール210は、新F/Wハッシュファイル293に設定された各ハッシュ値と更新前F/Wハッシュファイル292に設定された各ハッシュ値とを比較して、新F/Wハッシュファイル293の各ブロックと更新前F/Wハッシュファイル292の各ブロックとが同じであるか否かを示す差分情報ファイル294を生成する(S140)。
パソコン側ツール210は、生成した差分情報ファイル294を組み込み機器へ送信する(S114)。
図5において、組み込み機器のF/W更新タスク310は、パソコン側ツール210から送信された差分情報ファイル294を参照して更新前F/Wの各ブロックのうち新しいF/W291と異なるブロックをイレースする(S150)。
パソコン側ツール210は、差分情報ファイル294を参照して新しいF/W291から更新前F/Wと異なるブロックを読み出して組み込み機器に送信する(S161〜S163)。
F/W更新タスク310は、送信された新しいF/W291のブロックを更新前F/Wの当該ブロックに書き出して更新前F/Wを更新する(S164)。
図4および図5に示した「Sxxx」は、以下に説明するフローチャートの処理番号に対応している。
図6および図7は、実施の形態1におけるF/W更新方法を示すフローチャートである。
実施の形態1におけるF/W更新方法(データ更新方法の一例)について、図6および図7に基づいて以下に説明する。
パソコン側ツール210の各「〜部」と各組み込み機器のF/W更新タスク310とは、以下に説明する各処理(S110〜S119)をCPUを用いて実行する。
ツール制御部211は機器構成管理ファイル299から組み込み機器を一つ選択する(S110)。
ツール制御部211は選択機器F/Wのバージョンに対応する更新前F/Wハッシュファイル292がパソコン側記憶部290に有るか確認する(S111)。更新前F/Wハッシュファイル292が無い場合、更新前F/Wハッシュファイル作成部212は更新前F/Wハッシュファイル292を作成する(S120)。
ツール制御部211は選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293がパソコン側記憶部290に有るか確認する(S112)。新F/Wハッシュファイル293が無い場合、新F/Wハッシュファイル作成部213は新F/Wハッシュファイル293を作成する(S130)。
ツール制御部211は更新前F/Wハッシュファイル292と新F/Wハッシュファイル293とに対応する差分情報ファイル294がパソコン側記憶部290に有るか確認する(S113)。差分情報ファイル294が無い場合、差分情報ファイル作成部214は差分情報ファイル294を作成する(S140)。
パソコン側通信部219は差分情報ファイル294を含んだイレース命令コマンドを選択機器へ送信し(S114)、選択機器のF/W更新タスク310は差分情報ファイル294に基づいて差分領域をイレースする(S150)。
差分データ出力部215は差分情報ファイル294に基づいて新しいF/W291の差分データを含んだ書き込み要求コマンドを選択機器へ送信し(S161〜S163)、選択機器のF/W更新タスク310は新しいF/W291の差分データを更新前F/Wの書き込み領域へ書き込む(S164)。S161〜S164は新しいF/W291の全差分ブロックが更新前F/Wに書き込みされるまで繰り返される(S165、S166)。
S110〜S166は、組み込み機器毎に繰り返される(S119)。
以下に、各処理(S110〜S119)の詳細について説明する。
<S110>
ツール制御部211は、機器構成管理ファイル299を参照して複数の組み込み機器の中から組み込み機器を一つ選択する。
S110から後述するS119までの処理はループ処理される。
例えば、ツール制御部211は、更新前F/Wのバージョンの古い順、機器構成管理ファイル299内での設定順に組み込み機器を選択する。
図8は、実施の形態1における機器構成管理ファイル299の構成を示す図である。
実施の形態1における機器構成管理ファイル299について、図8に基づいて以下に説明する。
機器構成管理ファイル299には「組み込み機器」「F/Wのバージョン」「イレース単位サイズ」「書き込み単位サイズ」がシステム管理者により予め設定されている。
「組み込み機器」は、各組み込み機器の識別情報(例えば、名称)を示す。
「F/Wのバージョン」は、当該組み込み機器に組み込まれている更新前F/Wのバージョン情報(例えば、バージョン番号)を示す。
「イレース単位サイズ」は、当該組み込み機器により更新前F/Wに対して1回あたりにイレースされるデータのサイズを示す。
「書き込み単位サイズ」は、当該組み込み機器により更新前F/Wに対して1回あたりに書き込まれるデータのサイズを示す。
イレース単位サイズと書き込み単位サイズは更新前F/Wのデータサイズより小さいものとする。
S110(図6)において、ツール制御部211は、初回のループ時には更新前F/Wのバージョンが最も古い組み込み機器A301と組み込み機器B302とのうち機器構成管理ファイル299に先に設定されている組み込み機器A301を選択し、2回目のループ時には組み込み機器B302を選択するものとする。
また、ツール制御部211は、3回目のループ時には更新前F/Wのバージョンが次に古い組み込み機器C303と組み込み機器D304とのうち機器構成管理ファイル299に先に設定されている組み込み機器C303を選択し、4回目のループ時には組み込み機器D304を選択するものとする。
F/W更新方法(図6、7)の説明を続ける。
S110の後、処理はS111に進む。
<S111>
ツール制御部211は、S110において選択した組み込み機器(以下、「選択機器」という)の更新前F/Wのバージョンに対応する更新前F/Wハッシュファイル292がパソコン側記憶部290に有るか確認する。
更新前F/Wハッシュファイル292は、更新前F/Wのバージョン毎に作成される。
当該更新前F/Wハッシュファイル292が有る場合、処理はS112に進み、当該更新前F/Wハッシュファイル292が無い場合、処理はS120に進む。
初回のループ時(選択機器は「組み込み機器A301」)、当該更新前F/Wハッシュファイル292は無いため、処理はS120に進み、S120において当該更新前F/Wハッシュファイル292が生成される。
2回目のループ時(選択機器は「組み込み機器B302」)、組み込み機器A301の更新前F/Wと組み込み機器B302の更新前F/Wとのバージョンが同じであるため(図8参照)、初回のループ時に生成された更新前F/Wハッシュファイル292が当該更新前F/Wハッシュファイル292となり、処理はS112に進む。
3回目のループ時(選択機器は「組み込み機器C303」)、当該更新前F/Wハッシュファイル292は無いため、処理はS120に進み、S120において当該更新前F/Wハッシュファイル292が生成される。
4回目のループ時(選択機器は「組み込み機器D304」)、組み込み機器C303の更新前F/Wと組み込み機器D304の更新前F/Wとのバージョンが同じであるため(図8参照)、3回目のループ時に生成された更新前F/Wハッシュファイル292が当該更新前F/Wハッシュファイル292となり、処理はS112に進む。
<S120:更新前F/Wハッシュファイル作成処理>
更新前F/Wハッシュファイル作成部212は、機器構成管理ファイル299に基づいて、選択機器の更新前F/Wのバージョンに対応する更新前F/Wハッシュファイル292を作成する。
更新前F/Wハッシュファイル292は、選択機器の更新前F/Wのバージョンに対応する特定のブロックサイズで分割した更新前F/Wのブロック順に、各ブロックのハッシュ値を並べたデータである。
以下、選択機器の更新前F/Wを「選択機器F/W」という。
図9は、実施の形態1における更新前F/Wハッシュファイル作成処理(S120)のフローチャートである。
実施の形態1における更新前F/Wハッシュファイル作成処理(S120)について、図9に基づいて以下に説明する。
<S121>
更新前F/Wハッシュファイル作成部212は、機器構成管理ファイル299に基づいて、更新前F/Wのバージョンが選択機器と同じである組み込み機器を特定する。
選択機器が「組み込み機器A301」である場合、特定される組み込み機器は「組み込み機器B302」である(図8参照)。
S121の後、処理はS122に進む。
<S122>
更新前F/Wハッシュファイル作成部212は、機器構成管理ファイル299に基づいて、選択機器の「イレース単位サイズ」と選択機器の「書き込み単位サイズ」と特定機器(S121において特定された組み込み機器)の「イレース単位サイズ」と特定機器の「書き込み単位サイズ」との最小公倍数をブロックサイズとして算出する。
選択機器が「組み込み機器A301」であり、特定機器が「組み込み機器B302」である場合、更新前F/Wハッシュファイル作成部212は「E」「W」「E」「W」の最小公倍数をブロックサイズとして算出する(図8参照)。
ブロックサイズは「書き込み単位サイズ」と「イレース単位サイズ」との公倍数であれば最小公倍数でなくても構わない。さらに、イレースが不要であれば、ブロックサイズは「書き込み単位サイズ」の公倍数であれば構わない。
但し、ブロックサイズが大きくなるに従い、2つのF/Wの差分情報の粒度が大きくなり、1つのブロックのデータが異なる可能性が高くなり、結果的にF/Wの更新速度が遅くなる可能性が高くなる。
S122の後、処理はS123に進む。
<S123>
更新前F/Wハッシュファイル作成部212は、選択機器F/WをS122において算出したブロックサイズで複数のブロックに分割する。
S123の後、処理はS124に進む。
<S124>
更新前F/Wハッシュファイル作成部212は、所定のハッシュ関数を用いて、S123で得られた複数のブロックそれぞれについてハッシュ値を算出する。
同一のハッシュ関数を用いて算出されたハッシュ値が同じである2つのデータは同じデータである。
ハッシュ関数は、処理速度を速めるために計算量とハッシュ長とが小さければ小さいほど良い。
S124の後、処理はS125に進む。
<S125>
更新前F/Wハッシュファイル作成部212は、S124において算出した各ブロックのハッシュ値を設定した更新前F/Wハッシュファイル292を作成する。
S125の後、処理はS126に進む。
<S126>
更新前F/Wハッシュファイル作成部212は、S125において作成した更新前F/Wハッシュファイル292をパソコン側記憶部290に記憶する。
S126の後、更新前F/Wハッシュファイル作成処理(S120)は終了する。
図10は、実施の形態1における更新前F/Wと更新前F/Wハッシュファイル292との関係図である。
図10を含む各図において、「0x」は16進数表記を意味する。例えば、「0xFF」は10進数の「255」を示す。
図10に示すように、ブロックサイズが「3バイト」である場合、更新前F/Wは3バイトずつに分割され(S123)、各ブロック(第1ブロック、第2ブロック、・・・)のハッシュ値が計算され(S124)、各ブロックのハッシュ値が更新前F/Wハッシュファイル292に順に設定される(S125)。
図6に戻り、F/W更新方法の説明を続ける。
S120の後、処理はS112に進む。
<S112>
ツール制御部211は、選択機器F/Wのブロックサイズ(S122において算出された値)に対応する新F/Wハッシュファイル293がパソコン側記憶部290に有るか確認する。
新F/Wハッシュファイル293は、ブロックサイズ毎に作成される。
当該新F/Wハッシュファイル293が有る場合、処理はS113に進み、当該新F/Wハッシュファイル293が無い場合、処理はS130に進む。
初回のループ時(選択機器は「組み込み機器A301」)、当該新F/Wハッシュファイル293は無いため、処理はS130に進み、S130において当該新F/Wハッシュファイル293が生成される。
2回目のループ時(選択機器は「組み込み機器B302」)、組み込み機器A301の更新前F/Wと組み込み機器B302の更新前F/Wとのブロックサイズが共通するため(S122参照)、初回のループ時に生成された新F/Wハッシュファイル293が当該新F/Wハッシュファイル293となり、処理はS113に進む。
3回目のループ時(選択機器は「組み込み機器C303」)、組み込み機器A301の更新前F/Wと組み込み機器C303の更新前F/Wとのブロックサイズが同じであれば、初回のループ時に生成された新F/Wハッシュファイル293が当該新F/Wハッシュファイル293となり、処理はS113に進む。
3回目のループ時(選択機器は「組み込み機器C303」)、組み込み機器A301の更新前F/Wと組み込み機器C303の更新前F/Wとのブロックサイズが異なれば、当該新F/Wハッシュファイル293は無いため処理はS130に進み、S130において当該新F/Wハッシュファイル293が生成される。
4回目のループ時(選択機器は「組み込み機器D304」)、組み込み機器C303の更新前F/Wと組み込み機器D304の更新前F/Wとのブロックサイズが共通するため(S122参照)、3回目のループ時(または初回のループ時)に生成された新F/Wハッシュファイル293が当該新F/Wハッシュファイル293となり、処理はS113に進む。
<S130:新F/Wハッシュファイル作成処理>
新F/Wハッシュファイル作成部213は、S120の更新前F/Wハッシュファイル作成部212と同様にして、選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293を作成する。
新F/Wハッシュファイル293は、選択機器F/Wのブロックサイズで分割した新しいF/W291のブロック順に、各ブロックのハッシュ値を並べたデータである。
図11は、実施の形態1における新F/Wハッシュファイル作成処理(S130)のフローチャートである。
実施の形態1における新F/Wハッシュファイル作成処理(S130)について、図10および図11に基づいて以下に説明する。
新F/Wハッシュファイル作成部213は、新しいF/W291をブロックサイズ(S122において算出された値)で複数のブロックに分割し(S131)、所定のハッシュ関数(S124で用いられたハッシュ関数)を用いて分割ブロック毎にハッシュ値を算出する(S132)。
そして、新F/Wハッシュファイル作成部213は、各ブロックのハッシュ値を設定した新F/Wハッシュファイル293を作成し(S133)、新F/Wハッシュファイル293をパソコン側記憶部290に記憶する(S134)。
図6に戻り、F/W更新方法の説明を続ける。
S130の後、処理はS113に進む。
<S113>
ツール制御部211は、選択機器F/Wのバージョンに対応する更新前F/Wハッシュファイル292と選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293とに対応する差分情報ファイル294がパソコン側記憶部290に有るか確認する。
差分情報ファイル294は、更新前F/Wハッシュファイル292と新F/Wハッシュファイル293との組み合わせ毎に作成される。
当該差分情報ファイル294が有る場合、処理はS114に進み、当該差分情報ファイル294が無い場合、処理はS140に進む。
初回のループ時(選択機器は「組み込み機器A301」)、当該差分情報ファイル294は無いため、処理はS140に進み、S140において当該差分情報ファイル294が生成される。
2回目のループ時(選択機器は「組み込み機器B302」)、組み込み機器A301の更新前F/Wと組み込み機器B302の更新前F/Wとのバージョンおよびブロックサイズが共通するため、初回のループ時に生成された差分情報ファイル294が当該差分情報ファイル294となり、処理はS114に進む。
3回目のループ時(選択機器は「組み込み機器C303」)、当該新F/Wハッシュファイル293は無いため、処理はS140に進み、S140において当該差分情報ファイル294が生成される。
4回目のループ時(選択機器は「組み込み機器D304」)、組み込み機器C303の更新前F/Wと組み込み機器D304の更新前F/Wとのバージョンおよびブロックサイズが共通するため、3回目のループ時に生成された差分情報ファイル294が当該差分情報ファイル294となり、処理はS114に進む。
<S140:差分情報ファイル作成処理>
差分情報ファイル作成部214は、選択機器F/Wのバージョンに対応する更新前F/Wハッシュファイル292と選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293とに基づいて、差分情報ファイル294を作成する。
差分情報ファイル294は、更新前F/Wハッシュファイル292に設定されているハッシュ値と新F/Wハッシュファイル293に設定されているハッシュ値とを順番に一つずつ比較した結果を1ビット(一致「0」、不一致「1」)で示すビット列データである。
図12は、実施の形態1における差分情報ファイル作成処理(S140)の概要図である。
実施の形態1における差分情報ファイル作成処理(S140)について、図12に基づいて以下に説明する。
例えば、更新前F/Wハッシュファイル292と新F/Wハッシュファイル293とが図12の値を示す場合、差分情報ファイル作成部214は以下のようにして差分情報ファイル294を作成する。
まず、差分情報ファイル作成部214は、更新前F/Wハッシュファイル292の1番目のハッシュ値「0xFF」と新F/Wハッシュファイル293の1番目のハッシュ値「0xFF」とが一致するため、差分情報ファイル294の1ビット目に「一致」を示すビット「0」を設定する。
次に、差分情報ファイル作成部214は、更新前F/Wハッシュファイル292の2番目のハッシュ値「0x3C」と新F/Wハッシュファイル293の2番目のハッシュ値「0x00」とが一致しないため、差分情報ファイル294の2ビット目に「不一致」を示すビット「1」を設定する。
以下同様に、差分情報ファイル作成部214は、更新前F/Wハッシュファイル292のx番目のハッシュ値と新F/Wハッシュファイル293のx番目のハッシュ値を比較し、一致する場合には差分情報ファイル294のxビット目にビット「0」を設定し、一致しない場合には差分情報ファイル294のxビット目にビット「1」を設定する。
前述の通り、同一のハッシュ関数を用いて算出されたハッシュ値が同じである2つのデータは同じデータであるため、差分情報ファイル294に設定されたビット「0」は選択機器F/Wの当該ブロックと新しいF/W291の当該ブロックとが同じデータであることを示し、差分情報ファイル294に設定されたビット「1」は選択機器F/Wの当該ブロックと新しいF/W291の当該ブロックとが異なるデータであることを示す。
つまり、図12の差分情報ファイル294は、ブロックサイズが「3バイト」である場合、選択機器F/Wの先頭ブロック(先頭から3バイトのデータ)と新しいF/W291の先頭ブロックとが同じデータであることを示している。
また、選択機器F/Wの2番目のブロック(4バイト目から3バイトのデータ)と新しいF/W291の2番目のブロックとが異なるデータであることを示している。
図6に戻り、F/W更新方法の説明を続ける。
S140の後、処理はS114に進む。
<S114>
ツール制御部211は、選択機器F/Wのバージョンに対応する更新前F/Wハッシュファイル292と選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293とに対応する差分情報ファイル294を含むと共に、選択機器F/Wのブロックサイズを含んだイレース要求コマンドを生成する。
ツール制御部211は、生成したイレース命令コマンドをパソコン側通信部219を用いて選択機器へ送信する。
イレース要求コマンドは、選択機器F/Wの差分領域のイレースを要求するコマンド110である。
差分領域は、選択機器F/Wの各ブロックのうち新しいF/W291の対応ブロック(F/W内での並び順が対応するブロック)とデータの異なるブロックを意味する。
イレースは、データの削除、初期値の設定、メモリ領域の初期化などを意味する。
S114の後、処理はS150に進む。
<S150:更新前F/W差分領域イレース処理>
選択機器のF/W更新タスク310は、S114において送信されたイレース要求コマンドを受信し、受信したイレース命令コマンドに含まれる差分情報ファイル294およびブロックサイズに基づいて更新前F/Wの差分領域をイレースする。
図13は、実施の形態1における更新前F/W差分領域イレース処理(S150)の概要図である。
実施の形態1における更新前F/W差分領域イレース処理(S150)の概要について、図13に基づいて以下に説明する。
F/W更新タスク310は、差分情報ファイル294のビットが更新前F/Wと新しいF/W291との対応ブロックの一致を意味するビット「0」である場合(S153)、当該ビットに対応する更新前F/Wのブロックをイレースしない。
F/W更新タスク310は、差分情報ファイル294のビットが更新前F/Wと新しいF/W291との対応ブロックの不一致を意味するビット「1」である場合(S153)、当該ビットに対応する更新前F/Wのブロックを特定し(S154)、特定したブロックを所定のイレース単位サイズずつイレースする(S155)。
イレース単位サイズは、F/W更新タスク310が更新前F/Wをイレースできる1回あたりのデータサイズである。
図13において、F/W更新タスク310は、差分情報ファイル294の先頭ビット(1ビット目)が「0」であるため、更新前F/Wの第1ブロックをイレースしない。
また、F/W更新タスク310は、差分情報ファイル294の2ビット目が「1」であるため、更新前F/Wの第2ブロックをイレース単位サイズずつイレースする。
図中のS153〜S155は、次に説明するフローチャートの処理番号に対応している。
図14は、実施の形態1における更新前F/W差分領域イレース処理(S150)のフローチャートである。
実施の形態1における更新前F/W差分領域イレース処理(S150)の流れについて、図14に基づいて以下に説明する。
<S151>
選択機器のF/W更新タスク310は、差分情報ファイル294とブロックサイズとを含んだイレース要求コマンドを受信する。
S151の後、処理はS152に進む。
<S152>
F/W更新タスク310は、差分情報ファイル294から1ビットを取得する。
S152から後述するS157までの処理はループ処理される。
F/W更新タスク310は、初回のループ時には差分情報ファイル294の先頭ビット(1ビット目)を取得し、2回目のループ時には差分情報ファイル294の2ビット目を取得する。
差分情報ファイル294が5ビットである場合、S152〜S157は5回ループする。
S152の後、処理はS153に進む。
<S153>
F/W更新タスク310は、S152で取得した1ビット(以下、「取得ビット」という)が、更新前F/Wと新しいF/W291との対応ブロックの一致を意味するビット「0」であるか、または更新前F/Wと新しいF/W291との対応ブロックの不一致を意味するビット「1」であるかを判定する。
取得ビットがビット「0」である場合、処理はS157に進み、取得ビットがビット「1」である場合、処理はS154に進む。
<S154>
F/W更新タスク310は、差分情報ファイル294に含まれるブロックサイズに基づいて、更新前F/W内から取得ビット(ビット「1」)に対応するブロック(以下、「差分ブロック」という)を特定する。
例えば、ブロックサイズが「12バイト」であり、取得ビットが差分情報ファイル294の1ビット目である場合、差分ブロックは差分情報ファイル294の先頭から12バイトの領域である。
また、取得ビットが差分情報ファイル294の2ビット目である場合、差分ブロックは差分情報ファイル294の13バイト目から12バイトの領域である。
S154の後、処理はS155に進む。
<S155>
F/W更新タスク310は、S154で特定した差分ブロックをイレース単位サイズ分イレースする。
S155と後述するS156とはループ処理される。
イレース単位サイズが「3バイト」である場合、F/W更新タスク310は、初回のループ時には差分ブロックの先頭から3バイトの領域をイレースし、2回目のループ時には差分ブロックの4バイト目から3バイトの領域をイレースする。
ブロックサイズが「12バイト」であり、イレース単位サイズが「3バイト」である場合、S155〜S156は4(=12÷3)回ループする。
S155の後、処理はS156に進む。
<S156>
F/W更新タスク310は、S155において差分ブロックの全領域のイレースが完了したか判定する。
差分ブロックのイレースが完了した場合(YES)、処理はS157に進む。
差分ブロックのイレースが完了していない場合(NO)、処理はS155に戻る。
<S157>
F/W更新タスク310は、S142において差分情報ファイル294の全ビットを取得した場合に差分情報ファイル294の処理を完了したと判定し、S142において差分情報ファイル294に取得していないビットがある場合に差分情報ファイル294の処理を完了していないと判定する。
差分情報ファイル294の処理を完了した場合(YES)、更新前F/W差分領域イレース処理(S150)は終了する。
差分情報ファイル294の処理を完了していない場合(NO)、処理はS152に戻る。
図6に戻り、F/W更新方法の説明を続ける。
S150の後、処理はS160(図7)に進む。
<S160:更新前F/W差分領域書き込み処理>
差分データ出力部215は新しいF/W291の差分領域のデータを書き込み単位サイズずつ選択機器へ送信し、選択機器のF/W更新タスク310は受信した新しいF/W291の差分領域のデータを更新前F/Wに書き込んで更新前F/Wを更新する(S161〜S166)。
図15は、実施の形態1における更新前F/W差分領域書き込み処理(S160)の概要図である。
実施の形態1における更新前F/W差分領域書き込み処理(S160)の概要について、図15に基づいて以下に説明する。
パソコン側ツール210は、差分情報ファイル294のビットが更新前F/Wと新しいF/W291との対応ブロックの一致を意味するビット「0」である場合、当該ビットに対応する新しいF/W291のブロックを組み込み機器(選択機器)へ送信しない(S161)。
パソコン側ツール210は、差分情報ファイル294のビットが更新前F/Wと新しいF/W291との対応ブロックの不一致を意味するビット「1」である場合、当該ビットに対応する新しいF/W291のブロックを特定し(S161)、特定したブロックを所定の書き込み単位サイズずつ読み込み(S162)、読み込んだ差分データを組み込み機器(選択機器)へ送信する(S163)。
書き込み単位サイズは、組み込み機器のF/W更新タスク310が更新前F/Wのメモリ領域に書き込みできる1回あたりのデータサイズであり、機器構成管理ファイル299に設定されている。
図15において、パソコン側ツール210は、差分情報ファイル294の先頭ビット(1ビット目)が「0」であるため、新しいF/W291の第1ブロックを送信しない。
また、パソコン側ツール210は、差分情報ファイル294の2ビット目が「1」であるため、新しいF/W291の第2ブロックを書き込み単位サイズずつ読み込んで送信する。
組み込み機器のF/W更新タスク310は、F/W更新タスク310により送信された各差分データを更新前F/Wの対応領域に書き込む(S164)。
図中のS161〜S164は、以下に説明するフローチャートの処理番号に対応している。
図7に戻り、F/W更新方法の説明をS160のS161から続ける。
<S161>
差分データ出力部215は、差分情報ファイル294から値が「1」であるビットを検索し、値が「1」であるビットに対応する新しいF/W291の差分ブロックを一つ特定する。
S161から後述するS166までの処理はループ処理される。
差分データ出力部215は、初回のループ時には差分情報ファイル294内で値が「1」である各ビットのうち1番目のビットに対応する新しいF/W291の差分ブロックを特定し、2回目のループ時には2番目のビット(ビット値「1」)に対応する新しいF/W291の差分ブロックを特定する。
差分情報ファイル294の先頭ビット(1ビット目)が「1」であれば、新しいF/W291の先頭ブロック(第1ブロック)は差分ブロックである。差分情報ファイル294の2ビット目が「1」であれば、新しいF/W291の第2ブロックは差分ブロックである。
差分情報ファイル294に値が「1」であるビットが5つある場合、S161〜S166は5回ループする。
S161の後、処理はS162に進む。
<S162>
差分データ出力部215は、差分特定ブロック(S161で特定した新しいF/W291の差分ブロック)のデータを選択機器F/Wの書き込み単位サイズ分読み込む。選択機器F/Wの書き込み単位サイズは機器構成管理ファイル299に設定されている。
S162から後述するS165までの処理はループ処理される。
書き込み単位サイズが「4バイト」である場合、差分データ出力部215は、初回のループ時には差分特定ブロックの先頭から4バイトの領域を読み込み、2回目のループ時には差分特定ブロックの5バイト目から4バイトの領域を読み込む。
ブロックサイズが「12バイト」であり、書き込み単位サイズが「4バイト」である場合、S162〜S165は3(=12÷4)回ループする。
S162の後、処理はS163に進む。
<S163>
差分データ出力部215は、差分単位データ(S162において読み込んだデータ)と差分単位データを書き込む領域を示す書き込み領域情報(例えば、新しいF/W291の先頭から差分単位データの先頭までのバイト数)とを含んだ書き込み要求コマンドを生成する。
差分データ出力部215は、生成した書き込み要求コマンドをパソコン側通信部219を用いて選択機器へ送信する。
書き込み要求コマンドは、選択機器F/Wのメモリ領域への差分単位データの書き込みを要求するコマンド110である。
S163の後、処理はS164に進む。
<S164>
選択機器のF/W更新タスク310は、差分単位データと書き込み領域情報とを含んだ書き込み要求コマンドを受信し、差分単位データを更新前F/Wの書き込み領域に書き込む。
S164の後、処理はS165に進む。
<S165>
差分データ出力部215は、S162において差分特定ブロックのデータを全て読み込んだ場合に差分特定ブロックの処理を完了したと判定し、S162において差分特定ブロックから読み込んでいないデータがある場合に差分特定ブロックの処理を完了していないと判定する。
差分特定ブロックの処理を完了した場合(YES)、処理はS165に進む。
差分特定ブロックの処理を完了していない場合(NO)、処理はS162に戻る。
<S166>
差分データ出力部215は、S161において新しいF/W291の差分ブロックを全て特定した場合に全差分ブロックの処理を完了したと判定し、S161において新しいF/W291に特定していない差分ブロックがある場合に全差分ブロックの処理を完了していないと判定する。
全差分ブロックの処理を完了した場合(YES)、処理はS119に進む。
全差分ブロックの処理を完了していない場合(NO)、処理はS161に戻る。
<S119>
ツール制御部211は、S110において組み込み機器を全て選択した場合に全組み込み機器の処理を完了したと判定し、S110において選択していない組み込み機器がある場合に全組み込み機器の処理を完了していないと判定する。
全組み込み機器の処理を完了した場合(YES)、F/W更新方法は終了する。
全組み込み機器の処理を完了していない場合(NO)、処理はS110に戻る。
実施の形態1において、例えば、以下のようなF/W更新方式について説明した。
パソコンから複数の組み込み機器へケーブルを介して新しいF/Wを送信し、複数の組み込み機器に内蔵されている不揮発性メモリ上の更新前F/Wを新しいF/Wに更新する。
実施の形態1のF/W更新システムによる組み込み機器のF/Wの更新は、不揮発性メモリ上の更新前F/W全体をイレースするのではなく、新しいF/Wと更新前のF/W間の差分箇所のみをイレースする。また、新しいF/Wの全てのデータを書き込むのではなく、新しいF/Wと更新前のF/W間の差分をパソコン側ツールから組み込み機器へ送信し、書き込む。
データの書き込みに、イレースが不要な不揮発性メモリを内蔵している組み込み機器のF/Wを更新する場合は、前述のイレース処理は不要である。
このようにすることで、不揮発性メモリへのアクセスエリア数が減少し、パソコン側ツールから組み込み機器へ送信する新しいF/Wのデータ量が減少する。結果的に組み込み機器のF/Wの更新速度が向上し、不揮発性メモリの寿命が延長する。
また、この方式は、データの書き込みにイレースが必要な不揮発性メモリを内蔵している組み込み機器、イレースが不要な不揮発性メモリを内蔵している組み込み機器のどちらにも適用できる。
F/Wの更新時には、新しいF/Wと更新前F/W間の差分情報ファイルを使用する。差分情報ファイルがパソコン上にない場合は新規に作成する。作成した前記差分情報ファイルは、同じバージョンの更新前F/Wを格納している他の複数の組み込み機器の更新に使用でき、1つの組み込み機器のF/Wの更新の度に差分情報ファイルを作成する必要がない。また、前記複数の組み込み機器のそれぞれのイレース単位、前記それぞれのデータの書き込み単位は異なっていても構わない。差分情報ファイルは、新しいF/Wのハッシュファイル、更新前F/Wのハッシュファイルを使用して作成するため、前記新しいF/W、前記更新前F/Wの差分箇所の検出が高速に行える。よって、差分情報ファイルが高速に作成できる。また、作成した前記新しいF/Wのハッシュファイル、前記更新前F/Wのハッシュファイルは、他の複数の組み込み機器の更新時の差分情報ファイルの作成に使用でき、1つの組み込み機器のF/Wの更新の度に前記ハッシュファイルを作成する必要がない。結果的に、複数の組み込み機器のF/Wの更新時間の短縮、また、前記複数の組み込み機器に内蔵されている不揮発性メモリへのアクセス回数の減少による不揮発性メモリの寿命の延長が可能となる。
F/W更新方式は、以下の手段を有する。
(1)前記パソコンへ接続されている複数の組み込み機器に内蔵されている不揮発性メモリのイレース単位、F/Wの書き込み単位、前記不揮発性メモリに格納されているF/Wのバージョンを知る手段(機器構成管理ファイル299)。
(2)前記新しいF/Wのハッシュファイル、前記更新前F/Wのハッシュファイルを作成する手段(更新前F/Wハッシュファイル292、新F/Wハッシュファイル293)。
(3)前記ハッシュファイル作成の際のブロックサイズを決定する手段(更新前F/Wハッシュファイル292)。
(4)前記ハッシュファイルから、前記新しいF/Wと前記更新前F/Wとの差分情報ファイルを作成する手段(差分情報ファイル294)。
(5)前記差分情報ファイルを参照し、前記不揮発性メモリ上の前記更新前F/Wを、前記新しいF/Wと前記更新前F/Wとの差分箇所のみイレースする手段(F/W更新タスク310)。
(6)前記差分情報ファイルを参照し、前記新しいF/Wの前記差分箇所のみを前記パソコンから前記組み込み機器へ送信し、前記不揮発性メモリへ書き込む手段(差分データ出力部215、F/W更新タスク310)。
(7)前記組み込み機器に格納されている更新前F/Wと同じバージョンの更新前F/Wが格納されている前記組み込み機器とは異なる組み込み機器の更新前F/Wの更新に、既存の前記ハッシュファイル、既存の前記差分情報ファイルを使用する手段(更新前F/Wハッシュファイル292、新F/Wハッシュファイル293、差分情報ファイル294)。
F/W更新システムは、組み込み機器に格納されている更新前F/Wと新しいF/Wとに対して一定のブロックサイズ単位でハッシュ値を算出し、そのハッシュ値が同じであれば「0」、異なれば「1」とし、前記「0」をビット値「0」、前記「1」をビット値「1」と見なし、前記ビット値の列を前記更新前F/Wと前記新しいF/Wとの差分情報とする。
また、ひとつの組み込み機器のF/Wの更新時に作成された、ハッシュファイル、差分情報ファイルを他の組み込み機器のF/Wの更新に再利用する。
また、差分情報ファイルの作成に、別の組み込み機器のF/Wの更新時に作成された、既存のハッシュファイルを使用し、前記ハッシュファイルがなければ、前記差分情報ファイルの作成に必要なハッシュファイルを新規作成する。
また、ハッシュファイル作成時のブロックサイズが、同じバージョンの更新前F/Wを格納している複数の組み込み機器の、それぞれの不揮発性メモリのイレース単位、データの書き込み単位の最小公倍数である。そして、前記複数の組み込み機器間において、イレース単位、データの書き込み単位が異なっていても、前記複数の組み込み機器のF/Wの更新に、同じ差分情報ファイルが使用できる。
100 F/W更新システム、101 ケーブル、110 コマンド、200 パソコン、210 パソコン側ツール、211 ツール制御部、212 更新前F/Wハッシュファイル作成部、213 新F/Wハッシュファイル作成部、214 差分情報ファイル作成部、215 差分データ出力部、219 パソコン側通信部、290 パソコン側記憶部、291 新しいF/W、292 更新前F/Wハッシュファイル、293 新F/Wハッシュファイル、294 差分情報ファイル、299 機器構成管理ファイル、301 組み込み機器A、302 組み込み機器B、303 組み込み機器C、304 組み込み機器D、310 F/W更新タスク、390 不揮発性メモリ、391 更新前F/W(1)、392 更新前F/W(2)、901 表示装置、902 キーボード、903 マウス、904 ドライブ装置、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群。

Claims (7)

  1. 特定の機器で使用されている使用データと前記使用データとは少なくとも一部が異なる新データとを記憶媒体を用いて記憶するデータ記憶部と、
    前記データ記憶部に記憶された使用データを特定のサイズで複数の分割データにCPU(Central Processing Unit)を用いて分割する使用データ分割部と、
    前記データ記憶部に記憶された新データを前記特定のサイズで複数の分割データにCPUを用いて分割する新データ分割部と、
    前記使用データの分割データ毎に当該使用データの分割データとデータの並び順が対応する新データの分割データと同じであるか否かを示す情報を差分情報としてCPUを用いて生成する差分情報生成部と、
    前記差分情報生成部により生成された差分情報に基づいて新データの複数の分割データのうちデータの並び順が対応する使用データの分割データと異なる各分割データをCPUを用いて特定し、特定した新データの各分割データを差分データとして前記特定の機器に入力して前記特定の機器に前記使用データ内の前記差分データに対応する部分を前記差分データで更新させる差分データ入力部と
    を備えたことを特徴とするデータ更新装置。
  2. 前記使用データ分割部は、前記特定の機器を第1の特定の機器として、第1の特定の機器により前記使用データに対して1回あたりに書き込まれるデータのサイズとして予め定められた第1の書き込み単位サイズと、前記第1の特定の機器で使用されている使用データと同じ使用データを使用している第2の特定の機器により前記使用データに対して1回あたりに書き込まれるデータのサイズとして予め定められた第2の書き込み単位サイズとの公倍数となるサイズを前記特定のサイズとして前記使用データを分割する
    ことを特徴とする請求項1記載のデータ更新装置。
  3. 前記使用データ分割部は、前記第1の書き込み単位サイズと、前記第2の書き込み単位サイズと、前記第1の特定の機器により前記使用データに対して1回あたりにイレースされるデータのサイズとして予め定められた第1のイレース単位サイズと、前記第2の特定の機器により前記使用データに対して1回あたりにイレースされるデータのサイズとして予め定められた第2のイレース単位サイズとの公倍数となるサイズを前記特定のサイズとして前記使用データを分割する
    ことを特徴とする請求項2記載のデータ更新装置。
  4. 前記データ更新装置は、さらに、
    所定のハッシュ関数により前記使用データの分割データ毎にハッシュ値をCPUを用いて算出する使用データハッシュ値算出部と、
    前記ハッシュ関数により前記新データの分割データ毎にハッシュ値をCPUを用いて算出する新データハッシュ値算出部とを備え、
    前記差分情報生成部は、前記使用データハッシュ値算出部により算出されたハッシュ値と前記新データハッシュ値算出部により算出されたハッシュ値とに基づいて前記差分情報を生成する
    ことを特徴とする請求項1〜請求項3いずれかに記載のデータ更新装置。
  5. 前記差分情報生成部は、前記使用データの分割データ毎に当該使用データの分割データとデータの並び順が対応する新データの分割データと同じであるか否かを1ビットで表して前記差分情報を生成する
    ことを特徴とする請求項1〜請求項4いずれかに記載のデータ更新装置。
  6. 使用データ分割部が、特定の機器で使用されている使用データを特定のサイズで複数の分割データにCPU(Central Processing Unit)を用いて分割し、
    新データ分割部が、前記使用データとは少なくとも一部が異なる新データを前記特定のサイズで複数の分割データにCPUを用いて分割し、
    差分情報生成部が、前記使用データの分割データ毎に当該使用データの分割データとデータの並び順が対応する新データの分割データと同じであるか否かを示す情報を差分情報としてCPUを用いて生成し、
    差分データ入力部が、前記差分情報生成部により生成された差分情報に基づいて新データの複数の分割データのうちデータの並び順が対応する使用データの分割データと異なる新データの各分割データをCPUを用いて特定し、特定した新データの各分割データを差分データとして前記特定の機器に入力して前記特定の機器に前記使用データ内の前記差分データに対応する部分を前記差分データで更新させる
    ことを特徴とするデータ更新装置のデータ更新方法。
  7. 請求項6記載のデータ更新方法をコンピュータに実行させるデータ更新プログラム。
JP2009053795A 2009-03-06 2009-03-06 データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム Expired - Fee Related JP5225163B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009053795A JP5225163B2 (ja) 2009-03-06 2009-03-06 データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009053795A JP5225163B2 (ja) 2009-03-06 2009-03-06 データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム

Publications (2)

Publication Number Publication Date
JP2010211295A true JP2010211295A (ja) 2010-09-24
JP5225163B2 JP5225163B2 (ja) 2013-07-03

Family

ID=42971429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009053795A Expired - Fee Related JP5225163B2 (ja) 2009-03-06 2009-03-06 データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム

Country Status (1)

Country Link
JP (1) JP5225163B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341003B1 (ko) 2011-11-21 2013-12-12 웹싱크 주식회사 펌웨어 업데이트 방법 및 이를 위한 장치
JP2018160208A (ja) * 2017-03-24 2018-10-11 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア
CN110154938A (zh) * 2018-02-16 2019-08-23 丰田自动车株式会社 车辆控制装置、程序更新方法、及存储用于更新的程序的非易失性存储介质
KR20200020645A (ko) * 2018-08-16 2020-02-26 주식회사 페스카로 전자식 제어기의 펌웨어 업데이트 방법, 시스템 및 프로그램
WO2020253083A1 (zh) * 2019-06-18 2020-12-24 平安科技(深圳)有限公司 主备存储卷同步数据校验方法、装置、设备及存储介质
WO2023175752A1 (ja) * 2022-03-16 2023-09-21 日立Astemo株式会社 車載プログラム更新システム、車載プログラム更新方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7046768B2 (ja) 2018-09-20 2022-04-04 株式会社デンソーアイティーラボラトリ 情報推定装置及び情報推定方法
JP7442964B2 (ja) 2018-09-26 2024-03-05 キヤノンメディカルシステムズ株式会社 医用情報収集システム及び医用情報収集装置
JP7468155B2 (ja) 2020-05-29 2024-04-16 セイコーエプソン株式会社 方法、装置、および、コンピュータープログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240632A (ja) * 1997-02-27 1998-09-11 Nippon Telegr & Teleph Corp <Ntt> 外部記憶装置のオンライン交換方法
JP2001333461A (ja) * 2000-05-23 2001-11-30 Hitachi Building Systems Co Ltd 端末用プログラムの遠隔書換え方法
JP2004086771A (ja) * 2002-08-28 2004-03-18 Ntt Data Corp 処理装置、処理方法、及びプログラム
JP2005141457A (ja) * 2003-11-06 2005-06-02 Konica Minolta Business Technologies Inc プログラム更新システム
JP2007114943A (ja) * 2005-10-19 2007-05-10 Kyocera Mita Corp ファームウェア更新方法及び情報処理装置
JP2007515708A (ja) * 2003-11-19 2007-06-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 携帯端末内のデータ更新方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240632A (ja) * 1997-02-27 1998-09-11 Nippon Telegr & Teleph Corp <Ntt> 外部記憶装置のオンライン交換方法
JP2001333461A (ja) * 2000-05-23 2001-11-30 Hitachi Building Systems Co Ltd 端末用プログラムの遠隔書換え方法
JP2004086771A (ja) * 2002-08-28 2004-03-18 Ntt Data Corp 処理装置、処理方法、及びプログラム
JP2005141457A (ja) * 2003-11-06 2005-06-02 Konica Minolta Business Technologies Inc プログラム更新システム
JP2007515708A (ja) * 2003-11-19 2007-06-14 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 携帯端末内のデータ更新方法
JP2007114943A (ja) * 2005-10-19 2007-05-10 Kyocera Mita Corp ファームウェア更新方法及び情報処理装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101341003B1 (ko) 2011-11-21 2013-12-12 웹싱크 주식회사 펌웨어 업데이트 방법 및 이를 위한 장치
JP2018160208A (ja) * 2017-03-24 2018-10-11 日立オートモティブシステムズ株式会社 車載制御装置、及び、プログラム更新ソフトウェア
CN110154938A (zh) * 2018-02-16 2019-08-23 丰田自动车株式会社 车辆控制装置、程序更新方法、及存储用于更新的程序的非易失性存储介质
CN110154938B (zh) * 2018-02-16 2022-08-12 丰田自动车株式会社 车辆控制装置、程序更新方法、及存储用于更新的程序的非易失性存储介质
KR20200020645A (ko) * 2018-08-16 2020-02-26 주식회사 페스카로 전자식 제어기의 펌웨어 업데이트 방법, 시스템 및 프로그램
KR102254146B1 (ko) * 2018-08-16 2021-05-21 주식회사 페스카로 전자식 제어기의 펌웨어 업데이트 방법, 시스템 및 프로그램
WO2020253083A1 (zh) * 2019-06-18 2020-12-24 平安科技(深圳)有限公司 主备存储卷同步数据校验方法、装置、设备及存储介质
WO2023175752A1 (ja) * 2022-03-16 2023-09-21 日立Astemo株式会社 車載プログラム更新システム、車載プログラム更新方法

Also Published As

Publication number Publication date
JP5225163B2 (ja) 2013-07-03

Similar Documents

Publication Publication Date Title
JP5225163B2 (ja) データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム
JP5017462B2 (ja) 情報処理装置及びリムーバブルメディア管理方法
US9928167B2 (en) Information processing system and nonvolatile storage unit
JP5640845B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
JP5420814B2 (ja) バッファメモリに貯蔵されたデータを無効化させるスキームを有する貯蔵システム及びそれを含んだコンピューティングシステム
KR102188062B1 (ko) 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
KR102567097B1 (ko) 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법
JP2008537192A (ja) フラッシュメモリ内でコピー操作を管理する方法
KR20140027596A (ko) 메모리 시스템 및 메모리 시스템에서의 암호화 방법
US20130212368A1 (en) Data protecting method, memory controller and memory storage device
JP2021118370A (ja) メモリシステム、情報処理装置、および情報処理システム
JP2014126989A (ja) 制御装置、制御方法、及び、プログラム
US11720249B2 (en) Data storage device and method for rewriting parameters thereof
JPWO2020075303A1 (ja) ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム
JP2015172959A (ja) フラッシュメモリのアクセス方法
TW201945975A (zh) 使用標準化資料儲存及擷取協定的用於資料加密之方法及設備
JP2007280108A (ja) 記憶媒体制御装置、記憶媒体制御方法、プログラム
KR20220123550A (ko) 메모리 서브시스템을 위한 동적 커맨드 확장
KR100746036B1 (ko) 플래시 메모리를 제어하는 장치 및 방법
EP2998903B1 (en) System and method for robust full-drive encryption
KR20210019577A (ko) 비-휘발성 메모리에서 데이터 유효성 추적
JP6307962B2 (ja) 情報処理システム、情報処理方法、及び、情報処理プログラム
KR100941368B1 (ko) 파일 안전 삭제 기능을 갖는 플래시 메모리 장치 및 플래시파일 안전 삭제 방법
JP2015053075A (ja) メモリシステム、情報処理装置および記憶装置
US20170076073A1 (en) License information management device, license information management method, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121211

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130121

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: 20130212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130312

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees