JP2017228191A - 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム - Google Patents

画像処理装置、デバッグ支援方法およびデバッグ支援プログラム Download PDF

Info

Publication number
JP2017228191A
JP2017228191A JP2016125226A JP2016125226A JP2017228191A JP 2017228191 A JP2017228191 A JP 2017228191A JP 2016125226 A JP2016125226 A JP 2016125226A JP 2016125226 A JP2016125226 A JP 2016125226A JP 2017228191 A JP2017228191 A JP 2017228191A
Authority
JP
Japan
Prior art keywords
program
hardware resource
unit
control
guest
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
JP2016125226A
Other languages
English (en)
Other versions
JP6702021B2 (ja
Inventor
了敏 大迫
Akitoshi Osako
了敏 大迫
上田 滋之
Shigeyuki Ueda
滋之 上田
真央 細野
Mao Hosono
真央 細野
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.)
Konica Minolta Inc
Original Assignee
Konica Minolta Inc
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 Konica Minolta Inc filed Critical Konica Minolta Inc
Priority to JP2016125226A priority Critical patent/JP6702021B2/ja
Priority to US15/623,546 priority patent/US10412251B2/en
Priority to CN201710483109.9A priority patent/CN107544833A/zh
Publication of JP2017228191A publication Critical patent/JP2017228191A/ja
Application granted granted Critical
Publication of JP6702021B2 publication Critical patent/JP6702021B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00938Software related arrangements, e.g. loading applications
    • H04N1/00941Interaction of different applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/121Facilitating exception or error detection and recovery, e.g. fault, media or consumables depleted
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1229Printer resources management or printer maintenance, e.g. device status, power levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1297Printer code translation, conversion, emulation, compression; Configuration of printer parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00344Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a management, maintenance, service or repair apparatus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00962Input arrangements for operating instructions or parameters, e.g. updating internal software
    • H04N1/0097Storage of instructions or parameters, e.g. customised instructions or different parameters for different user IDs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ハードウェア資源を変更することなく、動作を変更した状態を再現するデバッグ支援方法およびデバッグ支援プログラムを提供する。
【解決手段】MFPは、オペレーティングシステムプログラムを実行するホスト制御部51およびゲスト制御部53と、ゲスト制御部53によるハードウェア資源の制御を可能とするエミュレート部55と、ハードウェア資源が実行可能な処理をハードウェア記述言語で記述したHDLプログラムを変更する変更部67と、を備える。ゲスト制御部53は、ハードウェア資源を制御するドライバープログラムを実行するゲストドライバー部69を含み、エミュレート部55は、変更されたHDLプログラムを実行するデバイスエミュレート部73と、ホスト制御部51を制御してハードウェア資源を制御させる第1の制御と、デバイスエミュレート部73を制御する第2の制御とのいずれかに切り換える切換部71とを含む。
【選択図】図3

Description

この発明は、画像処理装置、デバッグ支援方法およびデバッグ支援プログラムに関し、特に、複数のオペレーティングシステムがインストールされた画像処理装置、その画像処理装置で実行されるデバッグ支援方法およびデバッグ支援プログラムに関する。
画像を処理する画像処理装置で代表されるMFP(Multi Function Periferal)は、種々のハードウェア資源が搭載されており、CPUによってそれらが制御される。ハードウェア資源は、例えば、画像データを処理するためのASIC(Application Specific Integrated Circuit)、用紙に画像を形成するエンジン等である。また、MFPには、アプリケーションプログラムがインストールされており、そのアプリケーションプログラムが、ハードウェア資源を制御する処理を含む場合がある。このようなアプリケーションプログラムを開発する段階で、アプリケーションプログラムで定められたハードウェア資源を制御する処理と、ハードウェア資源の動作とを整合させる必要がある。特に、複数のアプリケーションプログラムが1つのハードウェア資源を制御する場合に、制御が競合することによるエラーが発生する場合がある。この場合、実際にアプリケーションプログラムが完成した段階で、アプリケーションプログラムを実行して、ハードウェア資源の動作との整合性をチェックする方法がある。
しかしながら、アプリケーションプログラムがハードウェア資源を制御してからハードウェア資源から応答があるまでの間にエラーの原因が存在するような場合、ハードウェア資源を制御してから応答があるまでの期間が短いために、エラーが発生する確率が低く、エラーの原因を特定することが困難であるといった問題がある。例えば、特開2013−012196号公報には、ターゲットハードウェアプラットフォームにより実行されるソフトウェアアプリケーションの実行に使用される方法であって、ターゲットハードウェアプラットフォームのハードウェア記述言語(HDL)の記述を決定すること、HDL記述に基づいてターゲットハードウェアプラットフォームと機能的に等価なプログラマブルハードウェアコンポーネントを構成する技術が記載されている。しかしながら、特開2013−012196号公報に記載の方法を適用したとしても、ASICのレスポンスを遅らせた仕様のプログラマブルハードウェアコンポーネントを構成しなければならず、そのような仕様のプログラマブルハードウェアコンポーネントを構成するために費やされるコストの面で現実的でない。
特開2013−012196号公報
この発明は上述した問題点を解決するためになされたもので、この発明の目的の1つは、ハードウェア資源を変更することなく、ハードウェア資源の動作を変更した状態を再現することが可能な画像処理装置を提供することである。
この発明の他の目的は、ハードウェア資源を変更することなく、ハードウェア資源の動作を変更した状態を再現することが可能なデバッグ支援方法を提供することである。
この発明のさらに他の目的は、ハードウェア資源を変更することなく、ハードウェア資源の動作を変更した状態を再現することが可能なデバッグ支援プログラムを提供することである。
上述した目的を達成するためにこの発明のある局面によれば、画像処理装置は、オペレーティングシステムプログラムを実行し、ハードウェア資源を制御するホスト制御手段と、オペレーティングシステムプログラムと同じオペレーティングシステムプログラムを実行するゲスト制御手段と、ホスト制御手段とゲスト制御手段との間に設けられ、ゲスト制御手段によるハードウェア資源の制御を可能とするエミュレート手段と、ハードウェア資源が実行可能な処理をハードウェア記述言語で記述したHDLプログラムを変更する変更手段と、を備え、ゲスト制御手段は、ハードウェア資源を制御するためドライバープログラムを実行するゲストドライバー手段を含み、エミュレート手段は、変更されたHDLプログラムを実行することによりハードウェア資源をエミュレートするHDL実行手段と、ゲストドライバー手段によるハードウェア資源の制御に従ってホスト制御手段を制御してハードウェア資源を制御させる第1の制御と、ゲストドライバー手段によるハードウェア資源の制御に従ってデバイスエミュレート手段を制御する第2の制御とのいずれかに切り換える切換手段と、を含む。
この局面に従えば、ハードウェア資源が実行可能な処理をハードウェア記述言語で記述したHDLプログラムを変更し、ハードウェア資源の制御に従ってハードウェア資源を制御させる第1の制御と、ハードウェア資源の制御に従って変更されたHDLプログラムを実行する第2の制御とのいずれかに切り換える。このため、第2の制御に切り換える場合には、ハードウェア資源が実行可能な処理を変更した動作をエミュレートすることができる。その結果、ハードウェア資源を変更することなく、ハードウェア資源の動作を変更した状態を再現することが可能な画像処理装置を提供することができる。
好ましくは、ハードウェア資源は、複数あり、複数のハードウェア資源のうちからユーザーにより選択されたハードウェア資源を特定する資源特定手段と、特定されたハードウェア資源に対応するHDLプログラムを取得するプログラム取得手段と、をさらに備え、変更手段は、取得されたHDLプログラムをユーザーによる指示に基づいて変更し、切換手段は、特定されたハードウェア資源に対して第1の制御と第2の制御とのいずれかに切り換える。
この局面に従えば、複数のハードウェア資源のうちからユーザーにより選択されたハードウェア資源の動作を、ユーザーによる指示に基づいて変更した状態で再現することができる。
好ましくは、変更手段は、ハードウェア資源が処理を実行してから結果を出力するまでの応答時間を延長するコマンドを追加する延長コマンド追加手段を、含む。
この局面に従えば、ハードウェア資源が処理を実行してから結果を出力するまでの応答時間を延長した状態でハードウェアの動作を再現するので、ハードウェア資源が処理を実行してから結果を出力するまでの間に発生する不具合が発生する頻度を高めることができる。
好ましくは、変更手段は、ハードウェア資源が処理を実行するためにゲストドライバー手段から受け付けるパラメータをチェックするコマンドを追加するパラメータチェックコマンド追加手段を、含む。
この局面に従えば、ハードウェア資源が受け付けるパラメータをチェックする処理を再現するので、ハードウェア資源に入力されるデータをチェックすることができる。
好ましくは、変更手段は、ハードウェア資源が処理を実行することにより変化する変数をチェックするコマンドを追加する変数チェックコマンド追加手段を、含む。
この局面に従えば、ハードウェア資源が処理に用いる変数をチェックする処理を再現するので、ハードウェア資源の処理をチェックすることができる。
好ましくは、ハードウェア資源は、ASIC(Application Specific Integrated Circuit)である。
この局面に従えば、ASICの動作を変更した状態で、ASICの動作を再現することができる。
好ましくは、ハードウェア資源は、FPGA(Field Programmable Gate Array)である。
この局面に従えば、FPGAの動作を変更した状態で、ASICの動作を再現することができる。
好ましくは、ゲスト制御手段を制御してハードウェア資源を制御する処理を定めたアプリケーションプログラムを実行するアプリ実行手段を、さらに備える。
この局面に従えば、アプリケーションプログラムがハードウェア資源を制御する処理の不具合の発見を容易にすることができる。
この発明の他の局面によれば、デバッグ支援方法は、画像処理装置で実行されるアプリケーションプログラムをデバッグするデバッグ支援方法であって、画像処理装置は、オペレーティングシステムプログラムを実行し、ハードウェア資源を制御するホスト制御手段と、オペレーティングシステムプログラムと同じオペレーティングシステムプログラムを実行するゲスト制御手段と、ホスト制御手段とゲスト制御手段との間に設けられ、ゲスト制御手段によるハードウェア資源の制御を可能とするエミュレート手段と、を備え、ゲスト制御手段は、ハードウェア資源を制御するためドライバープログラムを実行するゲストドライバー手段を含み、デバッグ支援方法は、ハードウェア資源が実行可能な処理をハードウェア記述言語で記述したHDLプログラムを変更する変更ステップと、ゲストドライバー手段によるハードウェア資源の制御に従ってホスト制御手段を制御してハードウェア資源を制御させる第1の制御と、ゲストドライバー手段によるハードウェア資源の制御に従って、ハードウェア資源をエミュレートするために変更されたHDLプログラムを実行する第2の制御とのいずれかに切り換える切換ステップと、を含む。
この局面に従えば、ハードウェア資源を変更することなく、ハードウェア資源の動作を変更した状態を再現することが可能なデバッグ支援方法を提供することができる。
好ましくは、ハードウェア資源は、複数あり、複数のハードウェア資源のうちからユーザーにより選択されたハードウェア資源を特定する資源特定ステップと、特定されたハードウェア資源に対応するHDLプログラムを取得するプログラム取得ステップを、をさらに含み、変更ステップは、取得されたHDLプログラムをユーザーによる指示に基づいて変更するステップを含み、切換ステップは、特定されたハードウェア資源に対して第1の制御と第2の制御とのいずれかに切り換えるステップを含む。
好ましくは、変更ステップは、ハードウェア資源が処理を実行してから結果を出力するまでの応答時間を延長するコマンドを追加する延長コマンド追加ステップを、含む。
好ましくは、変更ステップは、ハードウェア資源が処理を実行するためにゲストドライバー手段から受け付けるパラメータをチェックするコマンドを追加するパラメータチェックコマンド追加ステップを、含む。
好ましくは、変更ステップは、ハードウェア資源が処理を実行することにより変化する変数をチェックするコマンドを追加する変数チェックコマンド追加ステップを、含む。
好ましくは、ハードウェア資源は、ASICである。
好ましくは、ハードウェア資源は、FPGAである。
好ましくは、画像処理装置は、ゲスト制御手段を制御してハードウェア資源を制御する処理を定めたアプリケーションプログラムを実行するアプリ実行手段を、さらに備える。
この発明のさらに他の局面によれば、デバッグ支援プログラムは、上記デバッグ支援方法を、画像装置を制御するコンピューターに実行させる。
この局面に従えば、ハードウェア資源を変更することなく、ハードウェア資源の動作を変更した状態を再現することが可能なデバッグ支援プログラムを提供することができる。
本実施の形態におけるMFPの外観を示す斜視図である。 本実施の形態におけるMFPのハードウェア構成の概要を示すブロック図である。 本実施の形態におけるMFPが備えるCPUが有する機能の一例を示す図である。 変更部の詳細な機能の一例を示すブロック図である。 延長コマンドの追加を説明するための図である。 パラメータチェックコマンドの追加を説明するための図である。 変数チェックコマンドの追加を説明するための図である。 デバッグ処理の流れの一例を示すフローチャートである。 デバイスエミュレータ生成処理の流れの一例を示すフローチャートである。
以下、本発明の実施の形態を図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
図1は、本実施の形態におけるMFPの外観を示す斜視図である。図2は、本実施の形態におけるMFPのハードウェア構成の概要を示すブロック図である。図1および図2を参照して、画像処理装置として機能するMFP100は、メイン回路110と、原稿を読み取るための原稿読取部130と、原稿を原稿読取部130に搬送するための自動原稿搬送装置120と、原稿読取部130が原稿を読み取って出力する画像データに基づいて用紙等に画像を形成するための画像形成部140と、画像形成部140に用紙を供給するための給紙部150と、ユーザーインターフェースとしての操作パネル160とを含む。
メイン回路110は、CPU(中央演算装置)111と、通信インターフェース(I/F)部112と、ROM113と、RAM114と、ASIC115と、大容量記憶装置としてのハードディスクドライブ(HDD)116と、ファクシミリ部117と、CD−ROM(Compact Disk ROM)119が装着される外部記憶装置118と、を含む。CPU111は、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、および操作パネル160と接続され、MFP100の全体を制御する。
ROM113は、CPU111が実行するプログラム、またはそのプログラムを実行するために必要なデータを記憶する。RAM114は、CPU111がプログラムを実行する際の作業領域として用いられる。
ASIC115は、CPU111により制御され、画像データを処理する。ASIC115が実行する画像処理は、限定するものではないが、例えば、画像データのフォーマットを変換するフォーマット変換処理、画像データを符号化する圧縮処理、画像データの画像を処理する画像処理、を含む。画像処理は、例えば、画像のエッジを強調する処理、階調を滑らかにするスムージング処理、色をマッチングさせるカラーマッチング処理、画像を合成する合成処理等を含む。
通信I/F部112は、MFP100をネットワークに接続するためのインターフェースである。CPU111は、通信I/F部112を介して、ネットワークに接続されたコンピューターとの間で通信し、データを送受信する。また、通信I/F部112は、ネットワークを介してインターネットに接続されたコンピューターと通信が可能である。
ファクシミリ部117は、公衆交換電話網(PSTN)に接続され、PSTNにファクシミリデータを送信する、またはPSTNからファクシミリデータを受信する。ファクシミリ部117は、受信したファクシミリデータを、HDD116に記憶する、または画像形成部140に出力する。画像形成部140は、ファクシミリ部117により受信されたファクシミリデータを用紙にプリントする。また、ファクシミリ部117は、HDD116に記憶されたデータをファクシミリデータに変換して、PSTNに接続されたファクシミリ装置に送信する。
外部記憶装置118は、CD−ROM119が装着される。CPU111は、外部記憶装置118を介してCD−ROM119にアクセス可能である。CPU111は、外部記憶装置118に装着されたCD−ROM119に記憶されたプログラムをRAM114にロードして実行する。なお、CPU111が実行するプログラムを記憶する媒体としては、CD−ROM119に限られず、光ディスク(MO(Magnetic Optical disc)/MD(Mini Disc)/DVD(Digital Versatile Disc))、ICカード、光カード、マスクROM、EPROM(Erasable Programmable ROM)、EEPROM(Electrically EPROM)などの半導体メモリであってもよい。
また、CPU111が実行するプログラムは、CD−ROM119に記憶されたプログラムに限られず、HDD116に記憶されたプログラムをRAM114にロードして実行するようにしてもよい。この場合、ネットワークに接続された他のコンピューターが、MFP100のHDD116に記憶されたプログラムを書換える、または、新たなプログラムを追加して書き込むようにしてもよい。さらに、MFP100が、ネットワークに接続された他のコンピューターからプログラムをダウンロードして、そのプログラムをHDD116に記憶するようにしてもよい。ここでいうプログラムは、CPU111が直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
操作パネル160は、表示部161と操作部163とを含む。表示部161は、例えば、液晶表示装置(LCD)または有機EL表示装置(organic electroluminescence display)であり、ユーザーに対する指示メニューや取得した画像データに関する情報等を表示する。操作部163は、タッチパネル165と、ハードキー部167とを含む。タッチパネル165は、静電容量方式である。なお、タッチパネル165は、静電容量方式に限らず、例えば、抵抗膜方式、表面弾性波方式、赤外線方式、電磁誘導方式等の他の方式を用いることができる。ハードキー部167は、複数のハードキーを含む。ハードキーは、例えば接点スイッチである。
図3は、本実施の形態におけるMFPが備えるCPUが有する機能の一例を示す図である。図3を参照して、CPU111は、オペレーティングシステムプログラムを実行するホスト制御部51と、オペレーティングシステムプログラムを実行するゲスト制御部53と、エミュレートプログラムを実行するエミュレート部55と、第1アプリケーションプログラムを実行する第1アプリケーション部57と、第2アプリケーションプログラムを実行する第2アプリケーション部59と、を含む。
ホスト制御部51は、CPU111がオペレーティングシステムプログラムを実行するタスクである。ホスト制御部51は、MFP100が備えるハードウェア資源を制御する。ハードウェア資源は、通信I/F部112、ROM113、RAM114、ASIC115、HDD116、ファクシミリ部117、外部記憶装置118、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、および操作パネル160を、含む。ホスト制御部51は、MFP100が備える複数のハードウェア資源をそれぞれ制御するための複数のドライバープログラムをそれぞれ実行する複数のタスクを含む。ここでは、ドライバープログラムとして、ASIC115を制御するためのドライバープログラムを例に説明する。ホスト制御部51は、ASIC115を制御するためのドライバープログラムを実行するタスクであるホストドライバー部77を含む。
ゲスト制御部53は、CPU111がオペレーティングシステムプログラムを実行するタスクである。ゲスト制御部53が実行するオペレーティングシステムプログラムは、ホスト制御部51が実行するオペレーティングプログラムと同じである。ゲスト制御部53は、MFP100が備える複数のハードウェア資源をそれぞれ制御するための複数のドライバープログラムをそれぞれ実行する複数のタスクを含む。ここでは、ドライバープログラムとして、ASIC115を制御するためのドライバープログラムを例に説明する。ホスト制御部51は、ASIC115を制御するためのドライバープログラムを実行するタスクであるゲストドライバー部69を含む。
エミュレート部55は、CPU111がエミュレートプログラムを実行するタスクである。エミュレートプログラムは、ホスト制御部51が実行するオペレーティングシステムプログラムに適合したアプリケーションプログラムである。エミュレート部55は、ゲスト制御部53に対する仮想デバイスであり、ホスト制御部51によるハードウェア資源の制御をエミュレートする。エミュレート部55は、ゲスト制御部53を仮想マシンとして機能させる。これにより、ゲスト制御部53は、MFP100が備えるハードウェア資源を制御可能となる。
第1アプリケーション部57は、オペレーティングシステムプログラムに適合した第1アプリケーションプログラムを実行するタスクである。第1アプリケーション部57は、ホスト制御部51を制御して、MFP100が備えるハードウェア資源を制御可能である。
第1アプリケーション部57およびエミュレート部55それぞれは、ホスト制御部51を制御可能であり、ホスト制御部51によって管理される。このため、第1アプリケーション部57とエミュレート部55とは、互いに他方を認識することができるので、プロセス間通信等を用いて通信することができる。
第2アプリケーション部59は、オペレーティングシステムプログラムに適合した第2アプリケーションプログラムを実行するタスクである。第2アプリケーション部59は、ゲスト制御部53を制御して、MFP100が備えるハードウェア資源を制御可能である。換言すれば、第2アプリケーション部59は、第2アプリケーションプログラムがハードウェア資源を制御する処理を記述する場合、ゲスト制御部53を制御して、MFP100が備えるハードウェア資源を制御する。
第1アプリケーション部57は、ユーザーによる操作を受け付ける操作受付部61と、ハードウェア資源のいずれかを特定する資源特定部63と、プログラム取得部65と、変更部67と、を含む。操作受付部61は、操作パネル160を制御して、ユーザーが操作部163に入力する操作を受け付ける。ユーザーがスマートフォン等の携帯情報装置を操作してMFP100を遠隔操作する場合、操作受付部61は、通信I/F部112を制御して、通信I/F部112が通信する携帯情報装置から受信する操作を受け付ける。操作受付部61は、ユーザーによる操作を受け付ける場合、受け付けられた操作を資源特定部63および変更部67に出力する。
資源特定部63は、ハードウェア資源を特定する。例えば、資源特定部63は、ハードウェア資源である通信I/F部112、ROM113、RAM114、ASIC115、HDD116、ファクシミリ部117、外部記憶装置118、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、および操作パネル160を、選択可能なリストを表示部161に表示し、操作受付部61から入力される操作により選択されるハードウェア資源を特定する。資源特定部63は、特定されたハードウェア資源を識別するためのプログラム識別情報をプログラム取得部65に出力する。ここでは、ASIC115がユーザーにより選択される場合を例に説明する。
プログラム取得部65は、資源特定部63からハードウェア資源の識別情報が入力されることに応じて、その識別情報で識別されるハードウェア資源に対応するハードウェア記述言語(HDL)プログラムを取得する。例えば、HDD116に、複数のハードウェア資源の少なくとも1つのHDLプログラムを記憶している場合、HDD116に資源特定部63から入力されるプログラム識別情報で特定されるハードウェア資源に対応するHDLプログラムがHDD116に記憶されていれば、そのHDLプログラムを読み出す。ハードウェア資源に対応するHDLプログラムは、そのハードウェア資源の製造者から取得するようにすればよい。プログラム取得部65は、取得されたHDLプログラムを変更部67に出力する。ここでは、資源特定部63によってASIC115がユーザーにより選択されるので、プログラム取得部65は、ASIC115に対応するHDLプログラムを取得し、変更部67に出力する。
変更部67は、操作受付部61から入力されるユーザーの操作に従って、HDLプログラムを変更する。変更部67は、変更されたHDLプログラムをコンパイルすることによって、実行形式のデバイスエミュレートプログラムを生成し、デバイスエミュレートプログラムを、エミュレート部55に出力する。ここでは、ASIC115に対応するHDLプログラムを変更し、コンパイルすることによってASIC115に対応するデバイスエミュレートプログラムをエミュレート部55に出力する。
エミュレート部55は、切換部71と、デバイスエミュレート部73と、仮想デバイス部75と、を含む。デバイスエミュレート部73は、変更部67から入力されるASIC115に対応するデバイスエミュレートプログラムを実行する。デバイスエミュレート部73は、ゲストドライバー部69によるASIC115の制御に従って、ASIC115をエミュレートする。ただし、デバイスエミュレート部73は、変更部67により変更された処理については、ASIC115と異なる処理を実行する。
仮想デバイス部75は、ゲストドライバー部69に対してASIC115の仮想デバイスとして機能する。具体的には、仮想デバイス部75は、ゲストドライバー部69によるASIC115の制御に従ってホスト制御部51のホストドライバー部77を制御してASIC115を制御させる。
切換部71は、ゲストドライバー部69の出力を仮想デバイス部75に出力する第1の制御と、ゲストドライバー部69の出力をデバイスエミュレート部73に出力する第2の制御と、のいずれかに切り換える。切換部71は、ユーザーが操作部163に入力する切換指示に従って、第1の制御と第2の制御とのいずれかに切り換える。切換部71が第1の制御に切り換える場合、ゲストドライバー部69によるASIC115の制御がASIC115に出力されるので、ASIC115が制御される。切換部71が第2の制御に切り換える場合、ゲストドライバー部69によるASIC115の制御がデバイスエミュレート部73に出力されるので、デバイスエミュレート部73が制御される。
図4は、変更部の詳細な機能の一例を示すブロック図である。図4を参照して、変更部67は、延長コマンド追加部81と、パラメータチェックコマンド追加部83と、変数チェックコマンド追加部85と、を含む。延長コマンド追加部81は、ユーザーにより指定された変更対象処理について応答するタイミングを遅延するコマンドを追加する。例えば、延長コマンド追加部81は、HDLプログラムを解析して、HDLプログラムで定められた1以上の処理を特定し、特定された1以上の処理を選択可能なリストを表示部161に表示し、操作受付部61から入力されるユーザーによる操作により選択された処理を、変更対象処理に特定する。延長コマンド追加部81は、遅延時間を設定する画面を表示部161に表示し、操作受付部61から入力されるユーザーによる操作により特定される遅延時間を設定する。延長コマンド追加部81は、HDLプログラム中で変更対象処理を記述する部分の最後に、遅延時間だけ待機する延長コマンドを追加する。
パラメータチェックコマンド追加部83は、ASIC115に入力されるパラメータをチェックするコマンドを追加する。例えば、パラメータチェックコマンド追加部83は、HDLプログラムを解析して、HDLプログラムで定められた1以上の処理を特定し、特定された1以上の処理を選択可能なリストを表示部161に表示し、操作受付部61から入力されるユーザーによる操作により選択された処理を、変更対象処理に特定する。次に、パラメータチェックコマンド追加部83は、HDLプログラムを解析して、変更対象処理に対してHDLプログラムで定められたパラメータを特定し、特定された1以上のパラメータを選択可能なリストを表示部161に表示し、操作受付部61から入力されるユーザーによる操作により選択されたパラメータを、対象パラメータに特定する。パラメータチェックコマンド追加部83は、パラメータの取り得る範囲を設定する画面を表示部161に表示し、操作受付部61から入力されるユーザーによる操作により特定される範囲を設定する。パラメータチェックコマンド追加部83は、HDLプログラム中で対象パラメータを用いた処理を記述する部分の前に、パラメータが設定された範囲外であることを検出するコマンドと、パラメータが設定された範囲外であることが検出される場合に実行する処理を示すコマンドと、を含むパラメータチェックコマンドを追加する。
変数チェックコマンド追加部85は、ASIC115が用いる変数をチェックするコマンドを追加する。例えば、変数チェックコマンド追加部85は、HDLプログラムを解析して、HDLプログラムで定められた1以上の処理を特定し、特定された1以上の処理を選択可能なリストを表示部161に表示し、操作受付部61から入力されるユーザーによる操作により選択された処理を、変更対象処理に特定する。次に、変数チェックコマンド追加部85は、HDLプログラムを解析して、変更対象処理に対してHDLプログラムで定められた変数を特定し、特定された1以上の変数を選択可能なリストを表示部161に表示し、操作受付部61から入力されるユーザーによる操作により選択された変数を、対象変数に特定する。変数チェックコマンド追加部85は、対象変数の取り得る範囲を設定する画面を表示部161に表示し、操作受付部61から入力されるユーザーによる操作により特定される範囲を設定する。変数チェックコマンド追加部85は、HDLプログラム中で対象変数を用いた処理を記述する部分の後に、対象変数が設定された範囲外であることを検出するコマンドと、対象変数が設定された範囲外であることが検出される場合に実行する処理を示すコマンドと、を含む変数チェックコマンドを追加する。
図5は、延長コマンドの追加を説明するための図である。図5(A)は、延長コマンドを追加する前のHDLプログラムの一例を示す図である。図5(A)を参照して、HDLプログラムは、変更対象処理の記述301を含む。ここでは、変更対象処理は、プロセスdo_add()として示される。図5(B)は、延長コマンドを追加した後のHDLプログラムの一例を示す図である。図5(B)を参照して、変更対象処理の記述301の最後に、wait(20,SC_MS)で示される延長コマンド303が追加されている。ここでは、延長コマンド303であるwait(20,SC_MS)は、20msだけ待機することを示している。
図6は、パラメータチェックコマンドの追加を説明するための図である。図6(A)は、パラメータチェックコマンドを追加する前のHDLプログラムの一例を示す図である。図6(A)を参照して、HDLプログラムは、変更対象処理の記述311を含む。ここでは、変更対象処理は、プロセスdo_add()として示される。また、HDLプログラムは、変更対象処理に入力されるデータとしてパラメータの記述312を含む。ここでは、パラメータは、aとbで示される。変更対象処理であるプロセスdo_add()は、パラメータa,bを処理する記述315を含む。パラメータa,bを処理する記述315は、sum a+bで示される。
図6(B)は、パラメータチェックコマンドを追加した後のHDLプログラムの一例を示す図である。図6(B)を参照して、HDLプログラムは、パラメータa,bを処理する記述315の前に、パラメータチェックコマンドの記述313を含む。パラメータチェックコマンドは、パラメータが設定された範囲外であることを検出するコマンドとしてif(a<0)||(a>255)と、パラメータが設定された範囲外であることが検出される場合に実行する処理を示すコマンドとして「エラー処理」と、を含む。なお、パラメータの範囲を、0以上255以下としている。また、パラメータが設定された範囲外であることが検出される場合に実行する処理を示すコマンドを、実際のコマンドを省略した「エラー処理」として示している。
図7は、変数チェックコマンドの追加を説明するための図である。図7(A)は、変数チェックコマンドを追加する前のHDLプログラムの一例を示す図である。図7(A)を参照して、HDLプログラムは、変更対象処理の記述321を含む。ここでは、変更対象処理は、プロセスdo_add()として示される。また、HDLプログラムは、変更対象処理で用いられる変数の記述322を含む。ここでは、変数は、sum2で示される。変更対象処理であるプロセスdo_add()は、変数sum2を処理する記述325を含む。変数sum2を処理する記述325は、sum2=sum2+sum1で示される。
図7(B)は、変数チェックコマンドを追加した後のHDLプログラムの一例を示す図である。図7(B)を参照して、HDLプログラムは、変数sum2を処理する記述325の後に、変数チェックコマンドの記述323を含む。変数チェックコマンドの記述323は、変数が設定された範囲外であることを検出するコマンドとしてif(sum2<1023)||(sum2>65536)と、変数が設定された範囲外であることが検出される場合に実行する処理を示すコマンドとして「エラー処理」と、を含む。なお、変数の範囲を、1023以上65536以下としている。また、変数が設定された範囲外であることが検出される場合に実行する処理を示すコマンドを、実際のコマンドを省略した「エラー処理」として示している。
図8は、デバッグ支援処理の流れの一例を示すフローチャートである。図8を参照して、CPU111は、デバイスエミュレートプログラム生成処理を実行する(ステップS01)。デバイスエミュレートプログラム生成処理の詳細は後述するが、ハードウェア資源、ここでは、ASIC115をエミュレートするデバイスエミュレートプログラムを生成する処理である。次のステップS02においては、エミュレートプログラムをインストールし、仮想化レイヤを生成する。そして、デバイスエミュレータを生成する(ステップS03)。具体的には、仮想化レイヤにステップS01において生成されたデバイスエミュレートプログラムをインストールすることにより、デバイスエミュレータを生成する。デバイスエミュレータは、CPU111がデバイスエミュレートプログラムを実行するタスクである。
次のステップS04においては、仮想マシンを生成する。具体的には、仮想化レイヤの基で、オペレーティングシステムプログラムをインストールする。オペレーティングシステムプログラムは、CPU111に元々インストールされているオペレーティングシステムプログラムと同じオペレーティングシステムプログラムである。
次のステップS05においては、仮想マシンにアプリケーションプログラムをインストールする。アプリケーションプログラムは、MFP100のハードウェア資源、ここでは、ASIC115を制御した処理を定めたプログラムであり、デバッグの対象となるプログラムである。
次のステップS06においては、切換指示を受け付けたか否かを判断する。ユーザーが操作部163に入力する操作に従って切換指示を受け付ける。切換指示は、第1の制御に切り換える指示と、第2の制御に切り換える指示と、のいずれかである。第1の制御に切り換える指示を受け付けたならば、ASIC115を有効に設定し(ステップS07)、処理をステップS09に進める。第2の制御に切り換える指示を受け付けたならば、ステップS03において生成されたデバイスエミュレータを有効に設定し(ステップS08)、処理をステップS09に進める。
ステップS09においては、ステップS05においてインストールされたアプリケーションプログラムを実行し、処理をステップS10に進める。CPU111がアプリケーションプログラムを実行するタスクは、ASIC115を制御する処理を定める場合がある。CPU111は、ステップS07においてASIC115が有効に設定されている状態においては、アプリケーションプログラムを実行するタスクによりASIC115が制御される場合は、ASIC115に処理を実行させる。また、CPU111は、ステップS08において、デバイスエミュレータが有効に設定されている場合には、CPU111がアプリケーションプログラムを実行するタスクによりASIC115が制御される場合は、ステップS03において生成されたデバイスエミュレータに処理を実行させる。
ステップS10においては、エラーが発生したか否かを判断する。エラーが発生したならば処理をステップS11に進めるが、そうでなければ処理をステップS13に進める。ここで発生するエラーは、CPU111がアプリケーションプログラムを実行するタスクによって発生するエラーの他、デバイスエミュレータにおいて発生するエラーを含む。MFP100のユーザーは、発生したエラーに基づいて、アプリケーションプログラム中でエラーの原因を特定することが可能である。ユーザーは、特定したエラーの原因に基づいて、アプリケーションプログラムを変更する。ステップS11においては、アプリケーションプログラムの変更を受け付け(ステップS11)、処理をステップS12に進める。なお、必要に応じて、変更後のアプリケーションプログラムをコンパイルする。ステップS12においては、変更されたアプリケーションプログラムを実行し、処理をステップS10に戻す。
ステップS13においては、デバッグが終了したか否かを判断する。ユーザーが操作部163に入力する操作が、デバッグの終了を示す操作ならば処理をステップS14に進めるが、そうでなければ処理をステップS10に戻す。ステップS14においては、アプリケーションプログラムを終了させ、処理をステップS15に進める。ステップS15においては、仮想化を解除する。具体的には、仮想マシンを生成するためにインストールしたオペレーティングシステムプログラムをアンインストールし、エミュレートプログラムをアンインストールする。そして、デバッグの終了したアプリケーションプログラムをインストールし(ステップS16)、処理を終了する。
図9は、デバイスエミュレータ生成処理の流れの一例を示すフローチャートである。デバイスエミュレータ生成処理は、図8のステップS01において、CPU111により実行される処理である。図9を参照して、CPU111は、対象となるハードウェア資源を特定する。MFP100が備える複数のハードウェア資源を選択可能なリストを表示部161に表示し、ユーザーが操作部163に入力する操作により選択されるハードウェア資源を特定する。ここでは、ASIC115がユーザーにより選択される場合を例に説明する。
次のステップS22においては、ステップS21において特定されたハードウェア資源、ここでは、ASIC115に対応するHDLプログラムを取得する。ASIC115に対応するHDLプログラムが、ASIC115の製造者から予め取得され、HDD116に記憶されていれば、そのHDLプログラムを読み出す。
次のステップS23においては、変更対象処理を受け付けるまで待機状態となり、変更対象処理を受け付けたならば処理をステップS24に進める。例えば、HDLプログラムを解析して、HDLプログラムで定められた1以上の処理を特定し、特定された1以上の処理を選択可能なリストを表示部161に表示し、ユーザーが操作部163に入力する操作により選択された処理を、変更対象処理に特定する。
ステップS24においては、変更内容を受け付けるまで待機状態となり、変更内容を受け付けたならば処理をステップS25に進める。ここでは、変更内容として、レスポンス遅延と、パラメータチェックと、変数チェックと、が予め定められている場合を例に説明する。レスポンス遅延の変更内容は、ASIC115が制御されてから応答を出力するタイミングを遅延させる処理を追加することを示す。パラメータチェックは、ASICに入力されるパラメータが正しい値であるか否かを判断する処理を追加することを示す。変数チェックは、ASICで用いられる変数が正しい値であるか否かを判断する処理を追加することを示す。ステップS25においては、ステップS24において受け付けられた変更内容によって処理を分岐させる。変更内容がレスポンス遅延ならば処理をステップS26に進め、変更内容がパラメータチェックならば処理をステップS28に進め、変更内容が変数チェックならば処理をステップS31に進める。
ステップS26においては、遅延時間を受け付け、処理をステップS27に進める。例えば、遅延時間を設定する画面を表示部161に表示し、ユーザーが操作部163に入力する操作により特定される遅延時間を受け付ける。そして、ステップS22において取得されたHDLプログラムに、待機コマンドを追加し(ステップS27)、処理をステップS34に進める。具体的には、HDLプログラム中で、ステップS23において受け付けられた変更対象処理を記述する部分の最後に、ステップS26において受け付けられた遅延時間だけ待機する待機コマンドを追加する。
ステップS28においては、パラメータを選択し、処理をステップS29に進める。ステップS22において取得されたHDLプログラムを解析して、ステップS23において受け付けられた変更対象処理に対してHDLプログラムで定められたパラメータを特定し、特定された1以上のパラメータを選択可能なリストを表示部161に表示し、ユーザーが操作部163に入力する操作により選択されたパラメータを、対象パラメータに特定する。ステップS29においては、パラメータの取り得る範囲を受け付け、処理をステップS30に進める。範囲を設定する画面を表示部161に表示し、ユーザーが操作部163に入力する操作により特定される範囲を特定する。そして、ステップS22において取得されたHDLプログラムに、パラメータチェックコマンドを追加し(ステップS30)、処理をステップS34に進める。具体的には、HDLプログラム中で、ステップS23において受け付けられた変更対象処理を記述する部分に含まれる対象パラメータを記述する部分の前に、パラメータが設定された範囲外であることを検出するコマンドと、パラメータが設定された範囲外であることが検出される場合に実行する処理を示すコマンドと、を追加する。
ステップS31においては、変数を選択し、処理をステップS32に進める。ステップS22において取得されたHDLプログラムを解析して、ステップS23において受け付けられた変更対象処理に対してHDLプログラムで定められた変数を特定し、特定された1以上の変数を選択可能なリストを表示部161に表示し、ユーザーが操作部163に入力する操作により選択された変数を、対象変数に特定する。ステップS32においては、変数の取り得る範囲を受け付け、処理をステップS33に進める。範囲を設定する画面を表示部161に表示し、ユーザーが操作部163に入力する操作により特定される範囲を特定する。そして、ステップS22において取得されたHDLプログラムに、変数チェックコマンドを追加し(ステップS33)、処理をステップS34に進める。具体的には、HDLプログラム中で、ステップS23において受け付けられた変更対象処理を記述する部分に含まれる対象変数を記述する部分の前に、変数が設定された範囲外であることを検出するコマンドと、変数が設定された範囲外であることが検出される場合に実行する処理を示すコマンドと、を追加する。
ステップS34においては、HDDプログラムの変更が終了したか否かを判断する。操作部163が、HDDプログラムの変更を終了させることを示す操作を受け付けたならば、処理をステップS35に進めるが、そうでなければ処理をステップS23に戻す。
ステップS35においては、変更された後のHDDプログラムをコンパイルし、処理をデバッグ処理に戻す。変更された後のHDDプログラムをコンパイルすることにより、デバイスエミュレートプログラムが生成される。
以上説明したように本実施の形態におけるMFP100は、ASIC155に対応するHDLプログラムで記述された処理を変更し、第2アプリケーションプログラムを実行するタスクによるASIC155の制御に従ってASIC155を制御させる第1の制御と、第2アプリケーションプログラムを実行するタスクによるASIC155の制御に従って変更されたHDLプログラムを実行する第2の制御とのいずれかに切り換える。このため、第2の制御に切り換える場合には、ASIC115が実行可能な処理を変更した動作をエミュレートすることができる。したがって、ハードウェア資源を変更することなく、ハードウェア資源の動作を変更した状態を再現することができる。また、第2アプリケーションプログラムのASIC115を制御する処理の部分のバグの発見を容易にすることができる。
また、MFP100は、複数のハードウェア資源のうちからユーザーにより選択されたASIC115に対応するHDLプログラムを取得し、取得されたHDLプログラムをユーザーによる指示に基づいて変更するので、ユーザーにより選択されたASIC115の動作を、ユーザーによる指示に基づいて変更した状態で再現することができる。
また、MFP100は、ASIC115のHDLプログラムのうちユーザーにより指定された処理の記述の最後に待機コマンドを追加するので、ASIC115がユーザーにより指定された処理を実行した結果を出力するタイミングを遅延させることができる。このため、ASIC115がユーザーにより指定された処理を実行してから結果を出力するまでの間に発生する不具合が発生する頻度を高めることができる。したがって、第2アプリケーションプログラムがASIC115を制御する処理の記述のバグの発見を容易にすることができる。
また、MFP100は、ASIC115のHDLプログラムのうちユーザーにより指定された処理で用いられるパラメータをチェックするコマンドを追加するので、ASIC115が外部から受け付けるパラメータをチェックすることができる。したがって、第2アプリケーションプログラムがASIC115を制御する処理の記述のバグの発見を容易にすることができる。
また、MFP100は、ASIC115のHDLプログラムのうちユーザーにより指定された処理で用いられる変数をチェックするコマンドを追加するので、ASIC115が処理で用いる変数をチェックすることができる。したがって、第2アプリケーションプログラムがASIC115を制御する処理の記述のバグの発見を容易にすることができる。
なお、上述した実施の形態においては、ハードウェア資源の一例として、ASIC115を例に説明したが、他のハードウェア資源である通信I/F部112、ROM113、RAM114、HDD116、ファクシミリ部117、外部記憶装置118、自動原稿搬送装置120、原稿読取部130、画像形成部140、給紙部150、および操作パネル160についても、同様に処理を再現することができる。また、ASICに代えて、FPGA(Field Programmable Gate Array)を用いるようにしてもよい。
なお、本実施の形態においては、画像処理装置の一例としてMFP100を例に説明したが、ハードウェア資源を制御する処理を定めたアプリケーションプログラムがインストールされる装置であれば、例えば、ファクシミリ装置、スキャナ装置、カメラ等であってもよい。また、図8および図9に示したデバッグ支援処理をMFP100に実行させるデバッグ支援方法として発明を捉えることができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
100 MFP、110 メイン回路、111 CPU、112 通信I/F部、113 ROM、114 RAM、115 ASIC、116 HDD、117 ファクシミリ部、118 外部記憶装置、119 CD−ROM、120 自動原稿搬送装置、130 原稿読取部、140 画像形成部、150 給紙部、160 操作パネル、161 表示部、163 操作部、165 タッチパネル、167 ハードキー部、51 ホスト制御部、53 ゲスト制御部、55 エミュレート部、57 アプリケーション部、59 アプリケーション部、61 操作受付部、63 資源特定部、65 プログラム取得部、67 変更部、69 ゲストドライバー部、71 切換部、73 デバイスエミュレート部、75 仮想デバイス部、77 ホストドライバー部、81 延長コマンド追加部、83 パラメータチェックコマンド追加部、85 変数チェックコマンド追加部。

Claims (17)

  1. オペレーティングシステムプログラムを実行し、ハードウェア資源を制御するホスト制御手段と、
    前記オペレーティングシステムプログラムと同じオペレーティングシステムプログラムを実行するゲスト制御手段と、
    前記ホスト制御手段と前記ゲスト制御手段との間に設けられ、前記ゲスト制御手段による前記ハードウェア資源の制御を可能とするエミュレート手段と、
    前記ハードウェア資源が実行可能な処理をハードウェア記述言語で記述したHDLプログラムを変更する変更手段と、を備え、
    前記ゲスト制御手段は、前記ハードウェア資源を制御するためドライバープログラムを実行するゲストドライバー手段を含み、
    前記エミュレート手段は、前記変更されたHDLプログラムを実行することにより前記ハードウェア資源をエミュレートするデバイスエミュレート手段と、
    前記ゲストドライバー手段による前記ハードウェア資源の制御に従って前記ホスト制御手段を制御して前記ハードウェア資源を制御させる第1の制御と、前記ゲストドライバー手段による前記ハードウェア資源の制御に従って前記デバイスエミュレート手段を制御する第2の制御とのいずれかに切り換える切換手段と、を含む、画像処理装置。
  2. 前記ハードウェア資源は、複数あり、
    前記複数のハードウェア資源のうちからユーザーにより選択されたハードウェア資源を特定する資源特定手段と、
    前記特定されたハードウェア資源に対応するHDLプログラムを取得するプログラム取得手段と、をさらに備え、
    前記変更手段は、前記取得されたHDLプログラムをユーザーによる指示に基づいて変更し、
    前記切換手段は、前記特定されたハードウェア資源に対して前記第1の制御と前記第2の制御とのいずれかに切り換える、請求項1に記載の画像処理装置。
  3. 前記変更手段は、前記ハードウェア資源が処理を実行してから結果を出力するまでの応答時間を延長するコマンドを追加する延長コマンド追加手段を、含む、請求項1または2に記載の画像処理装置。
  4. 前記変更手段は、前記ハードウェア資源が処理を実行するために前記ゲストドライバー手段から受け付けるパラメータをチェックするコマンドを追加するパラメータチェックコマンド追加手段を、含む、請求項1〜3のいずれかに記載の画像処理装置。
  5. 前記変更手段は、前記ハードウェア資源が処理を実行することにより変化する変数をチェックするコマンドを追加する変数チェックコマンド追加手段を、含む、請求項1〜4のいずれかに記載の画像処理装置。
  6. 前記ハードウェア資源は、ASIC(Application Specific Integrated Circuit)である、請求項1〜5のいずれかに記載の画像処理装置。
  7. 前記ハードウェア資源は、FPGA(Field Programmable Gate Array)である、請求項1〜5のいずれかに記載の画像処理装置。
  8. 前記ゲスト制御手段を制御して前記ハードウェア資源を制御する処理を定めたアプリケーションプログラムを実行するアプリ実行手段を、さらに備えた請求項1〜7のいずれかに記載の画像処理装置。
  9. 画像処理装置で実行されるアプリケーションプログラムをデバッグするデバッグ支援方法であって、
    前記画像処理装置は、オペレーティングシステムプログラムを実行し、前記ハードウェア資源を制御するホスト制御手段と、
    前記オペレーティングシステムプログラムと同じオペレーティングシステムプログラムを実行するゲスト制御手段と、
    前記ホスト制御手段と前記ゲスト制御手段との間に設けられ、前記ゲスト制御手段による前記ハードウェア資源の制御を可能とするエミュレート手段と、を備え、
    前記ゲスト制御手段は、前記ハードウェア資源を制御するためドライバープログラムを実行するゲストドライバー手段を含み、
    前記デバッグ支援方法は、前記ハードウェア資源が実行可能な処理をハードウェア記述言語で記述したHDLプログラムを変更する変更ステップと、
    前記ゲストドライバー手段による前記ハードウェア資源の制御に従って前記ホスト制御手段を制御して前記ハードウェア資源を制御させる第1の制御と、前記ゲストドライバー手段による前記ハードウェア資源の制御に従って、前記ハードウェア資源をエミュレートするために前記変更されたHDLプログラムを実行する第2の制御とのいずれかに切り換える切換ステップと、を含むデバッグ支援方法。
  10. 前記ハードウェア資源は、複数あり、
    前記複数のハードウェア資源のうちからユーザーにより選択されたハードウェア資源を特定する資源特定ステップと、
    前記特定されたハードウェア資源に対応するHDLプログラムを取得するプログラム取得ステップを、をさらに含み、
    前記変更ステップは、前記取得されたHDLプログラムをユーザーによる指示に基づいて変更するステップを含み、
    前記切換ステップは、前記特定されたハードウェア資源に対して前記第1の制御と前記第2の制御とのいずれかに切り換えるステップを含む、請求項9に記載のデバッグ支援方法。
  11. 前記変更ステップは、前記ハードウェア資源が処理を実行してから結果を出力するまでの応答時間を延長するコマンドを追加する延長コマンド追加ステップを、含む、請求項9または10に記載のデバッグ支援方法。
  12. 前記変更ステップは、前記ハードウェア資源が処理を実行するために前記ゲストドライバー手段から受け付けるパラメータをチェックするコマンドを追加するパラメータチェックコマンド追加ステップを、含む、請求項9〜11のいずれかに記載のデバッグ支援方法。
  13. 前記変更ステップは、前記ハードウェア資源が処理を実行することにより変化する変数をチェックするコマンドを追加する変数チェックコマンド追加ステップを、含む、請求項9〜12のいずれかに記載のデバッグ支援方法。
  14. 前記ハードウェア資源は、ASIC(Application Specific Integrated Circuit)である、請求項10〜13のいずれかに記載のデバッグ支援方法。
  15. 前記ハードウェア資源は、FPGA(Field Programmable Gate Array)である、請求項9〜13のいずれかに記載のデバッグ支援方法。
  16. 前記画像処理装置は、前記ゲスト制御手段を制御して前記ハードウェア資源を制御する処理を定めたアプリケーションプログラムを実行するアプリ実行手段を、さらに備えた請求項9〜15のいずれかに記載のデバッグ支援方法。
  17. 請求項9〜16のいずれかに記載のデバッグ支援方法を、前記画像装置を制御するコンピューターに実行させるデバッグ支援プログラム。
JP2016125226A 2016-06-24 2016-06-24 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム Active JP6702021B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016125226A JP6702021B2 (ja) 2016-06-24 2016-06-24 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム
US15/623,546 US10412251B2 (en) 2016-06-24 2017-06-15 Image processing apparatus for debugging a hardware emulation process
CN201710483109.9A CN107544833A (zh) 2016-06-24 2017-06-23 图像处理装置、调试支援方法以及记录有调试支援程序的计算机可读取的记录介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016125226A JP6702021B2 (ja) 2016-06-24 2016-06-24 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム

Publications (2)

Publication Number Publication Date
JP2017228191A true JP2017228191A (ja) 2017-12-28
JP6702021B2 JP6702021B2 (ja) 2020-05-27

Family

ID=60675695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016125226A Active JP6702021B2 (ja) 2016-06-24 2016-06-24 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム

Country Status (3)

Country Link
US (1) US10412251B2 (ja)
JP (1) JP6702021B2 (ja)
CN (1) CN107544833A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112486836B (zh) * 2020-12-09 2024-04-09 北京展心展力信息科技有限公司 调试发布包的方法、装置、电子设备及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008305034A (ja) * 2007-06-06 2008-12-18 Hitachi Ltd デバイス割り当て変更方法
JP2009223793A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
JP2011164859A (ja) * 2010-02-08 2011-08-25 Ricoh Co Ltd シミュレータ装置及びシミュレータプログラム
JP2013012196A (ja) * 2011-06-28 2013-01-17 Boeing Co:The ハードウェア抽象化を用いたソフトウェアアプリケーション実行の方法と装置
JP2014038388A (ja) * 2012-08-10 2014-02-27 Konica Minolta Inc 画像形成装置
JP2014195178A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd 情報処理装置、送信制御方法および送信制御プログラム
JP2016021209A (ja) * 2014-07-16 2016-02-04 株式会社リコー コンピュータ組み込み装置テストシステム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4978661B2 (ja) * 2009-06-05 2012-07-18 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置
US8402461B2 (en) * 2009-11-15 2013-03-19 Hewlett-Packard Development Company, L. P. Switching between direct mode and indirect mode for virtual machine I/O requests
US8397195B2 (en) * 2010-01-22 2013-03-12 Synopsys, Inc. Method and system for packet switch based logic replication
CN103678745B (zh) * 2012-09-18 2016-09-28 中国科学院微电子研究所 一种用于fpga的跨平台多层次集成设计系统
JP5985460B2 (ja) * 2013-11-27 2016-09-06 京セラドキュメントソリューションズ株式会社 シミュレーションシステム
US10140413B2 (en) * 2015-04-21 2018-11-27 Synopsys, Inc. Efficient resolution of latch race conditions in emulation
JP6720707B2 (ja) * 2016-06-13 2020-07-08 コニカミノルタ株式会社 画像処理装置およびモード切換プログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008305034A (ja) * 2007-06-06 2008-12-18 Hitachi Ltd デバイス割り当て変更方法
JP2009223793A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
JP2011164859A (ja) * 2010-02-08 2011-08-25 Ricoh Co Ltd シミュレータ装置及びシミュレータプログラム
JP2013012196A (ja) * 2011-06-28 2013-01-17 Boeing Co:The ハードウェア抽象化を用いたソフトウェアアプリケーション実行の方法と装置
JP2014038388A (ja) * 2012-08-10 2014-02-27 Konica Minolta Inc 画像形成装置
JP2014195178A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd 情報処理装置、送信制御方法および送信制御プログラム
JP2016021209A (ja) * 2014-07-16 2016-02-04 株式会社リコー コンピュータ組み込み装置テストシステム

Also Published As

Publication number Publication date
CN107544833A (zh) 2018-01-05
US20170374219A1 (en) 2017-12-28
JP6702021B2 (ja) 2020-05-27
US10412251B2 (en) 2019-09-10

Similar Documents

Publication Publication Date Title
CN110928529B (zh) 辅助算子开发的方法和系统
US10740078B2 (en) Dynamic plugin(s) for cloud application(s)
US8601433B2 (en) Method and apparatus for generating virtual software platform based on component model and validating software platform architecture using the platform
CN109716331B (zh) 符合应用程序数据共享和决策服务平台模式的应用程序部署
US20100319008A1 (en) Parallel processing method for dual operating system
US20140082511A1 (en) Method and system for emulating desktop software applications in a mobile communication network
US20110191787A1 (en) System and method for providing sensor data from embedded device to software development environment
JP7050106B2 (ja) 実行可能分析モジュールをインスタンス化する方法
US20170052764A1 (en) Pluggable components for runtime-image generation
CN104038657B (zh) 信息处理系统、信息处理设备和信息处理方法
US9542170B2 (en) Development tool for footprint reduction
CN111596951A (zh) 一种工程文件的配置方法及装置
CN109660688B (zh) 信息处理装置及其控制方法
CN114072765B (zh) 用于基于容器的虚拟化系统的方法
JP6702021B2 (ja) 画像処理装置、デバッグ支援方法およびデバッグ支援プログラム
US9244672B2 (en) Optimization utility for developing embedded systems
US8745587B2 (en) System and method for testing computer programs
KR20100056338A (ko) 재활용도를 높일 수 있는 gui 테스트 자동화 시스템 및 그 방법
US9652304B2 (en) Electronic apparatus that uses program from another program working on different platforms, and method
JP2014021693A (ja) 画像形成装置、アプリケーション実行方法、およびアプリケーション実行プログラム
JP6904075B2 (ja) 状態予測装置、状態予測方法および状態予測プログラム
JP2010055641A (ja) 情報処理装置及びプログラム
JP2019046001A (ja) アプリケーション移植支援装置、アプリケーション移植支援プログラムおよびアプリケーション移植方法
JP5216624B2 (ja) ソフトウェア開発システムおよびソフトウェア開発方法
JP5144624B2 (ja) 画像形成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190314

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200319

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200420

R150 Certificate of patent or registration of utility model

Ref document number: 6702021

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150