(57)【特許請求の範囲】
【請求項１】
マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とする方法であって、
当該方法は、
ユーザーから、前記プログラムコードの検証に必要とされるメタデータを受信する工程を含み、ここで、前記メタデータは、
前記プログラムコード内における複数のプログラムポイントの位置であって、当該複数のプログラムポイントの各プログラムポイントは、前記マイクロコントローラー用の前記プログラムコード内におけるバックグラウンドジョブのスタート、スリープ動作およびウェークアップ動作の少なくとも１つに対応する前記複数のプログラムポイントの位置と；
前記スリープ・ウェークアッププロトコルを実行する前記プログラムコードのスタートにおける初期割り込み保護状態（ＩＰＳ）と；
割り込みの有効化および無効化の少なくとも１つのための割り込み関数と；
タスク切り替えの有効化および無効化の少なくとも１つのためのタスク関数と；を含んでおり、
当該方法は、さらに、
前記複数のプログラムポイントの前記各プログラムポイントに対し、前記初期割り込み保護状態（ＩＰＳ）および前記割り込み関数への呼び出しに基づいて、実際のＩＰＳを算出し；前記タスク関数への呼び出しに基づいて、タスクロック状態（ＴＬＳ）を算出し；条件文および関数呼び出しポイントの少なくとも１つを含む経路エンティティを算出し；さらに共有変数を算出する工程と、
前記経路エンティティを用いて、前記複数のプログラムポイントの前記各プログラムポイントの間の遷移経路を判別する工程と、
前記実際のＩＰＳ、前記タスクロック状態（ＴＬＳ）および前記共有変数に基づいて、前記経路エンティティの各セットに対するレビュー情報を算出する工程と、
前記ユーザーに所定のフォーマットで、前記遷移経路に関連する情報と、前記レビュー情報とを含み、前記ユーザーが前記プログラムコードを検証することを容易とする報告を生成する工程と、を含み
前記メタデータを受信する工程、前記各プログラムポイントに対し前記算出を行う工程、前記遷移経路を判別する工程、前記レビュー情報を算出する工程および前記報告を生成する工程は、プロセッサーによって実行されることを特徴とする方法。
【請求項２】
前記メタデータは、
（ａ）前記マイクロコントローラー内において実行され、外部信号によってウェークアップモードが呼び出された場合に要求される高電力投入モードのタイプと、
（ｂ）前記スリープ動作の予測ＩＰＳと、をさらに含む請求項１に記載の方法。
【請求項３】
前記プログラムコードは、前記プログラムコードのＡＳＴノードの第１のセットを含む抽象構文木（ＡＳＴ）を生成するよう処理され、前記ＡＳＴノードの第１のセットおよび前記メタデータに基づいて、前記プログラムポイントに対応するＡＳＴノードの第２のセットが特定される請求項１に記載の方法。
【請求項４】
前記複数のプログラムポイントの前記各プログラムポイントの間の前記遷移経路を判別する前記工程は、前記プログラムポイントのペアの間の可能性のある全ての遷移経路を特定する工程を含み、
前記可能性のある遷移経路は、
ａ．前記バックグラウンドジョブの前記スタートから始まり、前記スリープ動作で終わる遷移経路と、
ｂ．前記スリープ動作から始まり、前記ウェークアップ動作で終わる遷移経路と、
ｃ．前記ウェークアップ動作から始まり、前記バックグラウンドジョブの前記スタートで終わる遷移経路と、をさらに含む請求項１に記載の方法。
【請求項５】
遷移経路上の経路エンティティに関連する前記情報は、
（ａ）前記経路エンティティのプログラム文と、
（ｂ）前記プログラムコード内における入力ファイル名と、行番号とを含む、前記プログラムコード内における前記経路エンティティの位置と、
（ｃ）条件文または関数呼び出しポイントの少なくとも１つである前記経路エンティティのタイプと、
（ｄ）前記経路エンティティの前記プログラム文において算出された実際の割り込み保護状態（ＩＰＳ）と、を含む請求項１に記載の方法。
【請求項６】
前記レビュー情報は、
（ａ）前記スリープ動作におけるユーザーの予測ＩＰＳの値と、前記スリープ動作に対応する前記プログラムポイントの各セットの実際のＩＰＳの値とを比較することによって評価される前記スリープ動作におけるＩＰＳのレビュー判定と、
（ｂ）前記経路エンティティのプログラム文において算出された前記タスクロック状態（ＴＬＳ）と、
（ｃ）割り込みサービスルーティーン（ＩＳＲ）によって上書きされる共有変数のリスクに関連するレビュー判定と、
（ｄ）前記ＩＳＲによる共有変数上書きのリスクのレビュー判定に関連する前記共有変数および前記共有変数を上書きする前記ＩＳＲと、
（ｅ）並行タスクによって上書きされる共有変数のリスクに関連するレビュー判定と、
（ｆ）前記並行タスクによる共有変数上書きのリスクのレビュー判定に関連する前記共有変数および前記共有変数を上書き可能な前記並行タスクと、を含む請求項１に記載の方法。
【請求項７】
マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコード３０２の検証を容易とするシステム１０２であって、
プロセッサー２０２と、
前記プロセッサー２０２に接続されたメモリー２０６と、を含み、
前記メモリー２０６は、前記プロセッサー２０２が実行可能な複数のモジュール２０８を含み、
前記複数のモジュール２０８は、
ユーザーから、前記プログラムコード３０２の検証に必要とされるメタデータ３０４を受信するよう構成された入力処理モジュール２１０を含み、ここで、前記メタデータ３０４は、
前記プログラムコード３０２内における複数のプログラムポイントの位置であって、当該複数のプログラムポイントの各プログラムポイントは、前記マイクロコントローラー用の前記プログラムコード３０２内におけるバックグラウンドジョブのスタート、スリープ動作およびウェークアップ動作の少なくとも１つに対応する前記複数のプログラムポイントの位置と；
前記スリープ・ウェークアッププロトコルを実行する前記プログラムコード３０２のスタートにおける初期割り込み保護状態（ＩＰＳ）と；
割り込みの有効化および無効化の少なくとも１つのための割り込み関数と；
タスク切り替えの有効化および無効化の少なくとも１つのためのタスク関数と；を含んでおり、
前記複数のモジュール２０８は、さらに、
前記複数のプログラムポイントの前記各プログラムポイントに対し、前記初期割り込み保護状態（ＩＰＳ）および前記割り込み関数への呼び出しに基づいて、実際のＩＰＳを算出し；前記タスク関数への呼び出しに基づいて、タスクロック状態（ＴＬＳ）を算出し；条件文および関数呼び出しポイントの少なくとも１つを含む経路エンティティを算出し；さらに共有変数を算出するよう構成された算出モジュール２１４と、
前記経路エンティティを用いて、前記複数のプログラムポイントの前記各プログラムポイントの間の遷移経路を判別し；前記実際のＩＰＳ、前記タスクロック状態（ＴＬＳ）および前記共有変数に基づいて、前記経路エンティティの各セットに対するレビュー情報を算出するよう構成された経路分析モジュール２１６と、
前記ユーザーに所定のフォーマットで、前記遷移経路に関連する情報と、前記レビュー情報とを含み、前記ユーザーが前記プログラムコードを検証することを容易とする報告を生成するよう構成された報告生成モジュール２１８と、を含むことを特徴とするシステム。
【請求項８】
前記メタデータは、
（ａ）前記マイクロコントローラー内において実行され、外部信号によってウェークアップモードが呼び出された場合に要求される高電力投入モードのタイプと、
（ｂ）前記スリープ動作の予測ＩＰＳと、をさらに含む請求項７に記載のシステム。
【請求項９】
抽象構文木（ＡＳＴ）を特定するよう構成された特定モジュール２１２をさらに含み、
前記ＡＳＴは、前記プログラムコードを処理することによって生成され、
前記ＡＳＴは、前記プログラムコードのＡＳＴノードの第１のセットを含み、
前記ＡＳＴノードの第１のセットおよび前記メタデータに基づいて、前記プログラムポイントに対応するＡＳＴノードの第２のセットが特定される請求項７に記載のシステム。
【請求項１０】
遷移経路上の経路エンティティに関連する前記情報は、
（ａ）前記経路エンティティのプログラム文と、
（ｂ）前記プログラムコード内における入力ファイル名と、行番号とを含む、前記プログラムコード内における前記経路エンティティの位置と、
（ｃ）条件文または関数呼び出しポイントの少なくとも１つである前記経路エンティティのタイプと、
（ｄ）前記経路エンティティの前記プログラム文において算出された実際の割り込み保護状態（ＩＰＳ）と、を含む請求項７に記載のシステム。
【請求項１１】
前記レビュー情報は、
（ａ）前記スリープ動作におけるユーザーの予測ＩＰＳの値と、前記スリープ動作に対応する前記プログラムポイントの各セットの実際のＩＰＳの値とを比較することによって評価される前記スリープ動作におけるＩＰＳのレビュー判定と、
（ｂ）前記経路エンティティのプログラム文において算出された前記タスクロック状態（ＴＬＳ）と、
（ｃ）割り込みサービスルーティーン（ＩＳＲ）によって上書きされる共有変数のリスクに関連するレビュー判定と、
（ｄ）前記ＩＳＲによる共有変数上書きのリスクのレビュー判定に関連する前記共有変数および前記共有変数を上書きする前記ＩＳＲと、
（ｅ）並行タスクによって上書きされる共有変数のリスクに関連するレビュー判定と、
（ｆ）前記並行タスクによる共有変数上書きのリスクのレビュー判定に関連する前記共有変数および前記共有変数を上書き可能な前記並行タスクと、を含む請求項７に記載のシステム。
【請求項１２】
マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とするコンピュータープログラムを保存しているコンピューター可読媒体であって、
命令セットを含み、
前記命令セットは、
ユーザーから、前記プログラムコードの検証に必要とされるメタデータを受信するための命令を含み、ここで、前記メタデータは、
前記プログラムコード内における複数のプログラムポイントの位置であって、当該複数のプログラムポイントの各プログラムポイントは、前記マイクロコントローラー用の前記プログラムコード内におけるバックグラウンドジョブのスタート、スリープ動作およびウェークアップ動作の少なくとも１つに対応する前記複数のプログラムポイントの位置と；
前記スリープ・ウェークアッププロトコルを実行する前記プログラムコードのスタートにおける初期割り込み保護状態（ＩＰＳ）と；
割り込みの有効化および無効化の少なくとも１つのための割り込み関数と；
タスク切り替えの有効化および無効化の少なくとも１つのためのタスク関数と；を含んでおり、
前記命令セットは、さらに、
前記複数のプログラムポイントの前記各プログラムポイントに対し、前記初期割り込み保護状態（ＩＰＳ）および前記割り込み関数への呼び出しに基づいて、実際のＩＰＳを算出し；前記タスク関数への呼び出しに基づいて、タスクロック状態（ＴＬＳ）を算出し；条件文および関数呼び出しポイントの少なくとも１つを含む経路エンティティを算出し；さらに共有変数を算出するための命令と、
前記経路エンティティを用いて、前記複数のプログラムポイントの前記各プログラムポイントの間の遷移経路を判別するための命令と、
前記実際のＩＰＳ、前記タスクロック状態（ＴＬＳ）および前記共有変数に基づいて、前記経路エンティティの各セットに対するレビュー情報を算出するための命令と、
前記ユーザーに所定のフォーマットで、前記遷移経路に関連する情報と、前記レビュー情報とを含み、前記ユーザーが前記プログラムコードを検証することを容易とする報告を生成するための命令と、を含むことを特徴とするコンピューター可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において記述される本発明は、スリープ・ウェークアッププロトコル実行（Sleep Wakeup protocol implementation）を検証する方法およびシステム一般に関する。
【背景技術】
【０００２】
電力保存（power preservation）は、エネルギー制約システム（energy-constrained system）において、非常に重要な問題である。これらエネルギー制約システムにおける電力を保存するために、スリープ・ウェークアッププロトコルのような省電力プロトコルが実行されている。スリープ・ウェークアッププロトコルの実行は、ネットワーク内における通信の指定されたタスクを実行するためのノードによる要求電力に応じて、ネットワークに接続されたノードを、省電力モードと、電力消費モードとの間で自動的に切り替えることを可能とする。省電力モードおよび電力消費モードはそれぞれ、スリープモードおよびウェークアップモードとも称される。スリープ・ウェークアッププロトコルは、通信が要求されていない、または、ノードによって実行可能なタスクが存在しない場合、ネットワークに接続されていないスタンドアロンノードや、ネットワークに接続されたノードを、スリープモードに切り替える。同様に、スリープ・ウェークアッププロトコルは、通信が要求される、または、タスクがノードによって実行可能となるとすぐに、スタンドアロン／ネットワークノードをスリープモードからウェークアップモードに切り替える。よって、スタンドアロンノードまたはネットワークノード内においてスリープ・ウェークアッププロトコルを実行することにより、エネルギー消費が最小限度に抑制される。
【０００３】
一般に、スリープ・ウェークアッププロトコルは、ネットワーク内の各センサーノードに組み込まれたマイクロコントローラー内において実行される。スリープ・ウェークアッププロトコルは、プログラミング言語でコード化され、さらに、アプリケーションを介してシステム内において実行される。このアプリケーションは、スリープ・ウェークアッププロトコルを実行するよう構成されている。スリープ・ウェークアッププロトコルの実行は、プロトコルの状態遷移がマイクロコントローラーの仕様（specifications）に従っているかをチェックするために、自身の検証（verification）を必要とする。スリープ・ウェークアッププロトコルを実行するシステムにとって、状態遷移（スリープ／ウェークアップ）がマイクロコントローラーの仕様に従っているかどうかを検証することは、非常に困難である。このような検証は、スリープ・ウェークアッププロトコルの実行が、ランタイム時における予期せぬ動作の原因とならないかを検出するために必要とされる。予期せぬ動作のいくつかの例として、電池消耗（Battery Drain）やウォッチドックタイマー（watch dog timer）のリセット等が挙げられる。本分野の現状では、この検証は、手動で行われており、一般的に、多大な時間を消費し、高コストで、エラーが発生しやすいことがわかっている。したがって、このタイプの検証の自動化技術が、本分野の現状において必要とされている。この検証は、低電力消費（スリープ）モードから高電力消費（ウェークアップ）モードおよびその逆へのマイクロコントローラーの遷移の間に発生するであろう欠陥を検出することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本概要は、スリープ・ウェークアッププロトコルの検証を容易とするシステムおよび方法に関する様態を説明するために提供されるものであり、そのコンセプトは、以下の詳細な説明においてさらに説明される。本概要は、特許請求の範囲に記載された本発明の本質的特徴を特定する意図はなく、また、特許請求の範囲に記載された本発明の範囲を決定または限定するために用いられる意図もない。
【課題を解決するための手段】
【０００５】
実施形態の１つにおいて、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とするシステムが開示される。該システムは、プロセッサーと、プロセッサーに接続されたメモリーとを備え、プロセッサーは、メモリー内に保存されているモジュールセットを実行する。モジュールセットは、入力処理モジュールと、特定モジュールと、算出モジュールと、経路分析モジュールと、報告生成モジュールとを含む。入力処理モジュールは、ユーザーからメタデータを受信するよう構成されている。このメタデータは、プログラムコードの検証に必要とされる。メタデータは、プログラムコード内における複数のプログラムポイントの位置を含む。複数のプログラムポイントの各プログラムポイントは、マイクロコントローラー用のプログラムコード内におけるバックグラウンドジョブ（background job:優先順位の高いプログラムやデータがない場合に呼び出される優先順位の低いジョブ）のスタート（start）、スリープ動作およびウェークアップ動作の少なくとも１つに対応する。さらに、メタデータは、スリープ・ウェークアッププロトコルを実行するプログラムコードのスタートにおける初期割り込み保護状態（IPS: Interrupt Protection Status）と、割り込みの有効化および無効化の少なくとも１つのための割り込み関数（function）と、タスク切り替えの有効化および無効化の少なくとも１つのためのタスク関数とを含む。算出モジュールは、複数のプログラムポイントの各プログラムポイントに対し、初期割り込み保護状態（ＩＰＳ）および割り込み関数への呼び出しに基づいて、実際の割り込み保護状態（ＩＰＳ）を算出するよう構成されている。さらに、算出モジュールは、タスク関数への呼び出しに基づいて、タスクロック状態（TLS: Task Lock Status）を算出するよう構成されている。また、算出モジュールは、経路エンティティ（entity: 一単位として扱われるデータ集合であって、なんらかの標識（例えば、経路）に対し、その実体であるデータの集合を意味する）および共有変数を算出するよう構成されている。この経路エンティティは、条件文（conditional statement）および関数呼び出しポイント（function call points）の少なくとも１つを含む。経路分析モジュールは、メタデータ内において特定（specified）されたプログラムポイントの各ペアの間の遷移経路（transition paths）を判別するよう構成されている。この遷移経路は、経路エンティティを用いて（in terms of the path entities）、算出される。さらに、経路分析モジュールは、実際の割り込み保護状態（ＩＰＳ）、タスクロック状態（ＴＬＳ）および共有変数に基づいて、経路エンティティの各セットに対するレビュー情報を算出するよう構成されている。そして、報告生成モジュールは、ユーザーに所定のフォーマットで報告を生成するよう構成されている。この報告は、遷移経路に関係する情報と、レビュー情報とを含んでおり、当該報告は、ユーザーがプログラムコードを検証することを容易とする。
【０００６】
別の実施形態において、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とする方法が開示される。該方法は、ユーザーからメタデータを受信する工程を含む。このメタデータは、プログラムコードの検証に必要とされる。メタデータは、プログラムコード内における複数のプログラムポイントの位置を含む。複数のプログラムポイントの各プログラムポイントは、マイクロコントローラー用のプログラムコード内におけるバックグラウンドジョブのスタート、スリープ動作およびウェークアップ動作の少なくとも１つに対応する。さらに、メタデータは、スリープ・ウェークアッププロトコルを実行するプログラムコードのスタートにおける初期割り込み保護状態（ＩＰＳ）と、割り込みの有効化および無効化の少なくとも１つのための割り込み関数と、タスク切り替えの有効化および無効化の少なくとも１つのためのタスク関数とを含む。さらに、該方法は、初期割り込み保護状態（ＩＰＳ）および割り込み関数への呼び出しに基づいて、実際の割り込み保護状態（ＩＰＳ）を算出するよう提供されている。また、該方法は、タスク関数への呼び出しに基づいて、タスクロック状態（ＴＬＳ）を算出可能とされている。また、経路エンティティおよび共有変数が算出される。経路エンティティは、条件文および関数呼び出しポイントの少なくとも１つを含む。経路エンティティは、プログラムが実行されているときに、実行フロー（execution flow）を制御するプログラム文（program statement）である。このような経路エンティティは、プログラムコード内における条件および関数の呼び出しポイントである。該方法は、さらに、メタデータ内において特定されたプログラムポイントの各ペアの間の遷移経路を判別するよう提供される。遷移経路は、経路エンティティを用いて、算出される。遷移経路の判別の際に、遷移経路内に含まれる各経路エンティティに対するレビュー情報を算出する方法が提供される。このレビュー情報は、実際の割り込み保護状態（ＩＰＳ）、タスクロック状態（ＴＬＳ）および共有変数に基づく。そして、ユーザーに所定のフォーマットで報告が生成される。この報告は、遷移経路に関係する情報と、レビュー情報とを含み、当該報告は、ユーザーがプログラムコードを検証することを容易とする。
【０００７】
さらに別の実施形態において、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とするコンピュータープログラムが実装されたコンピュータープログラム製品が開示される。コンピュータープログラム製品は、命令セット（set of instructions）を含む。該命令は、ユーザーからメタデータを受信するための命令を含む。このメタデータは、プログラムコードの検証のために必要とされる。メタデータは、プログラムコード内における複数のプログラムポイントの位置を含む。複数のプログラムポイントの各プログラムポイントは、マイクロコントローラー用のプログラムコード内におけるバックグラウンドジョブのスタート、スリープ動作およびウェークアップ動作の少なくとも１つに対応する。さらに、メタデータは、スリープ・ウェークアッププロトコルを実行するプログラムコードのスタートにおける初期割り込み保護状態（ＩＰＳ）と、割り込みの有効化および無効化の少なくとも１つのための割り込み関数と、タスク切り替えの有効化および無効化の少なくとも１つのためのタスク関数とを含む。メタデータを受信した後、複数のプログラムポイントの各プログラムポイントに対し、初期割り込み保護状態（ＩＰＳ）および割り込み関数への呼び出しに基づいて実際の割り込み保護状態（ＩＰＳ）を算出し、タスク関数への呼び出しに基づいてタスクロック状態（ＴＬＳ）を算出し、条件文および関数呼び出しポイントの少なくとも１つを含む経路エンティティを算出し、さらに、共有変数を算出するための命令が提供される。さらに、メタデータ内において特定されたプログラムポイントの各ペアの間の遷移経路を判別するための命令が提供される。遷移経路を判別した後、遷移経路内に含まれる各経路エンティティに対するレビュー情報を算出するための命令が提供される。このレビュー情報は、実際の割り込み保護状態（ＩＰＳ）、タスクロック状態（ＴＬＳ）および共有変数に基づいている。そして、ユーザーに所定のフォーマットでレポートを生成するための命令が提供される。この報告は、遷移経路に関係する情報と、レビュー情報とを含んでおり、当該報告は、ユーザーがプログラムコードを検証することを容易とする。
【図面の簡単な説明】
【０００８】
添付の図面を参照して、詳細な説明が記述される。図面中に示された各参照番号の左端の数字は、その参照番号が最初に現れる図面の番号を表している。各図面において、同様の特徴およびコンポーネントには、同じ参照番号が付されている。
【０００９】
【図１】図１は、本発明の実施形態にかかるスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とするシステムのネットワーク実施を図示している。
【００１０】
【図２】図２は、本発明の実施形態にかかるシステムを図示している。
【００１１】
【図３】図３は、本発明の実施形態にかかるシステムの詳細な働きを図示している。
【００１２】
【図４】図４は、本発明の例示的な実施形態にかかるプログラムコードを介したスリープ・ウェークアッププロトコル実行を図示している。
【００１３】
【図５】図５は、本発明の実施形態にかかるスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とする方法を図示している。
【発明を実施するための形態】
【００１４】
マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とするシステムおよび方法が開示される。プログラムコードは、スリープ・ウェークアッププロトコルを実行する。スリープ・ウェークアッププロトコルは、マイクロコントローラーがスリープ状態と、ウェークアップ状態との間を交互に切り替わることを可能とする。スリープ状態は低電力消費状態とも称され、ウェークアップ状態は高電力消費状態とも称される。プログラムコードの実行時における割り込み保護状態（ＩＰＳ）がマイクロコントローラーの仕様とマッチング（整合）したときと同様、特定の監視条件（guarding conditions）が満たされたときに、スリープ状態とウェークアップ状態との間の遷移が発生する。監視条件の予測またはＩＰＳにおける任意の逸脱（deviation）は、プログラムコードの実行時における予期せぬ動作の原因となりうる。よって、そのような動作を防ぐために、プログラムコードの検証が必要とされる。
【００１５】
この検証を実行するために、スリープモードとウェークアップモードとの間でマイクロコントローラーを交互に切り替え可能とする「状態遷移経路（state transition paths）」（以下「遷移経路」と称される）が判別される。スリープ・ウェークアッププロトコルを実行するプログラムコード内における遷移経路を判別するために、メタデータが、ユーザーからの入力として、システムによって受信される。メタデータは、複数のプログラムポイントの位置のような情報を含んでいる。各プログラムポイントは、バックグラウンドジョブのスタート、スリープ動作およびウェークアップ動作のようなスリープ・ウェークアッププロトコルのそれぞれ異なる動作に対応する。メタデータは、さらに、初期割り込み保護状態（ＩＰＳ）と、マイクロコントローラー内において実行される高電力投入モード（high power activation mode）のタイプと、スリープ動作の予想割り込み保護状態（ＩＰＳ）と、割り込みを有効化または無効化するための割り込み関数と、タスク切り替えを有効化または無効化するためのタスク関数とを含む。
【００１６】
また、所与のプログラムコードは、抽象構文木（AST: Abstract Syntax Tree:プログラミング言語の意味に関係ない情報を取り除き、意味に関係ある情報のみを取り出した（抽象した）木構造のデータ構造）を特定するために処理される。ＡＳＴは、プログラムコードのＡＳＴノードの第１のセットを含んでいる。そして、ＡＳＴノードの第１のセットおよびユーザーから受信したメタデータに基づいて、メタデータによって特定されるプログラムポイントに対応するＡＳＴノードの第２のセットが特定される。よって、ユーザーからメタデータを受信し、ＡＳＴおよびＡＳＴノードの第２のセットを特定した後、システムは、全てのプログラムポイント文（program point statement）の実際のＩＰＳ、タスクロック状態（ＴＬＳ）および共有変数を算出する。さらに、システムは、条件文または関数呼び出しポイントを含む経路エンティティを算出する。この情報を算出した後、メタデータ内において特定されたプログラムポイントの各ペアの間の遷移経路が、前に算出された経路エンティティを用いて判別される。プログラムポイントのペアの間の遷移経路の判別は、２つのプログラムポイントの位置の間の可能性のある全ての遷移経路を算出する工程を含む。この遷移経路算出は、バックグラウンドジョブのスタートに対応するプログラムポイントと、スリープ動作に対応するプログラムポイントとの間の遷移経路の特定する工程と、スリープ動作に対応するプログラムポイントと、ウェークアップ動作に対応するプログラムポイントとの間の遷移経路を特定する工程と、ウェークアップ動作に対応するプログラムポイントと、バックグラウンドジョブのスタートに対応するプログラムポイントとの間の遷移経路を特定する工程とを含む。可能性のある遷移経路を特定した後、システムは、レビュー有用情報（「レビュー情報」とも称される）を算出可能とされている。レビュー情報は、実際のＩＰＳ、タスクロック状態および共有変数に基づいて算出される。そして、所定のフォーマットに従って、報告が生成される。報告は、経路エンティティを用いて判別された遷移経路に関連する情報と、各経路エンティティに対して算出されたレビュー情報とを含む。よって、報告内に生成されたコンテンツ／情報に基づいて、ユーザーは、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードを検証することができる。
【００１７】
マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易にする以下に記載されたシステムおよび方法の様態は、任意の数の異なる演算システム、環境および／または構成によって実施可能であるが、本実施形態は、以下の例示的なシステムを照らして記述される。
【００１８】
図１を参照すると、本発明の実施形態にかかるプログラムコードの検証を容易にするシステム１０２のネットワーク実施１００が図示されている。実施形態の１つにおいて、システム１０２は、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコード３０２の検証を容易とするよう実施（構成）されている。
【００１９】
本発明は、システム１０２がサーバー上でスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とするよう実施（構成）されているものとして説明されるが、システム１０２は、ラップトップコンピューター、デスクトップコンピューター、ノートパソコン、ワークステーション、メインフレームコンピューター、サーバー、ネットワークサーバー等のような様々な演算システム内において実施されてもよいことを理解されたし。システム１０２は、１つ以上のユーザーデバイス１０４−１、１０４−２・・・１０４−Ｎ（以下、集合的にユーザー１０４と称される）を介して複数のユーザーまたはユーザーデバイス１０４上に存在するアプリケーションによってアクセス可能であることを理解されたし。ユーザーデバイス１０４の例として、これに限定されないが、ポータブルコンピューター、ＰＤＡ（Personal Digital Assistant）、携帯型デバイスおよびワークステーション等が挙げられる。ユーザーデバイス１０４は、ネットワーク１０６を介して、システム１０２に通信可能に接続されている。
【００２０】
実施形態の１つにおいて、ネットワーク１０６は、無線ネットワーク、有線ネットワークまたはこれらの組み合わせであってもよい。ネットワーク１０６は、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、広域エリアネットワーク（ＷＡＮ）、インターネット等の異なるタイプのネットワークのいずれか１つとして実施することができる。ネットワーク１０６は、専用ネットワークまたは共有ネットワークのいずれであってもよい。共有ネットワークは、様々なプロトコル（例えば、ＨＴＴＰ（Hypertext Transfer Protocol）、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）、無線アプリケーションプロトコル（ＷＡＰ）等）を使用し、互いに通信を実行する異なるタイプのネットワークの接続を意味する。さらに、ネットワーク１０６は、ルーター、ブリッジ、サーバー、演算デバイス、ストレージデバイス等を含む様々なネットワークデバイスを含んでいてもよい。
【００２１】
図２を参照すると、本発明の実施形態にかかるシステム１０２が図示されている。実施形態の１つにおいて、システム１０２は、少なくとも１つのプロセッサー２０２と、入出力（Ｉ／Ｏ）インターフェース２０４と、メモリー２０６とを含む。少なくとも１つのプロセッサー２０２は、１つ以上のマイクロプロセッサー、マイクロコンピューター、マイクロコントローラー、デジタル信号プロセッサー、中央演算ユニット（ＣＰＵ）、状態機械（state machines）、論理回路および／または動作命令に基づいて信号を操作する任意のデバイスとして実施することができる。数ある機能の中でもとりわけ、少なくとも１つのプロセッサー２０２は、メモリー２０６内に保存されているコンピューター可読命令またはモジュールをフェッチ（fetch:メモリーから命令を持ってくること）および実行するよう構成されている。
【００２２】
Ｉ／Ｏインターフェース２０４は、様々なソフトウェアおよびハードウェアインターフェース（例えば、ウェブインターフェース、ＧＵＩ（Graphical User Interface）等）を含んでいてもよい。Ｉ／Ｏインターフェース２０４は、システム１０２が、直接またはクライアントデバイス１０４を介してユーザーと相互通信することを可能とする。さらに、Ｉ／Ｏインターフェース２０４は、システム１０２が、ウェブサーバーや外部データサーバーのような他の演算デバイス（図示せず）と通信を実行することを可能とする。Ｉ／Ｏインターフェース２０４は、有線ネットワーク（例えば、ＬＡＮやケーブル等）や、無線ネットワーク（例えば、ＷＬＡＮ、携帯電話、衛星等）を含む広範なネットワークおよびプロトコルタイプ内における多重通信（multiple communication）を容易にすることができる。Ｉ／Ｏインターフェース２０４は、多数のデバイスを互いにまたは別のサーバーに接続する１つ以上のポートを含んでいてもよい。
【００２３】
メモリー２０６は、従来技術において既知の任意のコンピューター可読媒体またはコンピュータープログラム製品（例えば、静的ランダムアクセスメモリー（ＳＲＡＭ）および動的ランダムアクセスメモリー（ＤＲＡＭ）のような揮発性メモリーおよび／またはリードオンリーメモリー（ＲＯＭ）、消去可能プログラム可能ＲＯＭ、フラッシュメモリー、ハードディスク、光学ディスク、コンパクトディスク（ＣＤｓ）、デジタル多用途ディスクまたはデジタルビデオディスク（ＤＶＤ）および磁気テープのような非揮発性メモリー）を含んでいてもよい。メモリー２０６は、モジュール２０８と、データ２２２とを含んでいる。
【００２４】
モジュール２０８は、特定のタスクを実行または特定の抽象データタイプ（abstract data type）をインプリメントするルーティーン（routine:ある限定されたタスクを実行するプログラム）、プログラム、オブジェクト、コンポーネント、データ構造等を含む。実施形態の１つにおいて、モジュール２０８は、入力処理モジュール２１０と、特定モジュール２１２と、算出モジュール２１４と、経路分析モジュール２１６と、報告生成モジュール２１８と、その他モジュール２２０とを含む。その他モジュール２２０は、システム１０２のアプリケーションおよび機能（関数）を補完するプログラムまたはコード化された命令を含んでいてもよい。
【００２５】
データ２２２は、とりわけ、１つ以上のモジュール２０８によって処理され、受信され、生成されたデータを保存するレポジトリ（repository:データ、情報、プログラム等を保存するシステム内のデータベース）として機能する。また、データ２２２は、プログラムコードデータベース２２４と、メタデータデータベース２２６と、メモリー２０６のデータベース（図中では図示せず）内に保存されているその他データ２２８とを含んでいてもよい。
【００２６】
実施形態の１つにおいて、最初に、ユーザーは、クライアントデバイス１０４を使用し、Ｉ／Ｏインターフェース２０４を介してシステム１０２にアクセスすることができる。ユーザーは、システム１０２を使用するために、Ｉ／Ｏインターフェース２０４を用いて自身を登録することができる。システム１０２の働きは、図３を参照して、以下に詳述される。システム１０２は、スリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とするために用いられる。
【００２７】
図３を参照すると、本発明の実施形態にかかるシステム１０２の詳細な働きが図示されている。本発明の目的は、システム１０２が、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とすることができるようにすることにある。
【００２８】
実施形態の１つにおいて、入力処理モジュール２１０は、ユーザーからメタデータ３０４を受信し、有効化するよう構成されている。このメタデータは、プログラムコード３０２の検証に必要とされる。メタデータ３０４は、プログラムコード内における複数のプログラムポイントの位置を含んでいる。複数のプログラムポイントの各プログラムポイントは、マイクロコントローラー用のプログラムコード３０２内におけるバックグラウンドジョブのスタート、スリープ動作およびウェークアップ動作の少なくとも１つに対応する。本発明の実施形態によれば、複数のプログラムポイントの位置は、「Complete_Source_File_Name#Line_Number」のような所定のフォーマットで受信される。本分野における当業者であれば、その他任意のフォーマットで受信されてもよいことは理解できるであろう。さらに、メタデータ３０４は、プログラムコード３０２のスタートにおける初期割り込み保護状態（ＩＰＳ）と、マイクロコントローラー内において実行される高電力投入モードのタイプと、スリープ動作の予測割り込み保護状態と、割り込みを有効化または無効化可能な割り込み関数と、タスク切り替えを有効化または無効化可能なタスク関数とを含んでいてもよい。
【００２９】
さらに、メタデータ３０４のコンテンツの１つ、すなわち、高電力投入モードのタイプは、マイクロコントローラーのウェークアップモード／動作が外部信号によって起動された場合にのみ、要求されてもよい。例えば、マイクロコントローラーが、マイクロコントローラー動作のスピード（クロック）を変更すること、または、自己制御ウェークアップ（self controlled Wakeup）による電力消費低減をサポートしている場合、そのようなメタデータ、すなわち、高電力投入モードのタイプは、プログラムコード３０２の検証に必要とされなくともよい。実施形態の１つにおいて、プログラムコード３０２をシステム１０２内に導入し、ユーザーによってメタデータ３０４が受信された後、特定モジュール２１２は、プログラムコード３０２に対応する抽象構文木（ＡＳＴ）を特定するよう構成されている。ＡＳＴは、プログラムコードのＡＳＴノードの第１のセットを含んでいる。ＡＳＴノードの第１のセットおよびユーザーから受信したメタデータに基づいて、メタデータによって特定されたプログラムポイントに対応するＡＳＴノードの第２のセットが特定される。さらに、本発明の実施形態によれば、抽象構文木を生成するようプログラムコード３０２を処理するために、字句解析（lexical analysis）や構文解析等のコンパイル技術が実行されてもよい。
【００３０】
よって、メタデータ３０４を受信し、抽象構文木を特定した後、算出モジュール２１４は、各プログラムポイントに対し、初期ＩＰＳおよび割り込み関数に基づいて、実際の割り込み保護状態（実際のＩＰＳ）を算出するよう構成されている。初期ＩＰＳは、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するアプリケーションのスタート時に、メタデータ３０４の一部として、ユーザーから提供されてもよい。
【００３１】
さらに、メタデータ３０４のさらに別の部分、すなわち、スリープ動作の予測割り込み保護状態（予測ＩＰＳ）は、算出された遷移経路の安全または不安全動作を判別するために必要とされてもよい。ここで、システム１０２は、ユーザーによって入力された予測ＩＰＳと、プログラムコード３０２の実行内のスリープ動作において算出された実際のＩＰＳとをマッチングする。予測ＩＰＳと実際のＩＰＳとのマッチング中に、任意の逸脱（deviation）が発見された場合、ユーザーがレビューできるように該逸脱が提供される。
【００３２】
また、割り込みを有効化または無効化する割り込み関数は、初期ＩＰＳおよび割り込み関数への呼び出しに基づいて、プログラムコード３０２内における複数のプログラムポイントの各プログラムポイントの実際のＩＰＳを判別する算出モジュール２１４をサポートするために、ユーザーからのメタデータ３０４の一部として要求されてもよい。この割り込みを有効化または無効化する割り込み関数は、プログラムコード３０２の１つの実施形態から別の実施形態に変化するかもしれないので、ユーザーによる入力が要求されるようにしてもよい。本発明の実施形態の１つにおいて、算出モジュール２１４は、プログラムコード３０２内における各プログラムポイントの実際のＩＰＳを算出するために、データフロー分析を利用してもよい。実際のＩＰＳは、保護（Ｐ）状態、非保護（Ｕ）状態または保護／非保護（Ｐ／Ｕ）状態として算出される。それぞれ保護されていない割り込み状態と保護された割り込み状態でプログラムポイントを実行可能な少なくとも２つの遷移経路が存在する場合には、保護／非保護（Ｐ／Ｕ）状態が算出される。
【００３３】
実施形態の１つにおいて、算出モジュール２１４は、タスク関数への呼び出しに基づいて、プログラムコード３０２内における各プログラムポイントのタスクロック状態（ＴＬＳ）を算出するよう構成されている。タスク関数は、タスク切り替えを有効化または無効化することができる。さらに、算出モジュール２１４は、プログラムコード３０２内における各プログラムポイントのＴＬＳを特定するために、データフロー分析を利用してもよい。ＴＬＳは、ロック（Ｌ）状態、非ロック（Ｕ）状態またはロック／非ロック（Ｌ／Ｕ）状態として算出される。それぞれロック状態および非ロック状態でプログラムポイントを実行可能な少なくとも２つの遷移経路が存在する場合には、ＴＬＳは、ロック／非ロック（Ｌ／Ｕ）状態として特定される。
【００３４】
さらに、算出モジュール２１４は、複数のプログラムポイントの各プログラムポイントの経路エンティティを算出するよう構成されている。経路エンティティは、条件文および関数呼び出しポイントの少なくとも１つを含む。また、算出モジュール２１４は、プログラムコード３０２を介してスリープ・ウェークアッププロトコルを実行するアプリケーション内で用いられる各プログラムポイントの共有変数を算出するよう構成されていてもよい。また、算出モジュール２１４は、共有変数を算出するために、割り込みサービスルーティーン（ＩＳＲルーティーン）のリストと、並行して実行されるその他のタスクとを算出してもよい。
【００３５】
本発明の実施形態の１つにおいて、算出モジュール２１４によって、実際のＩＰＳ、ＴＬＳ、経路エンティティおよび共有変数が算出された後、経路分析モジュール２１６は、メタデータ内において特定されたプログラムポイントの各ペアの間の遷移経路を判別するよう構成される。遷移経路は、算出モジュール２１４によって、経路エンティティを用いて算出される。ここで、可能性のある全ての遷移経路が、ユーザーによってメタデータ３０４として入力されたプログラムポイントの位置のペアの間で、判別される。本発明の実施形態の１つにおいて、遷移経路は、バックグラウンドジョブのスタートに対応するプログラムポイントと、スリープ動作に対応するプログラムポイントとの間で判別される。また、遷移経路は、スリープ動作に対応するプログラミングポイントと、ウェークアップ動作に対応するプログラムポイントとの間で判別されてもよい。同様に、遷移経路は、ウェークアップ動作に対応するプログラムポイントと、バックグラウンドジョブのスタートに対応するプログラムポイントとの間で判別されてもよい。よって、可能性のある遷移経路を判別した後、経路分析モジュール２１６は、前に算出した実際のＩＰＳ、タスクロック状態および共有変数に基づいて、遷移経路内に含まれる各経路エンティティに対するレビュー情報を算出するよう構成されている。
【００３６】
実施形態の１つにおいて、遷移経路の判別の後、報告生成モジュール２１８は、ユーザーに所定のフォーマットで報告を生成するよう構成されている。この報告は、判別された遷移経路に関連する情報と、ユーザーによってレビューされるために算出されたレビュー情報とを含む。よって、生成された報告は、ユーザーがプログラムコード３０２を検証することを容易とする。本発明の実施形態によれば、判別された遷移経路に関連する情報およびレビュー情報は、表形式（tabular format）で提供される。表形式で提供される遷移経路に関連する情報は、（ａ）プログラムコード３０２から選択された経路エンティティのプログラム文と、（ｂ）プログラムコード３０２内の入力ファイル名および行番号から構成される、プログラムコード３０２内の経路エンティティの位置と、（ｃ）経路エンティティのタイプ、すなわち、経路エンティティが制御文（controlling statement）または関数呼び出しポイントであるかどうかと、（ｄ）経路エンティティのプログラム文において算出された実際のＩＰＳと、をさらに含む。
【００３７】
遷移経路に関連する情報と併せて、レビュー情報も表形式で提供されてもよい。レビュー情報は、（ａ）スリープ動作におけるユーザーの予測ＩＰＳ値と、スリープ動作における実際のＩＰＳ値とを比較することによって評価された、スリープ動作におけるＩＰＳのレビュー判定と、（ｂ）経路エンティティのプログラム文において算出されたタスクロック状態（ＴＬＳ）と、（ｃ）割り込みサービスルーティーン（ＩＳＲ）によって上書きされる共有変数のリスクに関連するレビュー判定と、（ｄ）ＩＳＲによる共有変数の上書きのリスクのレビュー判定に関連する共有変数およびこれら共有変数を上書きするＩＳＲと、（ｅ）並行タスクによって上書きされる共有変数のリスクに関連するレビュー判定と、（ｆ）並行タスクによる共有変数の上書きのリスクのレビュー判定に関連する共有変数およびこれら共有変数を上書き可能な並行タスクと、を含む。よって、レビュー情報は、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコード３０２を検証するために、ユーザーによってレビューされる詳細を提供する。
【００３８】
図４を参照すると、本発明の例示的な実施形態にかかるプログラムコードを介したスリープ・ウェークアッププロトコル実行が図示されている。システム１０２は、プログラムコード３０２と、メタデータ３０４とをユーザーから受信する。本発明の例示的な実施形態によれば、図４に示す命令セット４００は、プログラムコード３０２とみなすことができる。プログラムコード３０２と、メタデータ３０４とを受信した後、プログラムコード３０２に対応する抽象構文木（ＡＳＴ）が生成される。ＡＳＴは、プログラムコード３０２のＡＳＴノードの第１のセットから構成されている。ＡＳＴノードの第１のセットおよびユーザーから受信したメタデータ３０４に基づいて、メタデータによって特定されたプログラムポイントに対応するＡＳＴノードの第２のセットが特定される。また、メタデータ３０４のコンテンツに基づいて、複数のプログラムポイントの各プログラムの実際のＩＰＳ、ＴＬＳ、経路エンティティおよび共有変数が算出される。
【００３９】
上記詳細を特定した後、プログラムポイントのペアの間の遷移経路は、経路エンティティを用いて判別される。図４に示すプログラムコードから、プログラムポイントの位置は、以下のように与えられる。
１．バックグラウンドジョブのスタート用プログラムポイントの位置：  Ｃ：＼ｓｏｕｒｃｅｓ＼ｍａｉｎ．ｃ＃７
２．スリープモード／動作へマイクロコントローラーを移行させるためのプログラムポイントの位置：  Ｃ：＼ｓｏｕｒｃｅｓ＼Ｓｌｅｅｐ．ｃ＃６
３．ウェークアップモード／動作へマイクロコントローラーを移行させるためのプログラムポイントの位置：  Ｃ：＼ｓｏｕｒｃｅｓ＼Ｓｌｅｅｐ．ｃ＃１１
本発明の実施形態の１つにおいて、図４に示すプログラムコードから、割り込みを有効化または無効化可能であってメタデータ内に含まれる割り込み関数は、以下を含む。
ａ．ＥＮＡＢＬＥ（）  −  割り込みを有効化する関数
ｂ．ＤＩＳＡＢＬＥ（）  −  割り込みを無効化する関数
本発明の実施形態によれば、図４に示すプログラムコードでは、タスク切り替えを有効化または無効化する関数およびメインタスクと並行して実行されるタスクは、図示されていない。
【００４０】
上で得られたプログラムポイントから、経路分析モジュール２１６は、メタデータ内において特定されたプログラムポイントの各ペアの間の可能性のある全ての遷移経路を判別するよう構成されている。遷移経路は、特定されたＡＳＴを処理した後、経路エンティティを用いて算出される。図４の所与のプログラムコードおよび複数のプログラムポイントの各プログラムポイントの位置によれば、以下の遷移経路が特定され、以下に示す表１に表示される。
１．バックグラウンドジョブ（ＢＧＪ）のスタートから、スリープモード／動作への遷移経路  −  経路ＩＤ１およびＩＤ２
２．スリープモード／動作から、ウェークアップモード／動作への遷移経路  −  経路ＩＤ３
３．ウェークアップモード／動作から、バックグラウンドジョブのスタートへの遷移経路  −  経路ＩＤ４
【００４１】
図４に示すようなプログラムコード内における遷移経路を判別した後、経路分析モジュール２１６は、レビュー情報を算出するよう構成されている。本発明の例示的な実施形態によれば、レビュー情報は、以下に示すような表１内において提供することができる。テーブル内の各コラム／フィールドは、プログラムコードの検証のためにユーザーによってレビューされるレビュー情報に与えられる。与えられた表１において、以下のような情報が与えられる。
１．経路ＩＤコラム内において遷移経路に与えられる経路ＩＤは、ユニークＩＤである。
２．経路エンティティの各プログラムポイントにおいて与えられるプログラム文は、プログラムコード３０２内に示されているように、条件文または関数呼び出し文である。
３．「位置」コラムは、プログラムコード３０２内における経路エンティティのプログラムポイントの位置を示す。位置は、「Absolute_File_Path::Line_Number」のようなフォーマットで提供される。ここで「Absolute_File_Path」は、プログラムポイントが存在するファイル名の経路（パス）であり、「Line_Number」は、上述のファイル名内においてプログラムポイントが存在する行番号である。
４．「文タイプ」コラムは、プログラムポイントが条件文であるか否かを特定する。プログラムポイントが条件文である場合、その値は「Ｃ」となる。
５．「ＩＰＳ」コラムは、プログラムコード３０２内における経路エンティティのプログラムポイントに対して算出した実際のＩＰＳを示す。このコラム内の値は、「Ｐ」、「Ｕ」または「Ｐ／Ｕ」となり、各値は、それぞれ以下の通りに算出される。
Ｐ：保護  割り込みが常に「無効（Disabled）」であると観測される場合
Ｕ：非保護  割り込みが常に「有効（Enabled）」であると観測される場合
Ｐ／Ｕ：保護／非保護  割り込みが「無効」だけではなく「有効」と観測される場合
６．「スリープ動作のＩＰＳのレビュー判定」コラムは、スリープ動作で終了する経路のために用いられる。この特別なコラム内の値は、以下に示す表２により、詳細に理解される。この表内において、スリープ動作のＩＰＳのレビュー判定は、ユーザーによって入力されたスリープ動作の予測ＩＰＳと、スリープ動作の実際のＩＰＳとを比較することによって判別される。実際のＩＰＳは、プログラムコードから算出される。マッチングが観測された場合、このコラムに対する値は「ＯＫ」となり、それは、実際のＩＰＳをレビューする必要がなく、しかもその対応する遷移経路は安全であり、プログラムコード３０２の実行中に問題を生じないことを実証する。実際のＩＰＡにおいてミスマッチング／逸脱がある場合、値は「ＴＢＲ」、すなわち、要レビュー（To BE Reviewed）または「不安全」となる。この値は、遷移経路が不安全である可能性があり、プログラムコード３０２の実行中の予期せぬ動作の原因となる可能性があるので、ユーザーに実際のＩＰＳをレビューすることを提唱する値である。
７．「ＩＳＲｓによる共有上書きのリスク」コラムは、経路エンティティ上でアクセスされる変数が、任意の割り込みサービスルーティーン（ＩＳＲ）によって上書きされる可能性を有しているかどうかの判定を提供する。このコラムは、経路エンティティのプログラム文からのいずれかの変数が、その他のＩＳＲ内において書き込まれる変数を含んでおり、経路エンティティのプログラムポイントにおける実際のＩＰＳ値が「Ｕ」または「Ｐ／Ｕ」と算出された場合に、「ＴＢＲ」との値を有する。
８．次のコラムは、「ＩＳＲによって上書きされた共有変数」であり、共有変数と、内部で該共有変数が上書きされるＩＳＲ（ｓ）とを含むペア（ｓ）を提供する。このコラムの情報は、以下のフォーマットで提供される。
［ｓｈｖ０１：ＩＮＴ０１，ＩＮＴ０２］、［ｓｈｖ０１：ＩＮＴ０１］
ここで、最初のペアの「ｓｈｖ０１」は、ＩＳＲｓ「ＩＮＴ０１」および「ＩＮＴ０２」によって上書きされる共有変数であり、
次のペアの「ｓｈｖ０１」は、ＩＳＲ「ＩＮＴ０１」によって上書きされる共有変数である。
このコラム内の値は、「ＩＳＲｓによる共有上書きリスク」コラムが「ＴＢＲ」である場合にのみ、提供される。
９．「ＴＬＳ」コラムは、プログラムコード３０２内における経路エンティティのプログラムポイントのタスクロック状態を表し、このコラム内の値は、「Ｌ」、「Ｕ」または「Ｌ／Ｕ」となり、各値は、以下のように算出される。
Ｌ：ロック  タスク切り替えが常に「無効」であると観測される場合
Ｕ：非ロック  タスク切り替えが常に「有効」であると観測される場合
Ｌ／Ｕ：ロック／非ロック  タスク切り替えが「無効」だけではなく「有効」と観測される場合
１０．「並行タスクによる共有上書きのリスク」コラムは、経路エンティティ上においてアクセスされる変数の値が、その他並行して実行されるタスクによって上書きされる可能性を有しているかどうかの判定を提供する。このコラム内の値は、プログラム文からのいずれかの変数、すなわち、経路エンティティのプログラムポイントが、その他並行して実行されるタスクによって書き込まれる変数を含んでおり、プログラムポイントのＴＬＳが「Ｕ」または「Ｌ／Ｕ」と観測された場合に、「ＴＢＲ」となる。
１１．表１の次のコラムは、「並行タスクによって上書きされた共有変数」であり、共有変数と、内部において該共有変数が上書きされる並行タスク（ｓ）とを含むペア（ｓ）を提供する。このコラム内の情報は、以下のフォーマットで提供される。
［ｓｈｖ０１：ｔａｓｋ０１，ｔａｓｋ０２］、［ｓｈｖ０２：ｔａｓｋ０１］
ここで、「ｓｈｖ０１」は、タスク「ｔａｓｋ０１」および「ｔａｓｋ０２」によって上書きされる共有変数であり、
「ｓｈｖ０２」は、タスク「ｔａｓｋ０１」によって上書きされる共有変数である。
さらに、このコラム内の値は、「並行タスクによる共有上書きのリスク」コラムの値が「ＴＢＲ」である場合にのみ、提供される。
0005955900.tif 000002
表１．ユーザーによってレビューされる表形式で生成されたレビュー情報
0005955900.tif 000003
表２．スリープ動作のＩＰＳに対するレビュー判定判別
【００４２】
図５を参照すると、本発明の実施形態にかかるマイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易にする方法５００が図示されている。方法５００は、一般的なコンピューター実行可能命令のコンテキストで記述されてもよい。一般的に、コンピューター実行可能命令は、特定の機能を実行または特定の抽象データ型をインプリメントするルーティーン、プログラム、オブジェクト、コンポーネント、データ構造、手順（procedure）、モジュール、関数等を含む。方法５００は、通信ネットワークを介してリンクされたリモート処理デバイスによって機能を実行可能な分散演算環境（distributed computing environment）内において実行することができる。分散演算環境内において、コンピューター実行可能命令は、メモリーストレージデバイスを含むローカルおよびリモート双方のコンピューターストレージ媒体内に位置することができる。
【００４３】
方法５００を記述するための順番は、限定を構築する意図はなく、任意の数の記述される方法のブロックが、方法５００または代替的方法を実施する任意の目的で組み合わせることができる。加えて、個々のブロックは、ここに記述される本発明の原理および範囲から逸脱することなく、方法５００から削除してもよい。さらに加えて、方法は、任意の適切なハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせ内において実施することができる。しかしながら、説明の簡略化のため、以下に記述される実施形態においては、方法５００は、上記記述されたシステム１０２内において実施されているものとする。
【００４４】
ブロック５０２において、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコード３０２を検証するために、ユーザーからメタデータ３０４が受信され、有効化される。メタデータ３０４は、プログラムコード３０２内における複数のプログラムポイントの位置を含んでいる。各プログラムポイントは、マイクロコントローラー用のバックグラウンドジョブのスタート、スリープモード／動作およびウェークアップモード／動作の少なくとも１つに対応する。
【００４５】
ブロック５０４において、プログラムコード３０２の抽象構文木（ＡＳＴ）が生成される。ＡＳＴは、プログラムコード３０２のＡＳＴノードの第１のセットを含む。ＡＳＴノードの第１のセットおよび受信されたメタデータ３０４に基づいて、メタデータによって特定されたプログラムポイントに対応するＡＳＴノードの第２のセットが特定される。
【００４６】
ブロック５０６において、プログラムコード３０２内における各ポイントの実際のＩＰＳ、タスクロック状態（ＴＬＳ）、経路エンティティおよび共有変数が算出される。
【００４７】
ブロック５０８において、プログラムポイントの各ペアの間の遷移経路が、ブロック５０６において算出された経路エンティティを用いて判別される。
【００４８】
ブロック５１０において、遷移経路内に含まれる各経路エンティティに対するレビュー情報が、各プログラムポイントに対して算出された実際のＩＰＳ、ＴＬＳおよび共有変数に基づいて、算出される。
【００４９】
ブロック５１２において、マイクロコントローラー用のスリープ・ウェークアッププロトコルを実行するプログラムコード３０２の検証のために、ユーザーが参照できるようにするため、所定のフォーマットで報告が生成される。
有利な効果
【００５０】
システム１０２は、スリープ・ウェークアッププロトコルの状態遷移がマイクロコントローラーの仕様に従っているかをチェックするための自動検証を可能とする。
【００５１】
初期段階での検証（early stage verification）を提供することにより、システム１０２は、スリープ・ウェークアッププロトコルを実行するプログラムコードの実行中の任意の予期せぬ動作の防止に有用である。
【００５２】
システム１０２は、ユーザーに対し、報告の形式でレビュー情報を提供する。レビュー情報は、スリープ・ウェークアッププロトコルを実行するプログラムコード内における任意の欠陥／不一致のピンポイント特定を含む。プログラムコード内における任意の欠陥／不一致は、その実行中における任意の予期せぬ動作の原因となる。
【００５３】
マイクロコントローラー仕様での、スリープ・ウェークアッププロトコルを実行するプログラムコードの検証を容易とする方法およびシステムの実施が記述されたが、添付の特許請求の範囲は、必ずしも記述された特定の特徴または方法に限定されない。すなわち、特定の特徴および方法は、プログラムコードの検証の実施の例示として開示されたものである。
【図１】
0005955900.tif 000004
【図２】
0005955900.tif 000005
【図３】
0005955900.tif 000006
【図４】
0005955900.tif 000007
【図５】
0005955900.tif 000008