(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-14
(45)【発行日】2024-02-22
(54)【発明の名称】FFU検査装置及びFFU検査用プログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20240215BHJP
【FI】
G06F11/36 124
G06F11/36 144
(21)【出願番号】P 2020158981
(22)【出願日】2020-09-23
【審査請求日】2022-03-28
【前置審査】
(73)【特許権者】
【識別番号】391016358
【氏名又は名称】東芝情報システム株式会社
(74)【代理人】
【識別番号】100156199
【氏名又は名称】神崎 真
(74)【代理人】
【識別番号】100074147
【氏名又は名称】本田 崇
(74)【代理人】
【識別番号】100124497
【氏名又は名称】小倉 洋樹
(72)【発明者】
【氏名】木村 武
(72)【発明者】
【氏名】居村 嘉治
(72)【発明者】
【氏名】手塚 隆之
【審査官】円子 英紀
(56)【参考文献】
【文献】特表2009-505275(JP,A)
【文献】特開2009-124520(JP,A)
【文献】特開2009-110113(JP,A)
【文献】特開昭61-109152(JP,A)
【文献】特開平04-342037(JP,A)
【文献】特開2002-163126(JP,A)
【文献】特開平11-015689(JP,A)
【文献】特開2001-202252(JP,A)
【文献】特開2000-305806(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00 - 8/77
9/44 - 9/445
9/451
11/07
11/28 -11/36
(57)【特許請求の範囲】
【請求項1】
ファームウエアアップデートプログラム(FFU)を逆アッセンブルした状態のアッセンブリ言語ファームウエアアップデートプログラム(A-FFU)から関数、変数を検索する関数・変数検索手段と、
前記関数・変数検索手段により関数、変数が検索された場合に、この検索された関数、変数に対応するオペランドアドレスを検出するオペランドアドレス検出手段と、
当該FFUに許容されている許容アドレス範囲情報を参照して、前記オペランドアドレスが検出された場合の当該オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲にあるか否かのチェックを行い、前記オペランドアドレスが検出されなかった場合に上記チェックを行わないチェック手段と、
前記チェック手段によるチェックの結果、前記オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲に無い場合には、エラー報知を行うエラー報知手段と、
前記オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲にないことが検出された場合に、当該オペランドアドレスを前記許容アドレス範囲情報のアドレス範囲の適正アドレスへ修正するエラー修正手段と
を具備することを特徴とするFFU検査装置。
【請求項2】
前記関数・変数検索手段は、前記関数である分岐命令を検索することを特徴とする請求項1に記載のFFU検査装置。
【請求項3】
前記関数・変数検索手段は、前記変数であるロード命令を検索することを特徴とする請求項1または2に記載のFFU検査装置。
【請求項4】
FFUを逆アッセンブルしてアッセンブリ言語のプログラムを生成する逆アッセンブル手段を、
更に具備することを特徴とする
請求項1乃至3のいずれか1項に記載のFFU検査装置。
【請求項5】
コンピュータを、
ファームウエアアップデートプログラム(FFU)を逆アッセンブルした状態のアッセンブリ言語ファームウエアアップデートプログラム(A-FFU)からの関数、変数を検索する関数・変数検索手段、
前記関数・変数検索手段により関数、変数が検索された場合に、この検索された関数、変数に対応するオペランドアドレスを検出するオペランドアドレス検出手段、
当該FFUに許容されている許容アドレス範囲情報を参照して、前記オペランドアドレスが検出された場合の当該オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲にあるか否かのチェックを行い、前記オペランドアドレスが検出されなかった場合に上記チェックを行わないチェック手段と、
前記チェック手段によるチェックの結果、前記オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲に無い場合には、エラー報知を行うエラー報知手段
前記オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲にないことが検出された場合に、当該オペランドアドレスを前記許容アドレス範囲情報のアドレス範囲の適正アドレスへ修正するエラー修正手段
として機能させることを特徴とするFFU検査用プログラム。
【請求項6】
前記コンピュータを、前記関数・変数検索手段として、関数である分岐命令を検索するように機能させることを特徴とする
請求項5に記載のFFU検査用プログラム。
【請求項7】
前記コンピュータを、前記関数・変数検索手段として、変数であるロード命令を検索するように機能させることを特徴とする
請求項5または6に記載のFFU検査用プログラム。
【請求項8】
前記コンピュータを、
FFUを逆アッセンブルしてアッセンブリ言語のプログラムを生成する逆アッセンブル手段
として機能させることを特徴とする請求項5乃至7のいずれか1項に記載のFFU検査用プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、FFU検査装置及びFFU検査用プログラムに関するものである。
【背景技術】
【0002】
従来、ファームウエアの更新を行う場合に使用するファームウエアアップデートを行うFFUにおいては、ファームウエアに存在する関数と同じ名称の関数を用いることがしばしば生じる。この場合にあっては、FFUの関数から上記ファームウエアに存在する関数と同じ名称の関数を呼び出すなどすることになる。
【0003】
例えば、
図1に示すようにFFU内に、関数X、関数A、関数Bが設けられており、関数XはFFU内の関数Aを呼び出す関数であり、
図1においては、関数X内に呼び出しを示す関数A()が記載されている。また、ファームウエアFW内に、関数A、関数B、関数Cが記載されているとする。
【0004】
上記において、呼び出しを示す関数A()におけるオペランドアドレスが、ファームウエアFW内のアドレスとなっている場合には、
図2に示すようにファームウエアFWの関数Aを呼び出すため、エラーが生じる。これに対し、呼び出しを示す関数A()におけるオペランドアドレスが、FFU内のアドレスとなっている場合には、
図3に示すようにFFU内で処理が進むため実行可能となる。
【0005】
上記の
図2に示したように、呼び出しによってエラーが生じる場合においても、コンパイルエラーにはならないため、従来はアッセンブリ言語において、目視してFW内の関数のアドレスへ呼び出しを行っていないかをチェックしており、FFUの開発者にとっては大きな負担となっていた。
【0006】
従来のファームウエアアップデートに関しては、特許文献1に記載のものが知られている。この特許文献1に記載のファームウエア管理装置は、ファームウエアが公開停止であることを示す第1のアップデート情報をアクセス可能にする配布サーバから、上記第1のアップデート情報を取得する、第一制御手段11と、第2のアップデート情報を格納する、第一格納手段12と、を含むものである。
【0007】
この装置では、上記第一制御手段が、上記第1のアップデート情報と、上記第一格納手段に格納されている上記第2のアップデート情報を基に、上記ファームウエアのアップデートプログラムの適用または削除の命令を送信する。これによって、管理対象サーバのファームウエアにアップデートプログラムを適用する際に、公開停止のアップデートプログラムの適用を防止することができるというものである。
【0008】
また、特許文献2には、画像形成装置におけるファームウエアのアップデートが開示されている。この画像形成装置では、通常時に使用する通常ファームウエアと通常ファームウエアのアップデート時に使用するセーフモードのファームウエアを有する。そして、この装置において、通常ファームウエアをアップデートする前に通常ファームアップデート処理手段を検証する検証処理ステップを実施し、検証に失敗した場合は通常ファームアップデート処理手段のプログラムデータをセーフモードのファームアップデート処理手段のものに置きかえる。このような構成により、複数のモードで起動する機器でのファームウエア更新機能に対する信頼性が向上するとしている。
【先行技術文献】
【特許文献】
【0009】
【文献】特開2015-153266号公報
【文献】特開2015-097022号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
上記のファームウエアアップデートにおける処理によれば、公開停止となった不適格なプログラムの適用がなくなり、アップデート時にはセーフモードのファームウエアが用意されており、ファームウエア更新機能に対する信頼性が向上するものの、開発したFFUの処理に関してアップデートの対象機器に適用して適切に動作するかを検査することができなかった。
【0011】
本発明は上記のようなファームウエアアップデートにおける問題点に鑑みなされたもので、その目的は、FFU内のオペコードの処理が適切に行われないというエラーを検出可能なFFU検査装置を提供することである。
【課題を解決するための手段】
【0012】
FFU検査装置は、ファームウエアアップデートプログラム(FFU)を逆アッセンブルした状態のアッセンブリ言語ファームウエアアップデートプログラム(A-FFU)から関数、変数を検索する関数・変数検索手段と、前記関数・変数検索手段により関数、変数が検索された場合に、この検索された関数、変数に対応するオペランドアドレスを検出するオペランドアドレス検出手段と、当該FFUに許容されている許容アドレス範囲情報を参照して、前記オペランドアドレスが検出された場合の当該オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲にあるか否かのチェックを行い、前記オペランドアドレスが検出されなかった場合に上記チェックを行わないチェック手段と、前記チェック手段によるチェックの結果、前記オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲に無い場合には、エラー報知を行うエラー報知手段と、前記オペランドアドレスが前記許容アドレス範囲情報のアドレス範囲にないことが検出された場合に、当該オペランドアドレスを前記許容アドレス範囲情報のアドレス範囲の適正アドレスへ修正するエラー修正手段とを具備することを特徴とする。
【図面の簡単な説明】
【0013】
【
図1】ファームウエアに設けられた関数とFFUに設けられた関数との名称が同じである、それぞれのプログラムの概略図。
【
図2】ファームウエアに設けられた関数とFFUに設けられた関数との名称が同じであるため、実行不可能となる場合の、それぞれのプログラムの概略図。
【
図3】ファームウエアに設けられた関数とFFUに設けられた関数との名称が同じであるが、実行可能となる場合の、それぞれのプログラムの概略図。
【
図4】コンピュータシステムによって構成した、本発明の実施形態に係るFFU検査装置のブロック図。
【
図5】本発明の実施形態に係るFFU装置を構成する各手段を示す図。
【
図6】本発明の実施形態のFFU検査装置の動作を説明するためのフローチャート。
【
図7】本発明の実施形態のFFU検査装置によって検査される、FFUを逆アッセンブルした状態のA-FFUの一例を示す図。
【
図8】本発明の実施形態のFFU検査装置によって用いられる許容アドレス範囲情報の一例を示す図。
【
図9】本発明の実施形態のFFU検査装置によって行われるエラー表示の一例を示す図。
【
図10】本発明の実施形態のFFU検査装置によって修正を行う場合の予告及び結果報告の表示の一例を示す図。
【
図11】
図7のプログラムを、本発明の実施形態のFFU検査装置によって修正した後のプログラムを示す図。
【発明を実施するための形態】
【0014】
以下添付図面を参照して本発明の実施形態に係るFFU検査装置及びFFU検査装置を説明する。各図において同一の構成要素には、同一の符号を付して重複する説明を省略する。
【0015】
図4に、コンピュータシステムによって構成した、本発明の実施形態に係るFFU検査装置を示す。本発明の実施形態に係るFFU検査装置は、例えば
図1に示されるようなパーソナルコンピュータやワークステーション、その他のコンピュータシステムにより構成することができる。このコンピュータシステムは、CPU10が主メモリ11に記憶されている或いは主メモリ11に読み込んだプログラムやデータに基づき各部を制御し、必要な処理を実行することにより本実施形態に係るFFU検査装置として動作を行うものである。
【0016】
CPU10には、バス12を介して外部記憶インタフェース13、入力インタフェース14、表示インタフェース15、通信インタフェース16が接続されている。外部記憶インタフェース13には、FFU検査用プログラム等のプログラムと必要なデータ等が記憶されている外部記憶装置23が接続されている。入力インタフェース14には、コマンドやデータを入力するための入力装置としてのキーボードなどの入力装置24とポインティングデバイスとしてのマウス22が接続されている。
【0017】
表示インタフェース15には、LEDやLCDなどの表示画面を有する表示装置25が接続されている。通信インタフェース16に、検査対象であるFFUを得るためのポート26-1、26-2、・・・、26-mが接続されている。本実施形態に係るFFU検査装置が、ポート26-1、26-2、・・・、26-mを1つとして通信することができる。また、検査対象であるFFUについては、通信を介さずに例えば記憶媒体により得て、この検査対象であるFFUを外部記憶装置23に記憶しておき、検査を行うようにしても良い。このコンピュータシステムには、他の構成が備えられていても良く、また、
図4の構成は一例に過ぎない。このコンピュータシステムによる構成は、構成を適宜変更しても良い。
【0018】
本実施形態では、外部記憶装置23に、
図5に示す各手段を実現するためのFFU検査用プログラムが記憶されている。即ち、FFU検査用プログラムによって、逆アッセンブル手段101、オペランドアドレス検出手段102、チェック手段103、エラー報知手段104、所定関数・変数検索手段105、エラー修正手段106が実現される。また、外部記憶装置23には、当該FFUに許容されている許容アドレス範囲情報が記憶されている。
【0019】
逆アッセンブル手段101は、FFUを逆アッセンブルしてアッセンブリ言語のプログラムを生成するものである。オペランドアドレス検出手段102は、上記アッセンブリ言語のプログラムにおけるオペコードに対応するオペランドであるオペランドアドレスを検出するものである。
【0020】
チェック手段103は、当該FFUに許容されている許容アドレス範囲情報を参照して、上記オペランドアドレスが上記許容アドレス範囲情報のアドレス範囲にあるか否かのチェックを行うものである。エラー報知手段104は、上記チェック手段103によるチェックの結果、上記オペランドアドレスが上記許容アドレス範囲情報のアドレス範囲に無い場合には、エラー報知を行うものである。
【0021】
所定関数・変数検索手段105は、上記アッセンブリ言語のプログラムから所定の関数、変数を検索するものである。この所定関数・変数検索手段105が上記所定の関数、変数を検索し、所定の関数、変数が検索された場合に、上記オペランドアドレス検出手段102は、この検索された関数、変数に対応するオペランドアドレスを検出するものである。ここに、上記所定関数・変数検索手段105は、上記所定の関数である分岐命令を検索する。上記所定関数・変数検索手段105は、上記所定の変数であるロード命令を検索する。分岐命令とロード命令は、一例に過ぎず、この関数、変数がFW内のアドレスに存在するものであれば、検索対象としても良い。
【0022】
エラー修正手段106は、上記オペランドアドレスが上記許容アドレス範囲情報のアドレス範囲にないことが検出された場合に、当該オペランドアドレスを上記許容アドレス範囲情報のアドレス範囲の適正アドレスへ修正するものである。
【0023】
本実施形態のFFU検査用プログラムは、
図6に示されるフローチャートにより実現される。従って、以上のように構成されたFFU検査装置の動作は、
図6に示されるフローチャートに対応するFFU検査用プログラムをCPU10が実行することによってなされてゆく。以下、このフローチャートに従って装置の動作を説明する。
【0024】
まず、CPU10は、FFUを逆アッセンブルした状態のA-FFUを用意する(S11)。このA-FFUは、アッセンブルして機械語のFFUとする前のものであっても良いし、CPU10が、逆アッセンブル手段101として動作し、機械語のFFUを逆アッセンブルしてアッセンブリ言語のプログラムを生成したものであっても良い。
【0025】
次に、CPU10は、A-FFUにおけるオペコードに対応するオペランドであるオペランドアドレスを検出する(S12)。
【0026】
例えば、A-FFUが
図7のようであるとする。すると、上記ステップS12においてCPU10は、オペコードを「PUSH」、「MOV」、「BL」、「MOV」、「POP」、「B」、・・・と検出し、このオペコードに対応するオペランドであるオペランドアドレスを検出する。この例では、「BL」、「B」にのみオペランドアドレスが存在する。オペコード「BL」に対応するオペランドアドレスは「0x01330000」であり、オペコード「B」に対応するオペランドアドレスは、0x01a36000」である。
【0027】
次に、CPU10は、当該FFUに許容されている許容アドレス範囲情報を参照して、上記オペランドアドレスが上記許容アドレス範囲情報のアドレス範囲にあるか否かのチェックを行う(S13、S14)。
【0028】
許容アドレス範囲情報を
図8に示す。許容アドレス範囲は、「0x01a36000~0x01a37000」である。
図7の四角枠Sで囲まれているオペコード「BL」に対応するオペランドアドレス「0x01330000」は許容範囲外であり、オペコ―ド「B」に対応するオペランドアドレスは、0x01a36000」は許容範囲である。
【0029】
そこで、CPU10は、ステップS14ではNOへ分岐し、エラー表示を行う(S15)。例えば、
図9に示されるように、「オペランドアドレスが誤っている関数・変数があります。誤っているのは、オペコ―ドBLに対応するオペランドアドレス「0x01330000」です。」などと表示を行う。ステップS14においてYESへ分岐すると、ステップS16へ進む。
【0030】
次に、CPU10は、上記誤っているオペランドアドレスを上記許容アドレス範囲情報のアドレス範囲の適正アドレスへ修正する(S15)。このときに、
図10に示すように「誤りの修正を行います。」を表示し、更に加えて、「オペコ―ドBLに対応するオペランドアドレスを「0x1a36500」に変更しました。」などと表示を行う。
図7から修正されたA-FFUを
図11に示す。
図11の四角枠SSで囲まれている記述中のオペランドアドレスが「0x1a36500」に修正されていることが判る。全ての誤りがなくなったかをステップS16で検出し、NOと判定するとステップS12へ戻って処理をつづけ、ステップS16においてYESと判定するとエンドとなる。
【0031】
上記実施形態では、オペコ―ドにより検索を行ったが、関数・変数という観点から検索を行っても良い。即ち、一般的に関数や変数の名称がオペコ―ドであるから、本実施形態のFFU検査装置は、上記アッセンブリ言語のプログラムから所定の関数、変数を検索する所定関数・変数検索手段を具備し、上記オペランドアドレス検出手段102は、上記所定関数・変数検索手段105により所定の関数、変数が検索された場合に、この検索された関数、変数に対応するオペランドアドレスを検出するものでもある。
【0032】
本実施形態では、上記所定関数・変数検索手段105は、上記所定の関数である分岐命令(関数名:BL)を検索するものである。本実施形態では、上記所定関数・変数検索手段105は、上記所定の変数であるロード命令(関数名:ROAD)を検索する。また、関数名が「commit」である関数を検索し、これに対応するオペランドアドレスが上記許容アドレス範囲情報のアドレスであるかチェックするようにしても良い。
【0033】
以上のように本実施形態によれば、FFU内のオペコードの処理が適切に行われないというエラーを検出可能であり、その原因がオペランドアドレスにある場合に、オペランドアドレスが適切修正され、適切なFFUを得ることができる。
【符号の説明】
【0034】
10 CPU
11 主メモリ
12 バス
13 外部記憶インタフェース
14 入力インタフェース
15 表示インタフェース
16 通信インタフェース
22 マウス
23 外部記憶装置
24 入力装置
25 表示装置
26-1~26-m ポート
101 逆アッセンブル手段
102 オペランドアドレス検出手段
103 チェック手段
104 エラー報知手段
105 所定関数・変数検索手段
106 エラー修正手段