(57)【要約】【課題】  マルチコアＣＰＵを搭載した撮像装置に於いて、通信伝送の際、受信待ちの為撮像を含めた他のアプリケーションが停止あるいは待ち状態になり撮像が正常に行えなくなる。【解決手段】  プロセスをＣＰＵコアに割り付けて動作させる際に、使用するドライバ及びＩＯコントロールを同じＣＰＵコアで動作させることでハードウェアアクセスもコアに割り付ける。【選択図】  図３
2019096095.tif 000002
【特許請求の範囲】
【請求項１】
マルチコアＣＰＵを搭載し、単一のオペレーティングシステム（ＯＳ）を搭載する撮像装置であって、
ＣＰＵからアクセスされるメモリと、
インタフェースユニットと、
インタフェースによって接続されるハードウェアとを有し、
前記ＯＳはプロセスをコアに割り付けるプロセス管理部と、ＯＳ及びプロセスがインタフェースユニットを経由してアクセスする際に使用するハードウェアのドライバ部とＩＯコントロール部を有し、
前記プロセス管理部が、プロセスをコアに割り付ける際に、前記プロセスが利用するインタフェース及びハードウェアのドライバ部及びＩＯコントロール部をプロセスを割り付けたコアと同じコアに割り付け、ＯＳが動作しているコアからのドライバ及びＩＯコントロールのアクセスを禁止することを特徴とする撮像装置。
【請求項２】
前記ＯＳが非リアルタイムＯＳであることを特徴とする請求項１に記載の撮像装置。
【請求項３】
割り付けるドライバ及びＩＯコントロールは、ＯＳが動作するコアと同じコアにすでに動作状態になっていることを特徴とする請求項１に記載の撮像装置。
【請求項４】
動作するＯＳが一つであることを特徴とする請求項１に記載の撮像装置。
【請求項５】
プロセスが割り付けられたコアへロードするＩＯコントロールは、同様に割り付けられたドライバ部が利用するＩＯコントロール部の部分のみであることを特徴とする請求項１に記載の撮像装置。
【請求項６】
インタフェースがＵＳＢであることを特徴とする請求項１に記載の撮像装置。
【請求項７】
インタフェースがＣＳＩであることを特徴とする請求項１に記載の撮像装置。
【請求項８】
インタフェースがＰＣＩｅであることを特徴とする請求項１に記載の撮像装置。
【請求項９】
インタフェースに接続されるハードウェアの一つがカメラ装置であることを特徴とする請求項１に記載の撮像装置。
【請求項１０】
インタフェースに接続されるハードウェアの一つが通信装置であることを特徴とする請求項１に記載の撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は撮像装置に関する。
【背景技術】
【０００２】
昨今、スマートフォンに用いられている技術で、アプリケーションプロセッサと非リアルタイムＯＳによって構成されるシステムは、様々な機器への適応がなされている。
【０００３】
これらの技術を適用したカメラあるいはカメラ機能を有する機器も市場に出るようになってきた。これらのカメラ関係機器の特徴の一つに、ネットワークを装備してインターネットとの接続を行う点がある。これは、アプリケーションプロセッサと非リアルタイムＯＳとの組み合わせによるスマートフォンが標準的にネットワークを利用することから、機器を容易にネットワークに接続するシステムとして採用されてきている。
【０００４】
また、アプリケーションプロセッサがマルチコア化しており、非リアルタイムＯＳでも標準的に、プログラムの演算機能をプロセス毎にコアに割り付ける処理が利用できるため、組み込み機器においても、ＣＰＵの負荷を分散し、システム処理能力が低下しにくい制御を行えるようになってきている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2012-133682号公報
【特許文献２】特開2009-129112号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＣＰＵによる演算機能の分散処理は行えるが、ネットワーク処理やアプリケーションプロセッサに接続されるハードウェアへのアクセスを行う場合は、同じコア上で処理されるのが常だった。このため、ＣＰＵによる演算処理はコアへの割り付けによる分散化でシステムを圧迫することは少なくなったが、ハードウェアアクセスを多用した場合、同一コアでの処理を待つ必要があるため、全体の処理が低下することがあった。
【０００７】
これらを回避する為に、コア毎に異なるＯＳを動作させ、それぞれ別々にハードウエアへのアクセスを行うことで動作低下を回避する方法があるが、各々のプロセスは互いを利用できなくなったり、搭載するＯＳが複数になるため、保守性や装置安定性が劣る構成となってしまっていた。
【課題を解決するための手段】
【０００８】
マルチコアＣＰＵを搭載し、単一のオペレーティングシステム（ＯＳ）を搭載する撮像装置であって、ＣＰＵからアクセスされるメモリと、インタフェースユニットと、インタフェースによって接続されるハードウェアとを有し、前記ＯＳはプロセスをコアに割り付けるプロセス管理部と、ＯＳ及びプロセスがインタフェースユニットを経由してアクセスする際に使用するハードウェアのドライバ部とＩＯコントロール部を有し、前記プロセス管理部が、プロセスをコアに割り付ける際に、前記プロセスが利用するインタフェース及びハードウェアのドライバ部及びＩＯコントロール部をプロセスを割り付けたコアと同じコアに割り付け、ＯＳが動作しているコアからのドライバ及びＩＯコントロールのアクセスを禁止する。
【発明の効果】
【０００９】
非リアルタイムＯＳが立ち上がる前に機能を動作させることができるため、リアルタイムＯＳを適用した機器と同等の起動を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】マルチコアＣＰＵによる装置構成。
【図２】アプリケーションプロセスのコア分散方法。
【図３】ハードウェアアクセスのコア分散。
【図４】アプリケーションプロセス分散時の状態。
【図５】ハードウェアアクセス分散時の状態。
【発明を実施するための形態】
【００１１】
［実施例１］
図１はマルチコアプロセッサを用いた装置構成と非リアルタイムＯＳの適用を示す。本図に於いて、１０１はマルチコアＣＰＵ、１０２はマルチコアを構成するＣＰＵコア１、１０３はマルチコアを構成するＣＰＵコア２、１０４はマルチコアを構成するＣＰＵコア３、１０５はマルチコアを構成するＣＰＵコア４、１０６は各コアと外部のバスを連結するバスになる。ＣＰＵコア以外の構成として、１０７はマルチコアＣＰＵと周辺チップ、メモリを連結するバス、１０８は装置内のメモリ、１０９はＵＳＢの接続ユニット、１１０はＰＣＩｅの接続ユニット、１１１はＣＳＩの接続ユニット、１１２はＧＰＵユニット、 である。
【００１２】
これらのバスやインタフェースに接続されるユニットとして、１１３はＵＳＢで接続するカメラユニット、１１４はＵＳＢで接続されるＷｉ−Ｆｉユニット、１１５はＵＳＢで接続されるＧＰＳユニット、１１６はＵＳＢで接続されるセンサーユニット、１１７はＰＣＩｅで接続されるカメラユニット、１１８はＣＳＩ／ＭＩＰＩで接続されるカメラユニット、１１９はＣＳＩで接続されるカメラユニットである。
【００１３】
このようなシステムで利用するソフトウェアとして、１２０は非リアルタイムＯＳ（オペレーティングシステム）、１２１はプロセスの実行を管理するプロセス管理部、１２２はＰＣＩｅのカメラを利用する撮像アプリケーション、１２３はＷｉ−Ｆｉを利用する通信アプリケーション、１２４はドライバ及びハードウェアクセス制御部、１２５はＣＰＵコア１上にロードされて動作するＯＳのバイナリ、１２６はＣＰＵコア２上にロードされて動作する撮像アプリケーションのバイナリ、１２７はＣＰＵコア４上にロードされて動作する通信アプリケーションのバイナリである。
【００１４】
本図に示した構成において、本発明を適用しない場合のプロセスの分散及び状態について図２、及び図４用いて説明する。図２に於いて、ハードウェアの構成として２０１はマルチコアＣＰＵを構成するＣＰＵコア１、２０２はマルチコアＣＰＵを構成するＣＰＵコア２、２０３はマルチコアＣＰＵを構成するＣＰＵコア４、２０４はカメラユニット、２０５は通信ユニット、である。ソフトウェアの構成として、２０６はプロセス管理部、２０７はカメラユニットドライバ部、２０８は通信ユニットドライバ部、２０９はＩＯコントロール部、２１０は撮像アプリケーション、２１１はカメラユニットアクセス部、２１２は通信アプリケーション、２１３は通信ユニットアクセス部である。
【００１５】
２１４はＣＰＵコア２へのロード指示、２１５はカメラユニットドライバ部へのアクセス、２１６はカメラユニットへのアクセス、２１７はＣＰＵコア４へのロード指示、２１８は通信ユニットドライバ部へのアクセス、２１９は通信ユニットへのアクセスである。ＣＰＵコア１上で動作しているＯＳにおいて、撮像アプリケーションを動作する場合、プロセス管理部によって、ＣＰＵコア２に撮像アプリケーションのロード指示が発行され、ＣＰＵコア２上で撮像アプリケーションは動作する。
【００１６】
撮像アプリケーションがカメラユニットへアクセスし撮像データを受信する際、カメラユニットドライバ部及び該ドライバが利用するＩＯコントロール部経由してカメラユニットの制御と撮像データの受信が行える。この時、ＣＰＵコア２上で動作しているのは撮像アプリケーションであり、該ドライバ部及び該ＩＯコントロール部はＣＰＵコア１上で動作する。その為、撮像データはＣＰＵコア１を経由してＣＰＵコア２の撮像アプリケーションは受け取る。
【００１７】
撮像アプリケーションが動作中に、通信アプリケーションを動作させるときに、ＣＰＵコア１はＣＰＵコア４に通信アプリケーションロードするように指示を行う。ＣＰＵコア４上で動作する通信アプリケーションは、通信に伴うデータ処理などの演算はＣＰＵコア４で行うが、通信ユニットを利用する際には、ＣＰＵコア１の通信ユニットドライバ部及びＩＯコントロール部を経由して制御し、データの送受信を行う。
【００１８】
以上の動作を行っている際の、各ＣＰＵコア、各アプリケーション、撮像ユニット、通信ユニットの状態を図４に示す。図４に於いて、４０１は撮像アプリケーションの状態遷移、４０２は通信アプリケーションの状態遷移、４０３はＣＰＵコア１の使用状態遷移、４０４はＣＰＵコア２の使用状態遷移、４０５はＣＰＵコア４の使用状態遷移、４０６は撮像ユニットの状態遷移、４０７は通信ユニットの状態遷移である。
【００１９】
４０８は撮像データ受信及びデータ処理状態、４０９は撮像データ受信待ちの状態、４１０は通信に関する演算処理状態、４１１は送信処理の状態、４１２は受信待ちの状態、４１３はカメラユニット制御中の状態、４１４は通信ユニット制御中の状態、４１５は撮像アプリケーションの演算処理中の状態、４１６は撮像アプリケーションが停止している状態、４１７は通信アプリケーションの演算処理中の状態、４１８は通信アプリケーションが停止している状態、４１９は撮像ユニットが撮像データを出力している状態、４２０は通信ユニットが動作している状態、である。
【００２０】
通信アプリケーションが通信ユニットを経てデータの送受信をしようとすると、ＣＰＵコア１では一時的にカメラユニットの制御を停止し、通信ユニットの制御を行う。通信ユニットが受信待ちの時、通信ユニットは停止することなく受信状態を維持する為、ＣＰＵコア１も通信ユニットからの受信を待つ状態になる。この時に、通信ユニットを停止できない為、カメラユニットの制御も停止しており、ＣＰＵコア１、ＣＰＵコア２、ＣＰＵコア４共に、通信ユニットの受信まで動作を停止する状態が発生する。
【００２１】
図３に本発明を適用した図を示す。図３に於いて、ハードウェアの構成として、３０１はマルチコアＣＰＵを構成するＣＰＵコア１、３０２はマルチコアＣＰＵを構成するＣＰＵコア２、３０３はマルチコアＣＰＵを構成するＣＰＵコア４、３０４はカメラユニット、３０５は通信ユニットである。ソフトウェアの構成として、３０６はプロセス管理部、３０７は撮像アプリケーション、３０８はカメラユニットドライバ部へのアクセス部、３０９はカメラユニットドライバ部、３１０はカメラユニットアクセスのみのＩＯコントロール部、３１２は通信アプリケーションである。
【００２２】
３１３は通信ユニットドライバ部へのアクセス部、３１４は通信ユニットドライバ部、３１５は通信ユニットアクセスのみのＩＯコントロール部、３２３はハードウェアアクセス管理部、３２４はすべてのＩＯコントロール部である。
【００２３】
３１１はカメラユニットへのアクセス、３１６は通信ユニットへのアクセス、３１７はＣＰＵコア２へのアプリケーションロード指示、３１８はＣＰＵコア２へのドライバ部ロード指示、３１９はＣＰＵコア２へのＩＯコントロール部ロード指示、３２０はＣＰＵコア４へのアプリケーションロード指示、３２１はＣＰＵコア４へのドライバ部ロード指示、３２２はＣＰＵコア４へのＩＯコントロール部ロード指示である。
【００２４】
ＣＰＵコア１上で動作しているＯＳにおいて、撮像アプリケーションを動作する場合、プロセス管理部によって、ＣＰＵコア２に撮像アプリケーションのロード指示が発行され、ＣＰＵコア２上で撮像アプリケーションは動作する。この時、ハードウェアアクセス管理部は撮像アプリケーションが利用するカメラユニットドライバ部及びＩＯコントロール部のカメラユニットドライバ部が利用する部分のみをＣＰＵコア２にロードする。
【００２５】
ＣＰＵコア２にロードした部分はＣＰＵコア１上ですでにロードされていた部分となっており、これらをＣＰＵコア２へロードした際に、ＣＰＵコア１では、当該ドライバ及びＩＯコントロールへのアクセスを禁止する。ＣＰＵコア２で動作している撮像アプリケーションは撮像データをカメラユニットから受け取る際に、ＣＰＵコア２のみで受け取ることができる。撮像アプリケーションが動作している最中に、通信アプリケーションを動作させる際に、プロセス管理部は通信アプリケーションをＣＰＵコア４へロードする。
【００２６】
ハードウァエアクセス管理部は、通信アプリケーションが利用する通信ユニットドライバ部及びＩＯコントロール部の通信ユニットドライバ部が利用する部分のみをＣＰＵコア４にロードする。ＣＰＵコア４にロードした部分はＣＰＵコア１上ですでにロードされていた部分となっており、これらをＣＰＵコア４へロードした際に、ＣＰＵコア１では、当該ドライバ及びＩＯコントロールへのアクセスを禁止する。ＣＰＵコア４で動作している通信アプリケーションは通信ユニットへの送受を行う際に、ＣＰＵコア４のみで送受することができる。
【００２７】
これらの状態を図５に示す。図５に於いて、５０１は撮像アプリケーションの状態遷移、５０２は通信アプリケーションの状態遷移、５０３はＣＰＵコア１の使用状態遷移、５０４はＣＰＵコア２の使用状態遷移、５０５はＣＰＵコア４の使用状態遷移、５０６は撮像ユニットの状態遷移、５０７は通信ユニットの状態遷移である。５０８は撮像データ受信及びデータ処理状態、５０９は通信に関する演算処理状態、５１０は送信処理の状態、５１１は受信待ちの状態、５１２は撮像アプリケーションの演算処理中及びカメラユニット制御中の状態である。
【００２８】
５１３は通信アプリケーションの演算処理中及び通信ユニット制御中の状態、５１４は撮像ユニットが撮像データを出力している状態、５１５は通信ユニットが動作している状態、である。撮像アプリケーションがカメラユニットからのデータを受信あるいは制御している間であっても、通信アプリケーションが通信ユニットへアクセスによってデータ受信待ちが発生しない。
【００２９】
以上述べたように、プロセスをＣＰＵコアに割り付ける際に、割り付けたプロセスが使用する周辺機器のドライバ及び非リアルタイムＯＳが保有するＩＯコントロール部も割りつけたＣＰＵコアへロードすることで、ハードウェアアクセスの影響を受けることなく割りつけたられたプロセスが動作するため、ハードウェアアクセスの対抗やハードウェアからのデータ待ちなどに影響されないため、装置におけるパフォーマンスや安定性の向上が行える。
【符号の説明】
【００３０】
１０１  マルチコアＣＰＵ
１０２  ＣＰＵコア１
１０３  ＣＰＵコア２
１０４  ＣＰＵコア３
１０５  ＣＰＵコア４
【図１】
2019096095.tif 000003
【図２】
2019096095.tif 000004
【図３】
2019096095.tif 000005
【図４】
2019096095.tif 000006
【図５】
2019096095.tif 000007