JP2008217574A - 開発プログラム、記録媒体、開発装置および開発方法 - Google Patents

開発プログラム、記録媒体、開発装置および開発方法 Download PDF

Info

Publication number
JP2008217574A
JP2008217574A JP2007055895A JP2007055895A JP2008217574A JP 2008217574 A JP2008217574 A JP 2008217574A JP 2007055895 A JP2007055895 A JP 2007055895A JP 2007055895 A JP2007055895 A JP 2007055895A JP 2008217574 A JP2008217574 A JP 2008217574A
Authority
JP
Japan
Prior art keywords
emulator
program
device driver
actual machine
development
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.)
Pending
Application number
JP2007055895A
Other languages
English (en)
Inventor
Satoru Sugishita
悟 杉下
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2007055895A priority Critical patent/JP2008217574A/ja
Publication of JP2008217574A publication Critical patent/JP2008217574A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】組込ソフトウェアの開発の際に精度よく品質保証を行うことのできる開発プログラムを提供する。
【解決手段】所定の動作を行う実機に組み込まれる組込プログラムを開発する手段として、コンピュータを機能させる開発プログラム1であって、実機のデバイスドライバにかえて、組込プログラム100とのコマンドの送受信を行う擬似デバイスドライバ221、および実機の機能にかえて、擬似デバイスドライバ221とのコマンドの送受信を行うエミュレータ230としてコンピュータを機能させる。
【選択図】 図1

Description

本発明は、所定の動作を行う実機に組み込まれる組込プログラムを開発する手段として、コンピュータを機能させる開発プログラム、記録媒体、開発装置および開発方法に関するものである。
従来、例えばプリンタや、FAX、またはこれらの複合機などハードウェア機能を備えた装置に組み込む組込ソフトウェアの開発を行う際には、組込ソフトウェアで必要となるハードウェア処理における動作確認が必要となるなど、品質保証のため実機環境が必要であった。
特許文献1には、実機を必要とせずパーソナルコンピュータ(以下、「PC」と称する)上でソフトウェアの開発を行うための環境構築方法が開示されている。この方法においては、通信パスクラスが実機レス環境専用のソフトウェアである機能クラスを呼び出すことにより、実機レス環境で組込ソフトウェアの動作を実現している。実機環境においては、通信パスクラスとデバイスドライバとの組み合わせが記述された定義を読み込むことにより通信パスの接続先を設定する。同様に、デバッグの際には、通信パスクラスと機能クラスとの組み合わせが記述された定義を読み込むことにより通信パスの接続先を設定する。これにより、機能クラスまたはデバイスドライバのいずれかを動作環境に合わせて選択して呼び出せるような仕組みを通信パスクラスに設けている。
特開2003−296138号公報
しかしながら、特許文献1に記載の方法においては、実機環境とデバッグ処理の際とにおいて通信パスクラスの接続先が異なっている。すなわち、通信パスクラスにおける処理は、デバッグ処理の際に実機環境と完全に同一の処理ではない。このため、組込ソフトウェアがデバイスを呼び出す処理の動作確認ができていないという問題がある。
本発明は、上記に鑑みてなされたものであって、組込ソフトウェアの開発の際に精度よく品質保証を行うことのできる開発プログラム、記録媒体、開発装置および開発方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、請求項1にかかる発明は、所定の動作を行う実機に組み込まれる組込プログラムを開発する手段として、コンピュータを機能させる開発プログラムであって、前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行う擬似デバイスドライバ、および前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うエミュレータとしてコンピュータを機能させることを特徴とする。
また、本発明の他の形態は、所定の動作を行う実機に組み込まれる組込プログラムを開発する手段として、コンピュータを機能させるプログラムを記録した記録媒体であって、前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行う擬似デバイスドライバ、および前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うエミュレータとしてコンピュータを機能させるためのプログラムを記録したことを特徴とするコンピュータが読取可能な記録媒体。
また、本発明の他の形態は、所定の動作を行う実機に組み込まれる組込プログラムを開発する開発装置であって、前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行う擬似デバイスドライバ、および前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うエミュレータを備えたことを特徴とする。
また、本発明の他の形態は、所定の動作を行う実機に組み込まれる組込プログラムを開発する開発方法であって、前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行うステップ、および前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うステップを有することを特徴とする。
本発明によれば、実機と同様の環境において、組込ソフトウェアの開発を行うことができ、精度よく品質保証を行うことができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる開発プログラム、記録媒体、開発装置および開発方法の最良な実施の形態を詳細に説明する。
(第1の実施の形態)
図1は、第1の実施の形態にかかるプログラム開発キット1の機能構成を示すブロック図である。ここで、プログラム開発キット1は、開発プログラムに相当する。
本実施の形態にかかるプログラム開発キット1は、例えば、FAXやプリンタ、スキャナなどの複数の機能が搭載された複合機に組み込まれる組込プログラムであるJava(登録商標)プログラム100を開発する際に利用される。例えば、開発者は自身の利用するパーソナルコンピュータ(PC)上でプログラム開発キット1を動作させることにより、Java(登録商標)プログラム100を開発する。プログラム開発キット1は、ユーザのPCに搭載されたWindows(登録商標)上で動作する。
プログラム開発キット1は、JVM(Java(登録商標) Virtual Machine)200と、Nativeプログラム210と、オペレーションシステム(OS)220と、エミュレータ230と、仮想マシン動作ソフトウェア240とを備えている。
JVM200は、Java(登録商標)バイトコードをOS固有のネイティブコードに変換する。Java(登録商標)プログラム100は、JVM200を利用することにより、OSやCPUに非依存であることを実現している。Nativeプログラム210は、OSやCPUに依存したプログラムである。具体的には、C言語やC++言語で記述されたプログラムである。
OS220は、例えばLinux(商標)である。OS220は、擬似デバイスドライバ221を有している。擬似デバイスドライバ221は、Nativeプログラム210とコマンドの送受信を行う。また、エミュレータ230とコマンドの送受信を行う。コマンドとしては、データの取得を要求するreadと、データを渡すことを要求するwriteとがある。OS220とエミュレータ230の間の通信は、一般的なソケット通信にて実現する。
エミュレータ230は、実機におけるFAXやプリンタ、スキャナなどのエンジンにかわってコマンドの送受信を行う。仮想マシン動作ソフトウェア240は、Windows(登録商標)上でLinuxを動作させるための互換機である。具体的には、Vmwareなどがある。
図2は、Java(登録商標)プログラム100が実際に搭載される実機10の機能構成を示す図である。実機10においては、OS320は、コントローラボード330に搭載されている。また、OS320は、擬似デバイスドライバ221ではなく、正式デバイスドライバ321を有している。
さらに、実機10は、エンジン側の構成としては、エンジンボード340とOS350と、エンジン制御プログラム360とを備えている。正式デバイスドライバ321は、エンジンボード340およびOS350を介してエンジン制御プログラム360とのコマンドの送受信を行う。
このように、実機10における正式デバイスドライバ321は、実際のエンジン系とコマンドの送受信を行うのに対し、実施の形態1にかかる擬似デバイスドライバ221は、エンジン系に対応するエミュレータ230とコマンドの送受信を行う。
本実施の形態にかかるプログラム開発キット1は、正式デバイスドライバ321にかえて擬似デバイスドライバ221を有している。この擬似デバイスドライバ221は、Nativeプログラム210とのコマンドの送受信においては正式デバイスドライバ321と同様に動作する。このため、実機からPCへの変更に伴うNativeプログラム210の変更は不要であり、実機に組み込むべきNativeプログラム210をそのまま利用することができる。
このように、プログラム開発キット1においては、ともにユーザプログラムであるJava(登録商標)プログラムがエミュレータと直接通信を行うのではなく、カーネル空間に存在するプログラムである擬似デバイスドライバを経由して直接エミュレータとの通信を行う。これにより、実機に搭載するJava(登録商標)プログラムに変更を加えることなく、そのまま動作させることが可能となる。これにより、開発対象プログラムをそのまま実機に組み込むことも可能となる。
図3は、実施の形態1にかかるプログラム開発キット1が展開されるPCのハードウェアの構成を示す図である。PCは、ハードウェア構成として、プログラム開発キット1におけるプログラム開発処理を実行する開発プログラムなどが格納されているROM52と、ROM52内のプログラムに従ってプログラム開発キット1の各部を制御するCPU51と、実機10の制御に必要な種々のデータを記憶するRAM53と、ネットワークに接続して通信を行う通信I/F57と、各部を接続するバス62とを備えている。
先に述べたプログラム開発キット1における開発プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フロッピー(登録商標)ディスク(FD)、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。
この場合には、開発プログラムは、プログラム開発キット1において上記記録媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
また、本実施の形態の開発プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
以上、本発明を実施の形態を用いて説明したが、上記実施の形態に多様な変更または改良を加えることができる。
(第2の実施の形態)
図4は、第2の実施の形態にかかるプログラム開発キット2の機能構成を示す図である。プログラム開発キット2は、Nativeプログラム101を開発する際に利用される開発プログラムである。プログラム開発キット2は、NativeプログラムおよびJVMを備えず、Nativeプログラム101をプログラム開発キット2上で動作させることにより、Nativeプログラム101を開発することができる。
なお、第2の実施の形態にかかるプログラム開発キット2のこれ以外の構成および処理は、他の実施の形態にかかるプログラム開発キットの構成および処理と同様である。
(第3の実施の形態)
図5は、第3の実施の形態にかかるプログラム開発キット3の機能構成を示す図である。プログラム開発キット3は、第1の実施の形態にかかるプログラム開発キット1のうちNativeプログラムを備えず、Java(登録商標)プログラム100およびNativeプログラム101双方の開発の際に利用することができる。
なお、第3の実施の形態にかかるプログラム開発キット3のこれ以外の構成および処理は、他の実施の形態にかかるプログラム開発キットの構成および処理と同様である。
(第4の実施の形態)
図6は、第4の実施の形態にかかるプログラム開発キット4の機能構成を示す図である。プログラム開発キット4は、仮想マシン動作ソフトウェアを搭載しておらず、専用OSとしてのLinuxを搭載したマシン上に直接配置する。そして、プログラム開発キット4が展開されるPCに搭載されているOSであるLinux上にデバイスドライバ250が展開される。このように、プログラム開発において利用されるOSと実機のOSとが同一である場合には、仮想マシン動作ソフトウェアは不要である。
なお、第4の実施の形態にかかるプログラム開発キット4のこれ以外の構成および処理は、他の実施の形態にかかるプログラム開発キットの構成および処理と同様である。
なお、第4の実施の形態にかかるプログラム開発キット4の変更例としては、デバイスドライバだけでなく、デバイスドライバが組み込まれたOSをプログラム開発キット4として提供してもよい。これにより、デバイスドライバがローダブル(カーネルプログラムに動的に追加できる)になっている場合には、デバイスドライバのみを提供し、デバイスドライバをカーネルに予め組み込んでおく必要がある場合には、デバイスドライバが組み込まれたOSを提供することができる。
(第5の実施の形態)
図7は、第5の実施の形態にかかるプログラム開発キット5の機能構成を示す図である。プログラム開発キット5は、NativeプログラムおよびJVMを備えず、Nativeプログラム101をプログラム開発キット5上で動作させることにより、Nativeプログラム101を開発する。プログラム開発キット5は、第4の実施の形態にかかるプログラム開発キット4と同様に、仮想マシン動作ソフトウェアを搭載していない。そして、PCに搭載されているOS上にデバイスドライバ250が展開される。
なお、第5の実施の形態にかかるプログラム開発キット5のこれ以外の構成および処理は、他の実施の形態にかかるプログラム開発キットの構成および処理と同様である。
(第6の実施の形態)
図8は、第6の実施の形態にかかるプログラム開発キット6の機能構成を示す図である。プログラム開発キット6は、Nativeプログラムを備えず、Java(登録商標)プログラム100およびNativeプログラム101の双方の開発を行うことができる。プログラム開発キット6は、第4の実施の形態にかかるプログラム開発キット4および第5の実施の形態にかかるプログラム開発キット5と同様に、仮想マシン動作ソフトウェアを搭載していない。そして、PCに搭載されているOS上にデバイスドライバ250が展開される。
なお、第6の実施の形態にかかるプログラム開発キット6のこれ以外の構成および処理は、他の実施の形態にかかるプログラム開発キットの構成および処理と同様である。
(第7の実施の形態)
図9は、第7の実施の形態にかかるプログラム開発キット7の機能構成を示す図である。プログラム開発キット7は、Nativeプログラム101とのコマンドの送受信を行う擬似デバイスドライバ260の他、エミュレータ230とのコマンドの送受信を行うエミュレータ用デバイスドライバ261を備えている。これにより、擬似デバイスドライバ260およびエミュレータ用デバイスドライバ261はいずれも1つのユーザプログラムのみとコマンドの送受信を行うことになる。したがって、通信相手がいずれのユーザプログラムであるかを特定する必要がなく、処理の簡素化を図ることができる。
デバイスドライバを用いて通信を行う場合には、メッセージ送信処理は、デバイスドライバへのwrite処理となり、メッセージ受信処理はデバイスドライバへのread処理となる。
例えば、エミュレータ用デバイスドライバ261を有さず擬似デバイスドライバ260のみがNativeプログラム101のほかエミュレータ230ともコマンドの送受信を行うとする。この場合には、Nativeプログラム101とエミュレータ230で同時に通信要求が発生した場合の排他処理や、通信要求先に応じてメッセージ通知先を切り替える処理、Nativeプログラム101に送信すべきコマンドを誤ってエミュレータ230に送信しないための処理などを行うための仕組みを擬似デバイスドライバ260に持たせる必要がある。このため、擬似デバイスドライバ260の処理が複雑になってしまう。
これに対し、第7の実施の形態にかかるプログラム開発キット7のように、擬似デバイスドライバ260の他に、エミュレータ用デバイスドライバ261を設けることにより、擬似デバイスドライバ260の処理の効率化を図ることができる。
図10は、エミュレータ230の詳細な構成を示すブロック図である。エミュレータ230は、主にメインスレッド231と、受信スレッド232と、送信処理部233と、タイマー234とを備えている。
受信スレッド232は、メインスレッド231からはスレッド起動指示を受け付ける。スレッド起動指示を受け付けると、エミュレータ用デバイスドライバ261からread要求が送られてくるのを待つ。そして、read要求を受信すると、メインスレッド231に受信通知を行う。
メインスレッド231は、また、タイマー用のスレッド生成指示によりタイマー234を生成する。そして、必要に応じてタイマー234に対しタイマー設定を行う。タイマー234は、設定された時間が経過するとタイムアップ通知をメインスレッド231に返す。このタイマー234の処理により、メインスレッド231は、例えばreadコマンドを受信してから一定期間経過後にwriteコマンドを返すなどの処理を行うことができる。
メインスレッド231は、さらに送信処理部233に対し送信要求を送る。さらに、エミュレータ用デバイスドライバ261に対しopenコマンドを送信する。
タイマー234は、予め設定されたタイマー仕様にしたがい動作する。受信スレッド232は、予め設定されたデバイスドライバ受信仕様にしたがい動作する。送信処理部233は、デバイスドライバ送信仕様にしたがい動作する。なお、ここで、各スレッドは、非同期に動作可能である。
図11は、エミュレータ230の処理を示すフローチャートである。メインスレッド231は、まず、openコマンドをエミュレータ用デバイスドライバ261に送信し、デバイスファイルをオープンする(ステップS100)。次に、メインスレッド231は、タイマー234を生成する(ステップS102)。次に、タイマー234は、初期化を行う(ステップS104)。初期化が完了すると、初期化完了をメインスレッド231に通知する(ステップS106)。次に、メインスレッド231は、受信スレッド232を生成する(ステップS108)。受信スレッド232は、初期化を行い(ステップS110)、初期化が完了すると初期化完了をメインスレッド231に通知する(ステップS112)。以上の処理により、受信スレッド232は、readコマンドが送信されるのを待つ状態となる。
この状態において、エミュレータ用デバイスドライバ261からコマンドが送信されると、受信スレッド232は、イベント発生を認識する(ステップS120)。そして、イベント発生をメインスレッド231に通知する(ステップS122)。メインスレッド231は、イベントに応じた時間のカウントをタイマー234に指示する。具体的には、まずタイマー起動を指示する(ステップS124)。次に、タイマー234は、カウントを開始する(ステップS126)。予め設定された応答時間だけカウントを行うと、指定時間の計測完了をメインスレッド231に通知する(ステップS128)。
次に、メインスレッド231は、送信処理部233に対し送信実行を指示する(ステップS130)。送信処理部233は、送信実行の指示を取得すると、write処理によりエミュレータ用デバイスドライバ261にwriteコマンドを送信する(ステップS134)。そして、メインスレッド231に送信結果を通知する(ステップS136)。以上で、エミュレータ230の処理が完了する。このように、エミュレータ用デバイスドライバ261からのwriteコマンドに対しては、実機のエンジンに相当する時間だけ待ってreadコマンドを返すことにより、実機に即した応答を行うことができる。
なお、第7の実施の形態にかかるプログラム開発キット7のこれ以外の構成および処理は、他の実施の形態にかかるプログラム開発キットの構成および処理と同様である。
(第8の実施の形態)
図12は、第8の実施の形態にかかるプログラム開発キット8の機能構成を示すブロック図である。プログラム開発キット8は、複数種類のエミュレータと、各エミュレータに対応する複数のデバイスドライバとを備えている。具体的には、エミュレータとして、エンジンエミュレータ270と、NVRAMエミュレータ271と、IPU(Image Processing Unit)エミュレータ272とを有している。また、プログラム開発キット8のOS220は、擬似デバイスドライバとして、擬似PCI通信ドライバ222と、擬似NVRAMドライバ223と、擬似ビデオドライバ224とを有している。
さらに、擬似PCI通信ドライバ222に対応するエミュレータ側のデバイスドライバとしてのエミュレータ用PCI通信ドライバ225と、擬似ビデオドライバ224に対応するエミュレータ側のデバイスドライバとしてのエミュレータ用ビデオドライバ226とを有している。また、擬似NVRAMドライバ223が利用する設定情報記憶ファイル227を有している。このように、複数種類のエミュレータを有している場合には、各エミュレータに対応する複数のドライバを用意する。
擬似PCI通信ドライバ222およびエミュレータ用PCI通信ドライバ225は、エンジンに対応するエンジンエミュレータ270との命令の送受信を行う。なお、実際のエンジンにおいては、例えば、ドアが開閉された場合や、原稿がセットされた場合にユーザに通知する処理がある。また、用紙残量をユーザに通知する処理がある。このように、エンジンはNativeプログラム210からの命令によらず自発的に命令の送信を行う場合がある。そこで、プログラム開発キット8は、このような命令を発生させるための動作設定用アプリケーション290をさらに有している。動作設定用アプリケーション290は、上述のようなドア開、原稿セット、用紙残量などを通知するためのイベントを発生させるためのアプリケーションである。
擬似NVRAMドライバ223は、OS220に設けられた設定情報記憶ファイル227にアクセスする。NVRAMエミュレータ271は、設定情報記憶ファイル227の内容の初期化、読み出し、保存などを行う。
擬似ビデオドライバ224およびエミュレータ用ビデオドライバ226は、IPUに対応するIPUエミュレータ272との命令の送受信を行う。
図13は、開発対象プログラムであるJava(登録商標)プログラム100を実機11に搭載した様子を示す図である。このように、実機11においては、OS370は、PCI通信ドライバ371と、NVRAM372と、ビデオドライバ373とを有している。そしてPCI通信ドライバ371は、コントローラボード330を介してエンジン制御プログラム360と命令の送受信を行う。このように、PCI通信ドライバ371は、他のボード上のプログラムとの通信を行う。NVRAM372は、NVRAM380と命令の送受信を行う。ビデオドライバ373は、画像処理ASIC(Application Specific Integrated Circuit)382と命令の送受信を行う。
図14は、擬似PCI通信ドライバ222およびエミュレータ用PCI通信ドライバ225の処理を説明するための図である。まず、擬似PCI通信ドライバ222は、Nativeプログラム210からイベント受信要求としてread命令を受信する(ステップS200)。
さらに、Nativeプログラム210から実行要求通知としてwrite命令を受信する(ステップS202)。次に、Nativeプログラム210は、コマンド書き込みの実行要求を通信用バッファに書き込み(ステップS204)、割り込みイベントをエミュレータ用PCI通信ドライバ225に通知する(ステップS206)。
エミュレータ用PCI通信ドライバ225は、通知用バッファにアクセスし、実行要求としてコマンドを読み込む(ステップS208)。次に、エミュレータ用PCI通信ドライバ225は、実行要求通知としてread命令をエンジンエミュレータ270に送信する(ステップS210)。次に、エンジンエミュレータ270は、エンジン仕様に合わせて実行要求を処理する(ステップS212)。処理が完了すると、エンジンエミュレータ270は、実行結果通知としてwrite命令をエミュレータ用PCI通信ドライバ225に送信する(ステップS214)。
次に、エミュレータ用PCI通信ドライバ225は、コマンド書き込みの実行要求を通信用バッファに書き込む(ステップS216)。擬似PCI通信ドライバ222は、通信バッファを介して割り込みイベント通知を受信すると(ステップS218)、コマンド読み込みの実行要求を通信用バッファに書き込む(ステップS220)。次に、擬似PCI通信ドライバ222は、実行結果通知としてread命令をNativeプログラム210に送信する(ステップS222)。以上で、処理が終了する。
このように、擬似PCI通信ドライバ222、エミュレータ用PCI通信ドライバ225およびエンジンエミュレータ270を利用することにより、Nativeプログラム210は、実機に搭載された際と同一の処理を行うことができる。
図15は、動作設定用アプリケーション290によりイベントが発生した場合の、擬似PCI通信ドライバ222およびエミュレータ用PCI通信ドライバ225の処理を説明するための図である。まず、擬似PCI通信ドライバ222は、Nativeプログラム210からイベント受信要求としてread命令を受信する(ステップS230)。
その後、動作設定用アプリケーション290においてエンジン状態通知のイベントが発生すると、動作設定用アプリケーション290は、エンジンエミュレータ270にエンジン状態通知イベント発生を通知する(ステップS232)。次に、エンジンエミュレータ270は、エンジン状態通知としてwrite命令をエミュレータ用PCI通信ドライバ225に送信する(ステップS234)。
次に、エミュレータ用PCI通信ドライバ225は、通信用バッファに状態通知のコマンドを書き込む(ステップS236)。次に、擬似PCI通信ドライバ222は、通信用バッファから割り込みイベント通知を受信し(ステップS238)、さらに、通信用バッファから状態通知のコマンドを読み込む(ステップS240)。次に、擬似PCI通信ドライバ222は、エンジン状態通知としてread命令をNativeプログラム210に送信する(ステップS242)。以上で、処理が終了する。
このように、Nativeプログラム210は動作設定用アプリケーション290によるイベント発生に応じた処理も行うことができるので、プログラム開発キット8によれば例えば「ドア開き」の際のNativeプログラム210の処理を確認することができる。
図16は、IPUエミュレータ272の詳細な構成を示す図である。IPUエミュレータ272は、主に、受信局280と、メイン制御部281と、シナリオ情報管理部282と、タイマー283と、送信局284とを備えている。
受信局280は、エミュレータ用ビデオドライバ226からread命令を受信すると、メイン制御部281に受信通知を行う。シナリオ情報管理部282は、シナリオ情報を管理している。シナリオ情報とは、デバイスドライバごとに設定された仕様についての情報である。図17−1および図17−2に示すように、シナリオ情報には、タイマー仕様、デバイスドライバ送信仕様、デバイスドライバ受信仕様が含まれている。
デバイスドライバ受信仕様には、デバイスユニット指定識別子としてデバイスユニット名が記述されている。例えば、図17−1においては、デバイスユニット名「VIN」で識別されるデバイスユニットが指定されている。図18に示すように、「VIN」は、ビデオ入力器を示している。
デバイスドライバ送信仕様には、処理結果指定識別子として処理結果が記述されている。図17−1に示す処理結果「COMPLETE」は、正常終了を示している。なお、図17−2に示す処理結果「ERROR」は、異常終了を示している。タイマー仕様には、処理時間指定識別子として処理時間が記述されている。図17−1においては、50msと記述されている。
タイマー仕様として、処理時間指定識別子および処理時間が記述されている。図18に示すように、IPUエミュレータに対応するデバイスドライバは多様にある。そこで、このように、デバイスドライバごとの仕様を格納しておき、指定されたデバイスドライバに対応する仕様を利用する。これにより、多様なデバイスドライバそれぞれに応じた処理を行うことができる。
再び説明を図16に戻す。メイン制御部281は、シナリオ情報管理部282から所定のシナリオ情報を読み出す。そして、このシナリオ情報にしたがい、必要に応じてタイマー283に対しタイマー設定を行う。メイン制御部281は、さらに所定のタイミングで送信局284に対し送信要求を送る。送信局284は、メイン制御部281から送信要求を受け取るとエミュレータ用ビデオドライバ226に対しデータを発行する。
図19は、IPUエミュレータ272の処理を説明するための図である。まず、エミュレータ用ビデオドライバ226はディスクセットを送信する(ステップS250)。ここでディスクセットとは、処理対象となる画像のアドレスなど画像処理に関する条件を示す情報である。IPUエミュレータ272においては、ディスクセットが画像処理の条件として登録される(ステップS252)。所定時間経過後、エミュレータ用ビデオドライバ226は、ディスクセットの実行指示を送信する(ステップS254)。
IPUエミュレータ272のメイン制御部281は、ディスクセットに示されるデバイスドライバに対するシナリオ情報を読み込む(ステップS256)。シナリオ情報に示された時間が経過すると(ステップS258,Yes)、処理結果をエミュレータ用ビデオドライバ226に応答する(ステップS260)。次に、エミュレータ用ビデオドライバ226は、ディスクセット開放指示をIPUエミュレータ272に送信する(ステップS262)。IPUエミュレータ272は、ディスクセット開放指示にしたがいディスクセットを開放する(ステップS264)。以上で処理が終了する。
このように、擬似ビデオドライバ224、エミュレータ用ビデオドライバ226およびIPUエミュレータ272を利用することにより、Nativeプログラム210のうち画像処理にかかる処理の開発や確認を行うことができる。
図20は、擬似NVRAMドライバ223の処理を説明するための図である。NVRAMに保存すべきデータを永続化するために、PC上のHDD、すなわちユーザ空間上に必要な情報を保持しておく。Nativeプログラム210が指定した情報はRAM、すなわちカーネル空間に存在する。デバイスドライバすなわち擬似NVRAMドライバ223が、カーネル空間とユーザ空間の間のデータの送受信を直接行うことはできない。そこで、NVRAMエミュレータ271を介してアクセス経路を実現する。
さらに、ファイルの読み書き速度は、RAMの読み書き速度に対して遅い。そこで、パフォーマンスの低下を防ぐべく、NVRAMエミュレータ271に指示があった場合にのみ、ユーザ空間に存在するファイルへの読み書きを行うこととする。
具体的には、NVRAMエミュレータ271の電源がONされると(ステップS270)、NVRAMエミュレータ271は、ユーザ空間(HDD)に設けられたデータ記憶用ファイルから必要なデータを読み出す(ステップS272)。そして、このデータをカーネル空間の設定情報記憶ファイル227に保存する。すなわち設定情報記憶ファイル227を初期化する(ステップS274)。
この状態において、Nativeプログラム210がデータ記憶指示としてwrite命令を送信すると(ステップS280)、擬似NVRAMドライバ223は、write命令に応じて、設定情報記憶ファイル227にデータを書き込む(ステップS282)。また、Nativeプログラム210がデータ読み込み指示としてread命令を送信した場合には、read命令に応じて(ステップS284)、設定情報記憶ファイル227からデータを読み出す(ステップS286)。
NVRAMエミュレータ271の電源オフが指示されると、NVRAMエミュレータ271はデータ保存指示にしたがい(ステップS290)、設定情報記憶ファイル227からデータを読み出す(ステップS292)。そして、読み出したデータをユーザ空間上のデータ記憶用ファイルに書き込む(ステップS294)。以上で、処理が終了する。
なお、第8の実施の形態にかかるプログラム開発キット8のこれ以外の構成および処理は、他の実施の形態にかかるプログラム開発キットの構成および処理と同様である。
第1の実施の形態にかかるプログラム開発キット1の機能構成を示すブロック図である。 Java(登録商標)プログラム100が実際に搭載される実機10の機能構成を示す図である。 実施の形態1にかかるプログラム開発キット1が展開されるPCのハードウェアの構成を示す図である。 第2の実施の形態にかかるプログラム開発キット2の機能構成を示す図である。 第3の実施の形態にかかるプログラム開発キット3の機能構成を示す図である。 第4の実施の形態にかかるプログラム開発キット4の機能構成を示す図である。 第5の実施の形態にかかるプログラム開発キット5の機能構成を示す図である。 第6の実施の形態にかかるプログラム開発キット6の機能構成を示す図である。 第7の実施の形態にかかるプログラム開発キット7の機能構成を示す図である。 エミュレータ230の詳細な構成を示すブロック図である。 エミュレータ230の処理を示すフローチャートである。 第8の実施の形態にかかるプログラム開発キット8の機能構成を示すブロック図である。 開発対象プログラムであるJava(登録商標)プログラム100を実機11に搭載した様子を示す図である。 擬似PCI通信ドライバ222およびエミュレータ用PCI通信ドライバ225の処理を説明するための図である。 擬似PCI通信ドライバ222およびエミュレータ用PCI通信ドライバ225の処理を説明するための図である。 IPUエミュレータ272の詳細な構成を示す図である。 シナリオ情報を説明するための図である。 シナリオ情報を説明するための図である。 デバイスユニット名とデバイスユニットの対応関係を示す図である。 IPUエミュレータ272の処理を説明するための図である。 擬似NVRAMドライバ223の処理を説明するための図である。
符号の説明
1〜8 プログラム開発キット
10 実機
51 CPU
52 ROM
53 RAM
57 通信I/F
62 バス
100 Java(登録商標)プログラム
101 Nativeプログラム
200 JVM
210 Nativeプログラム
220 OS
221 擬似デバイスドライバ
222 擬似PCI通信ドライバ
223 擬似NVRAMドライバ
224 擬似ビデオドライバ
225 エミュレータ用PCI通信ドライバ
226 エミュレータ用ビデオドライバ
227 設定情報記憶ファイル
230 エミュレータ
231 メインスレッド
232 受信スレッド
233 送信処理部
234 タイマー
240 仮想マシン動作ソフトウェア
250 デバイスドライバ
260 擬似デバイスドライバ
261 エミュレータ用デバイスドライバ
270 エンジンエミュレータ
271 NVRAMエミュレータ
272 IPUエミュレータ
280 受信局
281 メイン制御部
282 シナリオ情報管理部
283 タイマー
284 送信局
290 動作設定用アプリケーション

Claims (11)

  1. 所定の動作を行う実機に組み込まれる組込プログラムを開発する手段として、コンピュータを機能させる開発プログラムであって、
    前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行う擬似デバイスドライバ、および
    前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うエミュレータとしてコンピュータを機能させることを特徴とする開発プログラム。
  2. 前記擬似デバイスドライバを搭載したオペレーションシステム、および
    前記オペレーションシステムと異なるオペレーションシステムに搭載するための互換機としてさらにコンピュータを機能させることを特徴とする請求項1に記載の開発プログラム。
  3. 前記擬似デバイスドライバとのコマンドの送受信を行い、かつ前記エミュレータとのコマンドの送受信を行うエミュレータ用デバイスドライバとしてさらにコンピュータを機能させることを特徴とする請求項1または2に記載の開発プログラム。
  4. 前記エミュレータは、実機のエンジンを制御するエンジン制御プログラムとして前記エミュレータ用デバイスドライバとコマンドの送受信を行うことを特徴とする請求項3に記載の開発プログラム。
  5. 前記エミュレータにイベント発生を通知するアプリケーションとしてさらにコンピュータを機能させ、
    前記エミュレータは、前記イベント発生を受信すると、前記エミュレータ用デバイスドライバにコマンドを通知することを特徴とする請求項4に記載の開発プログラム。
  6. 前記エミュレータは、画像処理ASIC(Application Specific Integrated Circuit)として前記エミュレータ用デバイスドライバとコマンドの送受信を行うことを特徴とする請求項3に記載の開発プログラム。
  7. 実機の不揮発性メモリとしてデータを保持する前記エミュレータ、
    前記エミュレータから読み出されたデータを保持するファイル、および
    前記ファイルに対するデータの書き込みおよび読み出しを行う前記擬似デバイスドライバとしてコンピュータを機能させることを特徴とする請求項1または2に記載の開発プログラム。
  8. 実機の異なるデバイスドライバそれぞれに対応する複数の擬似デバイスドライバ、
    前記複数の擬似デバイスドライバそれぞれと、コマンドの送受信を行う複数のエミュレータ用デバイスドライバ、および
    前記複数のエミュレータ用デバイスドライバそれぞれと、コマンドの送受信を行う複数のエミュレータとしてコンピュータを機能させることを特徴とする請求項3に記載の開発プログラム。
  9. 所定の動作を行う実機に組み込まれる組込プログラムを開発する手段として、コンピュータを機能させるプログラムを記録した記録媒体であって、
    前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行う擬似デバイスドライバ、および
    前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うエミュレータとしてコンピュータを機能させるためのプログラムを記録したことを特徴とするコンピュータが読取可能な記録媒体。
  10. 所定の動作を行う実機に組み込まれる組込プログラムを開発する開発装置であって、
    前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行う擬似デバイスドライバ、および
    前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うエミュレータを備えたことを特徴とする開発装置。
  11. 所定の動作を行う実機に組み込まれる組込プログラムを開発する開発方法であって、
    前記実機のデバイスドライバにかえて、前記組込プログラムとのコマンドの送受信を行うステップ、および
    前記実機の機能にかえて、前記擬似デバイスドライバとのコマンドの送受信を行うステップを有することを特徴とする開発方法。
JP2007055895A 2007-03-06 2007-03-06 開発プログラム、記録媒体、開発装置および開発方法 Pending JP2008217574A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007055895A JP2008217574A (ja) 2007-03-06 2007-03-06 開発プログラム、記録媒体、開発装置および開発方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007055895A JP2008217574A (ja) 2007-03-06 2007-03-06 開発プログラム、記録媒体、開発装置および開発方法

Publications (1)

Publication Number Publication Date
JP2008217574A true JP2008217574A (ja) 2008-09-18

Family

ID=39837523

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007055895A Pending JP2008217574A (ja) 2007-03-06 2007-03-06 開発プログラム、記録媒体、開発装置および開発方法

Country Status (1)

Country Link
JP (1) JP2008217574A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218469A (ja) * 2009-03-18 2010-09-30 Ricoh Co Ltd 情報処理装置、情報処理方法、プログラムおよび記録媒体
JP2010224795A (ja) * 2009-03-23 2010-10-07 Fujitsu Semiconductor Ltd 試験装置および試験方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182180A (ja) * 1993-09-28 1995-07-21 Bull Hn Inf Syst Inc 第2のシステム上での第1のシステムのプログラム実行装置及び方法
JPH1091564A (ja) * 1996-04-15 1998-04-10 Sun Microsyst Inc 複数の独立なデバイス・ドライバを組み入れたコンピュータ・システムのためのメタデバイス・ドライバをリネーム/交換する方法及びシステム
JP2001318805A (ja) * 2000-05-08 2001-11-16 Nec Corp 組み込みシステムのテスト方法及びテストシステム
JP2003296138A (ja) * 2002-03-29 2003-10-17 Fuji Electric Co Ltd 組込み機器用アプリケーションのシミュレートデバッグ方法
JP2004185595A (ja) * 2002-07-26 2004-07-02 Ricoh Co Ltd 情報処理装置およびそのプログラム
JP2005284547A (ja) * 2004-03-29 2005-10-13 Seiko Epson Corp デバイス装置、ネットワークサーバとのデータの入出力方法、デバイスドライバプログラムおよび記録媒体

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182180A (ja) * 1993-09-28 1995-07-21 Bull Hn Inf Syst Inc 第2のシステム上での第1のシステムのプログラム実行装置及び方法
JPH1091564A (ja) * 1996-04-15 1998-04-10 Sun Microsyst Inc 複数の独立なデバイス・ドライバを組み入れたコンピュータ・システムのためのメタデバイス・ドライバをリネーム/交換する方法及びシステム
JP2001318805A (ja) * 2000-05-08 2001-11-16 Nec Corp 組み込みシステムのテスト方法及びテストシステム
JP2003296138A (ja) * 2002-03-29 2003-10-17 Fuji Electric Co Ltd 組込み機器用アプリケーションのシミュレートデバッグ方法
JP2004185595A (ja) * 2002-07-26 2004-07-02 Ricoh Co Ltd 情報処理装置およびそのプログラム
JP2005284547A (ja) * 2004-03-29 2005-10-13 Seiko Epson Corp デバイス装置、ネットワークサーバとのデータの入出力方法、デバイスドライバプログラムおよび記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218469A (ja) * 2009-03-18 2010-09-30 Ricoh Co Ltd 情報処理装置、情報処理方法、プログラムおよび記録媒体
JP2010224795A (ja) * 2009-03-23 2010-10-07 Fujitsu Semiconductor Ltd 試験装置および試験方法

Similar Documents

Publication Publication Date Title
US20090027725A1 (en) Network apparatus and control method therefor
JP4089716B2 (ja) エラー通知方法、エラー通知プログラム、エラー通知装置、およびエラー通知システム
JP6379699B2 (ja) 情報処理装置、情報処理システム、情報処理プログラム、および情報処理方法
US20060033944A1 (en) Status information processor
JP2009238203A (ja) 機器管理装置、機器管理システム、機器情報取得方法、機器情報取得プログラム、及びそのプログラムを記録した記録媒体
JP2008217574A (ja) 開発プログラム、記録媒体、開発装置および開発方法
JP4637140B2 (ja) 計算機システム
JP5293462B2 (ja) 電子機器、情報処理方法、及び情報処理プログラム
JP2011180771A (ja) 情報処理装置、エミュレーションシステム、及びエミュレーションプログラム
JP6044248B2 (ja) 情報処理装置、応用プログラム導入装置およびプログラム
JP2015215684A (ja) 情報処理装置及び情報処理プログラム
US9354834B2 (en) Printing with virtual printer
JP2018200536A (ja) 画像形成システム、サーバー、及びファームウェア更新制御方法
JP5605018B2 (ja) 処理情報管理装置、画像形成装置、及び処理情報管理プログラム
JP4617335B2 (ja) 画像形成システム、ホストコンピュータ及び画像形成プログラム
JP2006178704A (ja) 複数の機能を有する装置、及び当該装置と接続可能な上位装置
JP4494329B2 (ja) 情報処理装置
JP2007281782A (ja) 画像形成システム、画像形成装置、画像形成方法、およびプログラム
JP7367532B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP4174411B2 (ja) ジョブ管理装置、ジョブ管理方法、及びジョブ管理用プログラム
JP4858720B2 (ja) エミュレータ、エミュレーション方法、プログラム、及び、記録媒体
CN114647482A (zh) 外接设备的处理方法、装置、电子设备及可读介质
JP2005084900A (ja) プログラム管理方式
JP2010218469A (ja) 情報処理装置、情報処理方法、プログラムおよび記録媒体
JP2009032241A (ja) 計算機システム及び計算機制御方法,制御プログラムを格納した記憶媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110715

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111115