JP6876235B2 - 電子装置及び画像処理装置 - Google Patents

電子装置及び画像処理装置 Download PDF

Info

Publication number
JP6876235B2
JP6876235B2 JP2016188838A JP2016188838A JP6876235B2 JP 6876235 B2 JP6876235 B2 JP 6876235B2 JP 2016188838 A JP2016188838 A JP 2016188838A JP 2016188838 A JP2016188838 A JP 2016188838A JP 6876235 B2 JP6876235 B2 JP 6876235B2
Authority
JP
Japan
Prior art keywords
command
commands
control means
processing
executed
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.)
Active
Application number
JP2016188838A
Other languages
English (en)
Other versions
JP2018055285A (ja
Inventor
英夫 山田
英夫 山田
川原 巧
巧 川原
美行 小林
美行 小林
正太郎 宮本
正太郎 宮本
直樹 末吉
直樹 末吉
英憲 田中
英憲 田中
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2016188838A priority Critical patent/JP6876235B2/ja
Priority to US15/448,180 priority patent/US10860392B2/en
Priority to CN201710320037.6A priority patent/CN107870823B/zh
Publication of JP2018055285A publication Critical patent/JP2018055285A/ja
Application granted granted Critical
Publication of JP6876235B2 publication Critical patent/JP6876235B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Information Transfer Systems (AREA)
  • Stored Programmes (AREA)
  • Facsimiles In General (AREA)
  • Multi Processors (AREA)

Description

本発明は、電子装置及び画像処理装置に関する。
複数のプロセッサからなるマルチプロセッサシステムに関し、複数のマイクロプロセッサ間のデータ転送に使用される技術として、例えば、特許文献1には、転送データの書込、読出が可能な複数バイトのデータバッファと、このデータバッファにおける転送データの書込、読出が可能であるか否かの状態を記憶する状態記憶手段と、この状態記憶手段の記憶内容にもとづいてデータバッファにおける転送データの書込、読出を行うと共に、データ転送の際に状態記憶手段の記憶内容を書換えて相互に割込制御をする複数のプロセッサとを備え、転送データを複数のプロセッサ間で双方向に転送するようにしたマルチプロセッサシステムが開示されている。
また、プロセス間通信サブシステム内の無名応答ポート機構を提供する技術として、例えば、特許文献2には、クライアントである送信側タスクは、その双方向メッセージを送信/受信メッセージとして公式化し、送信/受信メッセージは、サーバである宛先タスクと応答ポートのアイデンティティとを指名するフィールドを含み、クライアントである送信側タスクは、無名応答ポートをサーバである宛先タスクからの応答のための指定ポートとして受け入れることを示す指示を、応答ポート・フィールドに入れ、この指定により、プロセス間通信サブシステムは、サーバである宛先タスクから見たように、メッセージの明らかなセンダーになる技術が開示されている。
特開昭60−181959号公報 特開平8−16411号公報
複数のCPU(Central Processing Unit)を有するマルチプロセッサ構成の電子装置では、それぞれのCPUが実行するOS(Operating System)間にて通信が行われる場合がある。通常、OS内で行われる処理の時間は、OS間で行われるOS間通信の時間に比べて非常に短いため、OS間通信の回数が増えるほどCPUによる全体の処理時間が長くなってしまう。
本発明の目的は、一方の制御手段から送信されたコマンドを他方の制御手段にて処理する場合に、コマンド毎にOS間通信が発生する構成と比較して、全体の処理時間を短縮することにある。
請求項1に記載の発明は、第1OS(Operating System)に基づいて処理を実行する第1制御手段と、第2OSに基づいて処理を実行する第2制御手段とを備え、前記第1制御手段は、前記第2制御手段が実行するコマンドを生成するコマンド生成部と、前記第2制御手段が実行する複数のコマンドと当該複数のコマンドの実行手順を定めた制御コードとを予め対応付けた対応関係を有し、前記コマンド生成部により生成された複数のコマンドに対応する制御コードが前記対応関係に存在する場合、当該複数のコマンドに当該制御コードを付与して前記第2制御手段へ送信するコマンド送信部とを備え、前記第2制御手段は、前記コマンド送信部から送信された前記複数のコマンドを受信すると、付与された前記制御コードに定められた前記実行手順に基づいて当該複数のコマンドを実行し、当該複数のコマンドのそれぞれを実行する度にコマンドの実行結果を前記第1制御手段へ送信せずに、当該複数のコマンドの処理が終了した後に、当該複数のコマンドの処理結果として、前記第1制御手段が実行する複数のコマンドに当該第1制御手段が実行する複数のコマンドの実行手順を定めた制御コードを付与して当該第1制御手段へ送信することを特徴とする電子装置である。
請求項に記載の発明は、前記第2制御手段は、前記複数のコマンドのうちの一のコマンドを実行する場合、前記制御コードに定められた前記実行手順と当該一のコマンドの実行結果とにより、当該一のコマンドを実行した後の処理を行うことを特徴とする請求項1に記載の電子装置である。
請求項に記載の発明は、前記第2制御手段は、前記一のコマンドの実行に成功した場合、成功した場合に実行するコマンドとして前記制御コードに定められた他のコマンドを実行し、当該一のコマンドの実行に失敗した場合、当該他のコマンドを実行せずに前記複数のコマンドの実行を終了することを特徴とする請求項に記載の電子装置である。
請求項に記載の発明は、前記第2制御手段は、前記一のコマンドの実行に成功した場合、成功した場合に実行するコマンドとして前記制御コードに定められたコマンドを実行し、当該一のコマンドの実行に失敗した場合、失敗した場合に実行するコマンドとして当該制御コードに定められたコマンドを実行することを特徴とする請求項に記載の電子装置である。
請求項に記載の発明は、第1OS(Operating System)に基づいて処理を実行する第1制御手段と、第2OSに基づいて処理を実行する第2制御手段とを備え、前記第1制御手段は、前記第2制御手段が実行する複数のコマンド及び当該複数のコマンドの実行手順を定めた制御コードをまとめて当該第2制御手段へ送信し、前記第2制御手段は、前記第1制御手段から受信した前記制御コードの前記実行手順を基に前記複数のコマンドを実行し、当該複数のコマンドのそれぞれを実行する度にコマンドの実行結果を前記第1制御手段へ送信せずに、当該複数のコマンドの処理が終了した後に、当該複数のコマンドの処理結果として、当該第1制御手段が実行する複数のコマンドに当該第1制御手段が実行する複数のコマンドの実行手順を定めた制御コードを付与して当該第1制御手段へ送信することを特徴とする電子装置である。
請求項に記載の発明は、第1OS(Operating System)に基づいて処理を実行する第1制御手段と、第2OSに基づいて処理を実行する第2制御手段とを備え、前記第1制御手段は、前記第2制御手段が実行するコマンドを生成するコマンド生成部と、ユーザにより指示された画像処理を実行するための複数のコマンドと当該複数のコマンドの実行手順を定めた制御コードとを予め対応付けた対応関係を有し、前記コマンド生成部により生成された複数のコマンドに対応する制御コードが前記対応関係に存在する場合、当該複数のコマンドに当該制御コードを付与して前記第2制御手段へ送信するコマンド送信部とを備え、前記第2制御手段は、前記コマンド送信部から送信された前記複数のコマンドを受信すると、付与された前記制御コードに定められた前記実行手順に基づいて当該複数のコマンドを実行し、当該複数のコマンドのそれぞれを実行する度にコマンドの実行結果を前記第1制御手段へ送信せずに、当該複数のコマンドの処理が終了した後に、当該複数のコマンドの処理結果として、当該第1制御手段が実行する複数のコマンドに当該第1制御手段が実行する複数のコマンドの実行手順を定めた制御コードを付与して当該第1制御手段へ送信することを特徴とする画像処理装置である。
請求項1記載の発明によれば、一方の制御手段から送信されたコマンドを他方の制御手段にて処理する場合に、コマンド毎にOS間通信が発生する構成と比較して、全体の処理時間を短縮することができる。
請求項記載の発明によれば、一方の制御手段から送信されたコマンドを他方の制御手段にて処理する場合に、他方の制御手段から一方の制御手段に対してコマンドの実行結果を送信しなくても、他方の制御手段がコマンド実行後の処理を続けて行うことができる。
請求項記載の発明によれば、一方の制御手段から送信されたコマンドを他方の制御手段にて処理する場合に、他方の制御手段から一方の制御手段に対してコマンドの実行結果を送信しなくても、他方の制御手段がコマンドの実行結果に応じた処理を行うことができる。
請求項記載の発明によれば、一方の制御手段から送信されたコマンドを他方の制御手段にて処理する場合に、他方の制御手段から一方の制御手段に対してコマンドの実行結果を送信しなくても、他方の制御手段がコマンドの実行結果に応じた処理を行うことができる。
請求項記載の発明によれば、一方の制御手段から送信されたコマンドを他方の制御手段にて処理する場合に、コマンド毎にOS間通信が発生する構成と比較して、全体の処理時間を短縮することができる。
請求項記載の発明によれば、一方の制御手段から送信されたコマンドを他方の制御手段にて処理する場合に、コマンド毎にOS間通信が発生する構成と比較して、全体の処理時間を短縮することができる。
マルチプロセッサ構成の画像処理装置において、ASICを使用して処理を行う場合の従来の通信の流れの一例を示す図である。 マルチプロセッサ構成の画像処理装置において、SWIPを使用して処理を行う場合の従来の通信の流れの一例を示す図である。 マルチプロセッサ構成の画像処理装置において、ASICを使用して3個のコマンドを処理する場合の従来の通信の流れの一例を示す図である。 マルチプロセッサ構成の画像処理装置において、SWIPを使用して3個のコマンドを処理する場合の従来の通信の流れの一例を示す図である。 本実施の形態に係る画像処理装置のハードウェア構成例を示す図である。 本実施の形態に係る画像処理装置の制御部の構成例を概略的に示す図である。 本実施の形態に係る制御コードテーブルの一例を示す図である。 本実施の形態に係る制御コードテーブルの一例を示す図である。 本実施の形態に係る画像処理装置における一連の処理の流れの一例を説明するための図である。 本実施の形態に係るパッケージコマンドの処理の一例を説明するための図である。
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
<OS間通信の説明>
複数のCPUを有するマルチプロセッサ構成の電子装置では、それぞれのCPUが実行するOS間にて通信が行われる場合がある。ここで、マルチプロセッサ構成の電子装置として、画像処理を行う画像処理装置を例に挙げて、画像処理装置内のOS間通信について説明する。
図1は、マルチプロセッサ構成の画像処理装置において、ASIC(application specific integrated circuit)を使用して処理を行う場合の従来の通信の流れの一例を示す図である。ASICとは、ある特定の用途に特化して製造された集積回路である。ここで、図1に示す例では、OSの一例として、ソースコードが公開されるオープンソースであるLinux(登録商標)と、時間的な制約がある処理を実行するための機能や特性を備えたリアルタイムOSであるVxWorks(登録商標)を用いている。
ここで、Linuxの機能部であるLinux400は、ユーザの操作に基づいて処理を行うアプリケーション410、OS間の通信を制御するOS間通信部420を有する。また、VxWorksの機能部であるVxWorks500は、画像処理が行われるASIC530、ASIC530における画像処理を制御するデバイスドライバ510、OS間の通信を制御するOS間通信部520を有する。そして、Linux400のアプリケーション410からVxWorks500にて実行させるコマンドを送信し、VxWorks500から応答が返ってくるまでの通信の流れについて説明する。
例えば、ユーザがアプリケーション410により画像処理の指示を行った場合、アプリケーション410は、VxWorks500へのコマンドを、OS間通信部420へ送信する(ステップ201)。次に、OS間通信部420は、コマンドをVxWorks500のOS間通信部520へ送信する(ステップ202)。次に、OS間通信部520は、コマンドをデバイスドライバ510へ送信する(ステップ203)。次に、デバイスドライバ510は、コマンドを解析して、ASIC530のレジスタの値を操作して(例えば、レジスタの値を書き込んだり、レジスタの値を読み込んだりして)、画像処理を実行する(ステップ204)。
次に、デバイスドライバ510は、画像処理の処理結果を確認する(ステップ205)。次に、デバイスドライバ510は、処理結果を基に、Linux400のアプリケーション410に対する応答(応答コマンド)をOS間通信部520へ送信する(ステップ206)。この応答コマンドには、ASIC530における画像処理が成功したか否かを示す情報が含まれている。次に、OS間通信部520は、応答コマンドをLinux400のOS間通信部420へ送信する(ステップ207)。最後に、OS間通信部420は、応答コマンドをアプリケーション410へ送信し(ステップ208)、一連の処理は終了する。
ここで、画像処理装置などの電子装置では、高性能なCPUを用いることにより、ASICの代わりに、ソフトウェアによって構成されるソフトウェアIP(Intellectual Property)(以下、SWIPと称する)を使用することも考えられる。この場合、ASICにて行われた画像処理がソフトウェアIPにて実現されることになる。付言すると、図1に示す構成では、例えば、VxWorks500にてASIC530の処理を行うのではなく、Linux400にてSWIPを動作させて画像処理を行うことが可能になる。
図2は、マルチプロセッサ構成の画像処理装置において、SWIPを使用して処理を行う場合の従来の通信の流れの一例を示す図である。ここで、Linux400はオープンソースであるため、例えば、デバイスドライバ510の処理内容を外部に公開しない場合には、デバイスドライバ510をLinux400上ではなく、VxWorks500上で動作させることになる。そこで、図2に示す構成では、SWIP430をLinux400上で動作させる一方で、デバイスドライバ510をVxWorks500で動作させる。
Linux400は、図1の例と同様にアプリケーション410及びOS間通信部420を有するとともに、新たにSWIP430を有する。また、VxWorks500は、図1の例と同様にデバイスドライバ510及びOS間通信部520を有する一方で、ASIC530を有していない。そして、Linux400のアプリケーション410からVxWorks500にて実行させるコマンドを送信し、VxWorks500から応答が返ってくるまでの通信の流れについて説明する。
まず、アプリケーション410は、VxWorks500へのコマンドを、OS間通信部420へ送信する(ステップ301)。次に、OS間通信部420は、コマンドをVxWorks500のOS間通信部520へ送信する(ステップ302)。次に、OS間通信部520は、コマンドをデバイスドライバ510へ送信する(ステップ303)。次に、デバイスドライバ510は、コマンドを解析して、Linux400のSWIP430にて実行させるコマンドを生成する。そして、生成したコマンドをOS間通信部520へ送信する(ステップ304)。
次に、OS間通信部520は、SWIP430へのコマンドをLinux400のOS間通信部420へ送信する(ステップ305)。次に、OS間通信部420は、コマンドを解析し、レジスタの値を操作するための関数をSWIP430へ送信する(ステップ306)。次に、SWIP430は、関数に従ってレジスタの値を操作して画像処理を実行し、その処理結果をOS間通信部420へ送信する(ステップ307)。この処理結果には、SWIP430における画像処理が成功したか否かを示す情報が含まれている。次に、OS間通信部420は、SWIP430による処理結果をOS間通信部520へ送信する(ステップ308)。
次に、OS間通信部520は、SWIP430による処理結果をデバイスドライバ510へ送信する(ステップ309)。次に、デバイスドライバ510は、SWIP430による処理結果を基に、Linux400のアプリケーション410に対する応答(応答コマンド)をOS間通信部520へ送信する(ステップ310)。次に、OS間通信部520は、応答コマンドをLinux400のOS間通信部420へ送信する(ステップ311)。最後に、OS間通信部420は、応答コマンドをアプリケーション410へ送信し(ステップ312)、一連の処理は終了する。
ここで、図1に示すASIC方式と、図2に示すSWIP方式とを比較した場合、ASIC方式ではOS間通信(OS間通信部420とOS間通信部520との間の通信)の回数は2回であるが、SWIP方式ではOS間通信の回数が4回である。言い換えると、SWIP方式では、ASIC方式に比べて、2倍の回数のOS間通信が行われ、OS間通信が1往復分増えているといえる。
さらに、図1に示す例、図2に示す例では、アプリケーション410が1個のコマンドを送る場合について説明したが、それぞれの構成において、アプリケーション410が3個のコマンドを送る場合について説明する。図3は、マルチプロセッサ構成の画像処理装置において、ASICを使用して3個のコマンドを処理する場合の従来の通信の流れの一例を示す図である。また、図4は、マルチプロセッサ構成の画像処理装置において、SWIPを使用して3個のコマンドを処理する場合の従来の通信の流れの一例を示す図である。
まず、図3を参照しながら、ASIC方式で3個のコマンドを処理する場合について説明する。ASIC方式では、3個のコマンドのそれぞれについて、図1に示すステップ201〜ステップ208の処理が行われる。即ち、まず、1つ目のコマンドの処理として、ステップ201〜ステップ208の処理が行われる。次に、2つ目のコマンドの処理として、ステップ201〜ステップ208の処理が行われる。さらに、3つ目のコマンドの処理として、ステップ201〜ステップ208の処理が行われる。そして、3個のコマンドを処理するために、合計6回のOS間通信が行われる。
次に、図4を参照しながら、SWIP方式で3個のコマンドを処理する場合について説明する。SWIP方式では、3個のコマンドのそれぞれについて、図2に示すステップ301〜ステップ312の処理が行われる。即ち、まず、1つ目のコマンドの処理として、301〜ステップ312の処理が行われる。次に、2つ目のコマンドの処理として、ステップ301〜ステップ312の処理が行われる。さらに、3つ目のコマンドの処理として、301〜ステップ312の処理が行われる。そして、3個のコマンドを処理するために、合計12回のOS間通信が行われる。
付言すると、3個のコマンドを処理する場合、ASIC方式では6回のOS間通信が行われるが、SWIP方式では12回のOS間通信が行われる。言い換えると、SWIP方式では、ASIC方式の2倍の回数のOS間通信が行われる。
通常、例えばLinuxやVxWorksなどのOS内で行われる処理の時間は、OS間で行われるOS間通信の時間に比べて非常に短く、OS間通信の回数が増えるほど全体の処理時間は長くなる。そのため、従来の方法により、図1に示すASIC方式で行われる処理を、図2に示すSWIP方式で実現した場合には、OS間通信の回数が2倍に増えることになる。即ち、画像処理の処理結果は同じであるのに、全体の処理時間が長くなってしまう。言い換えると、図2に示すSWIP方式では、図1に示すASIC方式よりも生産性が低下することになる。
そこで、本実施の形態では、OS間通信の回数を抑制して、全体の処理時間を短縮するようにする。以下、これを実現するための画像処理装置の構成について説明する。
<画像処理装置のハードウェア構成>
本実施の形態に係る画像処理装置100のハードウェア構成について説明する。図5は、本実施の形態に係る画像処理装置100のハードウェア構成例を示す図である。本実施の形態に係る画像処理装置100は、例えば、画像読み取り機能(スキャナー機能)、印刷機能(プリンタ機能)、複写機能(コピー機能)及びファクシミリ機能等の各種の画像処理機能を備えた、いわゆる複合機である。
図示するように、本実施の形態に係る画像処理装置100は、制御部110と、HDD(Hard Disk Drive)120と、操作パネル130と、画像読取部140と、画像形成部150と、通信インタフェース(以下、「通信I/F」と表記する)160とを備える。なお、これらの各機能部はバス170に接続されており、このバス170を介してデータの授受を行う。
制御部110は、画像処理装置100の各部の動作を制御する。この制御部110は、CPU(Central Processing Unit)110a、RAM(Random Access Memory)110b、ROM(Read Only Memory)110cにより構成される。
CPU110aは、ROM110c等に記憶された各種プログラムをRAM110bにロードして実行することにより、画像処理装置100における各機能を実現する。RAM110bは、CPU110aの作業用メモリ等として用いられるメモリ(記憶部)である。ROM110cは、CPU110aが実行する各種プログラム等を記憶するメモリ(記憶部)である。
また、本実施の形態において、CPU110aは複数設けられており、それぞれのCPU110aが実行するOS間にて通信が行われる。CPU110aが実行するOSとしては、例えば、Linux、VxWorks等が例示される。以下では、OSの一例として、Linux及びVxWorksが用いられる場合について説明することとする。
HDD120は、各種データを記憶する記憶部である。HDD120には、例えば、画像読取部140の画像読み取りによって生成された画像データや、通信I/F160によって外部から受信した画像データ等が記憶される。
操作パネル130は、各種の情報を表示すると共に、各種の機能を用いた動作を行うためのユーザからの操作を受け付ける。操作パネル130としては、例えばタッチパネルディスプレイを例示することができる。
画像読取部140は、用紙等の記録材に記録された画像を読み取って、読み取った画像のデータ(画像データ)を生成する。ここで、画像読取部140は、例えばスキャナーであり、光源から原稿に照射した光に対する反射光をレンズで縮小してCCD(Charge Coupled Devices)で受光するCCD方式や、LED光源から原稿に順に照射した光に対する反射光をCIS(Contact Image Sensor)で受光するCIS方式のものを用いるとよい。
画像形成部150は、用紙等の記録材に画像を形成する印刷機構である。ここで、画像形成部150は、例えばプリンターであり、感光体に付着させたトナーを記録材に転写して像を形成する電子写真方式や、インクを記録材上に吐出して像を形成するインクジェット方式のものを用いるとよい。
通信I/F160は、不図示のネットワークを介して他の装置との間で各種データの送受信を行う通信インタフェースである。
そして、この画像処理装置100では、制御部110による制御の下、画像読取部140によってスキャナー機能が実現され、画像形成部150によってプリンター機能が実現され、画像読取部140及び画像形成部150によってコピー機能が実現され、画像読取部140、画像形成部150及び通信I/F160によってファクシミリ機能が実現される。
<制御部の構成>
図6は、本実施の形態に係る画像処理装置100の制御部110の構成例を概略的に示す図である。本実施の形態に係る制御部110では、複数のCPU110aのうちの一方のCPU110aによりLinuxのOSが実行され、他方のCPU110aによりVxWorksのOSが実行される。そこで、Linuxが実行される機能部をLinux200、VxWorksが実行される機能部をVxWorks300とする。
なお、本実施の形態では、第1OSの一例として、Linuxが用いられる。第2OSの一例として、VxWorksが用いられる。また、第1制御手段の一例として、Linux200が用いられる。言い換えると、Linux200は、OSであるLinuxに基づいて処理を実行する制御手段として捉えることができる。さらに、第2制御手段の一例として、VxWorks300が用いられる。言い換えると、VxWorks300は、OSであるVxWorksに基づいて処理を実行する制御手段として捉えることができる。
まず、Linux200の構成について説明する。
Linux200は、アプリケーション210、OS間通信部220、SWIP230を有する。本実施の形態では、コマンド生成部の一例として、アプリケーション210が用いられる。また、コマンド送信部の一例として、OS間通信部220が用いられる。
アプリケーション210は、各種の情報処理を実行するアプリケーションソフトウェアである。アプリケーション210は、例えば、ユーザの操作を受け付けて、画像処理を実行するためのコマンド、言い換えると、VxWorks300が実行するコマンドを生成し、生成したコマンドをOS間通信部220へ送信する。
OS間通信部220は、アプリケーション210から受信したコマンドを、VxWorks300のOS間通信部320へ送信する。ここで、OS間通信部220は、アプリケーション210からコマンドを受信すると、受信したコマンドを一時的に記憶部に格納し、アプリケーション210へ応答する。また、OS間通信部220は、受信した複数のコマンドに対して制御コードを付与して、複数のコマンド及び制御コードをパッケージングする。そして、OS間通信部220は、複数のコマンド及び制御コードをパッケージングしたもの(以下、パッケージコマンドと称する)を、OS間通信部320へ送信する。
より具体的には、OS間通信部220は、VxWorks300が実行する複数のコマンドと制御コードとが予め対応付けられているテーブル(以下、制御コードテーブルと称する)を有している。言い換えると、この制御コードテーブルは、ユーザにより指示された画像処理を実行するための複数のコマンドと制御コードとが予め対応付けられているテーブルと捉えることもできる。本実施の形態において、制御コードテーブルは、対応関係の一例として用いられる。
そして、OS間通信部220は、制御コードテーブルを参照して、一時的に記憶部に格納した複数のコマンドに対応する制御コードが存在するか否かを判定する。OS間通信部220は、一時的に記憶部に格納した複数のコマンドに対応する制御コードが存在すると判定した場合、一時的に記憶部に格納した複数のコマンド(即ち、アプリケーション210から受信した複数のコマンド)に対して、特定した制御コードを付与して、パッケージコマンドを生成する。
なお、制御コードには、パッケージコマンドに含まれる複数のコマンドの実行手順が定められている。実行手順としては、例えば、パッケージコマンドに含まれる各コマンドを実行する順番、パッケージコマンドに含まれる各コマンドの実行を終了する条件などが例示される。また、実行手順として、例えば、パッケージコマンドに含まれる一のコマンドの実行に成功した場合に次に実行されるコマンドや、パッケージコマンドに含まれる一のコマンドの実行に失敗した場合に次に実行されるコマンド等を定めても良い。制御コードの詳細については後述する。
また、後述するように、VxWorks300のOS間通信部320も、OS間通信部220と同様に、デバイスドライバ310にて生成されたコマンド及び制御コードをパッケージングしたパッケージコマンドを生成する。そこで、OS間通信部220は、VxWorks300のOS間通信部320から、このパッケージコマンドを受信する。OS間通信部220は、OS間通信部320からパッケージコマンドを受信すると、受信したパッケージコマンドに含まれる制御コードに基づいて、パッケージコマンドに含まれる各コマンドを実行する順番を把握する。そして、OS間通信部220は、把握した順番に従ってパッケージコマンドの中から1個ずつコマンドを取り出して、取り出したコマンドを解析し、レジスタの値を操作する関数をSWIP230へ送信する。
ここで、OS間通信部220は、関数をSWIP230に送る毎に、SWIP230からその関数の処理結果を受け取る。そして、OS間通信部220は、受け取った処理結果と制御コードとを照らし合わせて、以降の処理を行う。より具体的には、OS間通信部220は、受け取った処理結果と制御コードとに基づいて、例えば、パッケージコマンドに含まれるコマンドを引き続き実行したり、パッケージコマンドの処理を終了したりする。
SWIP230は、OS間通信部220から、レジスタの値を操作する関数を受け取り、受け取った関数に従ってレジスタの値を操作して画像処理を行う。そして、SWIP230は、画像処理の処理結果をOS間通信部220へ送信する。この処理結果には、SWIP230における画像処理が成功したか否かを示す情報が含まれている。
次に、VxWorks300の構成について説明する。VxWorks300は、デバイスドライバ310、OS間通信部320を有する。
OS間通信部320は、Linux200のOS間通信部220から、OS間通信部220にて生成されたパッケージコマンドを受信する。OS間通信部320は、パッケージコマンドを受信すると、受信したパッケージコマンドに含まれる制御コードに基づいて、パッケージコマンドに含まれる各コマンドを実行する順番を把握する。そして、OS間通信部320は、把握した順番に従ってパッケージコマンドの中から1個ずつコマンドを取り出して、取り出したコマンドをデバイスドライバ310へ送信する。
ここで、OS間通信部320は、コマンドをデバイスドライバ310に送る毎に、デバイスドライバ310からそのコマンドの処理結果を受け取る。そして、OS間通信部320は、受け取った処理結果と制御コードとを照らし合わせて、以降の処理を行う。より具体的には、OS間通信部320は、受け取った処理結果と制御コードとに基づいて、例えば、パッケージコマンドに含まれるコマンドを引き続きデバイスドライバ310へ送信したり、パッケージコマンドの処理を終了したりする。
また、後述するように、デバイスドライバ310は、OS間通信部320から受信したコマンドを処理することにより、SWIP230にて実行させるコマンドを生成する。即ち、OS間通信部320は、デバイスドライバ310によるコマンドの処理結果として、SWIP230にて実行させるコマンドを受信する。そこで、OS間通信部320は、デバイスドライバ310から、SWIP230にて実行させるコマンドを受信すると、受信したコマンドを一時的に記憶部に格納する。そして、OS間通信部320は、受信した複数のコマンドに対して制御コードを付与して、複数のコマンド及び制御コードをパッケージングしたパッケージコマンドをOS間通信部220へ送信する。
ここで、OS間通信部320は、OS間通信部220と同様に、Linux200が実行する複数のコマンドと制御コードとが予め対応付けられている制御コードテーブルを有している。そして、OS間通信部320は、制御コードテーブルを参照して、一時的に記憶部に格納した複数のコマンドに対応する制御コードが存在するか否かを判定する。OS間通信部320は、一時的に格納した複数のコマンドに対応する制御コードが存在すると判定した場合、一時的に格納した複数のコマンド(即ち、デバイスドライバ310から受信した複数のコマンド)に対して、特定した制御コードを付与して、パッケージコマンドを生成する。
デバイスドライバ310は、電子装置の内部に装着された装置や、外部に接続した機器を制御するためのソフトウェアであり、VxWorks300がこのような装置・機器を制御するための橋渡しを行うものである。このデバイスドライバ310は、VxWorks300に組み込まれて、Linux200のSWIP230を制御する。
より具体的には、デバイスドライバ310は、OS間通信部320から受信したコマンドを解析して、Linux200のSWIP230にて実行させるコマンドを生成する。そして、デバイスドライバ310は、生成したコマンドをOS間通信部320へ送信する。
<制御コードの説明>
次に、制御コードについて詳細に説明する。図7−1及び図7−2は、本実施の形態に係る制御コードテーブルの一例を示す図である。図7−1に示す制御コードテーブルは、OS間通信部220が有する制御コードテーブルの一例である。また、図7−2に示す制御コードテーブルは、OS間通信部320が有する制御コードテーブルの一例である。
図7−1に示す制御コードテーブルにおいて、例えば、制御コード21には、コマンド1〜コマンド3についての実行手順が定められている。より具体的には、例えば、「最初に実行するコマンドは、コマンド1であること」が定められている。また、例えば、「コマンド1の処理が成功した場合には、次にコマンド2を実行すること」、「コマンド2の処理が成功した場合には、次にコマンド3を実行すること」、「コマンド3の処理が成功した場合には、パッケージコマンドの処理が成功したものとして終了すること」が定められている。さらに、例えば、「コマンド1の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」、「コマンド2の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」、「コマンド3の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」が定められている。
また、例えば、制御コード22には、コマンドa〜cについての実行手順が定められている。より具体的には、例えば、「最初に実行するコマンドは、コマンドaであること」が定められている。また、例えば、「コマンドaの処理が成功した場合には、次にコマンドbを実行すること」、「コマンドbの処理が成功した場合には、次にコマンドcを実行すること」、「コマンドcの処理が成功した場合には、パッケージコマンドの処理が成功したものとして終了すること」が定められている。さらに、例えば、「コマンドaの処理が失敗した場合には、次にコマンドcを実行すること」、「コマンドbの処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」、「コマンドcの処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」が定められている。なお、ここでは、コマンドaの処理が失敗した場合にコマンドcを実行することとしたが、コマンドaの代替となるコマンドの一例として、コマンドa〜コマンドcとは別のコマンドdを実行することが定められていても良い。
このようにして、OS間通信部220が有する制御コードテーブルには、アプリケーション210から受信する複数のコマンドと制御コードとが予め対応付けられている。そして、制御コードには、例えば、複数のコマンドを実行する順番、複数のコマンドの実行を終了する条件等が定められている。また、例えば、複数のコマンドのうちの一のコマンドの実行に成功した場合に次に実行されるコマンドや、複数のコマンドのうちの一のコマンドの実行に失敗した場合に次に実行されるコマンド等が定められている。
また、図7−2のOS間通信部320が有する制御コードテーブルでは、図7−1のOS間通信部220が有する制御コードテーブルと同様に、デバイスドライバ310から受信する複数のコマンドと制御コードとが予め対応付けられている。
例えば、制御コード31には、コマンド4〜コマンド6についての実行手順が定められている。より具体的には、例えば、「最初に実行するコマンドは、コマンド4であること」が定められている。また、例えば、「コマンド4の処理が成功した場合には、次にコマンド5を実行すること」、「コマンド5の処理が成功した場合には、次にコマンド6を実行すること」、「コマンド6の処理が成功した場合には、パッケージコマンドの処理が成功したものとして終了すること」が定められている。さらに、例えば、「コマンド4の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」、「コマンド5の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」、「コマンド6の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」が定められている。
また、例えば、制御コード32には、コマンドd〜fについての実行手順が定められている。より具体的には、例えば、「最初に実行するコマンドは、コマンドdであること」が定められている。また、例えば、「コマンドdの処理が成功した場合には、次にコマンドeを実行すること」、「コマンドeの処理が成功した場合には、次にコマンドfを実行すること」、「コマンドfの処理が成功した場合には、パッケージコマンドの処理が成功したものとして終了すること」が定められている。さらに、例えば、「コマンドdの処理が失敗した場合には、次にコマンドfを実行すること」、「コマンドeの処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」、「コマンドfの処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」が定められている。なお、ここでは、コマンドdの処理が失敗した場合にコマンドfを実行することとしたが、コマンドdの代替となるコマンドの一例として、コマンドd〜コマンドfとは別のコマンドgを実行することが定められていても良い。
このようにして、OS間通信部320が有する制御コードテーブルには、デバイスドライバ310から受信する複数のコマンドと制御コードとが予め対応付けられている。そして、制御コードには、例えば、複数のコマンドを実行する順番、複数のコマンドの実行を終了する条件等が定められている。また、例えば、複数のコマンドのうちの一のコマンドの実行に成功した場合に次に実行されるコマンドや、複数のコマンドのうちの一のコマンドの実行に失敗した場合に次に実行されるコマンド等が定められている。
<画像処理装置における一連の処理の説明>
次に、本実施の形態に係る画像処理装置100における一連の処理の流れについて説明する。図8は、本実施の形態に係る画像処理装置100における一連の処理の流れの一例を説明するための図である。図8に示す例では、アプリケーション210が3個のコマンドを送信し、OS間通信部220が3個のコマンドをパッケージングしてパッケージコマンドを生成するものとして説明する。なお、この3個のコマンドを、「コマンド1」、「コマンド2」、「コマンド3」とする。また、OS間通信部220は図7−1に示す制御コードテーブルを有し、OS間通信部320は図7−2に示す制御コードテーブルを有しているものとする。
まず、例えば、ユーザがアプリケーション210により画像処理の指示を行った場合、アプリケーション210は、指示された画像処理を実行するためのコマンド1〜コマンド3をOS間通信部220へ送信する。ここで、アプリケーション210は、まず、1個目のコマンド1をOS間通信部220へ送信する(ステップ101)。次に、OS間通信部220は、受信したコマンド1を一時的に記憶部に格納し、アプリケーション210へ応答する(ステップ102)。次に、アプリケーション210は、2個目のコマンド2をOS間通信部220へ送信する(ステップ103)。次に、OS間通信部220は、受信したコマンド2を一時的に記憶部に格納し、アプリケーション210へ応答する(ステップ104)。次に、アプリケーション210は、3個目のコマンド3をOS間通信部220へ送信する(ステップ105)。
ここで、制御コードテーブルには、3個のコマンド(コマンド1〜3)に対応する制御コードが存在する。そこで、OS間通信部220は、制御コードテーブルを参照した結果、一時的に記憶部に格納した3個のコマンド(コマンド1〜3)に対応する制御コードが存在すると判定し、その制御コードを特定する。次に、OS間通信部220は、3個のコマンドに対して、特定した制御コードを付与してパッケージングする。そして、OS間通信部220は、生成したパッケージコマンドをVxWorks300のOS間通信部320へ送信する(ステップ106)。なお、図8に示す例では、図7−1に示す制御コード21が付与される。
次に、OS間通信部320は、受信したパッケージコマンドに含まれる制御コード21に基づいて、パッケージコマンドに含まれる各コマンドを実行する順番を把握する。そして、OS間通信部320は、把握した順番に従ってパッケージコマンドの中から1個ずつコマンドを取り出して、取り出したコマンドをデバイスドライバ310へ送信する。ここで、OS間通信部320は、まず、1つ目のコマンド1をデバイスドライバ310へ送信する(ステップ107)。
次に、デバイスドライバ310は、コマンド1を解析して、Linux200のSWIP230にて実行させる1つ目のコマンド(図示の例では、コマンド4とする)を生成する。そして、デバイスドライバ310は、生成したコマンド4をOS間通信部320へ送信する(ステップ108)。次に、OS間通信部320は、コマンド1の処理結果と制御コード21とを照らし合わせて、以降の処理を行う。ここでは、コマンド4が生成されており、コマンド1の処理結果は成功なので、OS間通信部320は、次にコマンド2を実行することを決定する。そして、OS間通信部320は、2つ目のコマンド2をデバイスドライバ310へ送信する(ステップ109)。
次に、デバイスドライバ310は、コマンド2を解析して、Linux200のSWIP230にて実行させる2つ目のコマンド(図示の例では、コマンド5とする)を生成する。そして、デバイスドライバ310は、生成したコマンド5をOS間通信部320へ送信する(ステップ110)。次に、OS間通信部320は、コマンド2の処理結果と制御コード21とを照らし合わせて、以降の処理を行う。ここでは、コマンド5が生成されており、コマンド2の処理結果は成功なので、OS間通信部320は、次にコマンド3を実行することを決定する。そして、OS間通信部320は、3つ目のコマンド3をデバイスドライバ310へ送信する(ステップ111)。
次に、デバイスドライバ310は、コマンド3を解析して、Linux200のSWIP230にて実行させる3つ目のコマンド(図示の例では、コマンド6とする)を生成する。そして、デバイスドライバ310は、生成したコマンド6をOS間通信部320へ送信する(ステップ112)。次に、OS間通信部320は、コマンド3の処理結果と制御コード21とを照らし合わせて、以降の処理を行う。ここでは、コマンド6が生成されており、コマンド3の処理結果は成功なので、OS間通信部320は、パッケージコマンドの処理を終了することを決定する。これにより、OS間通信部220が生成したパッケージコマンドについての処理は終了する。次に、デバイスドライバ310により生成された3個のコマンド(即ち、コマンド4〜6)を含むパッケージコマンドについての処理が行われる。
ここで、制御コードテーブルには、3個のコマンド(コマンド4〜6)に対応する制御コードが存在する。そこで、OS間通信部320は、制御コードテーブルを参照した結果、一時的に記憶部に格納した3個のコマンド(コマンド4〜6)に対応する制御コードが存在すると判定し、その制御コードを特定する。次に、OS間通信部320は、3個のコマンドに対して、特定した制御コードを付与してパッケージングする。そして、OS間通信部320は、生成したパッケージコマンドをLinux200のOS間通信部220へ送信する(ステップ113)。なお、図8に示す例では、図7−2に示す制御コード31が付与される。
次に、OS間通信部220は、受信したパッケージコマンドに含まれる制御コード31に基づいて、パッケージコマンドに含まれる各コマンドを実行する順番を把握する。そして、OS間通信部220は、把握した順番に従ってパッケージコマンドの中から1個ずつコマンドを取り出して、取り出したコマンドを解析し、レジスタの値を操作する関数をSWIP230へ送信する。ここで、OS間通信部220は、まず、1つ目のコマンド4を解析して、レジスタの値を操作する関数をSWIP230へ送信する(ステップ114)。
次に、SWIP230は、コマンド4に基づく関数に従って画像処理を行い、その処理結果をOS間通信部220へ送信する(ステップ115)。この処理結果には、SWIP230における画像処理が成功したか否かを示す情報が含まれている。次に、OS間通信部220は、処理結果と制御コード31とを照らし合わせて、以降の処理を行う。ここで、処理結果が成功であれば、OS間通信部220は、次に、2つ目のコマンド5を実行することを決定する。そして、OS間通信部220は、コマンド5を解析し、レジスタの値を操作する関数をSWIP230へ送信する(ステップ116)。
次に、SWIP230は、コマンド5に基づく関数に従って画像処理を行い、その処理結果をOS間通信部220へ送信する(ステップ117)。次に、OS間通信部220は、処理結果と制御コード31とを照らし合わせて、以降の処理を行う。ここで、処理結果が成功であれば、OS間通信部220は、次に、3つ目のコマンド6を実行することを決定する。そして、OS間通信部220は、コマンド6を解析し、レジスタの値を操作する関数をSWIP230へ送信する(ステップ118)。
次に、SWIP230は、コマンド6に基づく関数に従って画像処理を行い、その処理結果をOS間通信部220へ送信する(ステップ119)。次に、OS間通信部220は、処理結果と制御コード31とを照らし合わせて、以降の処理を行う。ここで、処理結果が成功であれば、OS間通信部220は、パッケージコマンドの処理を終了することを決定する。そして、OS間通信部220は、コマンド4〜6の処理が成功したことを示す応答コマンドを、VxWorks300のOS間通信部320へ送信する(ステップ120)。
次に、OS間通信部320は、応答コマンドをデバイスドライバ310へ送信する(ステップ121)。次に、デバイスドライバ310は、アプリケーション210への応答コマンドをOS間通信部320へ送信する(ステップ122)。ここで、アプリケーション210への応答コマンドには、画像処理に成功した旨を示す情報が含まれる。次に、OS間通信部320は、アプリケーション210への応答コマンドを、Linux200のOS間通信部220へ送信する(ステップ123)。次に、OS間通信部220は、アプリケーション210への応答コマンドを、アプリケーション210へ送信する(ステップ124)。そして、画像処理装置100における一連の処理は終了する。
このように、本実施の形態において、SWIP方式にて例えば3個のコマンドを処理する場合、VxWorks300は、3個のコマンドのそれぞれを実行する度にコマンドの実行結果をLinux200へ送信するのではなく、3個のコマンドの処理が終了した後にその処理結果をLinux200へ送信する。また、Linux200も、受信したパッケージコマンドの処理が終了した後にその処理結果をVxWorks300へ送信する。そして、ステップ106、ステップ113、ステップ120、ステップ123においてOS間通信が行われる。言い換えると、アプリケーション210にて生成された3個のコマンドを処理するために、4回のOS間通信が行われる。図1に示す従来のASIC方式では、3個のコマンドを処理する場合、上述したように、6回のOS間通信が行われる。また、図2に示す従来のSWIP方式では、3個のコマンドを処理する場合、上述したように、12回のOS間通信が行われる。
一方、本実施の形態において、制御部110は、複数のコマンドに制御コードを付与してパッケージコマンドを生成し、パッケージコマンドから1個ずつコマンドを取り出して実行する。また、制御部110は、コマンドの処理結果と制御コードとに基づいて、以降の処理を行う。このようにして、制御コードを付与して複数のコマンドを処理することにより、例えば、従来のASIC方式及びSWIP方式のようにコマンド毎にOS間通信が発生する構成と比較して、OS間通信の回数が削減され、全体の処理時間が短縮される。言い換えると、本実施の形態では、例えば、従来のASIC方式及びSWIP方式と比較して、画像処理についての生産性の低下が抑制される。
ここで、図8に示す例では、パッケージコマンドに含まれる各コマンド(コマンド1〜6)のそれぞれの処理が成功した場合を示したが、コマンドの処理が失敗する場合も考えられる。そこで、コマンドの処理が失敗した場合について説明する。
図7−1に示す制御コード21では、コマンド1について、「コマンド1の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」が定められている。ここで、コマンド1の処理が失敗した場合、言い換えると、ステップ108でコマンド4の生成に失敗した場合、デバイスドライバ310は、コマンド1による処理に失敗した旨を示す情報をOS間通信部320へ送信する。次に、OS間通信部320は、コマンド1の処理結果が失敗なので、2つ目のコマンド2をデバイスドライバ310へ送信せずに、パッケージコマンドの処理が失敗したものとして終了する。このように、パッケージコマンドの処理が終了した場合、以降のステップ109〜ステップ122の処理は行われず、ステップ123において、OS間通信部320は、アプリケーション210への応答コマンドをLinux200のOS間通信部220へ送信する。この応答コマンドには、画像処理に失敗した旨を示す情報が含まれる。
また、図7−2に示す制御コード31では、コマンド4について、「コマンド4の処理が失敗した場合には、パッケージコマンドの処理が失敗したものとして終了すること」が定められている。ここで、コマンド4に基づく画像処理が失敗した場合、ステップ115において、SWIP230は、コマンド4に基づく画像処理に失敗した旨の処理結果をOS間通信部220へ送信する。次に、OS間通信部220は、処理結果が失敗なので、2つ目のコマンド5をSWIP230へ送信せずに、パッケージコマンドの処理を終了する。このように、パッケージコマンドの処理が終了した場合、以降のステップ116〜ステップ119の処理は行われず、ステップ120において、OS間通信部220は、コマンド4〜6の処理が失敗したことを示す応答コマンドをVxWorks300のOS間通信部320へ送信する。その後、ステップ121〜ステップ124では、OS間通信部320、デバイスドライバ310、OS間通信部220、アプリケーション210において、処理が失敗したことを示す応答コマンドが送受信される。
また、例えば、図7−1に示す制御コード22のコマンドaや、図7−2に示す制御コード32のコマンドdのように、コマンドの処理が成功した場合に次に実行されるコマンドと、コマンドの処理が失敗した場合に次に実行されるコマンドとが異なっても良い。この場合、コマンドの処理結果に応じて、次に実行されるコマンドが変わることになる。
より具体的には、図8に示す例において、例えば、コマンド1について、「コマンド1の処理結果が成功の場合には、次にコマンド2を実行すること」、「コマンド1の処理結果が失敗の場合には、次にコマンド3を実行すること」が定められているとする。この場合、コマンド1の処理が失敗した場合には、ステップ109及びステップ110の処理は行われず、ステップ111の処理が行われる。即ち、OS間通信部320は、デバイスドライバ310に対して、2つ目のコマンド2を送信せずに、3つ目のコマンド3を送信する。この後、OS間通信部320は、コマンド1により生成されたコマンド4、及びコマンド3により生成されたコマンド6に対して、制御コードを付与してパッケージングする。そして、ステップ113において、OS間通信部320は、生成したパッケージコマンドをLinux200のOS間通信部220へ送信する。
また、図8に示す例において、例えば、コマンド4について、「コマンド4の処理結果が成功の場合には、次にコマンド5を実行すること」、「コマンド4の処理結果が失敗の場合には、次にコマンド6を実行すること」が定められているとする。この場合、コマンド4の処理が失敗した場合には、ステップ116及びステップ117の処理は行われず、ステップ118の処理が行われる。即ち、OS間通信部220は、2つ目のコマンド5を解析せずに、3つ目のコマンド6を解析して、コマンド6に基づく関数をSWIP230へ送信する。この後、コマンド6に基づく関数の処理が成功した場合には、パッケージコマンドの処理は成功したこととなり、ステップ120において、OS間通信部320は、コマンド4〜6の処理が成功したことを示す応答コマンドを、VxWorks300のOS間通信部320へ送信する。
<パッケージコマンドの処理の説明>
図9を参照しながら、さらに、本実施の形態に係るパッケージコマンドの処理について説明する。図9は、本実施の形態に係るパッケージコマンドの処理の一例を説明するための図である。図9に示す例では、図8に示す例と同様に、アプリケーション210が3個のコマンド(コマンド1〜3)を送信し、OS間通信部220が3個のコマンドをパッケージングしてパッケージコマンドを生成するものとする。また、以下に示すステップ、及び図9に示すステップは、図8の各ステップに対応する。
まず、アプリケーション210は、コマンド1〜3を1個ずつOS間通信部220へ送信する(ステップ101〜ステップ105)。次に、OS間通信部220は、制御コードテーブルを参照して、3個のコマンド(コマンド1〜3)に対応する制御コードを付与してパッケージングする。そして、OS間通信部220は、パッケージコマンドをVxWorks300のOS間通信部320へ送信する(ステップ106)。なお、図9に示す例では、図7−1に示す制御コード21が付与されるものとする。
次に、OS間通信部320は、受信したパッケージコマンドに含まれる制御コード21に基づいて、1つ目のコマンド1を取り出して、デバイスドライバ310へ送信する(ステップ107)。次に、デバイスドライバ310は、コマンド1を解析して、Linux200のSWIP230にて実行させる1つ目のコマンド(図8と同様に、コマンド4とする)を生成する。そして、デバイスドライバ310は、生成したコマンド4をOS間通信部320へ送信する(ステップ108)。
次に、OS間通信部320は、コマンド1の処理結果と制御コード21とを照らし合わせて、コマンド2を実行することを決定する。そして、OS間通信部320は、コマンド2をデバイスドライバ310へ送信する(ステップ109)。次に、デバイスドライバ310は、コマンド2を解析して、Linux200のSWIP230にて実行させる2つ目のコマンド(図8と同様に、コマンド5とする)を生成する。そして、デバイスドライバ310は、生成したコマンド5をOS間通信部320へ送信する(ステップ110)。
次に、OS間通信部320は、コマンド2の処理結果と制御コード21とを照らし合わせて、コマンド3を実行することを決定する。そして、OS間通信部320は、コマンド3をデバイスドライバ310へ送信する(ステップ111)。次に、デバイスドライバ310は、コマンド3を解析して、Linux200のSWIP230にて実行させる3つ目のコマンド(図8と同様に、コマンド6とする)を生成する。そして、デバイスドライバ310は、生成したコマンド6をOS間通信部320へ送信する(ステップ112)。
このように、アプリケーション210が送信したコマンドに対して制御コードが付与され、パッケージングされる。また、制御コードに定められた実行手順に従ってパッケージコマンドの中のコマンドが順番に取り出されて、実行される。なお、図9にはステップ101〜ステップ112の処理しか示していないが、ステップ112の処理の後、図8のステップ113以降の処理が行われる。
なお、本実施の形態において、画像処理装置100はSWIP230を有するものとしたが、このような構成に限られるものではない。例えば、図1に示すようなASICを有するマルチプロセッサ構成の画像処理装置においてもOS間通信は行われるため、このようなOS間通信に対しても、本実施の形態を適用することができる。
また、本実施の形態では、Linux及びVxWorksにおけるOS間通信について説明したが、このような構成に限られるものではない。Linux、VxWorksではない他のOSでOS間通信が行われる場合にも、本実施の形態を適用することができる。
さらに、本実施の形態を画像処理装置100に適用した例について説明したが、本実施の形態の適用対象は画像処理装置100に限定されない。マルチプロセッサ構成の電子装置であって、個々のCPUが使用するメモリ(記憶部)が独立しておりOS間通信が行われる種々の機器(電子装置)であれば、本実施の形態を適用することができる。
なお、上記では種々の実施形態および変形例を説明したが、これらの実施形態や変形例どうしを組み合わせて構成してももちろんよい。
また、本開示は上記の実施形態に何ら限定されるものではなく、本開示の要旨を逸脱しない範囲で種々の形態で実施することができる。
100…画像処理装置、110…制御部、200…Linux、210…アプリケーション、220…OS間通信部、230…SWIP、300…VxWorks、310…デバイスドライバ、320…OS間通信部

Claims (6)

  1. 第1OS(Operating System)に基づいて処理を実行する第1制御手段と、第2OSに基づいて処理を実行する第2制御手段とを備え、
    前記第1制御手段は、
    前記第2制御手段が実行するコマンドを生成するコマンド生成部と、
    前記第2制御手段が実行する複数のコマンドと当該複数のコマンドの実行手順を定めた制御コードとを予め対応付けた対応関係を有し、前記コマンド生成部により生成された複数のコマンドに対応する制御コードが前記対応関係に存在する場合、当該複数のコマンドに当該制御コードを付与して前記第2制御手段へ送信するコマンド送信部とを備え、
    前記第2制御手段は、前記コマンド送信部から送信された前記複数のコマンドを受信すると、付与された前記制御コードに定められた前記実行手順に基づいて当該複数のコマンドを実行し、当該複数のコマンドのそれぞれを実行する度にコマンドの実行結果を前記第1制御手段へ送信せずに、当該複数のコマンドの処理が終了した後に、当該複数のコマンドの処理結果として、前記第1制御手段が実行する複数のコマンドに当該第1制御手段が実行する複数のコマンドの実行手順を定めた制御コードを付与して当該第1制御手段へ送信すること
    を特徴とする電子装置。
  2. 前記第2制御手段は、前記複数のコマンドのうちの一のコマンドを実行する場合、前記制御コードに定められた前記実行手順と当該一のコマンドの実行結果とにより、当該一のコマンドを実行した後の処理を行うこと
    を特徴とする請求項1に記載の電子装置。
  3. 前記第2制御手段は、前記一のコマンドの実行に成功した場合、成功した場合に実行するコマンドとして前記制御コードに定められた他のコマンドを実行し、当該一のコマンドの実行に失敗した場合、当該他のコマンドを実行せずに前記複数のコマンドの実行を終了すること
    を特徴とする請求項に記載の電子装置。
  4. 前記第2制御手段は、前記一のコマンドの実行に成功した場合、成功した場合に実行するコマンドとして前記制御コードに定められたコマンドを実行し、当該一のコマンドの実行に失敗した場合、失敗した場合に実行するコマンドとして当該制御コードに定められたコマンドを実行すること
    を特徴とする請求項に記載の電子装置。
  5. 第1OS(Operating System)に基づいて処理を実行する第1制御手段と、
    第2OSに基づいて処理を実行する第2制御手段とを備え、
    前記第1制御手段は、前記第2制御手段が実行する複数のコマンド及び当該複数のコマンドの実行手順を定めた制御コードをまとめて当該第2制御手段へ送信し、
    前記第2制御手段は、前記第1制御手段から受信した前記制御コードの前記実行手順を基に前記複数のコマンドを実行し、当該複数のコマンドのそれぞれを実行する度にコマンドの実行結果を前記第1制御手段へ送信せずに、当該複数のコマンドの処理が終了した後に、当該複数のコマンドの処理結果として、当該第1制御手段が実行する複数のコマンドに当該第1制御手段が実行する複数のコマンドの実行手順を定めた制御コードを付与して当該第1制御手段へ送信すること
    を特徴とする電子装置。
  6. 第1OS(Operating System)に基づいて処理を実行する第1制御手段と、第2OSに基づいて処理を実行する第2制御手段とを備え、
    前記第1制御手段は、
    前記第2制御手段が実行するコマンドを生成するコマンド生成部と、
    ユーザにより指示された画像処理を実行するための複数のコマンドと当該複数のコマンドの実行手順を定めた制御コードとを予め対応付けた対応関係を有し、前記コマンド生成部により生成された複数のコマンドに対応する制御コードが前記対応関係に存在する場合、当該複数のコマンドに当該制御コードを付与して前記第2制御手段へ送信するコマンド送信部とを備え、
    前記第2制御手段は、前記コマンド送信部から送信された前記複数のコマンドを受信すると、付与された前記制御コードに定められた前記実行手順に基づいて当該複数のコマンドを実行し、当該複数のコマンドのそれぞれを実行する度にコマンドの実行結果を前記第1制御手段へ送信せずに、当該複数のコマンドの処理が終了した後に、当該複数のコマンドの処理結果として、当該第1制御手段が実行する複数のコマンドに当該第1制御手段が実行する複数のコマンドの実行手順を定めた制御コードを付与して当該第1制御手段へ送信すること
    を特徴とする画像処理装置。
JP2016188838A 2016-09-27 2016-09-27 電子装置及び画像処理装置 Active JP6876235B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016188838A JP6876235B2 (ja) 2016-09-27 2016-09-27 電子装置及び画像処理装置
US15/448,180 US10860392B2 (en) 2016-09-27 2017-03-02 Electronic device and image processing device
CN201710320037.6A CN107870823B (zh) 2016-09-27 2017-05-09 电子装置和图像处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016188838A JP6876235B2 (ja) 2016-09-27 2016-09-27 電子装置及び画像処理装置

Publications (2)

Publication Number Publication Date
JP2018055285A JP2018055285A (ja) 2018-04-05
JP6876235B2 true JP6876235B2 (ja) 2021-05-26

Family

ID=61685450

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016188838A Active JP6876235B2 (ja) 2016-09-27 2016-09-27 電子装置及び画像処理装置

Country Status (3)

Country Link
US (1) US10860392B2 (ja)
JP (1) JP6876235B2 (ja)
CN (1) CN107870823B (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113744116A (zh) * 2020-05-29 2021-12-03 Oppo广东移动通信有限公司 图像处理芯片和电子设备
CN112116729B (zh) * 2020-09-09 2022-07-26 天津津航计算技术研究所 一种基于VxWorks系统的机载数据采集方法
CN111935307B (zh) * 2020-09-16 2021-01-05 湖南新云网科技有限公司 硬件设备远程控制方法及装置、存储介质、透明计算系统

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4939644A (en) * 1983-05-19 1990-07-03 Data General Corporation Input/output controller for controlling the sequencing of the execution of input/output commands in a data processing system
JPS60181959A (ja) 1984-02-29 1985-09-17 Toshiba Corp マルチプロセツサシステム
CA2009780C (en) * 1989-05-17 1999-07-27 Ernest D. Baker Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems
EP0689139A3 (en) 1994-06-22 1997-09-10 Ibm Anonymous response port method and apparatus for microkernel data processing system
US6202091B1 (en) * 1997-12-08 2001-03-13 Nortel Networks Limited Process and apparatus for initializing a computer from power up
JP3971361B2 (ja) * 2003-09-30 2007-09-05 京セラミタ株式会社 デバッグ機能を備えるマルチプロセッサシステム及びマルチプロセッサシステムのプログラム
JP2007122289A (ja) * 2005-10-26 2007-05-17 Dainippon Printing Co Ltd 複数のオペレーティングシステムを実装したicカード、及び、icカードプログラム
US7882272B2 (en) * 2006-10-03 2011-02-01 Seiko Epson Corporation Media processing device and control method for a media processing
JP4989496B2 (ja) * 2008-01-15 2012-08-01 三菱電機株式会社 コマンドネット実行装置、コマンドネット実行プログラム及びコマンドネット実行プログラムを記録したコンピュータ読み取り可能な記録媒体
KR101432177B1 (ko) * 2008-01-21 2014-08-22 삼성전자주식회사 휴대용 장치 및 그 사진처리방법, 이를 포함하는사진처리시스템
JP5516398B2 (ja) * 2008-03-11 2014-06-11 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
JP2010039913A (ja) * 2008-08-07 2010-02-18 Sony Corp 通信装置、通信方法、及びプログラム
CN101739284B (zh) * 2008-11-20 2015-03-25 联想(北京)有限公司 一种信息处理装置及方法
JP4888742B2 (ja) * 2009-02-25 2012-02-29 ソニー株式会社 情報処理装置および方法、並びにプログラム
JP5549854B2 (ja) * 2009-04-14 2014-07-16 ソニー株式会社 情報処理装置および方法、並びにプログラム
US8341619B2 (en) * 2009-05-13 2012-12-25 Oracle International Corporation Simplifying installation of software modules on heterogeneous remote systems
JP5662777B2 (ja) * 2010-12-03 2015-02-04 株式会社エヌ・ティ・ティ・データ コマンド送信装置、コマンド送信プログラム、コマンド送信方法、及びコマンド通信システム
US8959492B2 (en) * 2010-12-14 2015-02-17 Ngmoco, Llc Communication protocol between a high-level language and a native language
US8504780B2 (en) * 2011-04-08 2013-08-06 Hitachi, Ltd. Computer, computer system, and data communication method
KR101845290B1 (ko) * 2011-08-25 2018-04-04 엘지전자 주식회사 장치 관리 명령을 통한 펌웨어 갱신 방법 및 장치
JP5729266B2 (ja) * 2011-11-15 2015-06-03 富士通株式会社 情報処理装置、情報処理装置の制御方法、及び情報処理装置の制御プログラム
CN103294970B (zh) * 2012-02-23 2015-12-09 纬创资通股份有限公司 双操作系统共用加密设定的方法以及电子装置
US20140043632A1 (en) * 2012-08-10 2014-02-13 Konica Minolta, Inc. Image forming apparatus, method of controlling the same, and image forming system
US9454499B2 (en) * 2013-06-11 2016-09-27 Intel Corporation Asynchronous communication between devices
JP6098389B2 (ja) * 2013-06-20 2017-03-22 富士ゼロックス株式会社 電子機器、制御装置及びプログラム
KR102301230B1 (ko) * 2014-12-24 2021-09-10 삼성전자주식회사 가상화된 gpu들에 대한 스케줄링을 수행하는 방법 및 이를 위한 디바이스
JP6413813B2 (ja) * 2015-02-04 2018-10-31 富士ゼロックス株式会社 電子機器、制御装置及びプログラム

Also Published As

Publication number Publication date
CN107870823A (zh) 2018-04-03
US20180089003A1 (en) 2018-03-29
JP2018055285A (ja) 2018-04-05
CN107870823B (zh) 2023-07-14
US10860392B2 (en) 2020-12-08

Similar Documents

Publication Publication Date Title
JP4938712B2 (ja) 印刷スケジューリングシステム及び方法
JP7330717B2 (ja) 画像形成装置及びその制御方法
JP6413813B2 (ja) 電子機器、制御装置及びプログラム
JP6876235B2 (ja) 電子装置及び画像処理装置
JP2007323641A (ja) 電子ドキュメント出力要求処理制御システムおよび方法
JP2019040528A (ja) サーバ装置及びその制御方法、プログラム、並びに印刷システム
US10402131B2 (en) Image processing apparatus and method to form image on sheet using page image data and object information
US11632482B1 (en) Information processing system capable of enabling cooperation of processing when connection with external apparatus being disconnected, information processing apparatus therefor, and non-transitory computer readable medium storing program therefor
US20180329657A1 (en) Communication apparatus, control method, and non-transitory computer-readable storage medium
US10148827B2 (en) Data transmission system and data transmission method suitable for detecting problems in image processing
KR20210125432A (ko) 정보 처리 장치, 및 정보 처리 장치에서의 컨테이너와 프로세스 사이의 통신을 제어하는 방법
JP2017184097A5 (ja)
US20230083103A1 (en) Information processing system, information processing apparatus, and non-transitory computer readable medium storing program
US10262247B2 (en) Image forming apparatus for converting print data into intermediate data, method for controlling image forming apparatus, and storage medium
US9250835B2 (en) Image forming apparatus connectable to multiple hosts and method of controlling image forming jobs of the image forming apparatus
JP5316730B1 (ja) 印刷制御装置、印刷システム及びプログラム
JP6946820B2 (ja) 電子機器、制御装置及びプログラム
JP2022122677A (ja) 情報処理装置および情報処理装置の制御方法
JP7070205B2 (ja) 記憶媒体読取装置、プログラム、印刷システム
JP6740839B2 (ja) 情報処理システム、端末装置、情報処理装置、情報処理方法、及びプログラム
JP2023130943A (ja) 情報処理装置、分散処理システムおよびプログラム
JP6288467B2 (ja) 電子機器
KR20230077686A (ko) 인쇄 장치, 그 제어 방법, 및 프로그램
JP2022177632A5 (ja)
JP2009059018A (ja) 情報処理システム、情報処理装置および情報処理システムのデータ転送方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201112

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210405

R150 Certificate of patent or registration of utility model

Ref document number: 6876235

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150