(57)【要約】【課題】ＯＳ上にデバイスの疑似動作を行う「モデル」をアプリケーションとして構築し、ファームウェアからこの「モデル」にアクセスすることにより、ＯＳ上でも実機と変わらぬファームウェアデバッグを実現する。【解決手段】オペレーティングシステム上に対象装置２００のデバイスの疑似動作を行うアプリケーションであるエミュレーションモデル２１０を構築するステップと、デバッグされる対象となるファームウェア１００の対象装置２００のデバイスへのアクセス手段を削除し、そのアクセス先をエミュレーションモデル２１０へ変える改造を行うステップと、この改造を行ったファームウェア１００を動作させエミュレーションモデル２１０にアクセスさせてデバッグを行うステップと、を有する。【選択図】    図１
2005018485.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティングシステム上にデバッグされる対象となるファームウェアのアクセスする対象装置のデバイスの疑似動作を行うアプリケーションであるエミュレーションモデルを構築するステップと、前記ファームウェアの前記対象装置のデバイスへのアクセス手段を削除し、そのアクセス先を前記エミュレーションモデルへと変える改造を行うステップと、前記改造を行ったファームウェアを動作させ前記エミュレーションモデルにアクセスさせてデバッグを行うステップと、を有することを特徴とするファームウェアデバッグ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ファームウェアデバッグ方法に関し、特にコンピュータデバイスの初期化を行うためのファームウェアのデバッグを行うファームウェアデバッグ方法に関するものである。
【０００２】
【従来の技術】
従来、コンピュータデバイスの初期化を行うためのファームウェアのデバッグ方法は、対象のコンピュータ装置にファームウェアを組み込み、ＩＴＰ、ＩＣＥといった特別な機器を用いて行う方法が一般的である。
【０００３】
この方法によるデバッグには次の欠点がある。
１．装置への組み込み自体に手間がかかる。
２．Ｃ言語のような高水準言語を使用してファームウェアを記述した場合、ソースレベルでのデバッグが困難。
３．当然だが、対象装置がないとデバッグできない。
これらの欠点を解決する方法の１つに、外部モデルを用いるシミュレーション方法が提案されている（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特開平４−１４８３４５号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、特許文献１のファームウェアデバッグ方法では、そこで外部モデルとして利用されているのはあくまでもハードウェアであり、オペレーティングシステム上でエミュレーションを行うものとは大きく異なり、外部モデルの作成は容易には行えない。
【０００６】
本発明では上記の欠点を解決するため、ファームウェアデバッグにおける、次に挙げる２つの主な工程の開発工数を改善する手段を提供する。
１．デバイスに開発者の期待する値が設定できたかを確認する工程
２．設定が完了したデバイスが、期待する動作をするかを確認する工程
すなわち、オペレーティングシステム上にデバイスの疑似動作を行う「モデル」をアプリケーションとして構築し、ファームウェアからこの「モデル」にアクセスすることにより、オペレーティングシステム上でも実機と変わらぬファームウェアデバッグを実現する。
【０００７】
【課題を解決するための手段】
本発明のファームウェアデバッグ方法は、オペレーティングシステム上にデバッグされる対象となるファームウェアのアクセスする対象装置のデバイスの疑似動作を行うアプリケーションであるエミュレーションモデルを構築するステップと、前記ファームウェアの前記対象装置のデバイスへのアクセス手段を削除し、そのアクセス先をエミュレーションモデルへ変える改造を行うステップと、前記改造を行ったファームウェアを動作させ前記エミュレーションモデルにアクセスさせてデバッグを行うステップと、を有する。
【０００８】
【発明の実施の形態】
次に図面を参照して本発明の実施例について説明する。図１は本発明のファームウェアデバッグ方法に係るファームアプリ及びエミュレーションモデルの構成を示すブロック図である。
【０００９】
図１の通常のファームウェア１００は対象装置２００で動作する目的で作成されたものである。ファームウェア１００は、プロセッサＩＯドライバ１０１と、デバッグ対象ドライバ１０２と、デバッグ非対象ドライバ１０３とに分割することができる。
【００１０】
プロセッサＩＯドライバ１０１は、ファームウェア１００内の他のドライバから、デバイスアクセス用のリクエストのみを受け付け、対応するマシンコードに変換、実行するドライバである。デバッグ対象ドライバ１０２は本発明でのデバッグ対象となる部分である。デバッグ非対象ドライバ１０３は、次に述べるファームアプリ化に伴い、デバッグの対象とならない部分である。
【００１１】
まずファームウェア１００を、あるオペレーティングシステム５０上で動作するアプリケーション（以下、ファームアプリ１１０という）に改造する。ファームアプリ１１０は、新プロセッサＩＯドライバ１１１と、デバッグ対象ドライバ１０２と、ファームアプリ用ドライバ１１２とを有している。
【００１２】
新プロセッサＩＯドライバ１１１は、ファームウェア１００内に存在するプロセッサＩＯドライバ１０１を改造したものであり、プロセッサＩＯドライバ１０１が持つデバイスアクセス手段を削除し、そのアクセスをネットワークアクセスへと変換するように改造されたドライバである。この新プロセッサＩＯドライバ１１１は本発明の一つの鍵となるものである。
【００１３】
デバッグ対象ドライバ１０２は、前述の通り本発明におけるデバッグ対象であり、ファームウェア１００に存在するものと全く同じで一切改造されていない。
ファームアプリ用ドライバ１１２は、ファームウェア１００のアプリケーション化に必要な最低限のドライバである。
【００１４】
エミュレーションモデル２１０は、オペレーティングシステム上にて対象装置２００デバイスの疑似動作を行う。エミュレーションモデル２１０は、ファームアプリ１１０と同様、オペレーティングシステム５０上にて動作するアプリケーションであり、ネットワーク接続モジュール２１１と、デバイスモデル２１２と、デバイス構成情報２１３から成る。
【００１５】
ネットワーク接続モジュール２１１は、ネットワークへの接続手段を提供するモジュールであり、新ＣＰＵＩＯドライバ１１１との通信を行う。デバイスモデル２１２は複数存在し、それぞれが固有のデバイスの動作をエミュレートするモジュールであり、例えばＪａｖａ（登録商標）におけるクラスにて実現する。デバイスモデル２１２の例として、チップセットの動作をエミュレートするチップセットモデル、ＵＳＢコントローラの動作をエミュレートするＵＳＢコントローラモデルなどが挙げられる。デバイス構成情報２１３は、デバイスモデル２１２の構成情報を定義するものであり、これは、外部ファイルであるデバイス構成記述ファイル２２０から情報を取得する。デバイス構成記述ファイル２２０は、例としてＸＭＬで実現することができる。
【００１６】
次に動作について図２を参照して説明する。図１、図２において、デバッグ対象ドライバ１０２は、新プロセッサＩＯドライバ１１１に対して、デバイスアクセスのリクエストを送る。例えばここでは図２に示すようにメモリリードリクエスト４００を送信したときの動作について説明する。
【００１７】
新プロセッサＩＯドライバ１１１は受信したメモリリードリクエスト４００をリクエストパケット４０１へと変換しネットワークへと送信する。リクエストパケット４０１は例えばＴＣＰ／ＩＰにおけるパケットにて実現可能である。本発明では、ファームアプリ１１０とエミュレーションモデル２１０の通信にネットワークを使用しているが、これは両者のプログラムの独立性を保つためであり、標準形態としては両者とも同一装置内のオペレーティングシステム上で動作することを想定している。
【００１８】
エミュレーションモデル２１０におけるネットワーク接続モジュール２１１は、リクエストパケット４０１を受信する。ネットワーク接続モジュール２１１はリクエストアドレス４０２を解析し、このアドレスによりターゲットデバイスを決定する。ここではデバイスモデル２１２がターゲットデバイスになったと仮定する。
【００１９】
デバイスモデル２１２は、ある実際のデバイスをエミュレートするモデルであるため、リクエストアドレス４０２に対して、実際のデバイスが返却するべき値を返却する。
【００２０】
ネットワーク接続モジュール２１１はこの値を受け取り、返却パケット４０３へと変換を行い、さらにネットワーク３００へと送信する。
【００２１】
新プロセッサＩＯドライバ１１１はネットワーク返却パケット４０３を受け取り、データの部分をメモリリードレスポンス４０４として、当初リクエストを発行したデバッグ対象ドライバ１０２へと送信する。
【００２２】
デバッグ可能ドライバ１０２はメモリリードレスポンス４０４を受け取る。このメモリリードレスポンス４０４は、デバッグ対象ドライバ１０２が本来、対象装置２００にて動作しているときに受け取る値と全く同じものである。よってデバッグ対象ドライバ１０２は対象装置２００にて動作しているときと同様に処理を先に進めることができる。
【００２３】
以上説明したように、本発明により、デバッグ対象ドライバ１０２にとっては、実機と変わらぬ動作環境が実現されるので、オペレーティングシステム上でもデバッグが可能となる。
【００２４】
なお、上述の実施例に対し以下のような変形も可能である。
【００２５】
前述の通り標準では、ファームアプリ１１０とエミュレーションモデル２１０は同一のマシンでの動作を想定しているが、エミュレーションモデル２１０をネットワーク上の他サーバで動作させることができる。これにより一つのエミュレーションモデルに対して、複数のファームアプリからのアクセスを受け付けられるようになるため、各マシンにおけるエミュレーションモデルの準備が必要なくなる。
【００２６】
また、エミュレーションモデル２１０内のデバイスモデル２１２をネットワーク上のあるサーバに置き、ネットワーク接続モジュール２１１からネットワーク経由でアクセス可能にする。これにより例えば、様々なチップベンダが用意するサーバにアクセスすることによりデバイスモデルの組合せが可能となる。またチップベンダは常に最新のデバイスモデルを提供することができる。
【００２７】
また、現状、リクエストを発行できるのは、デバッグ対象ドライバ１０２であるが、デバイスモデル２１２からリクエストを発行できるように改造することで、ＤＭＡやデバイスからの外部割込みについても本発明にてエミュレートすることができる。
【００２８】
さらに、新プロセッサＩＯドライバ１０１がネットワークに送信できるリクエストは、現状メモリアクセス、Ｉ／ＯアクセスなどプロセッサＩ／Ｏ命令だけである。これをプロセッサ内部レジスタアクセス用命令も送信できるように改造し、さらにエミュレーションモデル２１０内にプロセッサの内部レジスタをエミュレートするモデルを追加することにより、ほぼ完全にプロセッサをエミュレートすることができる。
【００２９】
【発明の効果】
本発明により、以下のような効果が得られる。
【００３０】
第一の効果は、対象装置が完成していないような、開発初期段階においてもデバイスモデルを揃えることにより早期からのファームウェアデバッグが可能になる。またデバッグ可能ドライバには一切手を加えないため、実機と同様のデバッグ環境を提供することができる。
【００３１】
第二の効果は、エミュレーションモデルはＧＵＩを有するため、開発中のファームウェアがデバイスに設定された値を容易に確認することができる。これをハードウェア上で実現するには、特別な機器やツールが必要になる。
【００３２】
第三の効果は、デバイスモデルはソフトウェアにて簡単に実装可能であるため、様々なデバイスに対応できる。
【００３３】
第四の効果は、開発対象のファームウェアがオペレーティングシステム上にてデバッグ可能であるため、既存の豊富な開発ツール類を使用してのデバッグが可能となる。
【００３４】
第五の効果は、複数人でのファームウェア開発において、対象装置を開発者の人数分揃えるよりも安価にデバッグ環境を整えることが可能となる。
【００３５】
これにより、ファームウェアのデバッグにおいて、実機に組み込んでの評価を行う前にエミュレーションモデルによる評価を行うことにより、多くの問題を発見することができ、また問題解決に至る時間を大幅に短縮することができた。実際、実機によるデバッグを行っていたら２、３日かかったであろう問題を２、３時間で解決できたという事例もある。
【００３６】
さらに次世代装置の開発において、まだサンプルさえもリリースされておらず仕様書しか存在しない、といったような他社製チップの検討を行う際に、事前に仕様書よりデバイスモデルを作成することにより、その動作検証を行うことも可能となった。
【００３７】
このように本発明では、ファームウェアのオペレーティングシステム上でのデバッグ環境を改良することにより、デバッグ時間の短縮、および未知のデバイスに対するシミュレーション環境を提供する。
【図面の簡単な説明】
【図１】本発明のファームウェアデバッグ方法に係るファームアプリ及びエミュレーションモデルの構成を示すブロック図である。
【図２】図１の動作を示す図である。
【符号の説明】
１００  ファームウェア
１０１  プロセッサＩＯドライバ
１０２  デバッグ対象ドライバ
１０３  非対象ドライバ
１１０  ファームアプリ
１１１  新プロセッサＩＯドライバ
１１２  ファームアプリ用ドライバ
２００  対象装置
２１０  エムレーションモデル
２１１  ネットワーク接続モジュール
２１２  デバイスモデル
２１３  デバイス構成情報
２２０  デバイス構成記述ファイル
３００  ネットワーク
４００  メモリリードリクエスト
４０１  リクエストパケット
４０２  リクエストアドレス
４０３  返却パケット
４０４  メモリリードレスポンス
【図１】
2005018485.tif 000003
【図２】
2005018485.tif 000004