JP2010211295A - データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム - Google Patents
データ更新装置、データ更新装置のデータ更新方法およびデータ更新プログラム Download PDFInfo
- 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
Links
Images
Abstract
【解決手段】パソコン側ツール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の更新を完了するのに時間がかかっていた。
この方式は、複数の組み込み機器と管理サーバとをLAN(Local Area Network)で接続し、上記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更新システム100の構成について、図1に基づいて以下に説明する。
各組み込み機器はケーブル101でパソコン200に接続され、パソコン200と各組み込み機器とはケーブル101を介して通信を行う。ケーブル101は通信回線の一例である。例えば、パソコン200と各組み込み機器とは無線で通信を行ってもよい。
各F/Wは、ウイルスや不正アクセス等による改ざんが成されていないものとする。
パソコン200の処理速度は十分に速いものとする。組み込み機器の処理速度および組み込み機器に内蔵されている不揮発性メモリ390へのアクセス速度は遅いものとする。ケーブル101の通信速度は十分に速いものとする。
F/W更新タスク310は、組み込まれているF/Wをパソコン200からコマンド110で送信される新しいF/W291によりCPUを用いて更新する。
組み込み機器C303と組み込み機器D304とには、更新前F/W(1)391より新しいバージョン(例えば、バージョン「V2」)の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のデータサイズとは同じであっても異なっていても構わない。
パソコン側ツール210は、新しいF/W291をコマンド110で各組み込み機器へ送信して、各組み込み機器に更新前F/Wを更新させる。
パソコン側記憶部290は、パソコン200で使用される各データを記憶媒体を用いて記憶する記憶装置である。例えば、パソコン側記憶部290には新しいF/W291が記憶されている。
新しいF/W291は、各更新前F/Wより新しいバージョン(例えば、バージョン「V3」)のF/Wである。新しいF/W291と各更新前F/Wとは少なくともデータの一部が異なる。新しいF/W291のデータサイズと各更新前F/Wのデータサイズとは同じであっても異なっても構わない。
実施の形態1におけるパソコン側ツール210の構成について、図2に基づいて以下に説明する。
各「〜ファイル」については後述する。
例えば、パソコン側通信部219は、新しいF/W291や差分情報ファイル294を含んだコマンド110を各組み込み機器へ送信する。また例えば、パソコン側通信部219は、各組み込み機器から更新前F/Wを受信する。
更新前F/Wハッシュファイル作成部212は、更新前F/Wを特定のブロックサイズで複数の分割データにCPUを用いて分割する。
同様に、更新前F/Wハッシュファイル作成部212は、組み込み機器C303により更新前F/W(2)392に対して1回あたりに書き込まれるデータのサイズとして予め定められた書き込み単位サイズWCと、組み込み機器D304により更新前F/W(2)392に対して1回あたりに書き込まれるデータのサイズとして予め定められた書き込み単位サイズWDとの公倍数となるサイズをブロックサイズとして更新前F/W(2)392を分割する。
同様に、更新前F/Wハッシュファイル作成部212は、書き込み単位サイズWCと、書き込み単位サイズWDと、組み込み機器C303により更新前F/W(2)392に対して1回あたりにイレースされるデータのサイズとして予め定められたイレース単位サイズECと、組み込み機器D304により更新前F/W(2)392に対して1回あたりにイレースされるデータのサイズとして予め定められたイレース単位サイズEDとの公倍数となるサイズをブロックサイズとして更新前F/W(2)392を分割する。
イレースとは、データの削除、初期値の設定やメモリ領域の初期化を意味する。
さらに、新F/Wハッシュファイル作成部213は、前記ハッシュ関数により新しいF/W291の分割データ毎にハッシュ値をCPUを用いて算出する。新F/Wハッシュファイル作成部213は、新しいF/W291の各分割データのハッシュ値を設定した新F/Wハッシュファイル293を生成し、生成した新F/Wハッシュファイル293をパソコン側記憶部290に記憶する。
例えば、差分情報ファイル作成部214は、更新前F/Wハッシュファイル292に設定されているハッシュ値と新F/Wハッシュファイル293に設定されているハッシュ値とに基づいて差分情報ファイル294を生成する。
また例えば、差分情報ファイル作成部214は、更新前F/Wの分割データ毎に当該更新前F/Wの分割データとデータの並び順が対応する新しいF/W291の分割データと同じであるか否かを1ビットで表して差分情報ファイル294を生成する。
さらに、差分情報ファイル作成部214は、特定した新しいF/W291の各分割データを差分データとしてパソコン側通信部219を用いて特定の組み込み機器に送信する。
図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)などの記憶媒体を読み書きする装置である。
実施の形態1におけるF/W更新方法の概要について、図4および図5に基づいて以下に説明する。
パソコン側ツール210は、新F/Wハッシュファイル293に設定された各ハッシュ値と更新前F/Wハッシュファイル292に設定された各ハッシュ値とを比較して、新F/Wハッシュファイル293の各ブロックと更新前F/Wハッシュファイル292の各ブロックとが同じであるか否かを示す差分情報ファイル294を生成する(S140)。
パソコン側ツール210は、生成した差分情報ファイル294を組み込み機器へ送信する(S114)。
パソコン側ツール210は、差分情報ファイル294を参照して新しいF/W291から更新前F/Wと異なるブロックを読み出して組み込み機器に送信する(S161〜S163)。
F/W更新タスク310は、送信された新しいF/W291のブロックを更新前F/Wの当該ブロックに書き出して更新前F/Wを更新する(S164)。
実施の形態1におけるF/W更新方法(データ更新方法の一例)について、図6および図7に基づいて以下に説明する。
ツール制御部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)。
ツール制御部211は、機器構成管理ファイル299を参照して複数の組み込み機器の中から組み込み機器を一つ選択する。
S110から後述するS119までの処理はループ処理される。
例えば、ツール制御部211は、更新前F/Wのバージョンの古い順、機器構成管理ファイル299内での設定順に組み込み機器を選択する。
実施の形態1における機器構成管理ファイル299について、図8に基づいて以下に説明する。
「F/Wのバージョン」は、当該組み込み機器に組み込まれている更新前F/Wのバージョン情報(例えば、バージョン番号)を示す。
「イレース単位サイズ」は、当該組み込み機器により更新前F/Wに対して1回あたりにイレースされるデータのサイズを示す。
「書き込み単位サイズ」は、当該組み込み機器により更新前F/Wに対して1回あたりに書き込まれるデータのサイズを示す。
また、ツール制御部211は、3回目のループ時には更新前F/Wのバージョンが次に古い組み込み機器C303と組み込み機器D304とのうち機器構成管理ファイル299に先に設定されている組み込み機器C303を選択し、4回目のループ時には組み込み機器D304を選択するものとする。
ツール制御部211は、S110において選択した組み込み機器(以下、「選択機器」という)の更新前F/Wのバージョンに対応する更新前F/Wハッシュファイル292がパソコン側記憶部290に有るか確認する。
更新前F/Wハッシュファイル292は、更新前F/Wのバージョン毎に作成される。
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に進む。
更新前F/Wハッシュファイル作成部212は、機器構成管理ファイル299に基づいて、選択機器の更新前F/Wのバージョンに対応する更新前F/Wハッシュファイル292を作成する。
更新前F/Wハッシュファイル292は、選択機器の更新前F/Wのバージョンに対応する特定のブロックサイズで分割した更新前F/Wのブロック順に、各ブロックのハッシュ値を並べたデータである。
以下、選択機器の更新前F/Wを「選択機器F/W」という。
実施の形態1における更新前F/Wハッシュファイル作成処理(S120)について、図9に基づいて以下に説明する。
更新前F/Wハッシュファイル作成部212は、機器構成管理ファイル299に基づいて、更新前F/Wのバージョンが選択機器と同じである組み込み機器を特定する。
選択機器が「組み込み機器A301」である場合、特定される組み込み機器は「組み込み機器B302」である(図8参照)。
S121の後、処理はS122に進む。
更新前F/Wハッシュファイル作成部212は、機器構成管理ファイル299に基づいて、選択機器の「イレース単位サイズ」と選択機器の「書き込み単位サイズ」と特定機器(S121において特定された組み込み機器)の「イレース単位サイズ」と特定機器の「書き込み単位サイズ」との最小公倍数をブロックサイズとして算出する。
選択機器が「組み込み機器A301」であり、特定機器が「組み込み機器B302」である場合、更新前F/Wハッシュファイル作成部212は「EA」「WA」「EB」「WB」の最小公倍数をブロックサイズとして算出する(図8参照)。
但し、ブロックサイズが大きくなるに従い、2つのF/Wの差分情報の粒度が大きくなり、1つのブロックのデータが異なる可能性が高くなり、結果的にF/Wの更新速度が遅くなる可能性が高くなる。
更新前F/Wハッシュファイル作成部212は、選択機器F/WをS122において算出したブロックサイズで複数のブロックに分割する。
S123の後、処理はS124に進む。
更新前F/Wハッシュファイル作成部212は、所定のハッシュ関数を用いて、S123で得られた複数のブロックそれぞれについてハッシュ値を算出する。
同一のハッシュ関数を用いて算出されたハッシュ値が同じである2つのデータは同じデータである。
ハッシュ関数は、処理速度を速めるために計算量とハッシュ長とが小さければ小さいほど良い。
S124の後、処理はS125に進む。
更新前F/Wハッシュファイル作成部212は、S124において算出した各ブロックのハッシュ値を設定した更新前F/Wハッシュファイル292を作成する。
S125の後、処理はS126に進む。
更新前F/Wハッシュファイル作成部212は、S125において作成した更新前F/Wハッシュファイル292をパソコン側記憶部290に記憶する。
S126の後、更新前F/Wハッシュファイル作成処理(S120)は終了する。
図10を含む各図において、「0x」は16進数表記を意味する。例えば、「0xFF」は10進数の「255」を示す。
図10に示すように、ブロックサイズが「3バイト」である場合、更新前F/Wは3バイトずつに分割され(S123)、各ブロック(第1ブロック、第2ブロック、・・・)のハッシュ値が計算され(S124)、各ブロックのハッシュ値が更新前F/Wハッシュファイル292に順に設定される(S125)。
ツール制御部211は、選択機器F/Wのブロックサイズ(S122において算出された値)に対応する新F/Wハッシュファイル293がパソコン側記憶部290に有るか確認する。
新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に進む。
新F/Wハッシュファイル作成部213は、S120の更新前F/Wハッシュファイル作成部212と同様にして、選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293を作成する。
新F/Wハッシュファイル293は、選択機器F/Wのブロックサイズで分割した新しいF/W291のブロック順に、各ブロックのハッシュ値を並べたデータである。
実施の形態1における新F/Wハッシュファイル作成処理(S130)について、図10および図11に基づいて以下に説明する。
そして、新F/Wハッシュファイル作成部213は、各ブロックのハッシュ値を設定した新F/Wハッシュファイル293を作成し(S133)、新F/Wハッシュファイル293をパソコン側記憶部290に記憶する(S134)。
ツール制御部211は、選択機器F/Wのバージョンに対応する更新前F/Wハッシュファイル292と選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293とに対応する差分情報ファイル294がパソコン側記憶部290に有るか確認する。
差分情報ファイル294は、更新前F/Wハッシュファイル292と新F/Wハッシュファイル293との組み合わせ毎に作成される。
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に進む。
差分情報ファイル作成部214は、選択機器F/Wのバージョンに対応する更新前F/Wハッシュファイル292と選択機器F/Wのブロックサイズに対応する新F/Wハッシュファイル293とに基づいて、差分情報ファイル294を作成する。
差分情報ファイル294は、更新前F/Wハッシュファイル292に設定されているハッシュ値と新F/Wハッシュファイル293に設定されているハッシュ値とを順番に一つずつ比較した結果を1ビット(一致「0」、不一致「1」)で示すビット列データである。
実施の形態1における差分情報ファイル作成処理(S140)について、図12に基づいて以下に説明する。
まず、差分情報ファイル作成部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」を設定する。
つまり、図12の差分情報ファイル294は、ブロックサイズが「3バイト」である場合、選択機器F/Wの先頭ブロック(先頭から3バイトのデータ)と新しいF/W291の先頭ブロックとが同じデータであることを示している。
また、選択機器F/Wの2番目のブロック(4バイト目から3バイトのデータ)と新しいF/W291の2番目のブロックとが異なるデータであることを示している。
ツール制御部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に進む。
選択機器のF/W更新タスク310は、S114において送信されたイレース要求コマンドを受信し、受信したイレース命令コマンドに含まれる差分情報ファイル294およびブロックサイズに基づいて更新前F/Wの差分領域をイレースする。
実施の形態1における更新前F/W差分領域イレース処理(S150)の概要について、図13に基づいて以下に説明する。
F/W更新タスク310は、差分情報ファイル294のビットが更新前F/Wと新しいF/W291との対応ブロックの不一致を意味するビット「1」である場合(S153)、当該ビットに対応する更新前F/Wのブロックを特定し(S154)、特定したブロックを所定のイレース単位サイズずつイレースする(S155)。
イレース単位サイズは、F/W更新タスク310が更新前F/Wをイレースできる1回あたりのデータサイズである。
また、F/W更新タスク310は、差分情報ファイル294の2ビット目が「1」であるため、更新前F/Wの第2ブロックをイレース単位サイズずつイレースする。
実施の形態1における更新前F/W差分領域イレース処理(S150)の流れについて、図14に基づいて以下に説明する。
選択機器のF/W更新タスク310は、差分情報ファイル294とブロックサイズとを含んだイレース要求コマンドを受信する。
S151の後、処理はS152に進む。
F/W更新タスク310は、差分情報ファイル294から1ビットを取得する。
S152から後述するS157までの処理はループ処理される。
F/W更新タスク310は、初回のループ時には差分情報ファイル294の先頭ビット(1ビット目)を取得し、2回目のループ時には差分情報ファイル294の2ビット目を取得する。
差分情報ファイル294が5ビットである場合、S152〜S157は5回ループする。
S152の後、処理はS153に進む。
F/W更新タスク310は、S152で取得した1ビット(以下、「取得ビット」という)が、更新前F/Wと新しいF/W291との対応ブロックの一致を意味するビット「0」であるか、または更新前F/Wと新しいF/W291との対応ブロックの不一致を意味するビット「1」であるかを判定する。
取得ビットがビット「0」である場合、処理はS157に進み、取得ビットがビット「1」である場合、処理はS154に進む。
F/W更新タスク310は、差分情報ファイル294に含まれるブロックサイズに基づいて、更新前F/W内から取得ビット(ビット「1」)に対応するブロック(以下、「差分ブロック」という)を特定する。
例えば、ブロックサイズが「12バイト」であり、取得ビットが差分情報ファイル294の1ビット目である場合、差分ブロックは差分情報ファイル294の先頭から12バイトの領域である。
また、取得ビットが差分情報ファイル294の2ビット目である場合、差分ブロックは差分情報ファイル294の13バイト目から12バイトの領域である。
S154の後、処理はS155に進む。
F/W更新タスク310は、S154で特定した差分ブロックをイレース単位サイズ分イレースする。
S155と後述するS156とはループ処理される。
イレース単位サイズが「3バイト」である場合、F/W更新タスク310は、初回のループ時には差分ブロックの先頭から3バイトの領域をイレースし、2回目のループ時には差分ブロックの4バイト目から3バイトの領域をイレースする。
ブロックサイズが「12バイト」であり、イレース単位サイズが「3バイト」である場合、S155〜S156は4(=12÷3)回ループする。
S155の後、処理はS156に進む。
F/W更新タスク310は、S155において差分ブロックの全領域のイレースが完了したか判定する。
差分ブロックのイレースが完了した場合(YES)、処理はS157に進む。
差分ブロックのイレースが完了していない場合(NO)、処理はS155に戻る。
F/W更新タスク310は、S142において差分情報ファイル294の全ビットを取得した場合に差分情報ファイル294の処理を完了したと判定し、S142において差分情報ファイル294に取得していないビットがある場合に差分情報ファイル294の処理を完了していないと判定する。
差分情報ファイル294の処理を完了した場合(YES)、更新前F/W差分領域イレース処理(S150)は終了する。
差分情報ファイル294の処理を完了していない場合(NO)、処理はS152に戻る。
差分データ出力部215は新しいF/W291の差分領域のデータを書き込み単位サイズずつ選択機器へ送信し、選択機器のF/W更新タスク310は受信した新しいF/W291の差分領域のデータを更新前F/Wに書き込んで更新前F/Wを更新する(S161〜S166)。
実施の形態1における更新前F/W差分領域書き込み処理(S160)の概要について、図15に基づいて以下に説明する。
パソコン側ツール210は、差分情報ファイル294のビットが更新前F/Wと新しいF/W291との対応ブロックの不一致を意味するビット「1」である場合、当該ビットに対応する新しいF/W291のブロックを特定し(S161)、特定したブロックを所定の書き込み単位サイズずつ読み込み(S162)、読み込んだ差分データを組み込み機器(選択機器)へ送信する(S163)。
書き込み単位サイズは、組み込み機器のF/W更新タスク310が更新前F/Wのメモリ領域に書き込みできる1回あたりのデータサイズであり、機器構成管理ファイル299に設定されている。
また、パソコン側ツール210は、差分情報ファイル294の2ビット目が「1」であるため、新しいF/W291の第2ブロックを書き込み単位サイズずつ読み込んで送信する。
差分データ出力部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に進む。
差分データ出力部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に進む。
差分データ出力部215は、差分単位データ(S162において読み込んだデータ)と差分単位データを書き込む領域を示す書き込み領域情報(例えば、新しいF/W291の先頭から差分単位データの先頭までのバイト数)とを含んだ書き込み要求コマンドを生成する。
差分データ出力部215は、生成した書き込み要求コマンドをパソコン側通信部219を用いて選択機器へ送信する。
書き込み要求コマンドは、選択機器F/Wのメモリ領域への差分単位データの書き込みを要求するコマンド110である。
S163の後、処理はS164に進む。
選択機器のF/W更新タスク310は、差分単位データと書き込み領域情報とを含んだ書き込み要求コマンドを受信し、差分単位データを更新前F/Wの書き込み領域に書き込む。
S164の後、処理はS165に進む。
差分データ出力部215は、S162において差分特定ブロックのデータを全て読み込んだ場合に差分特定ブロックの処理を完了したと判定し、S162において差分特定ブロックから読み込んでいないデータがある場合に差分特定ブロックの処理を完了していないと判定する。
差分特定ブロックの処理を完了した場合(YES)、処理はS165に進む。
差分特定ブロックの処理を完了していない場合(NO)、処理はS162に戻る。
差分データ出力部215は、S161において新しいF/W291の差分ブロックを全て特定した場合に全差分ブロックの処理を完了したと判定し、S161において新しいF/W291に特定していない差分ブロックがある場合に全差分ブロックの処理を完了していないと判定する。
全差分ブロックの処理を完了した場合(YES)、処理はS119に進む。
全差分ブロックの処理を完了していない場合(NO)、処理はS161に戻る。
ツール制御部211は、S110において組み込み機器を全て選択した場合に全組み込み機器の処理を完了したと判定し、S110において選択していない組み込み機器がある場合に全組み込み機器の処理を完了していないと判定する。
全組み込み機器の処理を完了した場合(YES)、F/W更新方法は終了する。
全組み込み機器の処理を完了していない場合(NO)、処理はS110に戻る。
パソコンから複数の組み込み機器へケーブルを介して新しいF/Wを送信し、複数の組み込み機器に内蔵されている不揮発性メモリ上の更新前F/Wを新しいF/Wに更新する。
データの書き込みに、イレースが不要な不揮発性メモリを内蔵している組み込み機器の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)。
Claims (7)
- 特定の機器で使用されている使用データと前記使用データとは少なくとも一部が異なる新データとを記憶媒体を用いて記憶するデータ記憶部と、
前記データ記憶部に記憶された使用データを特定のサイズで複数の分割データにCPU(Central Processing Unit)を用いて分割する使用データ分割部と、
前記データ記憶部に記憶された新データを前記特定のサイズで複数の分割データにCPUを用いて分割する新データ分割部と、
前記使用データの分割データ毎に当該使用データの分割データとデータの並び順が対応する新データの分割データと同じであるか否かを示す情報を差分情報としてCPUを用いて生成する差分情報生成部と、
前記差分情報生成部により生成された差分情報に基づいて新データの複数の分割データのうちデータの並び順が対応する使用データの分割データと異なる各分割データをCPUを用いて特定し、特定した新データの各分割データを差分データとして前記特定の機器に入力して前記特定の機器に前記使用データ内の前記差分データに対応する部分を前記差分データで更新させる差分データ入力部と
を備えたことを特徴とするデータ更新装置。 - 前記使用データ分割部は、前記特定の機器を第1の特定の機器として、第1の特定の機器により前記使用データに対して1回あたりに書き込まれるデータのサイズとして予め定められた第1の書き込み単位サイズと、前記第1の特定の機器で使用されている使用データと同じ使用データを使用している第2の特定の機器により前記使用データに対して1回あたりに書き込まれるデータのサイズとして予め定められた第2の書き込み単位サイズとの公倍数となるサイズを前記特定のサイズとして前記使用データを分割する
ことを特徴とする請求項1記載のデータ更新装置。 - 前記使用データ分割部は、前記第1の書き込み単位サイズと、前記第2の書き込み単位サイズと、前記第1の特定の機器により前記使用データに対して1回あたりにイレースされるデータのサイズとして予め定められた第1のイレース単位サイズと、前記第2の特定の機器により前記使用データに対して1回あたりにイレースされるデータのサイズとして予め定められた第2のイレース単位サイズとの公倍数となるサイズを前記特定のサイズとして前記使用データを分割する
ことを特徴とする請求項2記載のデータ更新装置。 - 前記データ更新装置は、さらに、
所定のハッシュ関数により前記使用データの分割データ毎にハッシュ値をCPUを用いて算出する使用データハッシュ値算出部と、
前記ハッシュ関数により前記新データの分割データ毎にハッシュ値をCPUを用いて算出する新データハッシュ値算出部とを備え、
前記差分情報生成部は、前記使用データハッシュ値算出部により算出されたハッシュ値と前記新データハッシュ値算出部により算出されたハッシュ値とに基づいて前記差分情報を生成する
ことを特徴とする請求項1〜請求項3いずれかに記載のデータ更新装置。 - 前記差分情報生成部は、前記使用データの分割データ毎に当該使用データの分割データとデータの並び順が対応する新データの分割データと同じであるか否かを1ビットで表して前記差分情報を生成する
ことを特徴とする請求項1〜請求項4いずれかに記載のデータ更新装置。 - 使用データ分割部が、特定の機器で使用されている使用データを特定のサイズで複数の分割データにCPU(Central Processing Unit)を用いて分割し、
新データ分割部が、前記使用データとは少なくとも一部が異なる新データを前記特定のサイズで複数の分割データにCPUを用いて分割し、
差分情報生成部が、前記使用データの分割データ毎に当該使用データの分割データとデータの並び順が対応する新データの分割データと同じであるか否かを示す情報を差分情報としてCPUを用いて生成し、
差分データ入力部が、前記差分情報生成部により生成された差分情報に基づいて新データの複数の分割データのうちデータの並び順が対応する使用データの分割データと異なる新データの各分割データをCPUを用いて特定し、特定した新データの各分割データを差分データとして前記特定の機器に入力して前記特定の機器に前記使用データ内の前記差分データに対応する部分を前記差分データで更新させる
ことを特徴とするデータ更新装置のデータ更新方法。 - 請求項6記載のデータ更新方法をコンピュータに実行させるデータ更新プログラム。
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)
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)
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)
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 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 携帯端末内のデータ更新方法 |
-
2009
- 2009-03-06 JP JP2009053795A patent/JP5225163B2/ja not_active Expired - Fee Related
Patent Citations (6)
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)
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 |