(57)【要約】【課題】サスペンドレジューム機能をサポートできないデバイスを含む組み込みシステムにおいても、システムのサスペンドレジュームを可能にする。【解決手段】サスペンドレジューム機能をサポートしていないデバイスを、その一部に含む組み込みシステムにおける制御方法であって、当該デバイスについては、サスペンド処理の開始からレジューム処理の完了までの間、割り込みを禁止し、レジューム処理完了時、当該デバイスの初期化を行ってから割り込みを許可する。【選択図】図１
2011008688.tif 000002
【特許請求の範囲】
【請求項１】
サスペンドレジューム機能をサポートしていないデバイスを、その一部に含む組み込みシステムにおける制御方法であって、
前記デバイスについては、サスペンド処理の開始からレジューム処理の完了までの間、割り込みを禁止し、レジューム処理完了時、前記デバイスの初期化を行ってから割り込みを許可することを特徴とする組み込みシステムの制御方法。
【請求項２】
前記サスペンドレジューム機能をサポートしていないデバイスを使用するアプリケーションについては、システムのレジューム処理後、前記デバイスを使用する前に、前記デバイス用ドライバを再オープンし、前記デバイス用ドライバ情報の再読み込みを行うことを
特徴とする請求項１記載の組み込みシステムの制御方法。
【請求項３】
前記デバイスの初期化の後、一定の通知をアプリケーションに通知することを特徴とする請求項２記載の組み込みシステムの制御方法。
【請求項４】
前記デバイスは、プロセスのカーネルスレッド再開の直後に、一つのアプリケーションがアクティブになった時に、前記デバイス用ドライバを再オープンし、前記デバイス用ドライバ情報の再読み込みを行うことを特徴とする請求項２記載の組み込みシステムの制御方法。
【請求項５】
前記デバイスは、プロセスのカーネルスレッド再開後に、前記デバイスを使用する前に、前記デバイス用ドライバを再オープンし、前記デバイス用ドライバ情報の再読み込みを行うことを特徴とする請求項２記載の組み込みシステムの制御方法。
【請求項６】
前記割り込みの禁止は、前記サスペンドレジューム機能をサポートしていないデバイスのサスペンド処理を行うところで割り込みの禁止を行い、以降の処理を行わず、プロセスからのアクセスも禁止の状態のままサスペンド処理することを特徴とする請求項１乃至請求項５のいずれか１項に記載の組み込みシステムの制御方法。
【請求項７】
前記サスペンドレジューム機能をサポートしていないデバイスは、前記デバイスのレジューム処理のタイミングで再度初期化し、コンフィグレーション設定とハードウェア側設定との不一致を回避することを特徴とする請求項１乃至請求項６のいずれか１項に記載の組み込みシステムの制御方法。
【請求項８】
前記サスペンドレジューム機能をサポートしていないデバイスは、ファイルを作成し、管理することを特徴とする請求項１乃至請求項７のいずれか１項に記載の組み込みシステムの制御方法。
【請求項９】
サスペンドレジューム機能をサポートしているデバイスについては、割り込みを禁止せず、通常のサスペンドレジューム処理を実行することを特徴とする請求項１乃至請求項８のいずれか１項に記載の組み込みシステムの制御方法。
【請求項１０】
前記組み込みシステムは、Linux（登録商標）OS（オペレーティング・システム）で制御されることを特徴とする請求項１乃至請求項９のいずれか１項に記載の組み込みシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組み込みシステムの制御方法に係り、特にシステム全体のサスペンドレジュームを可能にする制御方法に関する。
【背景技術】
【０００２】
情報処理装置などを始め、消費電力を抑えるためにレジューム機能を搭載する機器が増えている。中でもハイバネーションは不揮発記憶領域にサスペンドイメージを保存するために待機電流を必要としないので、省電力性能はもっとも優れている。サスペンドレジューム機能があれば、レジュームは、起動に比べ稼動状態に復帰するのが早いので、使用しない状態では省電力性能をもち、使用したいときはすぐに稼動状態になることができる。
【０００３】
しかしながら、サスペンドレジューム機能に対応していないデバイスや、デバイスドライバのサスペンドレジューム処理に不備をもつデバイスを含む組み込みシステムでは、同機能をサポートすることができない。このような組み込みシステムでは、使用の都度、起動／終了処理を行うか、常に稼動状態にしておかなければならない。使用の都度、起動終了するのは、起動に時間がかかり使いたいときにすぐに使用できないという欠点がある。また、常にシステム稼動にしておくのは、省電力性能が劣るという問題がある。
【０００４】
従来、起動の方式にかかわらず、より迅速に起動する手法が提案されている（例えば、特許文献１参照。）。これは、第１のコンピュータが第2の起動方式で第１のオペレーティングシステムを起動する場合、第２のオペレーティングシステムの起動が完了してから第１のコンピュータにおける第１のオペレーティングシステムの起動が完了するまでの間、第１のコンピュータと共用する入力手段から使用者の指示が取得される第２のユーザインタフェースの処理を行い、第１のコンピュータが第１の起動方式で第１のオペレーティングシステムを起動する場合、第２のユーザインタフェースの処理の実行を抑制するようにした場合には、使用者の操作に応じた状態になるようにするもので、休止状態としてサスペンド状態またはハイバネーションに遷移するようにした場合には、サスペンド状態またはハイバネーションからレジュームすることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３５５３２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
サスペンドレジューム機能をサポートしていないデバイスを含む組み込みシステムであっても、システム稼動状態で着脱可能なデバイスなど、デバイスドライバをシステム稼働中にロード、アンロードできるデバイスについては、サスペンド前にドライバをアンロードし、レジューム後デバイスを再初期化する手法を適用することが可能である。しかしながら、この手法は、プラグアンドプレイのように、システム稼働中にアンロードできないデバイスには適用できないという問題がある。
【０００７】
また、サスペンドレジューム機能をサポートするようにデバイスドライバを修正可能であっても、ドライバの版権等が障害となり、デバイスドライバの修正を行うことができず、対応できない場合がある。
【０００８】
上記した特許文献１による手法では、ホストＣＰＵとリアルタイムＣＰＵという複数のＣＰＵを必要とするだけでなく、プロセスとデバイスの不一致による問題の対策には対応できていない。
【０００９】
そこで、本発明は、上記の問題に鑑みてなされたもので、サスペンドレジューム機能をサポートしていないデバイスを含む組み込みシステムであっても、システム全体のサスペンドレジュームを可能にする組み込みシステムの制御方法を提供するものである。
【課題を解決するための手段】
【００１０】
本発明の一態様によれば、サスペンドレジューム機能をサポートしていないデバイスを、その一部に含む組み込みシステムにおける制御方法であって、前記デバイスについては、サスペンド処理の開始からレジューム処理の完了までの間、割り込みを禁止し、レジューム処理完了時、前記デバイスの初期化を行ってから割り込みを許可する組み込みシステムにおける制御方法が提供される。
【００１１】
本発明の別の一態様によれば、前記サスペンドレジューム機能をサポートしていないデバイスを使用するアプリケーションについては、システムのレジューム処理後、前記デバイスを使用する前に、前記デバイス用ドライバを再オープンし、前記デバイス用ドライバ情報の再読み込みを行うことを特徴とする組み込みシステムにおける制御方法が提供される。
【発明の効果】
【００１２】
本発明によれば、サスペンドレジューム機能をサポートしていないデバイスを含む組み込みシステムであっても、システム全体のサスペンドレジュームが可能になる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態に係る組み込みシステムの概略構成を示すブロック図である。
【図２】本実施形態に係る組み込みシステムのレイヤ構成を示す図である。
【図３】サスペンドレジューム機能未対応のデバイスを管理する例を説明する図である。
【図４】本実施形態におけるサスペンド処理の流れを示すフローチャートである。
【図５】レジューム前のカーネルの起動処理の流れを示すフローチャートである。
【図６】レジュームの本処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【００１５】
図１は、本発明の実施形態に係る組み込みシステムの概略構成を示すブロック図である。組み込みシステム１００は、特定の機能を実現するために家電製品や機械等に組み込まれるコンピュータシステムであって、例えば、図1に示すように、ＣＰＵ１０１、メモリ１０２、入力装置１０３、表示装置１０４、記憶装置１０５、内部バス１０６および電源部１０７等を備えている。
【００１６】
ＣＰＵ１０１は、組み込みシステム１００が内蔵するＣＰＵであり、組み込みシステム１００の全体の制御も司る。
【００１７】
メモリ１０２は、揮発性半導体メモリから構成されるメモリ装置である。メモリ１０２には、ＣＰＵ１０１が処理するプログラムや一時データが格納される。
【００１８】
入力装置１０３は、例えばキーボードやマウス、タッチパッドである。組み込みシステム１００に備えられており、コマンド等ユーザの指示を入力するのに利用される。
【００１９】
表示装置１０４は、例えば組み込みシステム１００が内蔵するLCDディスプレイである。
【００２０】
記憶装置１０５は、組み込みシステム１００が内蔵するHDD装置あるいはSSD装置である。ＣＰＵ１０１が処理するプログラムはあらかじめ記憶装置１０５に格納される。また、ハイバネーションする場合、記憶装置１０５にメモリ等のデータを保存する場所としても使用される。
【００２１】
内部バス１０６は、組み込みシステム１００内の各構成ユニットを接続し、データの交換を行うためのバスである。各構成ユニットは内部バス１０６を介してデータの授受を実現する。
【００２２】
電源部１０７は、組み込みシステム１００に内蔵する各構成部分に電力を供給する。また、必要に応じて構成部分毎に電力を供給したり遮断したりすることができる。例えば、サスペンドに移行した時にはメモリ１０２に電力を供給したままにするが、他の構成部分の電力は遮断する場合が考えられる。
【００２３】
本実施形態では、ＣＰＵ系列の依存性がなく、かつ、各種デバイスに柔軟に対応可能なＯＳであるLinux（登録商標）を例にとって、ハイバネーション制御を適用するものである。一般に、ＯＳは、少なくとも、（1）周辺機器を管理するデバイスドライバ、（2）メモリの管理、（3）ファイルシステムの管理の機能を備える。係るＯＳの中核となる基本的な機能を担う部分がＯＳのカーネル（Kernel）であり、コンピュータのどの部分にでもアクセスできるカーネル・モード（Kernel Mode）で動作する。
【００２４】
コンピュータで稼働しているソフトウェアの機能は、レイヤ（層）構成で見ることができる。図２は、本実施形態に係る組み込みシステムのレイヤ構成を示す図である。図２に示すように、このレイヤ構成は、アプリケーションレイヤと、ＯＳレイヤと、デバイスドライバレイヤと、ハードウェアレイヤとから成っている。
【００２５】
アプリケーションレイヤは、最上位のレイヤであって、ＯＳの上位レイヤのソフトウェア群である。
【００２６】
ＯＳレイヤは、アプリケーションレイヤの下位に位置するレイヤであって、ハードウェアの制御をはじめ、タスク（仕事）やファイルシステムの管理、ネットワークへの接続など、システムの基幹的な機能を担う。ＯＳカーネルが稼働している下位レイヤはカーネル空間やカーネル・モードと呼ばれるものである。
【００２７】
デバイスドライバレイヤは、デバイス制御のためのデバイスドライバが位置するレイヤである。
【００２８】
デバイスレイヤは、ＣＰＵやメモリ等のコンピュータを構成する各装置や、周辺機器が位置するレイヤである。組み込みシステム１００に組み込まれるデバイスとしては、各種各様の仕様から成るのが通常である。そこで、本実施形態においては、サスペンドレジューム機能に対応するデバイスと、サスペンドレジューム機能未対応のデバイスとに、分けて制御する。例えば、多くのＨＤＤ装置あるいはＳＳＤ装置、ＵＳＢメモリ等は、サスペンドレジューム機能未対応のデバイスに該当するものが存在する。
【００２９】
本実施形態では、サスペンドレジューム機能未対応のデバイスが組み込まれている組み込みシステム１００においても、Linux（登録商標）ＯＳのハイバネーションのサスペンドレジューム機能を円滑に動作させる場合を例にとって説明する。
【００３０】
アプリケーションをインストールした組み込みシステム１００を動作させ、ハイバネーション制御を行った場合、サスペンドレジューム機能未対応のデバイスにおいては、いわゆる誤動作が起きる。そこで、デバイスの誤動作を引き起こす要因について、鋭意、解析したところによれば、それらの要因は以下のようになる。
【００３１】
（１）デバイスのリソース（コンフィグレーション設定）とハードウェア側設定との不一致
一般に、デバイスのリソースとハードウェア側の設定はハイバネーション制御の前後で保存、復元される。しかし、デバイスドライバの実装が不十分で、サスペンドレジューム機能未対応な場合、ドライバのリソース（コンフィグレーション設定）とハードウェア側の値が一致せず誤動作が発生する可能性がある。
【００３２】
コンフィグレーション設定における誤動作としては、例えば、レジスタ値が異なる、ＨＤＤ装置の転送レートが一致しない、ＤＭＡ転送のモードが異なる場合などである。
【００３３】
また、ハードウェア側設定における誤動作としては、例えば、電源のＯＮ／ＯＦＦ状態が一致しない場合があげられる。
【００３４】
（２）プロセスとデバイスとの情報の不一致
ハイバネーション制御の前後でデバイスの状態が変わっても、プロセスはその旨認識できず、ハイバネーション制御前の状態でアクセス、誤動作が発生する可能性がある。例えば、ドライバをオープンした際のポインタ値が一致しない場合やプロセスリソースにおけるデータとドライバがアクセスするデータとが一致しない場合として現われる。
【００３５】
したがって、組み込みシステム１００がサスペンドレジューム機能未対応のデバイスを備える場合には、サスペンドレジューム機能対応のデバイスとは、異なったハイバネーション制御をするのが好適である。
【００３６】
そこで、本実施形態においては、サスペンドレジューム機能未対応のデバイスをあらかじめ把握、管理しておく。
【００３７】
図３は、サスペンドレジューム機能未対応のデバイスについて、「devices」ファイルを作成し管理する例を説明する図である。図３に示す例では、Linux（登録商標）カーネルによって提供される仮想ファイルシステムであるsysfsインタフェースを用いる。sysfsインタフェースは、デバイスやデバイスドライバについての情報をカーネルモデルからユーザ空間へエクスポートし、設定のために使われる。図３に示すように、/sys/power ディレクトリ下に「devices」ファイルを作成し管理する。<device番号>は、サスペンドレジューム機能未対応のデバイスのデバイス名である。したがって、サスペンドレジューム機能に対応可能なデバイスについては、本実施形態に係る制御方法を適用する必要が無いので、「devices」ファイルに表示せず、通常のサスペンドレジューム処理を行うことになる。図３において、デバイス名＝０（通常のサスペンドレジューム処理を行う）、デバイス名＝１（初期化を行う）を表わしている。
【００３８】
次に、本実施形態の制御方法におけるサスペンド処理について説明する。サスペンド処理は、プロセス、デバイス、仮想コンソール、ＣＰＵの停止処理を行い、その状態のメモリからサスペンドイメージを作成し、デバイス、仮想コンソール、ＣＰＵを一度復帰させた状態にして、サスペンドイメージをスワップ領域へ書き込む。その後、システムの電力を落とすことで終了する。
【００３９】
上記した図３に示すテーブルで管理されるサスペンドレジューム機能未対応のデバイスについては、デバイスのサスペンド処理を行うところで割り込みの禁止を行い、以降の処理を行わない。プロセスからのアクセスも禁止の状態のままサスペンド処理する。
【００４０】
図４にしたがって、以下に、本実施形態の制御方法におけるサスペンド処理の流れを説明する。図４に示すように、まず、仮想コンソールをサスペンド処理用に設定する（ステップＳ４０１）。例えば、キー操作により、制御画面を切り換える。次いで、プロセスとカーネルスレッドを停止する（ステップＳ４０２）。次に、メモリの回収を行い、ＣＰＵ系列固有の処理を実行する（ステップＳ４０３）。次いで、仮想コンソールをサスペンド処理する（ステップＳ４０４）。その後、組み込みシステムに含まれる各デバイスについて、サスペンドレジューム機能未対応かどうかの判断を行う（ステップＳ４０５）。サスペンドレジューム機能をサポートしているデバイスであれば、当該デバイスについてサスペンド処理を実行する（ステップＳ４０６）。サスペンドレジューム機能をサポートしていないデバイスであれば、当該デバイスの割り込みを禁止する（ステップＳ４０７）。次いで、起動（ブート）に使用しないＣＰＵを停止する（ステップＳ４０８）。次いで、サスペンド時の待避データの全体であるサスペンドイメージを作成する（ステップＳ４０９）。そして、停止しているＣＰＵを復帰させ（ステップＳ４１０）、ＣＰＵ系列固有の処理を実行する（ステップＳ４１１）。その後、サスペンドレジューム機能未対応のデバイスかどうかの判断を行う（ステップＳ４１２）。サスペンドレジューム機能をサポートしているデバイスであれば、当該デバイスについてレジューム処理を行う（ステップＳ４１３）。サスペンドレジューム機能をサポートしていないデバイスであれば、当該デバイスについてはレジューム処理しない。次に、仮想コンソールについてレジューム処理を行う（ステップＳ４１４）。次に、サスペンドイメージをスワップ領域へ書き込む（ステップＳ４１５）。そして、パワーダウンし、サスペンド処理を完了する（ステップＳ４１６）。
【００４１】
次に、レジューム処理について説明する。レジューム処理は、カーネルの起動処理の後に実行される。まず、スワップ領域にサスペンドイメージが存在するかどうかのチェックを行う。サスペンドイメージが存在すれば、プロセスを停止し、サスペンドイメージをメモリ上に読み込む。次いで、仮想コンソール、デバイス、起動（ブート）に使用しないＣＰＵを停止させた状態で、サスペンドイメージのリストアとＣＰＵのレジスタ情報の復元を行う。次いで、ＣＰＵ、デバイス、仮想コンソール及びプロセスについて、それぞれの再開処理を行い、レジューム処理を終了する。
【００４２】
上記した図３に示すテーブルで管理されるサスペンドレジューム機能未対応のデバイスについては、当該デバイスのレジューム処理のタイミングで再度初期化することによって、コンフィグレーション設定とハードウェア側設定との不一致を回避する。そして、当該デバイスを使用するアプリケーションについては、システムのレジューム処理後、当該デバイスを使用する前に、当該デバイス用ドライバを再オープンし、デバイス用ドライバ情報の再読み込みを行い、不一致を回避する。その後、割り込みを許可し、通常の状態にもどる。
【００４３】
尚、当該デバイスの初期化の後、一定の通知をアプリケーションに通知することが好適である。
【００４４】
また、当該デバイスは、プロセスのカーネルスレッド再開の直後に、一つのアプリケーションがアクティブになった時に、当該デバイス用ドライバを再オープンし、そのデバイス用ドライバ情報の再読み込みを行うことが好適である。
【００４５】
以下に、本実施形態の制御方法におけるレジューム処理の流れを図５、図６にしたがって説明する。図５は、レジューム前のカーネルの起動処理の流れを示すフローチャートである。図５に示すように、まず、Ｂｏｏｔ Ｌｏａｄｅｒがカーネルをメモリに展開する（ステップＳ５０１）。次いで、割り込みを禁止し、マシン依存部、タイマ、ページテーブルの初期化を実行する（ステップＳ５０２）。次に、スケジューラの初期化を実行する（ステップＳ５０３）。次に、割り込みテーブルを初期化し、割り込みを許可する（ステップＳ５０４）。その後、バス等のサブシステムの初期化を実行する（ステップＳ５０５）。次いで、続いて、ファイルシステムのマウントを実行し、ルートファイルシステムを初期化する（ステップＳ５０６）。次いで、デバイスドライバを初期化して、レジューム前のカーネルの起動処理を完了する（ステップＳ５０７）。
【００４６】
図６は、レジュームの本処理の流れを示すフローチャートである。図６に示すように、まず、仮想コンソールをサスペンド処理用に設定する（ステップＳ６０１）。次いで、プロセスとカーネルスレッドを停止する（ステップＳ６０２）。次に、サスペンドイメージをスワップ領域から読み込む（ステップＳ６０３）。次いで、仮想コンソールをサスペンドする（ステップＳ６０４）。その後、サスペンドレジューム機能未対応のデバイスかどうかの判断を行う（ステップＳ６０５）。サスペンドレジューム機能をサポートしているデバイスであれば、当該デバイスについてサスペンド処理を実行する（ステップＳ６０６）。サスペンドレジューム機能未対応のデバイスであれば、当該デバイスの割り込みを禁止する（ステップＳ６０７）。次いで、起動（ブート）に使用しないＣＰＵを停止する（ステップＳ６０８）。次いで、サスペンドイメージをメモリに展開する（ステップＳ６０９）。そして、停止しているＣＰＵを復帰させ（ステップＳ６１０）、ＣＰＵ系列固有の処理を実行する（ステップＳ６１１）。その後、サスペンドレジューム機能未対応のデバイスかどうかの判断を行う（ステップＳ６１２）。サスペンドレジューム機能をサポートしているデバイスであれば、当該デバイスについてレジューム処理を行う（ステップＳ６１３）。サスペンドレジューム機能未対応のデバイスであれば、当該デバイスを初期化し（ステップＳ６１４）、割り込みを許可する（ステップＳ６１５）。次に、仮想コンソールについてレジューム処理を行う（ステップＳ６１６）。次に、プロセスとカーネルスレッドを再開する（ステップＳ６１７）。その後、サスペンドレジューム機能未対応のデバイスかどうかの判断を行う（ステップＳ６１８）。サスペンドレジューム機能をサポートしているデバイスであれば、仮想コンソールを元に戻してレジューム処理を完了する（ステップＳ６１９）。サスペンドレジューム機能未対応のデバイスであれば、当該デバイスの再オープン、再読み込みを行い（ステップＳ６２０）、ステップＳ６１９に移る。
【００４７】
尚、Ｓｅｒｉａｌなどのコンソールデバイスや、ハイバネーション情報を記憶する領域やルートファイルシステムで使用するＨＤＤ装置などの一部のデバイスでは、プロセスのスケジューリングが止められ、カーネルがハイバネーション処理（サスペンド／レジューム）を実行しているときも、カーネルが使用するため割り込み禁止が働かず、動作する。したがって、これらのデバイスに対しては、デバイスドライバにおいてサスペンドレジューム機能に対応できるように実装する必要がある。
【００４８】
本実施形態によれば、デバイスドライバのリソース（コンフィグレーション設定）とハードウェア側設定との不一致が解消される。また、ドライバをオープンしたときのポインタやプロセスリソースの不一致が解消されるので、サスペンドレジューム機能に対応していないドライバを含む組み込みシステムにおいて、不備を補完することができるので、ハイバネーション制御が円滑に行える。
【００４９】
なお、本発明は上記の実施形態のそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記の実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５０】
１０１・・・ＣＰＵ、１０２・・・メモリ、１０３・・・入力装置、１０４・・・表示装置、１０５・・・記憶装置、１０６・・・内部バス、１０７・・・電源部、１００・・・組み込みシステム。
【図１】
2011008688.tif 000003
【図２】
2011008688.tif 000004
【図３】
2011008688.tif 000005
【図４】
2011008688.tif 000006
【図５】
2011008688.tif 000007
【図６】
2011008688.tif 000008