(57)【特許請求の範囲】
【請求項１】
演算するためのコンピューティングデバイスであって、
プロセッサと、
１又は複数のモジュール、及び、センサレイヤを含む、前記プロセッサにより動作させられるファームウェアと、
を備え、
前記ファームウェアは、
オペレーティングシステム不在のファームウェア環境（ＯＳ不在のファームウェア環境）において、複数のセンサにより生成されるセンサデータを受信し、
前記複数のセンサを抽象化する前記センサレイヤのインタフェースを介して前記１又は複数のモジュールに前記センサデータを選択的に提供し、
前記複数のセンサは、前記コンピューティングデバイスにあるか、又は、前記コンピューティングデバイスに動作可能に結合される、コンピューティングデバイス。
【請求項２】
前記コンピューティングデバイス上でインスタンス化されるオペレーティングシステムをさらに備え、
前記ファームウェアは、前記オペレーティングシステムから独立している、請求項１に記載のコンピューティングデバイス。
【請求項３】
前記１又は複数のモジュールは、環境因子ブートモジュールを含み、
前記環境因子ブートモジュールは、
前記センサレイヤの前記インタフェースを通じて前記センサレイヤからセンサデータの一部を受信し、
前記センサデータの一部に少なくとも部分的に基づいて、１又は複数のポリシーを適用し、
前記センサデータの一部は、前記１又は複数のポリシーにより規定される１又は複数の環境因子に関連付けられる、請求項１又は２に記載のコンピューティングデバイス。
【請求項４】
前記１又は複数のポリシーを適用することは、前記１又は複数の環境因子に関連付けられる前記センサデータの一部に少なくとも部分的に基づいて、前記１又は複数のポリシーに違反するとの決定が行われるときに、前記コンピューティングデバイスのブート処理を終了することである、請求項３に記載のコンピューティングデバイス。
【請求項５】
前記１又は複数のポリシーを適用することは、前記１又は複数の環境因子に関連付けられる前記センサデータの一部に少なくとも部分的に基づいて１又は複数のドライバを選択的にインスタンス化することである、請求項３又は４に記載のコンピューティングデバイス。
【請求項６】
前記１又は複数の環境因子は、温度、水分、湿度、高度、音圧レベル、可聴周波数、振動、速度、加速度又は照明のうちの１又は複数を含む、請求項３から５のいずれか一項に記載のコンピューティングデバイス。
【請求項７】
前記コンピューティングデバイスは、オペレーティングシステムから独立しており、前記ＯＳ不在のファームウェア環境は、前記コンピューティングデバイスにＯＳ不在の動作状態を実現することを結果的にもたらすブート処理の一部である、請求項１から６のいずれか一項に記載のコンピューティングデバイス。
【請求項８】
前記複数のセンサのうちの１又は複数のセンサは、前記コンピューティングデバイスに配置され、バスインタフェースを介して前記プロセッサと動作可能に結合される、請求項１から７のいずれか一項に記載のコンピューティングデバイス。
【請求項９】
前記複数のセンサのうちの１又は複数のセンサは、ヒューマンインタフェースデバイス（ＨＩＤ）ドライバを介して前記コンピューティングデバイスと通信可能に結合される、請求項１から８のいずれか一項に記載のコンピューティングデバイス。
【請求項１０】
前記コンピューティングデバイスは、前記複数のセンサを有するモノのインターネットエッジデバイスである、請求項１、３から９のいずれか一項に記載のコンピューティングデバイス。
【請求項１１】
前記コンピューティングデバイスは、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、タブレット、パーソナルデジタルアシスタント、ウルトラモバイルパーソナルコンピュータ、携帯電話、デスクトップコンピュータ、サーバ、又は、セットトップボックスからなるグループから選択される、請求項１〜９のいずれか一項に記載のコンピューティングデバイス。
【請求項１２】
演算するための方法であって、
コンピューティングデバイスのオペレーティングシステム不在のファームウェア環境（ＯＳ不在のファームウェア環境）が、複数のセンサの抽象概念を提供するインタフェースを有するセンサレイヤをインスタンス化する段階と、
前記ＯＳ不在のファームウェア環境内の前記センサレイヤが、複数のセンサにより生成されるセンサデータを受信する段階と、
前記センサレイヤが、前記センサレイヤの前記インタフェースを介して１又は複数のファームウェアモジュールに前記センサデータを選択的に提供する段階と
を備える方法。
【請求項１３】
前記１又は複数のファームウェアモジュールは、環境因子ブートモジュールを含み、
前記方法は、
前記環境因子ブートモジュールが、前記センサレイヤの前記インタフェースを通じて前記センサレイヤからセンサデータの一部を受信する段階と、
前記環境因子ブートモジュールが、前記センサデータの一部に少なくとも部分的に基づいて１又は複数のポリシーを適用する段階と
をさらに備え、
前記センサデータの一部は、前記１又は複数のポリシーにより規定される１又は複数の環境因子に関連付けられる、請求項１２に記載の方法。
【請求項１４】
前記１又は複数のファームウェアモジュールは、センサキャリブレーションモジュールを含み、
前記方法は、
前記センサキャリブレーションモジュールが、前記複数のセンサのうちの１つのセンサにより生成される前記センサデータに少なくとも部分的に基づいて前記１つのセンサの妥当性を確認する段階、又は、
前記センサキャリブレーションモジュールが、前記複数のセンサのうちの１つのセンサにより生成される前記センサデータに少なくとも部分的に基づいて前記１つのセンサをキャリブレートする段階
をさらに備える、請求項１２又は１３に記載の方法。
【請求項１５】
前記複数のセンサのうちの前記１つのセンサの妥当性を確認する段階は、さらに、前記１つのセンサにより生成される前記センサデータの妥当性を前記コンピューティングデバイスのオペレーティングシステムに検証させる段階を含む、請求項１４に記載の方法。
【請求項１６】
前記複数のセンサのうちの前記１つのセンサをキャリブレートする段階は、さらに、
前記１つのセンサにより生成される前記センサデータを基準値と一致させるべく、前記センサレイヤとインタラクトする段階、又は、
前記センサデータを前記基準値と一致させるべく、前記センサデータを操作する段階
をさらに含む、請求項１４に記載の方法。
【請求項１７】
前記ＯＳ不在のファームウェア環境は、ブート処理についてのユニファイドエクステンシブルファームウェアインタフェース環境（ＵＥＦＩ環境）である、請求項１２から１６のいずれか一項に記載の方法。
【請求項１８】
前記ＯＳ不在のファームウェア環境は、前記ＵＥＦＩ環境のドライバ実行環境（ＤＸＥ）である、請求項１７に記載の方法。
【請求項１９】
コンピューティングデバイスのプロセッサに、
１又は複数のモジュール、及び、センサレイヤを含むファームウェア環境を前記コンピューティングデバイスに提供する手順と、
前記センサレイヤが、複数のセンサにより生成されるセンサデータをオペレーティングシステム不在のファームウェア環境（ＯＳ不在のファームウェア環境）において受信する手順と、
前記センサレイヤが、前記複数のセンサを抽象化する前記センサレイヤのインタフェースを介して前記１又は複数のモジュールに前記センサデータを選択的に提供する手順と
を実行させるためのプログラムであって、
前記複数のセンサは、前記コンピューティングデバイスにあるか、又は、前記コンピューティングデバイスと動作可能に結合される、プログラム。
【請求項２０】
前記１又は複数のモジュールは、データセキュリティモジュールを含み、
前記プロセッサに、
前記データセキュリティモジュールが、暗号化されるデータを受信する手順と、
前記データセキュリティモジュールが、前記センサレイヤから受信されるセンサローカル情報に少なくとも部分的に基づいて暗号鍵を生成する手順と、
前記データセキュリティモジュールが、前記暗号鍵を利用して前記データを暗号化する手順と、
前記データセキュリティモジュールが、暗号情報として前記センサローカル情報を前記コンピューティングデバイスのメモリ内に存続させる手順と、
を実行させるための、請求項１９に記載のプログラム。
【請求項２１】
前記プロセッサに、
前記データセキュリティモジュールが、前記データを復号化するための要求を受信する手順と、
前記データセキュリティモジュールが、前記センサレイヤから追加のセンサローカル情報を受信する手順と、
前記データセキュリティモジュールが、前記暗号情報を取得する手順と、
前記データセキュリティモジュールが、前記追加のセンサローカル情報が前記暗号情報と一致するときに、前記追加のセンサローカル情報に少なくとも部分的に基づいて復号鍵を生成する手順と、
前記データセキュリティモジュールが、前記復号鍵を利用して前記データを復号化する手順と
を実行させるための、請求項２０に記載のプログラム。
【請求項２２】
前記センサローカル情報は、複数のセンサ読出し、センサ状態又はセンサキャリブレーションのうちの１又は複数を含む、請求項２０又は２１に記載のプログラム。
【請求項２３】
請求項１９から２２のいずれか一項に記載のプログラムを格納するコンピュータ可読記憶媒体。
【請求項２４】
演算するためのコンピューティングデバイスであって、
前記コンピューティングデバイスのオペレーティングシステム不在のファームウェア環境（ＯＳ不在のファームウェア環境）において、複数のセンサの抽象概念を提供するインタフェースを有するセンサレイヤをインスタンス化する手段
を備え、
前記センサレイヤは、
複数のセンサにより生成されるデータを受信する手段と、
前記センサレイヤの前記インタフェースを介して１又は複数のファームウェアモジュールにセンサデータを選択的に提供する手段と
を含み、
前記複数のセンサは、前記コンピューティングデバイスにあるか、又は、前記コンピューティングデバイスと動作可能に結合される、コンピューティングデバイス。
【請求項２５】
前記１又は複数のファームウェアモジュールは、環境因子ブートモジュールを含み、
前記環境因子ブートモジュールは、
前記センサレイヤの前記インタフェースを通じて前記センサレイヤからセンサデータの一部を受信する手段と、
前記センサデータの一部に少なくとも部分的に基づいて１又は複数のポリシーを適用する手段と
を有し、
前記センサデータの一部は、前記１又は複数のポリシーにより規定される１又は複数の環境因子と関連付けられる、請求項２４に記載のコンピューティングデバイス。
【請求項２６】
前記１又は複数のポリシーを適用する手段は、さらに、
前記１又は複数の環境因子と関連付けられる前記センサデータの一部に少なくとも部分的に基づいて前記１又は複数のポリシーに違反するか否かを決定する手段と、
前記決定の結果に少なくとも部分的に基づいて前記コンピューティングデバイスのブート処理を終了する手段と
を有する、請求項２５に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の複数の実施形態は、コンピューティングデバイスの分野に関し、特に、コンピューティングデバイスのオペレーティングシステム不在の動作に対するファームウェアセンササポートを提供することに関する。
【背景技術】
【０００２】
本明細書で提供される背景技術の説明は、本開示の文脈を一般に示すことを目的としている。本明細書において別途示されない限り、この節で説明される内容は、本願の特許請求の範囲に対する従来技術ではなく、この節に含まれることをもって従来技術であるとは認められない。
【０００３】
実質的に全てのコンピューティングデバイスは、パワーオン又はリセットの間にブート（初期化）処理を経る。通常、ブート（初期化）処理の間に、パワーオンセルフテストが実行され、その後、周辺機器デバイスが位置付けられ、初期化されて、ロードを終了し、オペレーティングシステムを開始する。現代のコンピューティングプラットフォームは、センサ情報を継続的に収集し得る多数のセンサを含む。しかしながら、当該技術分野における現在の状態の下において、センサ情報は、コンピューティングデバイスのオペレーティングシステムのセンサレイヤのみを通じてアクセス可能である。このように、コンピューティングデバイスのブート処理の間のセンサデータの利用、又は、オペレーティングシステムのないコンピューティングデバイスの利用ができない。
【図面の簡単な説明】
【０００４】
【図１】本開示の様々な実施形態に係る、ファームウェアセンサレイヤを有するコンピューティング環境の概略図を示す。
【図２】本開示の様々な実施形態に係る、コンピューティングデバイスの例示的なブートフローを示す。
【図３】本開示の様々な実施形態に係る、図２のブートフローの代替図を示す。
【図４】本開示の様々な実施形態に係る、データセキュリティモジュールにより、ブート処理の間、データを保護するための例示的な利用処理フローを示す。
【図５】本開示の様々な実施形態に係る、ブート処理の間、データの保護を解除するための例示的な利用処理フローを示す。
【図６】本開示の様々な実施形態に係る、ファームウェアセンサレイヤ又は複数のセンサ利用モジュールのうちのいずれかを実装するのに適した例示的なコンピューティングデバイスを示す。
【図７】様々な実施形態に係る、コンピューティングデバイスが本開示を実行できるように構成される複数の命令を有する例示的な記憶媒体を示す。
【発明を実施するための形態】
【０００５】
オペレーティングシステム（ＯＳ）不在の環境におけるセンサレイヤ及びセンサ利用のためのコンピューティングデバイス、方法及び記憶媒体が本明細書に開示される。複数の実施形態において、コンピューティングデバイスは、様々なセンサにより生成されるセンサデータを受信するように構成されるファームウェアセンサレイヤを有してよく、コンピューティングデバイスのブート処理、又は、ＯＳ不在の動作モードにおけるブート処理のようなＯＳ不在の動作の間を含む。ファームウェアセンサレイヤは、様々なセンサを抽象化するファームウェアセンサレイヤのインタフェースを介して１又は複数のファームウェア利用モジュールにセンサデータを選択的に提供してよい。複数の実施形態において、１又は複数の利用モジュールは、例えば、ブート処理を終了するか否かを決定するときに複数の環境因子に関するセンサデータを利用すること、コンピューティングデバイスに対してデータを保護すべくセンサデータを利用すること、ブート処理の間にセンサを検証するか、又は、センサをキャリブレートすべくセンサデータを利用することを含むが、これらに限定されない、様々な方法でセンサデータに作用するように構成され得る。
【０００６】
以下の詳細な説明において、参照は、同様の参照番号が全体を通じて同様の部分を示す本明細書の一部を形成する添付の図面に対して行われ、添付の図面には、実例として行われ得る実施形態が示される。本開示の範囲から逸脱することなく、他の実施形態が利用されてよく、かつ、構造的又は論理的な変更が行われてよいことが理解されるべきである。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきでなく、複数の実施形態の範囲は、添付の特許請求の範囲及びそれらの等価物によって定義される。
【０００７】
様々な動作は、特許請求の範囲の主題の理解に最も有用な態様で、複数の別個のアクション又は動作として順番に説明されてよい。しかしながら、説明の順序は、これらの動作が必ず順序に依存すること示唆するものと解釈されるべきではない。特に、これらの動作は、提示される順序で実行されなくてよい。説明される複数の動作は、説明された実施形態とは異なる順序で実行されてよい。複数の追加の実施形態において、様々な追加の動作が実行されてよく、及び／又は、説明される複数の動作が、省略されてよい。
【０００８】
本開示の目的のために、「Ａ及び／又はＢ」という表現は、（Ａ）、（Ｂ）、又は（Ａ及びＢ）を意味する。本開示の目的のために、「Ａ、Ｂ、及び／又はＣ」という表現は、（Ａ）、（Ｂ）、（Ｃ）、（Ａ及びＢ）、（Ａ及びＣ）、（Ｂ及びＣ）、又は（Ａ、Ｂ、及びＣ）を意味する。説明では、「実施形態において」又は「複数の実施形態において」という表現を用いることがあり、これらはそれぞれ、同じ又は異なる複数の実施形態のうちの１つ又は複数を指してよい。さらに、「備える」、「含む」、「有する」等の用語は、本開示の複数の実施形態に対して用いられる際、同義語である。
【０００９】
図１は、本開示の様々な実施形態に係る、ファームウェアセンサレイヤ１１８を有するコンピューティング環境の概略図を示す。複数の実施形態において、コンピューティング環境は、ハードウェア１００及びオペレーティングシステム不在の（ＯＳ不在の）ファームウェア環境１０２を含んでよい。ＯＳ不在のファームウェア環境１０２は、一部の実施形態において、ドライバスタック１０４と、センサレイヤ及び利用１０６との２つのセクションに分けられてよい。ドライバスタック１０４は、一部の実施形態において、ファームウェアセンサレイヤ（以下、単にセンサレイヤ）１１８とハードウェア１００との間の通信を提供するように構成されてよい。
【００１０】
ハードウェア１００は、ホストコントローラ１１０と結合される１又は複数のセンサ１０８を含んでよい。センサ１０８は、画像センサ、オーディオセンサ、タッチセンサ、全地球測位システム（ＧＰＳ）、加速度計、ジャイロスコープ、高度計、モイスチャーセンサ、湿度センサ、光センサ、圧力センサ、赤外線、ブルートゥース（登録商標）又はＷｉ−Ｆｉ（登録商標）のような複数の信号関連センサ、若しくは、それらの任意の組み合わせを含むが、これらに限定されない、任意の数又は任意のタイプのセンサを含んでよい。ホストコントローラ１１０は、例えば、センサ１０８とやりとりする複数のデータパケットの送信を含む、様々な低レベルデータ送信を制御するように構成されてよい。
【００１１】
複数の実施形態において、ドライバスタック１０４は、１又は複数のホストコントローラドライバ１１２、１又は複数のバスドライバ１１４、及び、１又は複数のクラスドライバ１１６を含んでよく、それらの全ては、以下で単独で参照される。ホストコントローラドライバ１１２は、一部の実施形態において、ホストコントローラ１１０及びバスドライバ１１４と通信可能に結合されてよい。ホストコントローラドライバ１１２は、バスドライバ１１４とホストコントローラ１１０との間の包括的なインタフェースを提供するように構成されてよい。ホストコントローラドライバ１１２は、以下に限定されるものではないが、エンハンスド・ホストコントローラインタフェース（ＥＨＣＩ）ドライバ、オープンホストコントローラインタフェース（ＯＨＣＩ）ドライバ、ユニバーサル・ホストコントローラインタフェース（ＵＨＣＩ）ドライバ又はそれらの任意の組み合わせのような、任意のタイプの従来のホストコントローラドライバを含んでよい。
【００１２】
バスドライバ１１４は、ホストコントローラドライバ１１２及びクラスドライバ１１６と通信可能に結合されてよく、クラスドライバ１１６とホストコントローラドライバ１１２との間をインタフェースで接続するように構成されてよい。バスドライバ１１４は、例えば、コンピューティングデバイスに対するハードウェア（例えば、（複数の）センサ１０８）の１又は複数の部品の接続を処理すること、及び、そこから切断することのような、数々のサービスを提供するように構成されてよい。バスドライバ１１４は、ハードウェアの１又は複数の部品の基本的な初期化、ハードウェアの１又は複数の部品に対するドライバの選択、及び／又は、ハードウェアの１又は複数の部品を有する複数の通信チャネルの高いレベルの管理も提供してよい。通信バスドライバ１１４は、例えば、ユニバーサルシリアルバス（ＵＳＢ）ドライバ、ブルートゥース（登録商標）ドライバ、若しくは、任意の他の適切なバス又は通信ドライバであってよい。
【００１３】
クラスドライバ１１６は、バスドライバ１１４及びセンサレイヤ１１８と通信可能に結合されてよく、センサレイヤ１１８と通信バスドライバ１１４との間をインタフェースで接続するように構成されてよい。クラスドライバ１１６は、ハードウェアデバイスのクラスに共通する複数の標準化プロトコルのセットを利用して、数々の機能を実装するように構成されてよい。クラスドライバ１１６は、一部の実施形態において、クラスの範囲内にある複数のハードウェアデバイスの動作について十分な機能を提供し得る。他の実施形態において、所与のハードウェアデバイスと対応する別個のドライバはクラスドライバ１１６の代わりに利用され得るか、又は、クラスドライバ１１６に追加して利用され得る。クラスドライバ１１６は、例えば、ヒューマンインタフェースデバイス（ＨＩＤ）クラスドライバ、物理インタフェースデバイス（ＰＩＤ）クラスドライバ、コンテンツセキュリティクラスドライバ、パーソナルヘルスケアクラスドライバ、診断デバイスクラスドライバ、無線コントローラクラスドライバ等を含むが、これらに限定されない、複数のＵＳＢクラスドライバのいずれかのような任意のタイプの従来のクラスドライバであってよい。
【００１４】
センサレイヤ１１８は、クラスドライバ１１６、及び、１又は複数のファームウェア利用モジュール（例えば、利用モジュール１２０−１２６）と通信可能に結合されてよく、クラスドライバ１１６と１又は複数のファームウェア利用モジュールとの間をインタフェースで接続するように構成されてよい。複数の実施形態において、センサレイヤ１１８は、コンピューティングデバイスと結合される任意の数のセンサ（例えば、（複数の）センサ１０８）により生成されるセンサデータを受信して集約するように構成されてよく、センサを１又は複数のファームウェア利用モジュールに抽象化するインタフェースを介して複数のファームウェア利用モジュールにデータを提供するように構成されてよい。この抽象概念は、センサ固有の情報を難読化する可能性があるが、センサハードウェアの複数の特性を認識させる必要なく、複数のファームウェア利用モジュールが、個々のセンサにより生成されるデータにアクセスすることを可能にする。一部の実施形態において、センサ固有の情報を難読化する一方、センサレイヤ１１８は、図４及び図５の例示的な処理フローを参照して述べられるような要求の際にセンサ固有の情報を提供するよう構成されてもよい。図示されるように、センサレイヤ１１８は、例えば、コンピューティングデバイスのブート処理の間、コンピューティングデバイスのリカバリの間、又は、ＯＳ不在の動作モード中（例えば、以下で述べられ、図２又は図３に示されるような、ユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）シェルのランタイムの間）、ＯＳ不在のファームウェア環境で動作するように構成されてよい。結果として、センサレイヤ１１８は、コンピューティングデバイス上のＯＳから独立して動作してよく、コンピューティングデバイスのブート処理の間、若しくは、コンピューティングデバイスが低電力状態にあるとき（例えば、コンピューティングデバイスがスリープモードにあるとき）、又は、コンピューティングデバイスがＯＳ不在の動作モードで動作しているときのような、他のＯＳ不在のコンテキストにおいて、センササポートをコンピューティングデバイスに提供してよい。一部の実施形態において、センサレイヤ１１８は、複数のセンササブレイヤから構成されてよく、各センササブレイヤは、異なるクラスドライバ、バスドライバ等と通信してよい。例えば、一方のセンササブレイヤが、ＵＳＢを介して１つのセンサと通信してよく、一方、他方のセンササブレイヤは、ブルートゥース（登録商標）を介して複数のセンサと通信してよい。
【００１５】
上述したように、センサレイヤ１１８は、プロビジョニングモジュール１２０、環境因子ブートモジュール１２２、センサキャリブレーションモジュール１２４及びデータセキュリティモジュール１２６のような１又は複数のファームウェア利用モジュールにセンサデータを提供するように構成されてよい。利用モジュール１２０−１２６は、単に例示的なものを意図しているに過ぎず、この開示に限定するものと見なされるべきでない。複数の実施形態において、利用モジュール１２０−１２６は、コンピューティングデバイスのブート処理の間、又は、ＯＳ不在の動作モード中（例えば、本明細書の他の箇所で述べられるＵＥＦＩシェルのランタイム）のような、ＯＳ不在のコンテキストにおいて実行されるべく、ファームウェアとして実装されてよく、センサレイヤ１１８により収集されて個々の利用モジュールに提供されるセンサデータに作用するように構成されてよい。
【００１６】
プロビジョニングモジュール１２０は、一部の実施形態において、センサレイヤ１１８への直接アクセスを有し得ない１又は複数の要求元からセンサデータに対する複数の要求を受信するように構成されてよく、プロビジョニングモジュール１２０は、センサレイヤ１１８からのデータをこれらの要求元に提供するように構成されてよい。一部の実施形態において、１又は複数の予め定められた条件が要求元及び／又はセンサデータによって満たされる場合、プロビジョニングモジュール１２０は、要求されたデータを提供するだけでよい。他の実施形態において、１又は複数の予め定められた条件が満たされる場合、プロビジョニングモジュール１２０は、コンピューティングデバイスの１又は複数の機能をイネーブル又はディセーブルにするように構成されてよい。これらの条件は、プロビジョニングモジュール１２０内で規定されてよく、又は、プロビジョニングモジュール１２０にアクセス可能となり得る別のファームウェアモジュールにより規定されてよい。当該条件は、センサレイヤ１１８によりプロビジョニングモジュール１２０に提供されるセンサデータに基づく任意の条件を含んでよい。例として、コンピューティングデバイスが低照明環境においてブートしていることを、プロビジョニングモジュール１２０がセンサデータから検出した場合、その後、プロビジョニングモジュール１２０は、コンピューティングデバイスに取り付けられるキーボードに対するバックライトを提供してよい。
【００１７】
環境因子ブートモジュール１２２は、一部の実施形態において、センサレイヤ１１８からセンサデータを受信し、センサデータに少なくとも部分的に基づいて１又は複数のポリシーを適用するように構成されてよい。これらのポリシーは、環境因子ブートモジュール１２２内で規定されてよく、又は、環境因子ブートモジュール１２２にアクセス可能となり得る別のファームウェアモジュールにより規定されてよい。複数の実施形態において、センサデータは、１又は複数のポリシーにより規定される複数の環境因子に関連付けられてよい。これらの環境因子は、温度、水分、湿度、高度、音圧レベル、可聴周波数、振動、速度、加速度、及び／又は、照明に関するデータを含んでよいが、これらに限定されない。
【００１８】
一部の実施形態において、１又は複数のポリシーは、１又は複数の環境因子に基づいてブート処理を終了することを含んでよい。実例として、コンピューティングデバイスがコンピューティングデバイスにとって過酷な環境においてブートしていることをセンサ１０８のうちの１又は複数が示す場合、環境因子ブートモジュール１２２は、ブート処理を終了する、又は、ブート処理を終了させるように構成されてよい。例として、適切に機能するにはコンピューティングデバイスにとってあまりにも高温な環境において、コンピューティングデバイスがブートしている場合、環境因子ブートモジュール１２２は、ブート処理を終了し、又は、ブート処理を終了させるように構成されてよい。
【００１９】
他の実施形態において、環境因子ブートモジュール１２２は、センサデータに関連付けられる１又は複数の環境因子に少なくとも部分的に基づいて、１又は複数のドライバを選択的にインスタンス化する、又は、これらをインスタンス化させるように構成されてよい。実例として、及び、単に例として、１つのドライバ又は複数のドライバのセットは、複数の低照明条件におけるインスタンス化のために選択されてよく、一方、別のドライバ又は複数のドライバのセットは、他の高照明条件におけるインスタンス化のために選択されてよい。そのような照明条件は、コンピューティングデバイスが動作される環境内の光センサからのセンサデータを利用して決定されてよい。
【００２０】
センサキャリブレーションモジュール１２４は、センサレイヤ１１８からセンサデータを受信し、少なくともセンサデータの一部の妥当性を確認又はキャリブレートするように構成されてよい。センサデータの一部の妥当性を確認すべく、センサキャリブレーションモジュール１２４は、既知の基準データを利用してセンサレイヤ１１８から受信されるセンサデータと比較してよく、基準値に対する受信されるセンサデータの妥当性を確認してよい。一部の実施形態において、基準値は、予め格納されたセンサデータであってよい。他の実施形態において、基準値は、基準センサにより提供されるセンサデータであってよい。さらなる他の実施形態において、基準値は、センサレイヤ１１８を通じてセンサにより提供される基準値であってよい。一部の実施形態において、センサキャリブレーションモジュール１２４は、その後、妥当性が確認されたセンサデータの精度が正しいことを証明すべく、オペレーティングシステムの開始の際に、妥当性の確認をオペレーティングシステムに検証させてよい。
【００２１】
センサデータの一部をキャリブレートすべく、センサキャリブレーションモジュール１２４は、基準値に対する受信したセンサデータの妥当性を確認することを求めてよく、上述したように、妥当性の確認が失敗したイベントにおいてセンサデータをキャリブレートすることを求めてよい。一部の実施形態において、センサキャリブレーションモジュール１２４は、センサレイヤ１１８とインタラクトして、センサにより生成されるデータを基準値と一致させるべく、受信したセンサデータを生成したセンサを調節する。他の実施形態において、センサキャリブレーションモジュール１２４は、受信したデータを直接操作してデータを基準値と一致させてよい。そのような実施形態において、操作されたデータは、その後、要求元に提供されてよく、又は、操作の基準が要求元に報告されてよい。実例として、センサキャリブレーションモジュール１２４は、操作の基準を利用して、センサレイヤ１１８により又は各センサから直接的にアプリケーションに提供されるデータをキャリブレートし得るアプリケーションに操作の基準を提供してよい。
【００２２】
データセキュリティモジュール１２６は、コンピューティングデバイスに対して、データを確保又は保護するように構成されてよい。複数の実施形態において、データセキュリティモジュール１２６は、ローカルセンサ情報を利用してデータを暗号化することにより、コンピューティングデバイスに対して、データを保護するように構成されてよく、これにより、その後、データがローカルセンサ情報なしで復号化されるのを防止し得る。これに対する処理が以下の図５及び図６を参照してより詳細に説明される。
【００２３】
図２は、本開示の様々な実施形態に係る、コンピューティングデバイスの例示的なブートフロー２００を示す。ブートフローの複数のステージは、図２の右側に沿って示される。ブートフローのＳＥＣ及びＰＥＩステージは、ブートフローのセキュリティフェーズ及び事前拡張可能なファームウェア環境（ＰＥＩ）フェーズにそれぞれ対応する。ＤＸＥフェーズは、ブートフローのドライバ実行環境フェーズに対応する。ＢＤＳフェーズは、ブートフローのブートデバイスセレクタフェーズに対応する。最後に、ＴＳＬフェーズ及びＲＴフェーズは、一時的なシステムロードフェーズ及びランタイムフェーズにそれぞれ対応する。これらのフェーズのそれぞれは、以下で図３を参照してさらに詳細に述べられる。ブートフロー２００は、例示的なブートフロー内で発生し得る選択された複数の処理のグループを表し、当該技術分野において容易に理解されるので、本開示に適用可能でない追加の処理は、提示されず、又は、述べられないことが理解される。さらに、ブートフローの異なる処理は、ブートフローの特定のフェーズ内で生じるように描かれているが、必要に応じて隣接するブートフローフェーズに実際に及んでよいことが理解される。ブートフロー２００は、コンピューティングデバイスがパワーオンされ得るか、又は、リセットされ得るブロック２０２で開始してよい。コンピューティングデバイスがパワーオンされたか、又は、リセットされた後に、処理は、ＳＥＣ及びＰＥＩフェーズに入り、基本ファームウェアが初期化され得るブロック２０４に進んでよい。この基本ファームウェアは、マザーボード、チップセット、中央処理装置（ＣＰＵ）、システムメモリ等を初期化するように構成されるファームウェアを含んでよい。
【００２４】
基本ファームウェアの初期化の後に、処理は、ＵＥＦＩフェーズが開始され得るブロック２０６に進んでよい。ブロック２０８において、ＵＥＦＩフェーズは、様々な処理が実行されるドライバ実行環境（ＤＸＥ）を開始してよく、複数のセンサを発見することを含む。複数のセンサは、例えば、本明細書で述べられた任意のタイプのセンサであってよい。複数のセンサが一旦発見されると、ブロック２１０において、任意の利用モジュールがロードされてよい。これらの利用モジュールは、例えば、プロビジョニングモジュール２１２、データセキュリティモジュール２１４、キャリブレーションモジュール２１６及び環境因子ブートモジュール２１８を含んでよい。これらの利用モジュールのそれぞれは、本明細書の他の箇所で説明される機能を実行するように構成されてよい。複数の利用モジュールは、メモリと結合されるプロセッサによる複数の命令の実行のために、個々の利用モジュールをコンピューティングデバイスのメモリに実装するための複数の命令のセットをロードすることによりロードされてよい。
【００２５】
複数の利用モジュールは、ブロック２１０で初期化されてもよい。これは、存続されなくてよい個々の利用モジュールに関連付けられる任意の値をリセットすることを含んでよい。例えば、以前のブートが環境因子ブートモジュール２１８により、又は、環境因子ブートモジュール２１８の要求で、ブート処理の終了をトリガされた場合、これは、ブート終了値により実行され、環境因子ブートモジュール２１８内又は環境因子ブートモジュール２１８によりアクセス可能なメモリ内に格納され、終了値が真であることを示すべく「１」のような終了値に設定されてよい。そのようなシナリオにおいて、この終了値は、終了値が偽であることを示すべく「０」のようなデフォルト値にリセットされてよい。
【００２６】
複数の利用モジュールがロードされて初期化された後、処理は、コンピューティングデバイスがセンサポーリング間隔内にあるか否かが決定され得るブロック２２０に進んでよい。コンピューティングデバイスがセンサポーリング間隔内にある場合、処理は、任意のセンサが利用可能であるか否かに応じて決定が行われ得るブロック２２２に進んでよい。利用可能なセンサがない場合、処理は、ローカルレポートが生成されるブロック２２４に進んでよく、処理は、ブロック２２０に戻ってよい。本明細書の他の箇所で説明されるように、利用可能なセンサがある場合、処理は、センサデータがセンサレイヤにより収集されてログが記録されるブロック２２６に進んでよい。ブロック２２６から、処理は、複数の利用モジュール、例えば、利用モジュール２１２−２１８が本明細書で説明される複数の処理又は機能のいずれかを実行するように実行され得るブロック２２８に進んでよい。ブロック２２８は、例えば、上述したような終了値が環境因子ブートモジュール２１８によって偽から真に変更されて、１又は複数の環境因子に基づいてブート処理を終了させる段階であってよい。ブロック２２８が完了した後に、処理は、この処理が反復され得るブロック２２０に戻ってよい。
【００２７】
ブロック２２０において、コンピューティングデバイスがセンサポーリング間隔内にない場合、次に、処理は、ＢＤＳフェーズに入り、オペレーティングシステム（ＯＳ）をロードして開始する時間であるか否かに応じて決定され得るブロック２３０に進んでよい。ＯＳを初期化する時間でない場合、処理は、ローカルレポートが生成されるブロック２２４に進んでよく、処理は、その後、ブロック２２０に戻ってよい。ブロック２３０で、ＯＳを初期化する時間である場合、次に、処理は、初期化の条件が満たされているか否かについて決定されるブロック２３２に進んでよい。ブロック２３２は、終了値のような変数が評価されて、ブート処理が継続されるべきか、又は、終了されるべきかを決定し得る箇所である。ブロック２３２の決定が否定的な場合、次に、処理は、ブート処理が終了され得るブロック２３４に進んでよい。例として、上述した終了値が真である場合、その結果、ブロック２３２の結果が否定的であってよく、ブート処理は、ブロック２３４で終了されてよい。ブロック２３２の決定が肯定的な場合、次に、処理は、センサ情報がＯＳに渡され得るブロック２３６に進んでよい。複数の実施形態では、キャリブレーションモジュール２１６が、１又は複数のセンサの結果を検証し、又は、１又は複数のセンサをキャリブレートし、この検証又はキャリブレーション情報は、同様に、ブロック２３６でＯＳに渡され得る。ブロック２３８において、コンピューティングデバイスは、ＯＳランタイム環境に入ってよく、処理は終了してよい。
【００２８】
代替的な実施形態において、例えば、コンピューティングデバイスは、モノのインターネット（ＩｏＴ）エッジデバイスであってよく、全てのオペレーティングシステムは、コンピューティングデバイスの適切な機能を必要としなくてよく、コンピューティングデバイスは、ＯＳ不在の動作モードで動作してよい。別の実施形態において、ＯＳ不在のモードは、メインＯＳが、メインＣＰＵの制御をシステム管理モード（ＳＭＭ）に渡すことにつながるシステム管理割り込み（ＳＭＩ）の起動を介するようにして、中断されるときを含んでよい。そのような複数の実施形態において、ブロック２４０内に示される機能は、ブロック２４２に示される機能と置き換えられてよい。そのような実施形態において、センサポーリング間隔が終了した場合、次に、処理は、ユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）の動作環境（例えば、ＵＥＦＩシェルのランタイム）を初期化する時間であるか否かについて決定され得るブロック２４４に進んでよい。ＵＥＦＩシェルの動作環境を初期化する時間でない場合、処理は、ローカルレポートが生成されるブロック２２４に進み、次に、処理はブロック２２０に戻ってよい。ブロック２４４で、ＵＥＦＩシェルの動作環境を初期化する時間である場合、次に、処理は、ＵＥＦＩシェルの動作環境の初期化についての条件が満たされるか否かについて決定されるブロック２４６に進んでよい。ブロック２４６は、終了値のような変数が評価されて、ブート処理が継続されるべきか、又は、終了されるべきかを決定し得る箇所である。ブロック２４６の決定が否定的な場合、次に、処理は、上述したように、ブート処理が終了され得るブロック２３４に進んでよい。例として、上述した終了値が真である場合、その結果、ブロック２４６の結果が否定的であってよく、ブート処理がブロック２３４で終了されてよい。ブロック２４６の決定が肯定的な場合、次に、処理は、ＵＥＦＩシェルの動作環境が初期化され得るブロック２４８に進んでよい。複数の実施形態では、キャリブレーションモジュール２１６が、１又は複数のセンサの結果を検証し、若しくは、１又は複数のセンサをキャリブレートしており、この検証又はキャリブレーション情報は、同様に、ブロック２４８でＵＥＦＩシェルの動作環境に渡されてよい。ブロック２５０で、コンピューティングデバイスは、ＵＥＦＩシェルのランタイムに入ってよく、処理は終了してよい。
【００２９】
図３は、本開示の様々な実施形態に係る、図２のブートフローの代替図を示す。ブートフロー３００は、スタートアップ処理が３１４で実行され得るセキュリティ（ＳＥＣ）フェーズ３０２で開始してよい。スタートアップ処理は、例えば、コンピューティングデバイスの中央処理装置（ＣＰＵ）のキャッシュをフラッシュすること、コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）を開始すべく、コンピューティングデバイスのＢＩＯＳのリセットベクタを実行すること、及び、システムメモリの初期化の前にスタックベースのプログラム言語を用いることを可能にすべく、ＣＰＵのキャッシュにデータ領域を確立することのような複数の予備アクションを実行してよい。
【００３０】
ＳＥＣフェーズ３０２は、事前拡張可能なファームウェアインタフェース（ＰＥＩ）フェーズ３０４に引き渡してよい。ＰＥＩフェーズ３０４において、ＰＥＩモジュールは、ＢＩＯＳにより３１６で実行され、又は、実行させられる。ＰＥＩモジュールは、３１８においてコンピューティングデバイスのＣＰＵを、３２０においてコンピューティングデバイスのチップセットを、及び、３２２においてコンピューティングデバイスのマザーボードを初期化してよく、又は、これらの初期化を実行させてよい。ＰＥＩフェーズ３０４は、ドライバ実行環境（ＤＸＥ）フェーズ３０６のためにコンピューティングデバイスを準備してよい。ドライバ実行環境（ＤＸＥ）ディスパッチャと共に、複数のブートサービス及び複数のランタイムサービスは、３２６及び３２４においてそれぞれ、ＢＩＯＳにより実行されてよく、又は、実行させられてよい。ＰＥＩフェーズ３０４は、ＤＸＥフェーズ３０６に引き渡してよい。
【００３１】
ＤＸＥフェーズ３０６の間、３２４におけるＤＸＥディスパッチャのような、ファームウェアが実行されてよく、そのようなファームウェアは、ブート処理の間にデバイスサポートを提供する複数のドライバを検索し、初期化するための役割を担い得る。このように、ＤＸＥディスパッチャは、図１のドライバ１１２−１１６のような複数のブロック３２８において、一連のデバイス、バス及びサービスドライバを初期化してよい。複数のブロック３２８は、図１のファームウェアセンサレイヤ１１８及びファームウェア利用モジュール１２０−１２６のような、センサレイヤ及び任意の利用モジュールがロードも初期化もされ得る箇所である。３３０において、ＤＸＥディスパッチャは、ブートディスパッチャを実行してよく、又は、ブートディスパッチャの実行を開始させてよく、次に、ＤＸＥフェーズ３０６は、ブートデバイスセレクタ（ＢＤＳ）フェーズ３０８に引き渡してよい。
【００３２】
ブートディスパッチャは、プラットフォームブートポリシーを実装してよく、３３２において、一時的なＯＳブートローダを実行してよく、又は、一時的なＯＳブートローダの実行を行わせてよく、及び／又は、一時的なシステムロード（ＴＳＬ）フェーズ３１０の間に、３３８において、最終ＯＳブートローダを実行してよく、又は、最終ＯＳブートローダの実行を行わせてよい。一実施形態において、ＴＳＬフェーズ３１０の間に、３３２における一時的なＯＳブートローダは、３３４におけるＵＥＦＩシェルの実行を開始してよく、３３４におけるＵＥＦＩシェルは、次に、３３６における（複数の）ＯＳ不在のアプリケーションの実行を開始してよい。最終ＯＳブートローダは、３４２において、ＯＳ環境を終わらせてよく、ＢＩＯＳは、３４２において、コンピューティングデバイスの制御をコンピューティングデバイスのＯＳに引き渡してよい。３４０において、ランタイムフェーズの間に、最終のＯＳ環境は、（複数の）ＯＳが存在するアプリケーションを実行してよい。
【００３３】
他の実施形態において、処理３００は、ＯＳ不在の環境におけるＯＳから独立して実行されてよい。ＯＳ不在の環境は、例えば、ＯＳにより提供される全ての機能を必要としないモノのインターネット（ＩｏＴ）エッジデバイス又は任意の他のコンピューティングデバイス上に実装されてよい。そのような環境において、ＴＳＬフェーズ３１０及びＲＴフェーズ３１２は、省略されてよく、かつ、コンピューティングデバイスにＵＥＦＩの動作状態を実現させ得るブロック３４４内に示されるＵＥＦＩシェルのランタイムフェーズ３４６と置き換えられてよい。そのような実施形態において、ブートディスパッチャ３３０は、プラットフォームブートポリシーを実装してよく、ＵＥＦＩシェルのブートローダ３４８を実行してよく、又は、ＵＥＦＩシェルのブートローダ３４８の実行を行わせてよい。３５０において、ＵＥＦＩシェルのブートローダ３４８は、３５２における１又は複数のＵＥＦＩシェルのアプリケーションの実行を順番に開始し得るＵＥＦＩシェルのランタイムの実行を開始してよい。このように、ＵＥＦＩシェルは、コンピューティングデバイスの制御を維持してよい。上記の１又は複数のＵＥＦＩシェルのアプリケーションは、例えば、上述したファームウェアセンサレイヤ及び／又は複数のセンサ利用を含んでよい。例として、図１のプロビジョニングモジュール１２０のようなファームウェアは、３５２で実行してよく、同様に構成され得る他のコンピューティングデバイスからのセンサデータを用いたセンサデータの集約のための遠隔サーバに対して、ファームウェアセンサレイヤにより提供されるセンサデータを報告するように構成されてよい。
【００３４】
図４は、本開示の様々な実施形態に係る、図１のデータセキュリティモジュール１２６又は図２のデータセキュリティモジュール２１４のような、データセキュリティモジュールによるＯＳ不在の環境において（例えば、コンピューティングデバイスのブート処理の間又はＯＳ不在の動作状態において）、データを保護するための例示的なセンサデータの利用処理フロー４００を示す。処理は、データ保護コマンドが、要求元から保護されるべきデータと共にデータセキュリティモジュールによるブート処理の間に受信され得るブロック４０２で開始してよい。一部の実施形態において、要求は、コンピューティングデバイスの基本入出力システム（ＢＩＯＳ）により行われていてよく、又は、ＢＩＯＳにより開始されていてよい。ブロック４０４において、データセキュリティモジュールは、ファームウェアセンサレイヤ（例えば、図１のファームウェアセンサレイヤ１１８）を介してローカルセンサ情報を取得してよい。ローカルセンサ情報は、複数のセンサ読出し、センサ状態情報及び／又はセンサキャリブレーション情報を含んでよい。ブロック４０６において、暗号鍵は、ファームウェアセンサレイヤから受信したローカルセンサ情報を利用してデータセキュリティモジュールにより生成されてよく、ブロック４０８において、データは、データがブート処理の間でさえもローカルセンサ情報を介してコンピューティングデバイスに対して保護されるように、暗号鍵を利用してデータセキュリティモジュールにより暗号化されてよい。ブロック４１０において、保護されたデータは、データセキュリティモジュールにより要求元に出力されてよく、ローカルセンサ情報は、保護又は暗号化、情報として存続されてよい。
【００３５】
図５は、本開示の様々な実施形態に係る、ＯＳ不在の環境において（例えば、コンピューティングデバイスのブート処理の間、又は、ＯＳ不在の動作状態において）、データの保護を解除するための説明に役立つ実例的な利用処理フロー５００を示す。処理は、保護を解除するコマンド及び保護されたデータが、コンピューティングデバイスのブート処理の間に、コンピューティングデバイスのＢＩＯＳのような、要求元からデータセキュリティモジュールにより受信され得るブロック５０２で開始してよい。ブロック５０４において、一部の実施形態において、保護されたデータに関連する保護情報は、データセキュリティモジュールにより取得されてよい。保護情報は、保護情報が存続されていたレポジトリから取得されてよく、又は、ブロック５０２で受信された要求から取得され得る。ブロック５０６において、保護情報と対応するローカルセンサ情報は、ファームウェアセンサレイヤ（例えば、図１のファームウェアセンサレイヤ１１８）を介してデータセキュリティモジュールにより取得されてよい。ブロック５０８において、データセキュリティモジュールは、保護情報がローカルセンサ情報と一致するか否かについての決定を行ってよい。保護情報がローカルセンサ情報と一致しなかった場合、次に、処理は、データセキュリティモジュールがセキュリティ違反を応答し得るブロック５１０に進んでよい。保護情報がローカルセンサ情報と一致しなかった場合、次に、処理は、コンピューティングデバイスの保護されたデータが、ブート処理の間でさえもローカルセンサ情報を介して保護が解除され得るように、データセキュリティモジュールが、ローカルセンサ情報を利用して保護されたデータを復号化し得るブロック５１２に進んでよい。ブロック５１４において、データセキュリティモジュールは、復号化されたデータを要求元に送信してよい。
【００３６】
図６は、本開示の様々な実施形態に係る、図１のファームウェアセンサレイヤ１１８のような、ファームウェアセンサレイヤ、又は、すでに本明細書で説明されたもののような、複数のセンサ利用モジュールのうちのいずれかを有するのに適した例示的なコンピューティングデバイスを示す。示されるように、コンピューティングデバイス６００は、１又は複数のプロセッサ又はプロセッサコア６０２、及び、システムメモリ６０４を含んでよい。複数の実施形態において、複数のプロセッサコア６０２は、１つのダイに配置されてよい。特許請求の範囲を含む本願の目的のために、「プロセッサ」及び「複数のプロセッサコア」という用語は、文脈が別の方法を明らかに求めていない限り、同義語と見なされてよい。コンピューティングデバイス６００は、ファームウェアストレージ６０６を含んでよい。ファームウェアストレージ６０６は、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）及び／又はフラッシュメモリを含むが、これらに限定されない、不揮発性メモリの形式をとってよい。さらに、コンピューティングデバイス６００は、（ディスケット、ハードドライブ、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）等のような）（複数の）大容量記憶デバイス６０８、（ディスプレイ、キーボード、カーソル制御等のような）（複数の）入力／出力（Ｉ／Ｏ）デバイス６１０、（ネットワークインタフェースカード、モデム等のような）複数の通信インタフェース６１２、及び、本明細書で述べた複数のセンサのいずれかをこれらに限定されることなく含み得る（複数の）センサデバイス６１４を含んでよい。複数の要素は、１又は複数のバスを表し得るシステムバス６１６を介して、互いに結合されてよい。複数のバスの場合、それらは１又は複数のバスブリッジ（不図示）によりブリッジされてよい。
【００３７】
これらの要素のそれぞれは、当該技術分野で知られている、それぞれの要素の従来の機能を実行してよい。特に、システムメモリ６０４及びファームウェアストレージ６０６は、以前に説明された複数の動作、例えば、限定されることはないが、一般に演算ロジック６２２と称されるファームウェアセンサレイヤ及び／又は複数のセンサ利用モジュールに関連する複数の動作を実装する複数のプログラミング命令のワーキングコピー及び永続的なコピーを格納するために利用されてよい。様々な動作は、（複数の）プロセッサ６０２によりサポートされる複数のアセンブラ命令又はそのような複数の命令にコンパイルされ得る、例えば、Ｃ言語のような、高級言語により実装され得る。
【００３８】
複数のプログラミング命令の永続的なコピーは、例えば、コンパクトディスク（ＣＤ）のような分配媒体（不図示）を通じて、又は、（分配サーバ（不図示）から）通信インタフェース６１２を通じてファクトリー内又はフィールド内のファームウェアストレージ６０６内に置かれてよい。すなわち、ファームウェアセンサレイヤの実装を有する１又は複数の分配媒体、及び／又は、１又は複数のセンサ利用モジュールは、センサレイヤ、及び／又は、１又は複数のセンサ利用モジュールを様々なコンピューティングデバイスに分配するために利用され得る。
【００３９】
これらの要素６１０−６１４の数、能力及び／又は容量は、例示的なコンピューティングデバイス６００の意図された利用に応じて、例えば、例示的なコンピューティングデバイス６００が、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、タブレット、パーソナルデジタルアシスタント、ウルトラモバイルパーソナルコンピュータ、携帯電話、デスクトップコンピュータ、サーバ、モノのインターネットデバイス又はセットトップボックスであるか応じて、異なってよい。これらの要素６１０−６１４の構造は、その他の点で知られており、したがって、さらに説明されることはない。
【００４０】
図７は、様々な実施形態に係る、以前に説明された、センサレイヤ、及び／又は、１又は複数のセンサ利用モジュールに関連する複数の動作のうちの全て又は当該複数の動作のうちの選択されたいくつかを実行するように構成される複数の命令を有する例示的な非一時的なコンピュータ可読記憶媒体を示す。図に示されるように、非一時的なコンピュータ可読記憶媒体７０２は、複数のプログラミング命令７０４を含んでよい。複数のプログラミング命令７０４は、デバイス、例えば、コンピューティングデバイス６００が、複数のプログラミング命令の実行に応答して、図１〜図５を参照して説明された複数の処理について１又は複数の動作を実行できるように構成され得る。代替的な実施形態において、複数のプログラミング命令７０４は、代わりに、複数の非一時的なコンピュータ可読記憶媒体７０２上に配置されてよい。さらに他の実施形態において、複数のプログラミング命令７０４は、複数の一時的なコンピュータ可読信号にエンコードされてよい。
【００４１】
図６に戻って参照すると、一実施形態について、複数のプロセッサ６０２のうちの少なくとも１つは、図１〜図５を参照して説明された複数の処理について１又は複数の動作を実行するように構成される演算ロジック６２２と共に（メモリ６０４及び／又はファームウェアストレージ６０６に格納する代わりに）パッケージ化されてよい。一実施形態について、複数のプロセッサ６０２のうちの少なくとも１つは、図１〜図５を参照して説明された複数の方法について複数の態様を実行するように構成される演算ロジック６２２と共にパッケージ化されて、システムインパッケージ（ＳｉＰ）を形成してよい。一実施形態について、複数のプロセッサ６０２のうちの少なくとも１つは、図１〜図５を参照して説明された複数の処理について１又は複数の動作を実行するように構成される演算ロジック６２２と共に同じダイに統合されてよい。一実施形態について、複数のプロセッサ６０２のうちの少なくとも１つは、図１〜図５を参照して説明された複数の処理について１又は複数の動作を実行するように構成された演算ロジック６２２と共にパッケージ化されて、システムオンチップ（ＳｏＣ）を形成してよい。そのようなＳｏＣは、任意の好適なコンピューティングデバイスに利用されてよい。
【００４２】
この説明の目的のために、コンピュータで利用可能な媒体又はコンピュータ可読媒体は、命令実行システム、装置又はデバイスにより用いられるプログラム、若しくは、これらに関連するプログラムを包含、格納、通信、伝搬及び移送できる任意の媒体であり得る。媒体は、揮発性又は不揮発性メモリであり得る。媒体は、電子、磁気、光学、電磁、赤外線又は半導体システム（若しくは装置又はデバイス）、若しくは、伝播媒体であり得る。コンピュータ可読記憶媒体の複数の例は、半導体又はソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、剛性磁気ディスク、及び、光ディスクを含む。現在の光ディスクの複数の例は、コンパクトディスク−リードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−読出し／書込み（ＣＤ−Ｒ／Ｗ）及びＤＶＤを含む。
【００４３】
本開示の複数の実施形態は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態、又は、ハードウェア及びソフトウェアの要素の両方を含む実施形態ついての形式をとることができる。様々な実施形態において、ソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコード等を含んでよいが、これらに限定されるものではない。さらに、本開示は、コンピュータ又は任意の命令実行システムによる使用のためのプログラムコード、又は、これらに関連するプログラムコードを提供するコンピュータで利用可能な媒体又はコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形式をとることができる。
【００４４】
特定の実施形態が図示され、本明細書に説明されてきたが、多岐にわたる代替的な実装例及び／又は等価的な実装例が、本開示の複数の実施形態の範囲から逸脱することなく示され、かつ、説明された特定の実施形態の代わりとなり得ることが当業者に理解されるだろう。本願は、本明細書で述べられた複数の実施形態の任意の脚色又は変形に包含することが意図されている。したがって、本開示の複数の実施形態が特許請求の範囲及びそれらの等価物のみによって限定されないことが明白に意図される。
【実施例】
【００４５】
様々な実施形態によれば、本開示は、複数の実施例を説明する。実施例１は、演算するためのコンピューティングデバイスであって、プロセッサと、１又は複数のモジュール、及び、センサレイヤを含むプロセッサにより動作させられるファームウェアとを備え、ファームウェアは、オペレーティングシステム（ＯＳ）不在のファームウェア環境において、複数のセンサにより生成されるセンサデータを受信し、複数のセンサを抽象化するセンサレイヤのインタフェースを介して１又は複数のモジュールにセンサデータを選択的に提供し、複数のセンサは、コンピューティングデバイスにあるか、又は、コンピューティングデバイスと動作可能に結合される。
【００４６】
実施例２は、実施例１の主題を含んでよく、コンピューティングデバイス上でインスタンス化されるオペレーティングシステムをさらに備え、ファームウェアは、オペレーティングシステムから独立している。
【００４７】
実施例３は、実施例１の主題を含んでよく、１又は複数のモジュールは、環境因子ブートモジュールを含み、環境因子ブートモジュールは、センサレイヤのインタフェースを通じてセンサレイヤからセンサデータの一部を受信し、センサデータの一部に少なくとも部分的に基づいて、１又は複数のポリシーを適用し、センサデータの一部は、１又は複数のポリシーにより規定される１又は複数の環境因子と関連付けられる。
【００４８】
実施例４は、実施例３の主題を含んでよく、１又は複数のポリシーを適用することは、１又は複数の環境因子と関連付けられるセンサデータの一部に少なくとも部分的に基づいて、１又は複数のポリシーに違反するという決定が行われるときに、コンピューティングデバイスのブート処理を終了することである。
【００４９】
実施例５は、実施例３の主題を含んでよく、１又は複数のポリシーを適用することは、１又は複数の環境因子と関連付けられるセンサデータの一部に少なくとも部分的に基づいて、１又は複数のドライバを選択的にインスタンス化することである。
【００５０】
実施例６は、実施例３〜５のいずれか一つの主題を含んでよく、１又は複数の環境因子は、温度、水分、湿度、高度、音圧レベル、可聴周波数、振動、速度、加速度又は照明のうちの１又は複数を含む。
【００５１】
実施例７は、実施例１の主題を含んでよく、１又は複数のファームウェアモジュールは、センサキャリブレーションモジュールを含み、センサキャリブレーションモジュールは、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサの妥当性を確認し、又は、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサをキャリブレートする。
【００５２】
実施例８は、実施例７の主題を含んでよく、センサキャリブレーションモジュールは、複数のセンサのうちの１つのセンサの妥当性を確認し、さらに、１つのセンサにより生成されるセンサデータの当該妥当性をコンピューティングデバイスのオペレーティングシステムに検証させる。
【００５３】
実施例９は、実施例７の主題を含んでよく、センサキャリブレーションモジュールは、複数のセンサのうちの１つのセンサにより生成されるセンサデータを基準値と一致させるべく、センサレイヤとのインタラクションを通じて、又は、センサデータを基準値と一致させるべく、センサデータの操作を通じて、１つのセンサをキャリブレートする。
【００５４】
実施例１０は、実施例１の主題を含んでよく、１又は複数のファームウェアモジュールは、データセキュリティモジュールを含み、データセキュリティモジュールは、暗号化されるデータを受信し、センサレイヤから受信されるローカルセンサ情報に少なくとも部分的に基づいて暗号鍵を生成し、暗号鍵を利用してデータを暗号化し、暗号情報としてコンピューティングデバイスのメモリにローカルセンサ情報を存続させる。
【００５５】
実施例１１は、実施例１０の主題を含んでよく、データセキュリティモジュールは、さらに、データを復号化する要求を受信し、センサレイヤから追加のローカルセンサ情報を受信し、暗号情報を取得し、追加のローカルセンサ情報が暗号情報と一致するときに追加のローカルセンサ情報に少なくとも部分的に基づいて復号鍵を生成し、復号鍵を利用して情報を復号化する。
【００５６】
実施例１２は、実施例１０又は１１のいずれか一方の主題を含んでよく、ローカルセンサ情報は、複数のセンサ読出し、センサ状態又はセンサキャリブレーションのうちの１又は複数を含む。
【００５７】
実施例１３は、実施例１の主題を含んでよく、ＯＳ不在のファームウェア環境は、ブート処理についてのユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）環境である。
【００５８】
実施例１４は、実施例１３の主題を含んでよく、ＯＳ不在のファームウェア環境は、ＵＥＦＩ環境のドライバ実行環境（ＤＸＥ）である。
【００５９】
実施例１５は、実施例１３の主題を含んでよく、コンピューティングデバイスは、オペレーティングシステムから独立しており、ブート処理は、コンピューティングデバイスにＯＳ不在の動作状態を実現することを結果的にもたらすべく、拡張可能なファームウェアインタフェース動作環境をインスタンス化する。
【００６０】
実施例１６は、実施例１〜１５のいずれか一つの主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、コンピューティングデバイス上に配置され、バスインタフェースを介してプロセッサと動作可能に結合される。
【００６１】
実施例１７は、実施例１〜１５のいずれか一つの主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、ヒューマンインタフェースデバイス、ＨＩＤ、ドライバを介してコンピューティングデバイスと通信可能に結合される。
【００６２】
実施例１８は、実施例１又は実施例３〜１５のいずれか一つの主題を含んでよく、コンピューティングデバイスは、複数のセンサを有するモノのインターネットエッジデバイスである。
【００６３】
実施例１９は、実施例１〜１５のいずれか一つの主題を含んでよく、コンピューティングデバイスは、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、タブレット、パーソナルデジタルアシスタント、ウルトラモバイルパーソナルコンピュータ、携帯電話、デスクトップコンピュータ、サーバ、モノのインターネットデバイス、又はセットトップボックスからなるグループから選択される。
【００６４】
実施例２０は、演算するための方法であって、方法は、コンピューティングデバイスのオペレーティングシステム（ＯＳ）不在のファームウェア環境が、複数のセンサの抽象概念を提供するインタフェースを有するセンサレイヤをインスタンス化する段階と、ＯＳ不在のファームウェア環境内のセンサレイヤが、複数のセンサにより生成されるセンサデータを受信する段階と、センサレイヤが、センサレイヤのインタフェースを介して１又は複数のファームウェアモジュールにセンサデータを選択的に提供する段階とを備える。
【００６５】
実施例２１は、実施例２０の主題を含んでよく、オペレーティングシステム（ＯＳ）不在のファームウェア環境は、コンピューティングデバイス上にオペレーティングシステムのインスタンス化を結果的にもたらすブート処理の一部であり、ファームウェア環境は、オペレーティングシステムから独立している。
【００６６】
実施例２２は、実施例２０の主題を含んでよく、１又は複数のファームウェアモジュールは、環境因子ブートモジュールを含み、方法は、さらに、環境因子ブートモジュールが、センサレイヤのインタフェースを通じてセンサレイヤからセンサデータの一部を受信する段階と、環境因子ブートモジュールが、センサデータの一部に少なくとも部分的に基づいて１又は複数のポリシーを適用する段階とを備え、センサデータの一部は、１又は複数のポリシーにより規定される１又は複数の環境因子に関連付けられる。
【００６７】
実施例２３は、実施例２２の主題を含んでよく、１又は複数のポリシーを適用する段階は、さらに、１又は複数の環境因子に関連付けられるセンサデータの一部に少なくとも部分的に基づいて１又は複数のポリシーに違反するか否かを決定する段階と、決定の結果に少なくとも部分的に基づいて、コンピューティングデバイスのブート処理を終了する段階とを含む。
【００６８】
実施例２４は、実施例２２の主題を含んでよく、１又は複数のポリシーを適用する段階は、さらに、１又は複数の環境因子と関連付けられるセンサデータの一部に少なくとも部分的に基づいて、１又は複数のドライバを選択的にインスタンス化する段階を含む。
【００６９】
実施例２５は、実施例２２〜２４のいずれか一つの主題を含んでよく、１又は複数の環境因子は、温度、水分、湿度、高度、音圧レベル、可聴周波数、振動、速度、加速度又は照明のうちの１又は複数を含む。
【００７０】
実施例２６は、実施例２０の主題を含んでよく、１又は複数のファームウェアモジュールは、センサキャリブレーションモジュールを含み、方法は、センサキャリブレーションモジュールが、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサの妥当性を確認する段階と、センサキャリブレーションモジュールが、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサをキャリブレートする段階とをさらに備える。
【００７１】
実施例２７は、実施例２６の主題を含んでよく、複数のセンサのうちの１つのセンサの妥当性を確認する段階は、さらに、１つのセンサにより生成されるセンサデータの当該妥当性をコンピューティングデバイスのオペレーティングシステムに検証させる段階を含む。
【００７２】
実施例２８は、実施例２６の主題を含んでよく、複数のセンサのうちの１つのセンサをキャリブレートする段階は、１つのセンサにより生成されるセンサデータを基準値と一致させるべく、センサレイヤとインタラクトする段階、又は、センサデータを基準値と一致させるべく、センサデータを操作する段階をさらに含む。
【００７３】
実施例２９は、実施例２０の主題を含んでよく、１又は複数のファームウェアモジュールは、データセキュリティモジュールを含み、方法は、データセキュリティモジュールが、暗号化されるデータを受信する段階と、データセキュリティモジュールがセンサレイヤから受信されるローカルセンサ情報に少なくとも部分的に基づいて暗号鍵を生成する段階と、データセキュリティモジュールが、暗号鍵を利用してデータを暗号化する段階と、データセキュリティモジュールが、暗号情報としてローカルセンサ情報をコンピューティングデバイスのメモリ内に存続させる段階とをさらに備える。
【００７４】
実施例３０は、実施例２９の主題を含んでよく、方法は、データセキュリティモジュールが、データを復号化するための要求を受信する段階と、データセキュリティモジュールが、センサレイヤから追加のローカルセンサ情報を受信する段階と、データセキュリティモジュールが、暗号情報を取得する段階と、データセキュリティモジュールが、追加のローカルセンサ情報が暗号情報と一致するときに追加のローカルセンサ情報に少なくとも部分的に基づいて復号鍵を生成する段階と、データセキュリティモジュールが、復号鍵を利用してデータを復号化する段階をさらに備える。
【００７５】
実施例３１は、実施例２９又は３０のいずれか一方の主題を含んでよく、ローカルセンサ情報は、複数のセンサ読出し、センサ状態又はセンサキャリブレーションのうちの１又は複数を含む。
【００７６】
実施例３２は、実施例２０の主題を含んでよく、ＯＳ不在のファームウェア環境は、コンピューティングデバイスのブート処理についてのユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）環境である。
【００７７】
実施例３３は、実施例３２の主題を含んでよく、ＯＳ不在のファームウェア環境は、ＵＥＦＩ環境のドライバ実行環境（ＤＸＥ）である。
【００７８】
実施例３４は、実施例３２の主題を含んでよく、コンピューティングデバイスは、オペレーティングシステムから独立しており、方法は、ファームウェア環境が、コンピューティングデバイスにＯＳ不在の動作状態を実現することを結果的にもたらす拡張可能なファームウェアインタフェース動作環境をインスタンス化する段階をさらに備える。
【００７９】
実施例３５は、実施例２０の主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、コンピューティングデバイス上に配置され、バスインタフェースを介してプロセッサと動作可能に結合される。
【００８０】
実施例３６は、実施例２０の主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、ヒューマンインタフェースデバイス、ＨＩＤ、ドライバを介してコンピューティングデバイスと通信可能に結合される。
【００８１】
実施例３７は、実施例２０の主題を含んでよく、コンピューティングデバイスは、複数のセンサを有するモノのインターネットエッジデバイスである。
【００８２】
実施例３８は、実施例２０の主題を含んでよく、コンピューティングデバイスは、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、タブレット、パーソナルデジタルアシスタント、ウルトラモバイルパーソナルコンピュータ、携帯電話、デスクトップコンピュータ、サーバ又はセットトップボックスからなるグループから選択される。
【００８３】
実施例３９は、そこに格納される複数の命令を有する１又は複数のコンピュータ可読媒体であって、複数の命令は、コンピューティングデバイスのプロセッサにより実行されるときに、コンピューティングデバイスに、実施例２０〜３８のいずれか一つの方法を実行させる。
【００８４】
実施例４０は、そこに格納される複数の命令を有する１又は複数のコンピュータ可読媒体であって、複数の命令は、コンピューティングデバイスのプロセッサにより実行されるときに、１又は複数のモジュール、及び、センサレイヤを含むファームウェア環境を有するコンピューティングデバイスを提供し、センサレイヤは、複数のセンサにより生成されるセンサデータをオペレーティングシステム（ＯＳ）不在の環境において受信し、複数のセンサを抽象化するセンサレイヤのインタフェースを介して１又は複数のモジュールにセンサデータを選択的に提供し、複数のセンサは、コンピューティングデバイスにあり、又は、コンピューティングデバイスと動作可能に結合される。
【００８５】
実施例４１は、実施例４０の主題を含んでよく、ファームウェアは、コンピューティングデバイスのオペレーティングシステムから独立している。
【００８６】
実施例４２は、実施例４０の主題を含んでよく、１又は複数のモジュールは、環境因子ブートモジュールを含み、環境因子ブートモジュールは、センサレイヤのインタフェースを通じてセンサレイヤからセンサデータの一部を受信し、センサデータの一部に少なくとも部分的に基づいて、１又は複数のポリシーを適用し、センサデータの一部は、１又は複数のポリシーにより規定される１又は複数の環境因子と関連付けられる。
【００８７】
実施例４３は、実施例４２の主題を含んでよく、１又は複数のポリシーを適用することは、１又は複数の環境因子と関連付けられるセンサデータの一部に少なくとも部分的に基づいて、１又は複数のポリシーに違反することの決定が行われたときに、コンピューティングデバイスのブート処理を終了することである。
【００８８】
実施例４４は、実施例４２の主題を含んでよく、１又は複数のポリシーを適用することは、１又は複数の環境因子と関連付けられるセンサデータの一部に少なくとも部分的に基づいて、１又は複数のドライバを選択的にインスタンス化することである。
【００８９】
実施例４５は、実施例４２〜４４のいずれか一つの主題を含んでよく、１又は複数の環境因子は、温度、水分、湿度、高度、音圧レベル、可聴周波数、振動、速度、加速度又は照明のうちの１又は複数を含む。
【００９０】
実施例４６は、実施例３９の主題を含んでよく、１又は複数のファームウェアモジュールは、センサキャリブレーションモジュールを含み、センサキャリブレーションモジュールは、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサの妥当性を確認し、又は、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサをキャリブレートする。
【００９１】
実施例４７は、実施例４６の主題を含んでよく、センサキャリブレーションモジュールは、複数のセンサのうちの１つのセンサの妥当性を確認し、さらに、１つのセンサにより生成されるセンサデータの当該妥当性をコンピューティングデバイスのオペレーティングシステムに検証させる。
【００９２】
実施例４８は、実施例４６の主題を含んでよく、センサキャリブレーションモジュールは、複数のセンサのうちの１つのセンサにより生成されるセンサデータを基準値と一致させるべく、センサレイヤとのインタラクションを通じて、又は、センサデータを基準値と一致させるべく、センサデータの操作を通じて、１つのセンサをキャリブレートする。
【００９３】
実施例４９は、実施例４０の主題を含んでよく、１又は複数のファームウェアモジュールは、データセキュリティモジュールを含み、データセキュリティモジュールは、暗号化されるデータを受信し、センサレイヤから受信されるローカルセンサ情報に少なくとも部分的に基づいて、暗号鍵を生成し、暗号鍵を利用してデータを暗号化し、暗号情報としてローカルセンサ情報をコンピューティングデバイスのメモリ内に存続させる。
【００９４】
実施例５０は、実施例４９の主題を含んでよく、データセキュリティモジュールは、さらに、データを復号化するための要求を受信し、センサレイヤから追加のローカルセンサ情報を受信し、暗号情報を取得し、追加のローカルセンサ情報が暗号情報と一致するときに、追加のローカルセンサ情報に少なくとも部分的に基づいて、復号鍵を生成し、復号鍵を利用してデータを復号化する。
【００９５】
実施例５１は、実施例４９又は５０のいずれか一方の主題を含んでよく、ローカルセンサ情報は、複数のセンサ読出し、センサ状態又はセンサキャリブレーションのうちの１又は複数を含む。
【００９６】
実施例５２は、実施例４０の主題を含んでよく、ＯＳ不在のファームウェア環境は、ブート処理についてのユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）環境である。
【００９７】
実施例５３は、実施例４０の主題を含んでよく、ＯＳ不在のファームウェア環境は、ＵＥＦＩ環境のドライバ実行環境（ＤＸＥ）である。
【００９８】
実施例５４は、実施例５２の主題を含んでよく、ブート処理は、コンピューティングデバイスに動作状態を実現することを結果的にもたらす拡張可能なファームウェアインタフェース動作環境をインスタンス化する。
【００９９】
実施例５５は、実施例４０の主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、コンピューティングデバイス上に配置され、バスインタフェースを介してプロセッサと動作可能に結合される。
【０１００】
実施例５６は、実施例４０の主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、ヒューマンインタフェースデバイス、ＨＩＤ、ドライバを介してコンピューティングデバイスと通信可能に結合され、センサレイヤは、さらに、ＨＩＤデバイスドライバを利用して複数のセンサと通信する。
【０１０１】
実施例５７は、実施例４０の主題を含んでよく、コンピューティングデバイスは、複数のセンサを有するモノのインターネットエッジデバイスである。
【０１０２】
実施例５８は、実施例４０の主題を含んでよく、コンピューティングデバイスは、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、タブレット、パーソナルデジタルアシスタント、ウルトラモバイルパーソナルコンピュータ、携帯電話、デスクトップコンピュータ、サーバ又はセットトップボックスからなるグループから選択される。
【０１０３】
実施例５９は、演算するためのコンピューティングデバイスであって、オペレーティングシステム（ＯＳ）不在のファームウェア環境において、複数のセンサの抽象概念を提供するインタフェースを有するセンサレイヤをインスタンス化する手段と、複数のセンサにより生成されるデータをＯＳ不在のファームウェア環境において受信する手段と、センサレイヤのインタフェースを介して１又は複数のファームウェアモジュールにセンサデータを選択的に提供する手段とを備え、複数のセンサは、コンピューティングデバイスにあるか、又は、コンピューティングデバイスと動作可能に結合される。
【０１０４】
実施例６０は、実施例５９の主題を含んでよく、ＯＳ不在のファームウェア環境は、コンピューティングデバイス上にオペレーティングシステムのインスタンス化を結果的にもたらすブート処理の一部である。
【０１０５】
実施例６１は、実施例５９の主題を含んでよく、１又は複数のファームウェアモジュールは、環境因子ブートモジュールを含み、環境因子ブートモジュールは、センサレイヤのインタフェースを通じてセンサレイヤからセンサデータの一部を受信する手段と、センサデータの一部に少なくとも部分的に基づいて、１又は複数のポリシーを適用する手段とを有し、センサデータの一部は、１又は複数のポリシーにより規定される１又は複数の環境因子と関連付けられる。
【０１０６】
実施例６２は、実施例６１の主題を含んでよく、１又は複数のポリシーを適用する手段は、さらに、１又は複数の環境因子と関連付けられるセンサデータの一部に少なくとも部分的に基づいて、１又は複数のポリシーに違反するか否かを決定する手段と、決定の結果に少なくとも部分的に基づいて、コンピューティングデバイスのブート処理を終了する手段とを含む。
【０１０７】
実施例６３は、実施例６１の主題を含んでよく、１又は複数のポリシーを適用する手段は、さらに、１又は複数の環境因子と関連付けられるセンサデータの一部に少なくとも部分的に基づいて、１又は複数のドライバを選択的にインスタンス化する手段を含む。
【０１０８】
実施例６４は、実施例６１〜６３のいずれか一つの主題を含んでよく、１又は複数の環境因子は、温度、水分、湿度、高度、音圧レベル、可聴周波数、振動、速度、加速度又は照明のうちの１又は複数を含む。
【０１０９】
実施例６５は、実施例５９の主題を含んでよく、１又は複数のファームウェアモジュールは、センサキャリブレーションモジュールを含み、センサキャリブレーションモジュールは、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサの妥当性を確認する手段、又は、複数のセンサのうちの１つのセンサにより生成されるセンサデータの一部に少なくとも部分的に基づいて、１つのセンサをキャリブレートする手段を有する。
【０１１０】
実施例６６は、実施例６５の主題を含んでよく、複数のセンサのうちの１つのセンサの妥当性を確認する手段は、さらに、１つのセンサにより生成されるセンサデータの妥当性をコンピューティングデバイスのオペレーティングシステムに検証させる手段を含む。
【０１１１】
実施例６７は、実施例６５の主題を含んでよく、複数のセンサのうちの１つのセンサをキャリブレートする手段は、さらに、１つのセンサにより生成されるセンサデータを基準値と一致させるべく、センサレイヤとインタラクトする手段、又は、センサデータを基準値と一致させるべく、センサデータを操作する手段を含む。
【０１１２】
実施例６８は、実施例５９の主題を含んでよく、１又は複数のファームウェアモジュールは、データセキュリティモジュールを含み、データセキュリティモジュールは、暗号化されるデータを受信する手段と、センサレイヤから受信されるローカルセンサ情報に少なくとも部分的に基づいて、暗号鍵を生成する手段と、暗号鍵を利用してデータを暗号化する手段と、暗号情報としてローカルセンサ情報をコンピューティングデバイスのメモリ内に存続させる手段とを有する。
【０１１３】
実施例６９は、実施例６８の主題を含んでよく、データセキュリティモジュールは、さらに、データを復号化するための要求を受信する手段と、センサレイヤから追加のローカルセンサ情報を受信する手段と、暗号情報を取得する手段と、追加のローカルセンサ情報が暗号情報と一致するときに、追加のローカルセンサ情報に少なくとも部分的に基づいて、復号鍵を生成する手段と、復号鍵を利用してデータを復号化する手段とを有する。
【０１１４】
実施例７０は、実施例６８又は６９のいずれか一方の主題を含んでよく、ローカルセンサ情報は、複数のセンサ読出し、センサ状態又はセンサキャリブレーションのうちの１又は複数を含む。
【０１１５】
実施例７１は、実施例５９の主題を含んでよく、ＯＳ不在のファームウェア環境は、ブート処理についてのユニファイドエクステンシブルファームウェアインタフェース（ＵＥＦＩ）環境である。
【０１１６】
実施例７２は、実施例７１の主題を含んでよく、ＯＳ不在のファームウェア環境は、ＵＥＦＩ環境のドライバ実行環境（ＤＸＥ）である。
【０１１７】
実施例７３は、実施例７１の主題を含んでよく、コンピューティングデバイスは、オペレーティングシステムから独立しており、さらに、コンピューティングデバイスに動作状態を実現することを結果的にもたらす拡張可能なファームウェアインタフェース動作環境をインスタンス化する手段を備える。
【０１１８】
実施例７４は、実施例５９の主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、コンピューティングデバイス上に配置される。
【０１１９】
実施例７５は、実施例５９の主題を含んでよく、複数のセンサのうちの１又は複数のセンサは、ヒューマンインタフェースデバイス、ＨＩＤ、ドライバを介してコンピューティングデバイスと通信可能に結合される。
【０１２０】
実施例７６は、実施例５９の主題を含んでよく、コンピューティングデバイスは、複数のセンサを有するモノのインターネットエッジデバイスである。
【０１２１】
実施例７７は、実施例５９の主題を含んでよく、コンピューティングデバイスは、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、タブレット、パーソナルデジタルアシスタント、ウルトラモバイルパーソナルコンピュータ、携帯電話、デスクトップコンピュータ、サーバ又はセットトップボックスからなるグループから選択される。
【図１】
0006396502.tif 000002
【図２】
0006396502.tif 000003
【図３】
0006396502.tif 000004
【図４】
0006396502.tif 000005
【図５】
0006396502.tif 000006
【図６】
0006396502.tif 000007
【図７】
0006396502.tif 000008