(57)【要約】  複数の初期化処理による複数の設定情報に従い動作するデバイスと、デバイスを用いた処理を行う第１のソフトウェアを基本ソフトウェア上で実行する第１の制御部、および複数の初期化処理のうち一部の初期化処理が完了した段階で、第１のソフトウェアの実行前に複数の初期化処理による設定情報の一部を用いてデバイスを動作させ、デバイスを用いた処理を行う第２のソフトウェアを実行する第２の制御部、を備え、デバイスの初期化処理を行うプロセッサ１０とを備えた情報機器１。
2015087365.tif 000002
【特許請求の範囲】
【請求項１】
複数の初期化処理による複数の設定情報に従い動作するデバイスと、
前記デバイスを用いた処理を行う第１のソフトウェアを基本ソフトウェア上で実行する第１の制御部、および前記複数の初期化処理のうち一部の初期化処理が完了した段階で前記第１のソフトウェアの実行前に前記複数の初期化処理による設定情報の一部を用いて前記デバイスを動作させ前記デバイスを用いた処理を行う第２のソフトウェアを実行する第２の制御部、を備え、前記デバイスの前記複数の初期化処理を行うプロセッサと、
を備えた情報機器。
【請求項２】
前記第２の制御部は前記デバイスに対する初期化処理を実行し、前記第１の制御部に前記初期化処理の進行情報を通知し、第１の制御部は、前記進行情報に基づき、前記複数の初期化処理のうち未実行の残りの初期化処理を実行することを特徴とする請求項１に記載の情報機器。
【請求項３】
前記第１の制御部は前記基本ソフトウェアの起動処理を行い、この起動処理と前記第２の制御部による前記第２のソフトウェアが前記プロセッサにより並列実行されることを特徴とする請求項１又は２に記載の情報機器。
【請求項４】
前記第２の制御部は前記基本ソフトウェアが起動した後に、前記第１の制御部に前記デバイスの移行準備ができたことを通知することを特徴とする請求項３に記載の情報機器。
【請求項５】
前記第２のソフトウェアは前記第２のソフトウェアの実行状態を通知し、第１の制御部は、前記実行状態に基づき、前記第１のソフトウェアを実行することを特徴とする請求項４に記載の情報機器。
【請求項６】
前記第２のソフトウェアは前記複数の初期化処理が全て完了した後に、前記第２のソフトウェアの実行状態を通知することを特徴とする請求項５に記載の情報機器。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、組込み機器における処理の高速起動に関する。
【背景技術】
【０００２】
組込み機器では、特定の処理を高速に起動することが必要とされる場合がある。例えばカーナビでは、電源投入後、短時間でリアビューカメラ画像をカーナビ画面に表示する事が求められている。また、近年カーナビなどの高機能な情報機器では、マルチコア環境を採用する流れが広がりつつある。さらに、カーナビなどの高機能な情報機器では、性能の観点から、主機能を担う高機能な汎用ＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）は組込み機器のリソースをフルに使って動作する事が求められる。
このような状況の中、マルチコア環境にて、高速に起動する必要のある処理（以下、特定処理と呼ぶ）用の専用コアを設ける事で特定処理を高速に起動し、他のコアで汎用ＯＳの起動処理を行い、汎用ＯＳの起動が完了した後、専用コアの管理を汎用ＯＳに移して汎用ＯＳがＳＭＰ（Ｓｙｍｍｅｔｒｉｃ Ｍｕｌｔｉｐｌｅ Ｐｒｏｃｅｓｓｏｒ）動作を開始し、以降の特定処理は汎用ＯＳが行う方法が提案されている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−４５３８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の高速起動方式は、特定処理が必要とするデバイス（以下、特定処理用デバイス４と呼ぶ）の初期化が完全に完了しないと、特定処理が開始できない。そのため、特定処理用デバイスの初期化が完全に完了していない状態で、特定処理の開始が要求された場合、初期化が完了するまで特定処理を開始することができない。
【課題を解決するための手段】
【０００５】
本発明に係る情報機器は、複数の初期化処理による複数の設定情報に従い動作するデバイスと、前記デバイスを用いた処理を行う第１のソフトウェアを基本ソフトウェア上で実行する第１の制御部、および前記複数の初期化処理のうち一部の初期化処理が完了した段階で、前記第１のソフトウェアの実行前に前記複数の初期化処理による設定情報の一部を用いて前記デバイスを動作させ、前記デバイスを用いた処理を行う第２のソフトウェアを実行する第２の制御部、を備え、前記デバイスの初期化処理を行うプロセッサとを備えるものである。
【発明の効果】
【０００６】
本発明によれば、特定処理開始イベントへの早期対応が可能となる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１に係る情報機器の構成を示すブロック図である。
【図２】実施の形態１に係るメモリの構成を示すブロック図である。
【図３】実施の形態１に係る初期ＯＳおよび汎用ＯＳの機能を示すブロック図である。
【図４】実施の形態１に係る特定処理用デバイスの初期化ステートを示すブロック図である。
【図５】実施の形態１に係る特定処理用デバイスの初期化ステートに応じた特定処理が実行されることを説明する状態遷移図である。
【図６】実施の形態１に係る汎用ＯＳが起動する迄の第１のコアの処理フローチャートである。
【図７】実施の形態１に係る汎用ＯＳが起動する迄の第２のコアの処理フローチャートである。
【図８】実施の形態１に係るデバイスの移行処理が開始されてから、デバイスの移行が完了するまでの第２のコアの処理フローである。
【図９】実施の形態１に係るデバイスの移行処理が開始されてから、デバイスの移行が完了するまでの第１のコアの処理フローである。
【図１０】実施の形態１に係るデバイス状態管理テーブルのフォーマットである。
【図１１】実施の形態１に係るアプリケーション状態管理テーブルのフォーマットである。
【発明を実施するための形態】
【０００８】
実施の形態１．
まず実施の形態１の構成を説明する。図１は本実施の形態における特定処理起動方式を実現する情報機器１の構成を示すブロック図である。図１において、１０は複数のコアを1個のパッケージに集積したプロセッサであり、本実施の形態では、２つのコアを１個のパッケージに集積したプロセッサを例として用いる。プロセッサ１０は、第１コア１１、第２コア１２に加え、第１タイマ１３、第２タイマ１４などを備えている。第１タイマ１３は、第１コア１１で用いられるタイマであり、第２タイマ１４は、第２コア１２で用いられる。
この実施の形態において、第１コア１１は第１の制御部であり、第２コア１２は第２の制御部である。なお、第１の制御部と第２の制御部は１つのプロセッサ１０に内蔵される必要はなく、第１及び第２の制御部として複数のマイクロプロセッサを用いることも可能である。
図１において、メモリ２は、プロセッサ１０にバスで接続され、データ、プログラム等の情報を記憶する記憶装置である。
センサ３は、特定処理用デバイス４に対し、特定処理を開始するまたは終了する判断を行うのに用いられる。センサ３は、車載機器の状態、例えば特定のギアへの操作があったことを感知するセンサや、外界からの状態、例えば温度や湿度などの変化があったことを感知するセンサであってもよい。
特定処理用デバイス４は、高速に起動する必要のある処理（特定処理）が必要とするデバイスであり、例えば、カーナビなどのリアビューカメラなどである。また、特定処理用デバイス４は電源投入後のままでは特定処理が必要としている機能が使えるようになっておらず、予め与えられた設定情報に基づいて初期化の処理を行う必要がある。
出力用デバイス５は特定処理用デバイス４の出力結果を出力するためのデバイスであり、画像を表示するのであればモニタ、音声を出力するのであればスピーカなどのオーディオ装置などであってもよい。本実施の形態では、この出力用デバイス５は、初期化処理が不要もしくは前述のセンサ３からの特定処理開始イベントが発生するよりも短い期間で完了できるデバイスである。
その他のデバイス６は、汎用ＯＳ（後述）で用いられるデバイスを示しており、図では一つしかないが、複数存在してもよい。
初期ＯＳ使用デバイス７は、初期ＯＳ（後述）で用いられるデバイスを示しており、本実施の形態においては、特定処理用デバイス４と出力用デバイス５が含まれている。
【０００９】
図２は本実施の形態におけるメモリ２の構成とその記憶内容を示すブロック図である。図２において、不揮発メモリ２０は、第１コア１１上で動作する汎用ＯＳ２１および第２コア１２上で動作する初期ＯＳ２２、それと情報機器へ電源投入後（以下、リセット解除後と呼ぶ）、最初に呼び出されるブートローダ２３が格納されている。ブートローダ２３は、呼び出されると、不揮発メモリ２０から初期ＯＳ２２を初期ＯＳ用メモリ領域４０にロードし、不揮発メモリ２０から汎用ＯＳ２１を汎用ＯＳ用メモリ領域３０にロードする。第１コア１１は、汎用ＯＳ２１を実行し、第２コア１２は、ロードされた初期ＯＳ２２を実行する。
汎用ＯＳ用メモリ領域３０は、特定処理用デバイス４の制御を行う特定処理アプリケーション３２と、その他のデバイス６の初期化処理および制御を行う主機能処理アプリケーション３１とを備えている。
初期ＯＳ用メモリ領域４０は、特定処理用デバイス４の制御を行う特定処理アプリケーション４１を備えている。
なお、特定処理アプリケーション４１と特定処理アプリケーション３２は同時に実行されるものではなく、汎用ＯＳ２１の起動が完了した後、特定処理アプリケーション４１の処理は特定処理アプリケーション３２に引き継がれる。特定処理アプリケーション４１と特定処理アプリケーション３２は同一のものでもよいし、異なるものでもよい。
共有メモリ５０は、初期ＯＳ使用デバイス７の状態を管理するデバイス状態管理テーブル５１と、特定処理アプリケーション４１の状態を管理するアプリケーション状態管理テーブル５２とを備えている。
【００１０】
図３は本実施の形態における汎用ＯＳ２１および初期ＯＳ２２の内部で行われる手段を示すブロック図である。
汎用ＯＳ２１は、システムのメイン機能を処理する基本ソフトウェアである。規模の小さい情報機器では、汎用ＯＳ２１を用いない場合もあるが、本実施の形態で想定しているカーナビのようにメインとなる処理（例えば、ナビゲーション機能、オーディオ入出力やワンセグなど）の規模が大きい場合、開発の効率化のために汎用ＯＳ２１が用いられる。
初期ＯＳ２２は汎用ＯＳ２１が起動するまで特定処理が動作するＯＳであり、第２コア１２上で動作する。初期ＯＳ２２は汎用ＯＳ２１に対し、機能が限定されたＯＳである。例えば、本実施の形態では、汎用ＯＳ２１が対象としているデバイスは特定処理用デバイス４、出力用デバイス５、その他のデバイス６であるのに対し、初期ＯＳ２２は特定処理用デバイス４のみを制御の対象として限定している。初期ＯＳ２２を用いることにより、汎用ＯＳ２１用に開発した特定処理アプリケーションを流用することも可能となる。なお、初期ＯＳ２２を使わず、特定処理アプリケーションを動作させてもよい。
【００１１】
図３において、汎用ＯＳ起動部２１０は、第１コア１１が汎用ＯＳ２１を起動する際、汎用ＯＳ２１自身が必要とする初期化処理およびその他のデバイス６の初期化処理を行う。
待機部２１１は、初期ＯＳ２２が起動時に使用する初期ＯＳ使用デバイス７の初期化を行い、待機状態にする。
完了通知部２１２は、汎用ＯＳ２１が起動した後、初期ＯＳ２２に起動完了を通知する。
使用開始部２１３は、初期ＯＳ２２が使用していた初期ＯＳ使用デバイス７を汎用ＯＳ２１に使用開始させる。
初期化部２１４は、初期ＯＳ２２が使用していた初期ＯＳ使用デバイス７の初期化を行う。
判定部２１５は、特定処理用デバイス４の初期化の状態に応じて、特定処理の選定を行い、その特定処理の開始及び終了を行う。
【００１２】
初期化部２２０は、第２コア１２が初期ＯＳ２２を起動する際、初期ＯＳ２２自身が必要とする初期化処理および初期ＯＳ使用デバイス７の初期化を行う。
判定部２２１は、初期化部２２０を実行中に特定処理開始イベントを受け付けた際、特定処理用デバイス４の初期化の状態に応じて、特定処理の選定を行い、その特定処理の開始及び終了を行う。
移行準備部２２２は、初期ＯＳ使用デバイス７に対するアクセス制御の主導権を初期ＯＳ２２から汎用ＯＳ２１に移すための移行準備を行う。
移行通知部２２３は、初期ＯＳ使用デバイス７の移行準備が完了したことを汎用ＯＳ２１に通知する。
【００１３】
次に図４を用いて、特定処理用デバイス４の初期化を行う際の動作（以下、初期化ステートと呼ぶ）について説明する。本実施の形態では、特定処理用デバイス４は、初期化処理が複数の初期化ステートに分割できるデバイスを対象とする。
図４では、特定処理用デバイス４の初期化処理が６０に示す特定処理用デバイス初期化処理Ａ（以下、初期化処理Ａと呼ぶ）と、６１に示す特定処理用デバイス初期化処理Ｂ（以下、初期化処理Ｂと呼ぶ）という２つの処理に分けられる特定処理用デバイス４を例に説明する。ここでは、リアビューカメラの例を用いる。リアビューカメラに必要な初期化処理は、カラーの設定と、画質の設定とする。
【００１４】
初期化処理Ａ（６０）は特定処理用デバイス４のカラーの設定をするために必要な初期化処理である。初期化処理Ｂ（６１）は特定処理用デバイス４の画質の設定をするために必要な初期化処理である。また、特定処理用デバイス４の初期化ステートに応じ、判定部２２１で実行される特定処理アプリケーション４１および特定処理アプリケーション３２も２つの処理に分けられる。
初期化処理Ａ（６０）のみが完了した状態で実行可能な特定処理を、特定処理ａ（６２）とする。この例では、画質が粗い状態で表示のみを行うものとする。
初期化処理Ｂ（６１）も完了した状態で実行可能な特定処理を特定処理ｂ（６３）とする。ここでは高画質での表示と顔の位置を認識し、枠をつける表示を行うものとする。
【００１５】
次に図５を用いて、本実施の形態における特定処理用デバイス４の初期化ステートの説明を行う。
初期ＯＳ２２は、初期化処理Ａ（６０）を完了するまで（時刻ｔ１と時刻ｔ２）の間に、特定処理開始イベントが発生した場合、特定処理ａ（６２）を開始する。その後、初期ＯＳ２２は、特定処理終了イベントの発生後（時刻ｔ３）に初期化処理Ｂ（６１）を開始する。
初期ＯＳ２２は、時刻ｔ１と時刻ｔ２の間に特定処理開始イベントが発生しなかった場合、初期化処理Ａ（６０）の完了後、初期化処理Ｂ（６１）を開始する。ただし、初期化処理Ａ（６０）が完了したときに、汎用ＯＳ２１の起動が完了していた場合には、初期ＯＳ２２で初期化処理Ｂ（６１）を行わず、汎用ＯＳ２１への移行を先に行い、汎用ＯＳ２１で初期化処理Ｂ（６１）を行っても良い。
【００１６】
次に、本実施の形態における第１コア１１および第２コア１２の処理フローについて説明する。本実施の形態における第１コア１１および第２コア１２の処理フローは次の２つに分かれる。
１つ目は、リセット解除後、第２コア１２で初期ＯＳ２２を起動した後、第２コア１２上で特定処理用デバイス４の初期化、及び特定処理を実行すると同時に、第１コア１１上で汎用ＯＳ２１を起動するフローである。処理フローの説明をしたのが図６と図７である。
２つ目は、第１コア１１で汎用ＯＳ２１が起動された後、特定処理用デバイスを第２コア１２で起動された初期ＯＳ２２から、第１コア１１で起動された汎用ＯＳ２１へ移行するフローである。処理フローを説明したのが図８と図９である。
【００１７】
図６、図７は本実施の形態において、第２コア１２上で初期ＯＳおよび特定処理が高速に起動されるとともに、第１コア１１上で汎用ＯＳ２１が起動されるまでの処理フローである。
【００１８】
汎用ＯＳ２１側の処理フローについて図６を用いて説明する。
第１コア１１はリセット解除後、ブートローダ２３を起動する。ブートローダ２３の処理フローでは、初期ＯＳ用メモリ領域４０へ初期ＯＳ２２のロードを行い（Ｓ６００）、ロードされた初期ＯＳ２２のアドレスを第２コア１２のプログラムカウンタに設定し第２コア１２で初期ＯＳ２２を起動する（Ｓ６０１）。
【００１９】
次に第１コア１１は、汎用ＯＳ用メモリ領域３０へ汎用ＯＳ２１のロードを行い（Ｓ６０２）、汎用ＯＳ２１を起動する（Ｓ６０３）。汎用ＯＳ２１の起動方法は、初期ＯＳ２２の時と同様、汎用ＯＳ２１のアドレス値を第１コア１１のプログラムカウンタに設定することで行う。
以上で第１コア１１から呼び出されたブートローダ２３の処理フローを終了する。以降、第１コア１１では汎用ＯＳ２１が、第２コア１２では初期ＯＳ２２が同時に処理を実行する。
【００２０】
次に、汎用ＯＳ２１側の処理について説明を行う。汎用ＯＳ２１は、その他のデバイス６の初期化と、汎用ＯＳ２１の起動処理を行う（Ｓ６０４）。この処理は汎用ＯＳ起動部２１０が対応する。
次に、汎用ＯＳ２１は、デバイスドライバのロード等の初期化処理を行う（Ｓ６０５）。初期ＯＳ２２で使用されている初期ＯＳ使用デバイス７は汎用ＯＳ２１からは使用できないため、この初期化処理では、デバイスの状態に影響を与える処理は行わない。この処理は、待機部２１１が対応する。
【００２１】
次に、汎用ＯＳ２１は、初期ＯＳ２２に対し、汎用ＯＳ２１の起動完了を通知する（Ｓ６０６）。なお、通知手段はコア間通信を用いてもよいし、共有メモリを介したフラグを用いてもよい。この処理は、完了通知部２１２が対応する。
【００２２】
次に初期ＯＳ２２側の処理フローについて図７を用いて説明する。
初期ＯＳ２２が起動されると、初期ＯＳ２２は出力用デバイス５の初期化処理を行う（Ｓ６０７）。この処理は、初期化部２２０が対応する。
次に、初期ＯＳ２２は、特定処理用デバイス４の初期化処理Ａ（６０）を実行する（Ｓ６０８）。なお、初期ＯＳ２２では、初期化処理Ａ（６０）が実行されている間に特定処理開始イベントが発生した場合、イベントは受け付けるものの、特定処理は実行されない。この処理は、初期化部２２０が対応する。
【００２３】
次に、初期ＯＳ２２では、特定処理開始イベントが発生したかどうかを判定する（Ｓ６０９）。特定処理開始イベントが発生していた場合には、特定処理終了イベントが発生するまで特定処理ａ（６２）を実行し続け（Ｓ６１０、Ｓ６１１）、特定処理終了イベントが発生したら、特定処理ａ（６２）を終了する（Ｓ６１２）。
以上の処理（Ｓ６０９、Ｓ６１０、Ｓ６１１、Ｓ６１２）は、判定部２２１が対応する。
なお、特定処理開始イベントが発生していない場合（Ｓ６０９）には、特定処理用デバイス４の初期化処理Ｂ（６１）を実行する（Ｓ６１３）。
【００２４】
次に初期ＯＳ２２は、特定処理用デバイス４の初期化処理Ｂ（６１）を実行する（Ｓ６１３）。この処理は、初期化部２２０が対応する。なお、初期ＯＳ２２が特定処理用デバイス４の初期化処理Ａ（６０）を実行（Ｓ６０８）している間、特定処理開始イベントが発生していなかった場合（Ｓ６０９）、初期ＯＳ２２は特定処理を行わず、初期化処理Ｂ（６１）を実行する（Ｓ６１３）。
前記Ｓ６１１にて、初期ＯＳ２２が特定処理ａ（６２）を実行している最中に、汎用ＯＳ２１の起動が完了した場合、初期ＯＳ２２から汎用ＯＳ２１へデバイスの移行処理を開始する（Ｓ６１４）。この処理は、判定部２２１が対応する。
【００２５】
次に、初期ＯＳ２２は特定処理開始イベントが発生していたかどうかを判定（Ｓ６１５）し、発生していたら、特定処理終了イベントが発生するまで特定処理ｂ（６３）を実行（Ｓ６１６）し、特定処理終了イベントが発生した場合（Ｓ６１７）には、特定処理ｂ（６３）を終了する（Ｓ６１８）。この処理は、判定部２２１が対応する
【００２６】
特定処理開始イベントが発生していなかった場合（Ｓ６１５）、初期ＯＳ２２は、特定処理ｂ（６３）を行わない。この処理は、判定部２２１が対応する。
初期ＯＳ２２が特定処理ｂ（６３）を終了（Ｓ６１８）した後、もしくは、初期化処理Ｂ（６１）実行時に特定処理開始イベントが無かった場合、初期ＯＳ２２は、汎用ＯＳ２１の起動が完了しているか確認する（Ｓ６１９）。
起動が完了していれば初期ＯＳ２２から汎用ＯＳ２１へのデバイス移行処理を開始し、起動が完了していない場合には、特定処理開始イベントの有無をチェック（Ｓ６１５）しながら、汎用ＯＳ２１の起動完了を待つ（Ｓ６１９）。
【００２７】
初期ＯＳ２２が特定処理ｂ（６３）を実行中に汎用ＯＳ２１の起動が完了していることを確認した場合（Ｓ６２０）、初期ＯＳ２２から汎用ＯＳ２１へデバイスの移行処理を開始する。この処理は判定部２２１が対応する。
【００２８】
図８、図９は汎用ＯＳ２１の起動完了後、初期ＯＳ２２から汎用ＯＳ２１へデバイスの移行処理が完了するまでの処理フローである。
初期ＯＳ２２側の処理フローについて図８を用いて説明する。
まず、初期ＯＳ２２が、初期ＯＳ使用デバイスの状態をデバイス状態管理テーブル５１に保存する（Ｓ７００）。デバイス状態管理テーブル５１に保存するデータは、汎用ＯＳ２１上で初期ＯＳ使用デバイスを使用開始するとき、初期ＯＳ使用デバイスの状態を継続して使用するために必要なデータである。この処理は、移行準備部２２２が対応する。
【００２９】
次に、初期ＯＳ２２が特定処理アプリケーション４１の状態をアプリケーション状態管理テーブル５２に保存する（Ｓ７０１）。アプリケーション状態管理テーブル５２に保存するデータは、汎用ＯＳ２１上で特定処理アプリケーション３２を実行するとき、初期ＯＳ２２の上で特定処理アプリケーション４１が実行されていたときの状態を継続するために必要なデータである。この処理は、移行準備部２２２が対応する。
【００３０】
次に、初期ＯＳ２２は、汎用ＯＳ２１に対し、デバイス移行の準備が完了したことを通知する（Ｓ７０２）。
【００３１】
次に、初期ＯＳ２２は、特定処理が実行中であるかの確認を行う（Ｓ７０３）。実行中であったとき、初期ＯＳ２２は、特定処理終了イベントが発生するまで同イベントのチェックを繰り返す（Ｓ７０４）。特定処理終了イベントの発生後、特定処理を終了（Ｓ７０５）する。この処理は、移行通知部２２３が対応する。なお、通知後、初期ＯＳ２２は処理を終了する。
【００３２】
次に、初期ＯＳ２１側の処理フローについて図９を用いて説明する。
汎用ＯＳ２１は起動後、初期ＯＳ２２からのデバイス移行通知を待つ（Ｓ７０６）。この処理はビジーループでもよいし、待機中にシステムのメイン処理を行っていて、割込みによって通知を受信してもよい。
汎用ＯＳ２１がデバイス移行通知を受け取ると、汎用ＯＳ２１は、デバイス状態管理テーブル５１を参照し、初期ＯＳ使用デバイス７の状態を取得する（Ｓ７０７）。この処理は、使用開始部２１３が対応する。
【００３３】
次に、汎用ＯＳ２１は、アプリケーション状態管理テーブル５２を参照し、特定処理アプリケーション４１の状態を取得する（Ｓ７０８）。この処理は、使用開始部２１３が対応する。
次に、汎用ＯＳ２１は、初期ＯＳ使用デバイス７の使用を開始する（Ｓ７０９）。この処理は、使用開始部２１３が対応する。
【００３４】
次に、汎用ＯＳ２１は、特定処理を実行すべきであるかどうかを判断する（Ｓ７１０）。判断方法は、アプリケーション状態管理テーブル５２を介して、初期ＯＳ２２から汎用ＯＳ２１に通知し、この通知内容に基づき、汎用ＯＳ２１が判断してもよいし、特定処理開始イベントの有無をセンサ３の状態で判断してもよい。後者について、例えば特定処理がリアビューカメラの表示の場合は、ギアがバックギアに入っているかどうかをセンサ３で確認すればよい。
特定処理を実行すべき状態であった場合、汎用ＯＳ２１が、デバイス状態管理テーブル５１、及びアプリケーション状態管理テーブル５２から取得した値を元に汎用ＯＳ２１の中の特定処理アプリケーション３２を起動する（Ｓ７１１）。この処理は、使用開始部２１３が対応する。
【００３５】
なお、既に初期ＯＳ２２がデバイス状態管理テーブル５１に特定処理用デバイス４の初期化ステート情報を保存しており（Ｓ７００）、Ｓ７１１ではその情報に応じて起動する特定処理を選択する。すなわち、デバイス初期化が図５を用いて説明した、初期化処理Ａ（６０）までしか完了していない場合、特定処理ａ（６２）を実行し、初期化処理Ｂ（６１）まで完了している場合は特定処理ｂ（６３）を実行する。Ｓ７１２で特定処理終了イベントが発生したかを確認する。発生した場合はＳ７１３で特定処理ｂ（６３）を終了する。発生しない間は特定処理ｂ（６３）の処理を繰り返す（Ｓ７１１）。
【００３６】
次に、汎用ＯＳ２１は、特定処理用デバイス４の初期化が完了しているか判断し（Ｓ７１４）、完了している場合は初期ＯＳ使用デバイス７の移行は完了となる。また、完了していない場合、汎用ＯＳ２１は残りの初期化処理を行い、初期ＯＳ使用デバイス７の移行を完了する（Ｓ７１５）。この処理は初期化部２１４が対応する。
以上で初期ＯＳ２２から、汎用ＯＳ２１へ、初期ＯＳ使用デバイス７の移行が完了する。以後、初期ＯＳ使用デバイス７は、汎用ＯＳ２１でアクセス制御される。
【００３７】
第２コア１２から第１コア１１へデバイスの移行が完了した後、初期ＯＳ２２は処理を終了する。初期ＯＳ２２の終了に伴い、初期ＯＳ用メモリ領域４０は、汎用ＯＳ用メモリ領域３０に統合される。
【００３８】
デバイス状態管理テーブル５１について、リアビューカメラ表示の場合の例を図１０に示す。特定処理用デバイス４としてカメラ、出力用デバイス５としてディスプレイなどを想定する。全てのデバイスで共通する情報としては、初期ＯＳ使用デバイス７の初期化ステート情報、Ｉ／Ｏレジスタの設定時間等が考えられる。
初期化ステート情報とは、初期ＯＳ使用デバイス７が図５に示す初期化段階のどの段階まで初期化されているかという進行情報である。Ｉ／Ｏレジスタ設定時間とは、最後にＩ／Ｏレジスタを設定してからどの程度時間が経過しているかという情報である。
デバイスには最後にＩ／Ｏレジスタを設定してから一定時間デバイスにアクセスしてはいけないもの、あるいは最後にＩ／Ｏレジスタを設定してから一定時間以内にＩ／Ｏレジスタを再設定しなければいけないものがあり、特定処理用デバイス４がこのようなデバイスであった場合、Ｉ／Ｏレジスタ設定時間を汎用ＯＳに伝える必要があるため、該情報を保存する。
【００３９】
カメラの情報としては設定されているカメラのピント、カメラの明るさ補正のための周囲の照度などが考えられる。ディスプレイの情報としては、ディスプレイのサイズ、設定されている解像度、フレームレートなどが考えられる。
これらの情報を汎用ＯＳ２１が入手しておくことで、汎用ＯＳ２１がデバイス移行後に、初期ＯＳ２２が使用していたデバイスの状態を継続してデバイスの使用を開始できる。また、汎用ＯＳ２１が特定処理アプリケーション３２において、デバイスを使用開始する際に必要な情報を、デバイスにアクセスせず、デバイス状態管理テーブル５１を参照するだけで獲得できるので、デバイス使用開始に要する時間を短縮できる。
【００４０】
アプリケーション状態管理テーブル５２について、リアビューカメラ表示アプリケーションの場合の例を図１１に示す。リアビューカメラの映像には、このままの状態でバックしたときの走行軌跡情報や、障害物などの警告情報などが表示されることが考えられる。そのため、現在表示している走行軌跡情報や警告情報などを保存する事が考えられる。また、初期ＯＳ２２から汎用ＯＳ２１にデバイス移行処理が開始された際、初期ＯＳ２２側で実行される特定処理アプリケーション４１の実行状態も保存する。
これらの情報を汎用ＯＳ２１側が入手しておくことで、汎用ＯＳ２１がデバイス移行後に、初期ＯＳ２２上で実行されていたアプリケーションの状態を継続して開始できる。既に終了しており、繰り返し実行する必要のないアプリケーション処理を実行せずに済むため、デバイス使用開始に要する時間を短縮できる。
【００４１】
上述のように、特定処理用デバイス４の初期化処理を行う際、初期化処理を段階的に行う初期化部２２０および、初期化の状態に応じて特定処理の実行開始を判定する判定部２２１を備えることにより、特定処理開始イベントが発生した場合、それまでに完了している初期化処理の段階に応じた特定処理を実行可能とした。これにより、特定処理用デバイス４の初期化処理全体が終了する以前でも、特定処理開始イベントに対応した特定処理を実行することが可能となる。
【００４２】
また、上述のように、初期ＯＳ上で初期ＯＳ使用デバイス７の初期化処理を完了した後に、初期ＯＳ使用デバイス７の状態を記録するデバイス状態管理テーブルおよび、特定処理アプリケーション４１の状態を記録するアプリケーション状態管理テーブルを備えるようにした。これにより、初期ＯＳ使用デバイスを初期ＯＳから汎用ＯＳに移行する際、初期ＯＳ使用デバイスに対する問い合わせを行わなくて済むため、移行に必要な時間の短縮が可能となる。また、初期ＯＳ使用デバイスの初期化を行った際にしか得られない情報があった場合、移行先の汎用ＯＳからでも参照が可能となる。
【符号の説明】
【００４３】
１  情報機器、２  メモリ、３  センサ、４  特定処理用デバイス、５  出力用デバイス、６  その他のデバイス、７  初期ＯＳ使用デバイス、１０  プロセッサ、１１  第１コア、１２  第２コア、１３  第１タイマ、１４  第２タイマ、２０  不揮発メモリ、２１  汎用ＯＳ、２２  初期ＯＳ、２３  ブートローダ、３０  汎用ＯＳ用メモリ領域、３１  主機能処理アプリケーション、３２  特定処理アプリケーション、４０  初期ＯＳ用メモリ領域、４１  特定処理アプリケーション、５０  共有メモリ、５１  デバイス状態管理テーブル、５２  アプリケーション状態管理テーブル、６０  初期化処理Ａ、６１  初期化処理Ｂ、６２  特定処理ａ、６３  特定処理ｂ、２１０  汎用ＯＳ起動部、２１１  待機部、２１２  完了通知部、２１３  使用開始部、２１４  初期化部、２１５  判定部、２２０  初期化部、２２１  判定部、２２２  移行準備部、２２３  移行通知部。
【図１】
2015087365.tif 000003
【図２】
2015087365.tif 000004
【図３】
2015087365.tif 000005
【図４】
2015087365.tif 000006
【図５】
2015087365.tif 000007
【図６】
2015087365.tif 000008
【図７】
2015087365.tif 000009
【図８】
2015087365.tif 000010
【図９】
2015087365.tif 000011
【図１０】
2015087365.tif 000012
【図１１】
2015087365.tif 000013
【手続補正書】
【提出日】平成28年4月18日(2016.4.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の初期化処理による複数の設定情報に従い動作するデバイスと、
前記デバイスを用いた処理を行う第１のソフトウェアを基本ソフトウェア上で実行する第１の制御部、および前記複数の初期化処理のうち一部の初期化処理が完了した段階で前記第１のソフトウェアの実行前に前記複数の初期化処理による設定情報の一部を用いて前記デバイスを動作させ前記デバイスを用いた処理を行う第２のソフトウェアを実行する第２の制御部、を備え、前記デバイスの前記複数の初期化処理を行うプロセッサと、
を備え、
前記第２の制御部は前記デバイスに対する初期化処理を実行し、前記第１の制御部に前記初期化処理の進行情報を通知し、第１の制御部は、前記進行情報に基づき、前記複数の初期化処理のうち未実行の残りの初期化処理を実行することを特徴とする
情報機器。
【請求項２】
前記第１の制御部は前記基本ソフトウェアの起動処理を行い、この起動処理と前記第２の制御部による前記第２のソフトウェアが前記プロセッサにより並列実行されることを特徴とする請求項１に記載の情報機器。
【請求項３】
前記第２の制御部は前記基本ソフトウェアが起動した後に、前記第１の制御部に前記デバイスの移行準備ができたことを通知することを特徴とする請求項２に記載の情報機器。
【請求項４】
前記第２のソフトウェアは前記第２のソフトウェアの実行状態を通知し、第１の制御部は、前記実行状態に基づき、前記第１のソフトウェアを実行することを特徴とする請求項３に記載の情報機器。
【請求項５】
前記第２のソフトウェアは前記複数の初期化処理が全て完了した後に、前記第２のソフトウェアの実行状態を通知することを特徴とする請求項４に記載の情報機器。
【国際調査報告】
2015087365.tif 000014
2015087365.tif 000015
2015087365.tif 000016
2015087365.tif 000017