(57)【要約】【課題】ＭＣＵがソースコードに実装された処理に適するか否かを精度良く判定すること。【解決手段】情報処理装置は、複数のＭＣＵ（Micro Controller Unit）の仕様情報を記憶する記憶部と、第１のＭＣＵに基づいて実装され、タイマ割り込みにより所定間隔で第１の処理を呼び出す記述がされた第１のソースコードを解析して、当該第１の処理の処理時間の制約を示す第１の処理時間制約情報を抽出する処理時間制約情報抽出部と、第１の処理時間制約情報及び仕様情報に基づき、複数のＭＣＵ夫々について、第１のソースコードに対して適切か否かを判定する判定部と、適切と判定された１以上のＭＣＵの情報を出力する出力部と、を備える。【選択図】図１
2017120467.tif 000002
【特許請求の範囲】
【請求項１】
複数のＭＣＵ（Micro Controller Unit）の仕様情報を記憶する記憶部と、
第１のＭＣＵに基づいて実装され、タイマ割り込みにより所定間隔で第１の処理を呼び出す記述がされた第１のソースコードを解析して、当該第１の処理の処理時間の制約を示す第１の処理時間制約情報を抽出する処理時間制約情報抽出部と、
前記第１の処理時間制約情報及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する判定部と、
前記適切と判定された１以上のＭＣＵの情報を出力する出力部と、
を備える情報処理装置。
【請求項２】
前記処理時間制約情報抽出部は、
前記第１のソースコードを解析して、前記所定間隔に基づいて前記第１の処理の呼び出し間隔を前記第１の処理時間制約情報として抽出する
請求項１に記載の情報処理装置。
【請求項３】
前記第１のソースコードには、前記タイマ割り込みに関するレジスタ設定の定義が記述されており、
前記処理時間制約情報抽出部は、前記レジスタ設定の定義に基づいて前記タイマ割り込みの周期を算出することにより、前記呼び出し間隔を抽出する
請求項２に記載の情報処理装置。
【請求項４】
前記処理時間制約情報抽出部は、前記第１のソースコードの記述から前記タイマ割り込みによる前記第１の処理の呼び出し箇所を特定し、当該特定した呼び出し箇所に基づいて前記タイマ割り込みの周期を前記呼び出し間隔として抽出する
請求項２に記載の情報処理装置。
【請求項５】
前記第１のソースコードには、前記第１の処理として複数の個別処理を直列に呼び出すための呼び出し条件が記述されており、
前記処理時間制約情報抽出部は、前記所定間隔及び前記呼び出し条件に基づいて、前記複数の個別処理のうち第１の個別処理の呼び出しタイミングから当該第１の個別処理の次に呼び出される第２の個別処理の呼び出しタイミングまでの間隔を算出することにより、当該第１の個別処理における前記第１の処理時間制約情報を抽出する
請求項４に記載の情報処理装置。
【請求項６】
前記第１のソースコードは、前記第１の処理を示すコードの範囲と、前記第１の処理を完了させる制限時間の定義とが対応付けて記述されており、
前記処理時間制約情報抽出部は、前記第１のソースコードを解析して前記コードの範囲を特定し、前記コードの範囲に対応付けて記述された前記制限時間の定義を前記呼び出し間隔として抽出する
請求項２に記載の情報処理装置。
【請求項７】
前記処理時間制約情報抽出部は、
前記第１のソースコードを解析して、前記第１の処理の呼び出し間隔を抽出する処理間隔抽出部と、
前記複数のＭＣＵ夫々における前記第１の処理に要する所要クロック数を、前記第１のソースコードから算出する所要クロック数算出部と、
前記呼び出し間隔及び前記所要クロック数に基づいて、前記第１の処理の実行に要する所要クロック周波数を算出する所要クロック周波数算出部と、
を含み、
前記判定部は、
前記仕様情報に含まれる前記複数のＭＣＵ夫々の動作クロック周波数と前記所要クロック周波数との比較により、前記複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する
請求項２に記載の情報処理装置。
【請求項８】
前記第１のソースコードに係る処理の実行に要する所要メモリ量を算出する所要メモリ量算出部をさらに備え、
前記判定部は、前記第１の処理時間制約情報、前記所要メモリ量及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する
請求項１に記載の情報処理装置。
【請求項９】
前記情報処理装置は、
前記判定部により前記適切でないと判定されたＭＣＵにおいて前記第１の処理の実行に要する予測時間を、前記第１の処理時間制約情報及び前記仕様情報に基づいて算出する予測時間算出部をさらに備える
請求項１に記載の情報処理装置。
【請求項１０】
前記第１のソースコードには、前記所定間隔のうち変更可能な箇所の指定が記述されており、
前記情報処理装置は、
前記第１のソースコード内に指定された前記変更可能な箇所を特定し、当該特定した箇所における前記所定間隔を前記予測時間に基づいて修正し、当該修正したソースコードを出力するソースコード修正部をさらに備える、
請求項９に記載の情報処理装置。
【請求項１１】
前記第１のソースコードには、前記第１のＭＣＵにおける信号の入出力に関する記述がされており、
前記情報処理装置は、
前記第１のソースコード内の前記信号の入出力に関する記述に基づいて、当該第１のソースコードにおいて使用する信号の入出力の制約に関する第１の入出力制約情報を抽出する入出力制約情報抽出部をさらに備え、
前記判定部は、前記第１の処理時間制約情報、前記第１の入出力制約情報及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する
請求項１に記載の情報処理装置。
【請求項１２】
前記情報処理装置は、
前記第１のソースコードを解析して、前記第１の処理の実行に要する所要メモリ量を算出する所要メモリ量算出部をさらに備え、
前記判定部は、前記第１の処理時間制約情報、前記第１の入出力制約情報、前記所要メモリ量及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する
請求項１１に記載の情報処理装置。
【請求項１３】
前記情報処理装置は、
前記第１のＭＣＵに関する第１の回路設計情報に基づいて当該第１のＭＣＵにおける入出力端子のうち未使用のものを特定し、前記入出力制約情報抽出部へ通知する未使用端子特定部をさらに備え、
前記入出力制約情報抽出部は、前記通知された未使用の入出力端子の情報を前記第１の入出力制約情報から除外する
請求項１１に記載の情報処理装置。
【請求項１４】
前記処理時間制約情報抽出部は、
第２のＭＣＵに基づいて実装され、タイマ割り込みにより所定間隔で第２の処理を呼び出す記述がされた第２のソースコードを解析して、当該第２の処理の処理時間の制約を示す第２の処理時間制約情報をさらに抽出し、
前記情報処理装置は、
前記第１の処理時間制約情報と前記第２の処理時間制約情報とを統合して統合処理時間制約情報を生成する統合部をさらに備え、
前記判定部は、前記統合処理時間制約情報及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコード及び前記第２のソースコードの両方に対して適切か否かを判定する
請求項１に記載の情報処理装置。
【請求項１５】
前記情報処理装置は、
前記第１のソースコードと前記第２のソースコードの間で他の処理による影響を受けない処理のうち共通するコード部を抽出する共通コード抽出部と、
前記第１のソースコードに係る処理の実行に要する第１のメモリ量を算出し、前記第２のソースコードに係る処理の実行に要するメモリ量から前記抽出されたコード部の実行に要するメモリ量を減算して第２のメモリ量を算出する所要メモリ量算出部と、
をさらに備え、
前記統合部は、前記第１のメモリ量と前記第２のメモリ量とを統合して、統合所要メモリ量をさらに算出し、
前記判定部は、前記統合処理時間制約情報、前記統合所要メモリ量及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコード及び前記第２のソースコードの両方に対して適切か否かを判定する
請求項１４に記載の情報処理装置。
【請求項１６】
前記第１のソースコードには、前記第１のＭＣＵにおける入出力端子の割り当て設定の記述がされており、
前記第２のソースコードには、前記第２のＭＣＵにおける入出力端子の割り当て設定の記述がされており、
前記記憶部は、共通化可能な入出力設定及び接続先の周辺回路を定義したパターン情報をさらに記憶しており、
前記第１のＭＣＵに関する第１の回路設計情報と前記第２のＭＣＵに関する第２の回路設計情報との間で、入出力端子に接続される周辺回路のうち共通するものを抽出する共通周辺回路抽出部と、
前記第１のソースコードと前記第２のソースコードの間で、前記入出力端子の割り当て設定のうち共通する設定を抽出する共通入出力設定抽出部と、
前記抽出された周辺回路の接続元の入出力端子のうち前記抽出された設定がされたものについて前記パターン情報と照合し、該当する入出力端子の設定を特定する特定部と、
前記第１のソースコードにおいて使用する信号の入出力の制約に関する第１の入出力制約情報を抽出し、前記第２のソースコードにおいて使用する信号の入出力の制約に関する情報から前記特定した設定を除外して第２の入出力制約情報を抽出する入出力制約情報抽出部と、
をさらに備え、
前記統合部は、前記第１の入出力制約情報と前記第２の入出力制約情報とを統合して、統合入出力制約情報をさらに生成し、
前記判定部は、前記統合処理時間制約情報、前記統合入出力制約情報及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコード及び前記第２のソースコードの両方に対して適切か否かを判定する
請求項１４に記載の情報処理装置。
【請求項１７】
複数のＭＣＵ（Micro Controller Unit）の仕様情報を記憶する記憶部と、
第１のＭＣＵにおける信号の入出力に関する記述がされた第１のソースコードを解析して、当該第１のソースコードにおいて使用する信号の入出力の制約に関する第１の入出力制約情報を抽出する入出力制約情報抽出部と、
前記第１の入出力制約情報及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する判定部と、
前記適切と判定された１以上のＭＣＵの情報を出力する出力部と、
を備える情報処理装置。
【請求項１８】
前記入出力制約情報抽出部は、前記第１のソースコード内の前記第１のＭＣＵにおける入出力端子の割り当て設定及び当該入出力端子へのアクセス命令の記述に基づいて、前記第１の入出力制約情報を抽出する
請求項１７に記載の情報処理装置。
【請求項１９】
前記情報処理装置は、
前記第１のソースコードに係る処理の実行に要する所要メモリ量を算出する所要メモリ量算出部をさらに備え、
前記判定部は、前記第１の入出力制約情報、前記所要メモリ量及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する
請求項１７に記載の情報処理装置。
【請求項２０】
Ｎ個（Ｎは２以上の自然数。）のＭＣＵ（Micro Controller Unit）の夫々に基づいて実装され、タイマ割り込みにより所定間隔で所定の処理を呼び出す記述がされたＮ個のソースコードの夫々を解析して、当該所定の処理の処理時間の制約を示すＮ個の処理時間制約情報を抽出する処理時間制約情報抽出部と、
前記Ｎ個の処理時間制約情報を統合して統合処理時間制約情報を生成する統合部と、
複数のＭＣＵの仕様情報を記憶する記憶部と、
前記統合処理時間制約情報及び前記仕様情報に基づき、前記複数のＭＣＵ夫々について、前記Ｎ個のソースコードの全てに対して適切か否かを判定し、
前記適切と判定された１以上のＭＣＵの情報を出力する出力部と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、例えば、組み込み用プログラムのソースコードに対応するＭＣＵ（Micro Controller Unit）を選定するための情報処理装置に関する。
【背景技術】
【０００２】
特許文献１には、所定のプログラムを所定の処理装置で実行した場合の処理性能（メモリ容量や処理速度）を予測する技術が開示されている。特許文献１にかかる技術は、所定のプログラムを第一処理装置及び第二処理装置のそれぞれで実行することにより処理性能を予め計測しておき、評価対象プログラムについての第一処理装置における処理性能の実測値に基づいて、第二処理装置におけるメモリ容量や処理速度を算出するものである。
【０００３】
特許文献２には、マイコンリソース消費見積もりプログラム等に関する技術が開示されている。特許文献２にかかる技術では、要求仕様に基づき作成されたモデルにおける機能（ブロック）ごとに、当該モデルから生成されるソースコードから変換されたオブジェクトコードに割り当てられるＲＡＭの使用量を、見積モデルとして予めＨＤＤに保存しておく。そして、モデルが変更された場合に、変更後のモデルにおけるオブジェクトコードのＲＡＭの使用量を、見積モデルに基づいて算出するものである。
【０００４】
特許文献３には、回路モジュールを含むシステム上で実行されるソースコードにおける実行時において用いられるクロック数を算出する技術が開示されている。特許文献３にかかる技術は、ソースコード内の記述からクロックが用いられるコード部分を抽出し、当該コード部分の種類に応じて、設計対象回路のソースコードにおいて用いられるクロック数を算出し、出力するものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２９９２１２号公報
【特許文献２】特開２００５−７８２４３号公報
【特許文献３】特開２０１２−７９２３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１〜３にかかる技術では、ＭＣＵがソースコードに実装された処理に適するか否かを判定するための精度が低いという問題点がある。その理由は、特許文献１〜３では、ソースコードに実装された処理を実行するためのＭＣＵに必要とされる条件が十分に抽出できていないためである。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、ソースコード内のタイマ割り込みによる特定の処理の呼び出す記述から処理時間の制約情報を抽出して、対象のＭＣＵの適否を判定するものである。
また、一実施の形態によれば、ソースコード内の信号の入出力に関する記述から入出力の制約情報を抽出して、対象のＭＣＵの適否を判定するものである。
さらに、他の実施の形態によれば、複数のＭＣＵの夫々に対応して実装された各ソースコード内のタイマ割り込みによる特定の処理の呼び出す記述から処理時間の制約情報を夫々抽出して、統合した処理時間の制約情報に基づいてＭＣＵがソースコードに適するか否かを判定するものである。
【発明の効果】
【０００８】
前記一実施の形態によれば、ＭＣＵがソースコードに実装された処理に適するか否かを精度良く判定することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる情報処理装置の構成を示すブロック図である。
【図２】実施の形態１で対象とするリアルタイム制御系におけるソースコードの記述の例を示す図である。
【図３】実施の形態１にかかる制御方法の流れを説明するためのフローチャートである。
【図４】実施の形態１にかかる情報処理装置のハードウェア構成例を示すブロック図である。
【図５】所定間隔のタイマ割り込みにより実行される関数の概念を説明するための図である。
【図６】実施例１−１にかかる処理時間制約情報の抽出処理の流れを説明するためのフローチャートである。
【図７】実施例１−２にかかるソースコードの記述の概要とタイマ割り込み間隔の概念を説明するための図である。
【図８】実施例１−３にかかるソースコードの記述の概要を示す図である。
【図９】実施例１−３にかかる処理時間制約情報の抽出処理の流れを説明するためのフローチャートである。
【図１０】実施例１−３にかかるタイマ割り込み間隔と関数実行スケジュールの概念を説明するための図である。
【図１１】実施例１−４にかかるソースコードの記述の例を示す図である。
【図１２】実施例１−４にかかる処理時間制約情報の抽出処理の流れを説明するためのフローチャートである。
【図１３】関連技術にかかるＰＣのマルチタスク処理と本実施形態で対象とするリアルタイム制御系の処理との比較の例を示す図である。
【図１４】実施の形態２にかかる情報処理装置の構成を示すブロック図である。
【図１５】実施例２−１にかかる入出力制約情報の抽出処理の流れを説明するためのフローチャートである。
【図１６】実施例２−１にかかるソースコードの記述の例を示す図である。
【図１７】実施例２−２にかかる入出力制約情報の抽出処理の流れを説明するためのフローチャートである。
【図１８】実施例２−２にかかるソースコードの記述の例を示す図である。
【図１９】実施例２−３にかかるソースコードの記述の例を示す図である。
【図２０】実施例３−１にかかる情報処理装置の構成を示すブロック図である。
【図２１】実施例３−２にかかる情報処理装置の構成を示すブロック図である。
【図２２】実施例３−３にかかる情報処理装置の構成を示すブロック図である。
【図２３】実施例３−４にかかる情報処理装置の構成を示すブロック図である。
【図２４】実施例３−４にかかるＭＣＵデータベースの例を示す図である。
【図２５】実施例３−４にかかる適切なＭＣＵのリストが出力される流れの例を示す図である。
【図２６】実施の形態４にかかるＭＣＵ集約処理の概念を説明するための図である。
【図２７】実施例４−１にかかる情報処理装置の構成を示すブロック図である。
【図２８】実施例４−２にかかる情報処理装置の構成を示すブロック図である。
【図２９】実施例４−２にかかる集約されるプログラムの例を説明するための図である。
【図３０】実施の形態５にかかる情報処理装置の構成を示すブロック図である。
【図３１】実施の形態５にかかる処理可能な時間の予測処理の流れを説明するためのフローチャートである。
【図３２】実施の形態６にかかる情報処理装置の構成を示すブロック図である。
【図３３】実施の形態６にかかるソースコード修正処理の流れを説明するためのフローチャートである。
【図３４】実施の形態６にかかるソースコードの記述の例及び修正の概念を説明するための図である。
【図３５】実施の形態７にかかるソースコードの記述の例を示す図である。
【図３６】実施の形態７にかかる情報処理装置の構成を示すブロック図である。
【図３７】実施の形態７にかかる回路情報解析処理の流れを説明するためのフローチャートである。
【図３８】実施の形態７における解析対象の回路図の例を示す図である。
【図３９】実施の形態８にかかる情報処理装置の構成を示すブロック図である。
【図４０】実施の形態８にかかる共通入出力抽出部の内部構成を示すブロック図である。
【図４１】実施の形態８における共通化前の回路構成の例を示す図である。
【図４２】実施の形態８における共通化後の回路構成の例を示す図である。
【発明を実施するための形態】
【００１０】
以下では、上述した課題を解決するための手段を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１１】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１２】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１３】
ここで、以下の実施の形態を想到するに至った経緯について説明する。
マイコン（マイクロコンピュータ又はマイクロコントローラ）を用いた組み込みシステムを開発する際、選定したマイコンの性能が不足するとハードウェアの再設計が必要となり時間及び開発コストに無駄が発生してしまうため、所望の処理を適切に実行できるマイコンのハードウェアを選定する必要がある。一方で、コスト低減の観点においては、過度に性能の高いマイコンを選定すると部品コストが増えるという問題がある。従って、必要な処理を実行できるマイコンの中で最も安価な製品を選定することが重要となる。必要な処理を所望の時間内に実行できるか否かを判定するために、ソースコードに記述されたプログラムの実行に要する時間やクロックサイクル数を見積もる手段や、必要なメモリ容量を見積もる手段が、例えば、上述した特許文献１〜３に開示されている。
【００１４】
所望の処理を適切に実行できるマイコンを選定するには、（１）メモリ容量の制約、（２）処理時間の制約、（３）Ｉ／Ｏの機能・本数の制約の3つの制約条件を満たすことを検証する必要がある。このうち、特許文献１及び２では（１）メモリ容量の制約しか検証できてない。また、特許文献３には、（２）処理時間制約に関連して、実行時間や必要クロック数を求める技術があるが、どれだけの時間内に実行しなければならないかを自動判定する手段が提供できていない。つまり、（２）の処理時間制約の検証のうちの、制約時間の自動抽出技術と、（３）Ｉ／Ｏの機能・本数の制約の検証技術が提供されていないため、これらは設計者が手作業で検証する必要があった。
【００１５】
特に、開発の段階で、既製品のモジュールやオープンソースソフトウェアを活用して実装した後に、これを量産用に、より少ない数のマイコンで置き換える設計を行なう場合、設計者自身も内部的な処理時間の制約や、内部回路で使用しているＩ／Ｏの種類や数などを詳細には把握していない場合がある。このように設計者自身が細部の仕様を把握していない場合は、適切なマイコンの選定がより難しくなる。
【００１６】
また、機器の開発段階では、汎用的なマイコンボード、既製品のセンサーモジュール、及び、モーター制御モジュールなどを用いて開発を行うことがある。これを量産用に設計し直す場合には、複数のマイコンボード及びモジュールに分散したマイコンの処理を、出来るだけ少ない数のマイコンで実行するように設計する。この際、元々複数のマイコンで分散していた処理を統合したソースコードを実行するマイコンの選定を行なう必要がある。しかし、複数のソースコードを統合した場合に必要な処理時間、メモリ容量、又は、Ｉ／Ｏの種類や数の少なくともいずれかを算出する手段はこれまでに提供されていないため、設計や選定が必ずしも最適であるとは言えない。
【００１７】
そこで、上述の課題を解決するための実施の形態を以下に説明する。尚、本明細書及び図面においては、マイクロ秒について「ｕｓ」の表記を用いるものとする。
【００１８】
＜実施の形態１＞
図１は、実施の形態１にかかる情報処理装置１の構成を示すブロック図である。情報処理装置１は、ＭＣＵ（Micro Controller Unit）データベース１０と、処理時間制約情報抽出部１１と、判定部１２と、出力部１３とを備える。情報処理装置１は、第１のＭＣＵに基づいて実装されたソースコードＳＣ１（第１のソースコードの一例）を入力し、任意のＭＣＵがソースコードＳＣ１に対して適切か否かを判定するものである。
【００１９】
ここで、ソースコードＳＣ１は、デジタル制御を行う装置である第１のＭＣＵに組み込まれて実行されることを想定し、第１のＭＣＵの各種仕様に対応するように実装された、いわゆる組込み用プログラムである。特に、ソースコードＳＣ１は、タイマ割り込みにより所定間隔で（つまり、周期的に）第１の処理を呼び出す記述がされているものとする。第１の処理とは、１ステップ以上のコードで表現され、例えば、関数等のルーチンであってもよい。また、第１の処理は、タイマ割り込みをトリガとして実行するように実装された処理である。尚、ソースコードＳＣ１には、第１の処理以外に同様に、第１の処理と同じ又は異なる間隔でタイマ割り込みにより呼び出される複数の特定の処理が記述されていても構わない。
【００２０】
また、ソースコードＳＣ１は、第１の処理が直列に実行されることを想定して実装されているものとする。一方で、ソースコードＳＣ１は、第１の処理の呼び出しの制御自体を、プログラム内のロジックのみで制御するわけではなく、ＭＣＵに内蔵されるタイマ又は外部のタイマによる割り込み信号を受け付けることにより第１の処理を呼び出して実行するように実装されている。そのため、タイマ割り込みにより所定間隔で特定の処理を呼び出す場合、特定の処理は、所定の間隔内に終了しなければならない。つまり、タイマ割り込みにより呼び出された１回の処理は、次回の特定処理が起動される前までに終了しなければならないといえる。
【００２１】
ここで、図２を用いて、本実施の形態１で対象とするリアルタイム制御系におけるソースコードの記述の例を説明する。まず、図２の上段のような連続時間の制御系を設計したものがＹ（ｓ）により表現されるものとする。Ｙ（ｓ）をＺ変換してＹ（ｚ）を求めることで、デジタル信号処理で表現することができる（図２の中段）。さらに、Ｙ（ｚ）の式を変換してｙ（ｎ）を求めることで、ｙ（ｎ）をタイマ割り込みにより呼び出される関数として表現することができる。図２の下段のソースコードＳＣ１１は、リアルタイム制御系におけるソースコードの記述の一例である。ソースコードＳＣ１１は、１００ｕｓごとのタイマ割り込みにより関数「function A()」を呼び出し、関数「function A()」の中でｙ（ｎ）を処理するコードが記述されていることを示す。
【００２２】
図１に戻り説明を続ける。ＭＣＵデータベース１０は、複数のＭＣＵの仕様情報を記憶する記憶部の一例である。ＭＣＵの仕様情報とは、ＭＣＵの品種及び性能等の仕様を示す情報である。つまり、ＭＣＵデータベース１０の登録内容としては、例えば、ＭＣＵの内蔵発振器の動作クロック周波数、レジスタの定義（設定レジスタ名、レジスタ番号、アドレスの一覧、設定レジスタの値と機能及び性能の関係）、内部のタイマにおける信号入出力の仕様（信号入出力の機能、性能、モード、利用可能数等）、メモリ容量等である。尚、ＭＣＵデータベース１０には、少なくとも１以上のＭＣＵの仕様情報が登録されていればよい。また、ＭＣＵデータベース１０には、第１のＭＣＵにおける仕様情報が登録されていてもよい。
【００２３】
処理時間制約情報抽出部１１は、入力されたソースコードＳＣ１を解析して、第１の処理時間制約情報を抽出する。ここで、処理時間制約情報とは、特定の処理の処理時間の制約を示す情報である。すなわち、第１の処理時間制約情報とは、第１の処理に対応するコードを所定のＭＣＵ上での実行に費やすことのできる時間、又は、第１の処理の１回当たりの実行時間の上限値といえる。
【００２４】
そして、処理時間制約情報抽出部１１は、ソースコードＳＣ１を解析して、所定間隔に基づいて第１の処理の呼び出し間隔を第１の処理時間制約情報として抽出するものである。これにより、情報処理装置１は、第１の処理の呼び出し間隔を第１の処理の処理時間の制約条件としてＭＣＵの適否を判定することができる。そのため、ソースコードに実装された特定の処理を実行するためのＭＣＵに必要とされる条件を十分に抽出することができ、判定の精度を向上させることができる。
【００２５】
処理時間制約情報抽出部１１は、処理間隔抽出部１１１と、所要クロック数算出部１１２と、所要クロック周波数算出部１１３とを含む。処理間隔抽出部１１１は、ソースコードＳＣ１を解析して、第１の処理の呼び出し間隔（処理間隔）Ｔを抽出する。言い換えると、処理間隔抽出部１１１は、周期的に実行する制御処理の実行周期を定義しているコードを抽出し、第１の処理の呼び出し間隔とする。尚、ソースコードＳＣ１にタイマ割り込みにより呼び出される複数のルーチンが記述されている場合、処理間隔抽出部１１１は、ルーチンごとに呼び出し間隔を抽出するものとする。尚、呼び出し間隔Ｔの抽出の仕方は、ソースコードの記述内容に依存するものであるため、以降の実施例において複数のパターンを説明する。
【００２６】
所要クロック数算出部１１２は、第１のＭＣＵにおける第１の処理に要する所要クロック数Ｎを、ソースコードＳＣ１から算出する。特に、所要クロック数算出部１１２は、ＭＣＵデータベース１０を参照して、ルーチンごとの所要クロック数を算出するものとする。さらに、ＭＣＵデータベース１０に複数の品種のＭＣＵの仕様情報が登録されている場合、所要クロック数算出部１１２は、ＭＣＵの品種ごとかつルーチンごとに所要クロック数を算出するものとする。その理由は、所要クロック数Ｎは同じコードであってもＣＰＵのアーキテクチャに依存するため、ＣＰＵコアのシリーズごと、つまりＭＣＵの品種ごとに所要クロック数Ｎが異なるためである。尚、所要クロック数算出部１１２には、上述した特許文献３に記載の技術を用いても良い。
【００２７】
所要クロック周波数算出部１１３は、呼び出し間隔Ｔ及び所要クロック数Ｎに基づいて、第１の処理の実行に要する所要クロック周波数ｆ１を算出する。上記同様に、所要クロック周波数算出部１１３は、ルーチンごと及びＭＣＵの品種ごとに所要クロック周波数ｆ１を算出するものとする。
【００２８】
判定部１２は、第１の処理時間制約情報及び仕様情報に基づき、ＭＣＵデータベース１０に登録された複数のＭＣＵ夫々について、ソースコードＳＣ１に対して適切か否かを判定する。具体的には、例えば、判定部１２は、第１のＭＣＵの動作クロック周波数ｆ２と所要クロック周波数ｆ１との比較により、第１のＭＣＵがソースコードＳＣ１に対して適切か否かを判定する。すなわち、判定部１２は、動作クロック周波数ｆ２が所要クロック周波数ｆ１を上回る又は同一の場合、第１のＭＣＵがソースコードＳＣ１に対して適切であると判定する。また、判定部１２は、動作クロック周波数ｆ２が所要クロック周波数ｆ１を下回る場合、第１のＭＣＵがソースコードＳＣ１に対して不適切であると判定する。その理由は、第１のＭＣＵの動作クロック周波数ｆ２が所要クロック周波数ｆ１を上回る又は同一の場合には、結果として第１の処理を第１のＭＣＵ上で実行した際に、呼び出し間隔の範囲内で１回当たりの第１の処理の実行を終了することができるためである。それ故、第１のＭＣＵの動作クロック周波数ｆ２が所要クロック周波数ｆ１を上回る又は同一の場合、第１のＭＣＵが第１の処理時間制約情報が示す制約条件を満たすことができ、第１のＭＣＵがソースコードＳＣ１に対して適切であることが判定できる。特に、周波数の比較により、ＭＣＵのスペックを直接的に用いて判定することができ、判定の精度が向上できる。尚、判定部１２は、第１のＭＣＵについての適否だけでなく、ＭＣＵデータベース１０に登録された他のＭＣＵについて同様に判定する。
【００２９】
尚、ソースコードＳＣ１に複数のルーチンが含まれる場合には、判定部１２は、各ルーチンの所要クロック周波数ｆ１のうち最速のものを選択して、動作クロック周波数ｆ２と比較することで判定を行うものとする。すなわち、判定部１２は、各ＭＣＵの動作クロック周波数ｆ２と各ルーチンのうち最速の所要クロック周波数ｆ１とを比較する。
【００３０】
尚、判定部１２による判定の仕方は、周波数の比較に限定されない。例えば、判定部１２は、判定対象のＭＣＵ上で第１の処理が呼び出し間隔の間に実行可能か否かを判定するものであってもよい。具体的には、所要クロック周波数算出部１１３において所要クロック周波数ｆ１を算出する代わりに、第１の処理を判定対象のＭＣＵ上で実行した場合の実行時間の予測を行い、予測された処理時間が呼び出し間隔Ｔの範囲内か否かにより判定部１２が判定を行ってもよい。すなわち、所要クロック数Ｎを判定対象のＭＣＵの動作クロック周波数ｆ２で除算した結果が呼び出し間隔Ｔ未満であれば、呼び出し間隔の範囲内で１回当たりの第１の処理の実行を終了することができる。そして、第１の処理時間制約情報が示す制約条件を満たすことができ、判定対象のＭＣＵがソースコードＳＣ１に対して適切であることが判定できる。
【００３１】
出力部１３は、少なくとも判定部１２において適切と判定された１以上のＭＣＵの情報を出力する。特に、２以上のＭＣＵが適切と判定された場合には、ユーザに対して処理時間の制約条件を満たすＭＣＵの候補を複数提示することができ、選択の自由度を高めることができる。尚、「ＭＣＵの情報」とは、ＭＣＵを識別できる情報であればよい。また、出力部１３は、判定対象のＭＣＵがソースコードＳＣ１に対して適切か否かの判定結果自体を出力してもよい。
【００３２】
図３は、実施の形態１にかかる情報処理装置の制御方法の流れを説明するためのフローチャートである。まず、情報処理装置１は、ソースコードの入力を受け付ける（Ｓ１１）。ここで、入力されるソースコードは、所定のＭＣＵに基づいて実装され、タイマ割り込みにより所定間隔で特定の処理を呼び出す記述がされたものとし、例えば、ソースコードＳＣ１であるとよい。次に、情報処理装置１は、入力されたソースコードを解析して、特定の処理の処理時間制約情報を抽出する（Ｓ１２）。そして、情報処理装置１は、処理時間制約情報に基づき、ＭＣＵがソースコードに対して適切か否かを判定する（Ｓ１３）。その後、情報処理装置１は、適切と判定された１以上のＭＣＵの情報を出力する（Ｓ１４）。
【００３３】
（実施の形態１の効果）
以上のことから、本実施の形態により、ターゲットハードウェアである第１のＭＣＵにおいてソースコードＳＣ１を処理時間の制約条件の範囲内で実行可能か否かを判定することができる。そのため、ソースコードの実装内容に対してＭＣＵが適切であることを精度良く判定することができる。または、任意のソースコードの処理が処理時間の制約条件内でターゲットハードウェアにおいて実行可能か否かを判定できる。
【００３４】
また、第１のＭＣＵ以外のＭＣＵ、つまり、ＭＣＵデータベース１０に登録された任意のＭＣＵについても、ソースコードの処理が処理時間の制約条件内で実行可能か否かを精度良く判定することができる。そして、処理時間の制約条件を満たすＭＣＵのリストを設計者に提示することができる。これにより、ソフトウェアの実行に必要なリソースの算出作業が省かれる。また、処理速度のリソース不足によるマイコン品種の再選定とそれに伴う回路とソフトウェアの再設計を防ぐことが可能になる。それ故、マイコンを用いた組込みシステム開発の効率を向上させることができる。
【００３５】
図４は、実施の形態１にかかる情報処理装置１のハードウェア構成例を示すブロック図である。情報処理装置１は、例えば、汎用的なコンピュータシステムにより実現可能である。情報処理装置１は、例えば、ＣＰＵ（Central Processing Unit）１０１等の制御装置と、ＲＡＭ（Random Access Memory）１０２及びＲＯＭ（Read Only Memory）１０３等のメモリと、ＩＦ（InterFace）部１０４と、ＨＤＤ（Hard Disk Drive）１０５とを備えるものである。尚、情報処理装置１は、その他図示しない構成として、キーボードやマウス等の入力装置やディスプレイ等の表示装置を備えてもよい。ＩＦ部１０４は、入力装置及び表示装置並びにネットワークを介して外部とのデータの送受信を行うインタフェースである。
【００３６】
ＨＤＤ１０５には、ＯＳ（Operating System）（不図示）と、プログラム１０６と、ＭＣＵ仕様情報１０７とが記憶されている。プログラム１０６は、本実施の形態１にかかる処理が実装されたコンピュータプログラムである。ＭＣＵ仕様情報１０７は、上述したＭＣＵデータベース１０に対応する。
【００３７】
ＣＰＵ１０１は、情報処理装置１における各種処理、ＲＡＭ１０２、ＲＯＭ１０３、ＩＦ部１０４及びＨＤＤ１０５へのアクセス等を制御する。情報処理装置１は、ＣＰＵ１０１がＨＤＤ１０５に記憶されたＯＳ及びプログラム１０６を読み込み、実行する。これにより、情報処理装置１は、本実施の形態１にかかる処理を実現する。
【００３８】
続いて、ソースコードの記述内容ごとの呼び出し間隔Ｔの抽出の仕方、つまり処理時間制約情報の抽出処理の具体例について以下の実施例１−１〜１−４を用いて説明する。
【００３９】
＜実施例１−１＞
実施例１−１では、クロックソースのレジスタ設定等が記述されている場合について説明する。実施例１−１にかかるソースコードには、タイマ割り込みに関するレジスタ設定の定義が記述されており、処理時間制約情報抽出部１１は、前記レジスタ設定の定義に基づいて前記タイマ割り込みの周期を算出することにより、呼び出し間隔Ｔを抽出するものである。このようにソースコードに記述されたクロックソース等のレジスタ設定を解析することにより、タイマ割り込みの周期を算出することで、プログラム開発者が想定した呼び出し間隔Ｔを正確に抽出することができる。
【００４０】
ここで、実施例１−１で対象とするソースコードには、クロックソース等のレジスタ設定が記述されているものとする。そこで、まず、ＭＣＵにおけるタイマの構成とタイマ割り込みの仕組みについて補足する。
【００４１】
（タイマの構成とタイマ割り込みの仕組みの補足）
一般的に、タイマは、セレクタＡ及びＢ、分周器、カウンタ、比較器、並びに、各種レジスタＸ、Ｙ及びＺ等により構成される。まず、セレクタＡは、ＭＣＵの外部発信器である外部クロックソースから外部ピンを介して入力される外部クロックと、ＭＣＵのプロセッサが使用する内部発信器から入力される内部クロックとを受け付ける。レジスタＸには、選択するクロックソースを示す値が設定されている。セレクタＡは、レジスタＸの値に応じてクロックを選択し、分周器へ出力する。分周器は、セレクタＡから入力されたクロックから、例えば１６ＭＨｚ、８ＭＨｚ、４ＭＨｚ、１ＭＨｚのクロックを生成し、それぞれをセレクタＢへ出力する。レジスタＹには、選択する分周比を示す値が設定されている。そして、セレクタＢは、レジスタＹの値に応じて分周器から入力されるクロックを選択し、カウンタへ出力する。カウンタは、クロックの入力に応じてカウント値をインクリメントして、比較器へ出力する。レジスタＺには、コンペア値が設定されている。比較器は、カウンタから入力されるカウント値と、レジスタＺ内のコンペア値とを比較して、カウント値がコンペア値と一致する場合に、ＣＰＵに対して割り込み信号を出力し、カウンタに対してリセット信号を出力する。例えば、内部クロックが３２ＭＨｚであり、レジスタＸに内部クロック、レジスタＹに分周比１／４、レジスタＺに８００が設定されているものとする。この場合、カウンタへ入力されるクロックは８ＭＨｚ（０．１２５ｕｓ周期）となり、８００×０．１２５ｕｓ＝１００ｕｓで、カウント値がコンペア値に達し、タイマ割り込みが発生することとなる。その他、タイマに関するレジスタには、カウントアップ／ダウンの有効化/無効化、カウントアップ／カウントダウンの切り替え、コンペア値に達した場合に割り込みを発生するか／否か、コンペア値に達した場合にカウント値をリセットするか／否かなどの設定があり得る。
【００４２】
そのため、実施例１−１にかかるソースコードには、選択されるクロックソース、選択されるクロック分周比、割り込みを発生させるためのカウンタの閾値であるコンペア値、等のレジスタ設定の定義が記述されている。例えば、ソースコードＳＣ１２には、Ｔ００１、Ｔ００１Ａ、Ｔ００１Ｃ等のようなレジスタ名の変数に、０ｘ１Ｆ、０ｘ１０、０ｘ００のような値が定義されている。また、ソースコードＳＣ１２には、タイマ割り込みが発生した場合に呼び出される関数の定義が記述されている。尚、最終的にタイマ割り込みにより関数が呼び出されるには、ＭＣＵ内部の割り込みベクタテーブル（各割り込みが発生した場合のジャンプ先アドレスのテーブル）に実行する関数のアドレスが書き込まれることになる。また、ソースコードＳＣ１２には、タイマ割り込み及びカウント動作を有効化する設定が記述されている。そして、ＭＣＵにおける各レジスタ名と設定値（０又は１）等の各種仕様について、ＭＣＵデータベース１０に登録されているものとする。
【００４３】
図５は、所定間隔のタイマ割り込みにより実行される関数の概念を説明するための図である。ここでは、カウントクロックごとにカウント値がインクリメントされ、カウント値がコンペア値に達した場合に、割り込み信号が発生することを示す。そして、割り込み信号に応じて関数Ａが実行されることを示す。ここで、割り込み信号が発生する周期は、タイマ割り込み周期、すなわち、関数Ａの呼び出し間隔Ｔといえる。そのため、関数Ａの処理時間の制約条件は、１回当たりの処理時間が呼び出し間隔Ｔ以内であることといえる。よって、上述した方法によりソースコードから呼び出し間隔Ｔを抽出することは、関数Ａの処理時間制約情報を抽出していることと等価であると言える。
【００４４】
次に、図６は、実施例１−１にかかる処理時間制約情報の抽出処理の流れを説明するためのフローチャートである。まず、情報処理装置１は、ユーザから外部クロックソースの周波数の指定を受け付ける（Ｓ１１１）。併せて、情報処理装置１は、ユーザからソースコードＳＣ１２の対象ＭＣＵ品種の選択を受け付ける（Ｓ１１２）。尚、ユーザは、ソースコードＳＣ１２の開発元や提供元から当該ソースコードが想定する外部クロックソースの周波数及びＭＣＵの品種を事前に入手できるものとする。
【００４５】
次に、情報処理装置１は、ＭＣＵデータベース１０から、選択されたＭＣＵ品種におけるタイマ割り込みに関するレジスタ設定の仕様を取得する（Ｓ１１３）。そして、情報処理装置１は、ソースコードＳＣ１２を読み込み、ソースコードＳＣ１２内のレジスタ設定を解析する（Ｓ１１４）。そして、情報処理装置１は、処理時間制約情報を抽出する（Ｓ１１５）。
【００４６】
例えば、処理間隔抽出部１１１は、ソースコードＳＣ１２の中から、クロックソース、クロック分周比、コンペア値をレジスタに設定しているコード、タイマ割り込み及びカウント動作を有効化するコード、並びに、タイマ割り込みにより呼び出される関数のコードである割り込みハンドラの記述箇所を特定する。そして、処理間隔抽出部１１１は、選択されるクロックソース、選択されるクロック分周比、及び、コンペア値を特定する。ここで、選択されるクロックソースのレジスタ値が外部クロックソースを示す場合、処理間隔抽出部１１１は、ステップＳ１１１で指定された周波数をクロックソースの周波数とする。また、選択されるクロックソースのレジスタ値が内部クロックソースを示す場合、処理間隔抽出部１１１は、ステップＳ１１２で選択されたＭＣＵ品種における動作クロック周波数を、ステップＳ１１３においてＭＣＵデータベース１０から取得し、クロックソースの周波数とする。そして、処理間隔抽出部１１１は、クロックソースの周波数に分周比を乗算してカウンタクロックの周波数を算出する。そして、処理間隔抽出部１１１は、コンペア値をカウンタクロックの周波数で除算して、（又は、コンペア値をカウンタ周期で乗算して）呼び出し間隔Ｔを算出する。つまり、処理間隔抽出部１１１は、特定された関数における呼び出し間隔Ｔを処理時間制約情報として抽出する。その後、処理間隔抽出部１１１は、抽出した呼び出し間隔Ｔを所要クロック周波数算出部１１３へ出力する。
【００４７】
＜実施例１−２＞
実施例１−２では、タイマ割り込み設定ＡＰＩの記述がされている場合について説明する。実施例１−２において、処理時間制約情報抽出部１１は、ソースコードの記述から前記タイマ割り込みによる前記第１の処理の呼び出し箇所を特定し、当該特定した呼び出し箇所に基づいて前記タイマ割り込みの周期を呼び出し間隔Ｔとして抽出するものである。このようにして、呼び出し間隔Ｔを容易かつ正確に抽出することができる。
【００４８】
ここで、実施例１−２で対象とするソースコードには、タイマ割り込みを設定するための専用の命令の記述がされているものとする。この専用の命令は、予めＡＰＩとして提供されているものとする。例えば、図２のソースコードＳＣ１１に示したような「setTimerInterrupt(割り込み周期、呼び出し関数);」という命令を用いることができる。尚、タイマ割り込みを設定するための専用の命令はこれに限定されず、他のライブラリ等を用いても構わない。
【００４９】
図７は、実施例１−２にかかるソースコードＳＣ１２の記述の概要とタイマ割り込み間隔の概念を説明するための図である。この場合、ソースコードには、呼び出し間隔ＴＩＮＴ＝２００ｕｓで関数Ａを呼び出す記述、例えば、「setTimerInterrupt( 2e-4, function_A());」がされているものとする。そして、処理間隔抽出部１１１は、ソースコードを解析して、「setTimerInterrupt」の記述箇所、すなわち、「function_A()」の呼び出し箇所を特定し、「setTimerInterrupt」の第１引数である「2e-4」つまり２００ｕｓを、「function_A()」の呼び出し間隔ＴＩＮＴ、すなわち処理時間制約情報として抽出する。そのため、関数Ａの実行時間ＴＡの見込みが１２０ｕｓであるため、呼び出し間隔ＴＩＮＴの２００ｕｓより短いため、当該ＭＣＵがソースコードに対して適切であると判定することができる。
【００５０】
＜実施例１−３＞
実施例１−３では、タイマ割り込みによりスケジューラ関数を呼び出す記述がされている場合について説明する。実施例１−３にかかるソースコードには、前記第１の処理として複数の個別処理を順番に呼び出すための呼び出し条件が記述されており、処理時間制約情報抽出部１１は、前記所定間隔及び前記呼び出し条件に基づいて、前記複数の個別処理のうち第１の個別処理の呼び出しタイミングから当該第１の個別処理の次に呼び出される第２の個別処理の呼び出しタイミングまでの間隔を算出することにより、当該第１の個別処理における前記第１の処理時間制約情報を抽出するものである。これにより、より複数かつ複雑な関数の呼び出しが定義されている場合であっても、タイマ割り込みに基づいて各関数の呼び出し間隔を正確に抽出することができる。
【００５１】
ここで、実施例１−３で対象とするソースコードには、例えば、実施例１−１又は１−２でタイマ割り込みにより呼び出される関数内に、複数の関数（以下、個別関数という。）を異なるタイミングで呼び出して実行するための制御ロジックが記述されているものとする。尚、実施例１−３で対象とするソースコードでは、複数の個別関数が直列に実行されることを想定しているものとする。例えば、図８は、実施例１−３にかかるソースコードＳＣ１３の記述の概要を示す図である。図８には、タイマ割り込みの設定として、呼び出し間隔ＴＩＮＴ＝１００ｕｓで関数（以下、「スケジューラ関数」という。）を呼び出す記述がされており、呼び出されるスケジューラ関数内では、複数の個別関数Ａ、Ｂ及びＣを異なるタイミングで呼び出すように呼び出し条件が記述されていることを示す。図８のスケジューラ関数の処理内容としては、スケジューラ関数が呼び出される度にカウンタ変数ｉをインクリメントし、カウンタ変数ｉが０から５までを繰り返す処理を示す。そしてｉ＝０又は３の場合（つまり、カウンタ変数ｉを３で割った剰余がゼロである場合（「ｉ％３＝０」と表現する））に個別関数Ａを実行し、ｉ＝２の場合（つまり、カウンタ変数ｉを６で割った剰余が２である場合「ｉ％６＝２」と表現する）に個別関数Ｂを実行し、ｉ＝５の場合（つまり、カウンタ変数ｉを６で割った剰余が５である場合「ｉ％６＝５」と表現する）に個別関数Ｃを実行することを示す。尚、スケジューラ関数の内容はこれに限定されない。
【００５２】
図９は、実施例１−３にかかる処理時間制約情報の抽出処理の流れを説明するためのフローチャートである。まず、ステップＳ１２１〜Ｓ１２４については、図６のステップＳ１１１〜Ｓ１１４と同様であるため説明を省略する。次に、処理間隔抽出部１１１は、ソースコードＳＣ１３内のタイマ割り込み箇所を特定する（Ｓ１２５）。ここでは、処理間隔抽出部１１１は、タイマ割り込みによるスケジューラ関数の呼び出し箇所を特定する。そして、処理間隔抽出部１１１は、スケジューラ関数を解析する（Ｓ１２６）。そして、処理間隔抽出部１１１は、各個別関数の処理時間制約情報を抽出する（Ｓ１２７）。一例として、処理間隔抽出部１１１は、各個別関数の実行タイミングから、個別関数の間の呼び出し順序を特定し、第１の個別関数の実行タイミングから次に呼び出される第２の個別関数の実行タイミングまでの間隔を算出する。図８を例にして説明すると、処理間隔抽出部１１１は、スケジューラの関数の処理内容を解析して、カウンタ変数ｉが「ｉ％３＝０」の条件を満たす場合に個別関数Ａが呼び出されることを検出し、個別関数Ａの実行タイミングをカウンタ変数ｉが０又は３の場合と判定する。同様に、処理間隔抽出部１１１は、個別関数Ｂの実行タイミングをカウンタ変数ｉが２の場合、及び、個別関数Ｃの実行タイミングをカウンタ変数ｉが５の場合と、それぞれ判定する。そして、処理間隔抽出部１１１は、スケジューラの関数の処理内容が、カウンタ変数ｉが０から５まで１ずつ増加することの繰り返しを示すことから、個別関数の間の呼び出し順序をＡ、Ｂ、Ａ、Ｃの順序であると特定する。そのため、処理間隔抽出部１１１は、第１の個別関数Ａの実行タイミングである「ｉ＝０」から、第１の個別関数Ａの次に呼び出される第２の個別関数Ｂの実行タイミングである「ｉ＝２」までの間隔を算出する。この場合、個別関数Ａの処理時間制約情報は、呼び出し間隔ＴＩＮＴ×２で２００ｕｓとなる。つまり、個別関数Ａは１回の実行当たり２００ｕｓの間隔以内で処理を終了すればよいことを示す。図１０は、実施例１−３にかかるタイマ割り込み間隔と関数実行スケジュールの概念を説明するための図である。この場合、個別関数Ｂ及びＣの処理時間制約情報はそれぞれ、１００ｕｓとなる。尚、ステップＳ１２６及びＳ１２７の処理は上述したものに限定されない。
【００５３】
＜実施例１−４＞
実施例１−４では、コメント文に処理の制限時間の定義が記述されている場合について説明する。実施例１−４にかかるソースコードは、前記第１の処理を示すコードの範囲と、前記第１の処理を完了させる制限時間の定義とが対応付けて記述されており、処理時間制約情報抽出部１１は、ソースコードを解析して前記コードの範囲を特定し、前記コードの範囲に対応付けて記述された前記制限時間の定義を呼び出し間隔Ｔとして抽出するものである。これにより、処理時間制約情報抽出部１１は、ソースコードから制限時間の定義を容易に抽出できるため、処理負荷を軽減し、ソースコードの解析速度を向上させることができる。
【００５４】
ここで、実施例１−４で対象とするソースコードには、実施例１−１又は１−２のようにタイマ割り込みにより関数等を呼び出す処理が実装されており、コメント文として処理時間の制約情報が記述されているものとする。つまり、実施例１−４にかかるソースコードの開発者は、実装時に処理時間の制約の仕様に基づいて、コメント文に以下のようなルールに従った記述を行うものとする。尚、このようなコメント文の記述はマクロ記述の一種と言える。
【００５５】
図１１は、実施例１−４にかかるソースコードＳＣ１４の記述の例を示す図である。ソースコードＳＣ１４には、コード部ｃ１やｃ２等の処理が記述されている。コード部ｃ１は、タイマ割り込みにより所定間隔で呼び出される「code A;」の処理が記述されている。コード部ｃ１は、複数行であってもよく、例えば、ソースコードＳＣ１２においてタイマ呼び込みにより呼び出される処理であってもよい。コード部始点ｍ１「[TimeConstraint]」は、タイマ割り込みの記述の開始箇所を特定する記述である。そして、コード部終点ｍ２「[end TimeConstraint]」は、タイマ割り込みの記述の終了箇所を特定する記述である。コード部識別子ｍ３とコード部識別子ｍ４は、コード部始点ｍ１とコード部終点ｍ２をペアとして定義するための識別子が「AAA」であることを示す。制限時間ｍ５は、コード部ｃ１における処理の制限時間が１００マイクロ秒（「100us」）と定義されていることを示す記述である。
【００５６】
また、コード部ｃ２は、１行で記述された、タイマ割り込みにより所定間隔で呼び出される関数「function_C」の記述である。または、コード部ｃ２は、例えば、ソースコードＳＣ１１の「setTimerInterrupt(割り込み周期、呼び出し関数);」であってもよい。コード部始点ｍ６は、１行であるコード部ｃ２が第１の処理を示すコードの範囲であることを示す。そして、制限時間ｍ７は、コード部ｃ２における処理の制限時間が１００マイクロ秒（「100us」）と定義されていることを示す記述である。尚、ソースコードＳＣ１４におけるコメント文の記述ルールや具体的な記述内容は、実施例１−４で対象とするソースコードの一例である。
【００５７】
図１２は、実施例１−４にかかる処理時間制約情報の抽出処理の流れを説明するためのフローチャートである。まず、処理間隔抽出部１１１は、ソースコードＳＣ１４内のマクロ記述を解析する（Ｓ１３１）。すなわち、処理間隔抽出部１１１は、ソースコードＳＣ１４に記述された第１の処理を示すコードの範囲を特定する。例えば、処理間隔抽出部１１１は、ソースコードＳＣ１４を解析して、コード部識別子ｍ３及びｍ４として同じ「AAA」が記述されたコード部始点ｍ１とコード部終点ｍ２の間のコード部ｃ１がタイマ割り込みにより呼び出される処理を示すコードの範囲であると特定する。そして、処理間隔抽出部１１１は、特定したコードの範囲に対応付けて記述された制限時間の定義を呼び出し間隔Ｔとして抽出する（Ｓ１３２）。例えば、処理間隔抽出部１１１は、特定されたコード部始点ｍ１とコード部終点ｍ２で囲まれるコード部ｃ１について、処理を完了させる制限時間の定義が１００マイクロ秒（「100us」）であることを抽出する。
【００５８】
ここで、実施の形態１と関連技術との違いについて以下に補足説明を行う。
（実施の形態１と関連技術との違いの補足１：マルチタスク処理）
図１３は、関連技術にかかるＰＣ（Personal Computer）のマルチタスク処理と本実施形態で対象とするリアルタイム制御系の処理（典型的には、上述した実施例１−３のスケジューラ関数）との比較の例を示す図である。ＰＣ等における一般的なマルチタスク処理の場合、一定の間隔で複数のタスク処理が切り替えて呼び出されて実行される。しかしながら、一般的なマルチタスク処理の場合、例えば、タスクＡ１の処理が完了しないとしても、一定時間が経過すると、ＯＳ側処理であるタスク切り替え処理Ｔｓｗにより、強制的にタスクＡ１の処理は途中で打ち切られてレジスタの内容がメモリに退避され、他のタスクＢ１が呼び出されて実行が開始される。そして、タスクＢ１、Ｃ１と実行された後に、再度タスクＡ１が呼び出され、途中で打ち切られた処理のレジスタの内容がメモリから読み出されて再開される。また、並列して実行する他のタスクが存在しない場合には、タスクＡ２のように連続して実行される。つまり、ＰＣ等におけるマルチタスク処理の場合、処理は速いほど良いため、前詰めで実行するものである。よって、本実施の形態のように、厳密な処理時間の制約条件が無い。よって、関連技術にかかる一般的なマルチタスク処理は、各処理の処理時間の制約条件を満たすための技術ではなく、本実施の形態とは背景が異なる。
【００５９】
一方、本実施例１−３のスケジューラ関数による処理は、並列処理ではなく、各処理の順序とその制限時間がタイマ割り込みとソースコードの制御ロジックにより定められているものである。そのため、処理Ａ１の実行が完了する前に処理Ｂ１の実行が開始してしまうと、例えばメモリの内容の更新と参照の順序が入れ替わってしまい、正しく動作しない。特に、同じソースコードの記述であっても、ＭＣＵの品種により所要クロック数が異なるため、各処理に要する処理時間は異なる。そのため、本実施例１−３によりソースコードの記述内容から各処理の処理時間の制約を抽出して、ＭＣＵごとに適否を判定することが有効といえる。
【００６０】
（実施の形態１と関連技術との違いの補足２：マルチタスクＯＳ）
汎用のマルチタスクＯＳは、タイムシェアリングにより複数のアプリケーションを動作させるものであり、タスク切り替えは以下の２方式がある。まず、ノンプリエンプティブ・マルチタスク方式は、各タスク自身が、短い時間間隔でＯＳに処理を返すものである。また、プリエンプティブ・マルチタスク方式は、タイマ割り込み等で強制的にＯＳに制御が移るものである。
【００６１】
そして、汎用マルチタスクＯＳにはリアルタイム性や処理時間の制約や制御周期の概念が無い。一方、本実施の形態はリアルタイム性が必要である。また、汎用マルチタスクＯＳはベストエフォートで実行し、ＣＰＵ処理能力が足りなければ動作が遅くなるか、映像のコマ落ちが生じても良い。一方、本実施の形態が対象とするＭＣＵでの処理では、処理能力の不足が許されない。また、汎用マルチタスクＯＳは、タスクは固定されておらず、どのようなタスクにも対応するため、「最適なハードウェア」という考え方が存在しない。一方、本実施の形態は処理内容が予め決まっており、それに最適なハードウェアを選択することが効果的である。
【００６２】
（実施の形態１と関連技術との違いの補足３：リアルタイムＯＳ）
リアルタイムＯＳは、ユーザアプリケーションから、待ちが発生しないサービスコールを呼び出した場合に要する遅延の最悪値が保障されている。そして、ハードウェア割込みが発生してから、処理ルーチンを呼出すまでの遅延の最悪値が保障されている。また、高優先度のタスクが確実に実行されることを保証するスケジューリング規則が存在する。さらに、複数のタスクが同じハードウェアにアクセスする問題を避けるために、タスク間通信と、割り込みの一時的な禁止（マスク）を許可している。リアルタイムＯＳは、与えられたリソースでリアルタイム性を確保するよう割り込みへの応答やタスク切り替えの速度を改善したり、ソフトウェア開発者がタスクの優先度をより詳細に設定したりできる仕組みが用意されている。しかし、リアルタイムＯＳが提供する機能は、与えられたハードウェアで出来るだけリアルタイム性を確保することを目的とするためのＯＳ機能であり、リアルタイム性を保障したり、リアルタイム性を保障できるハードウェアを選定したりするものではない。一方、本実施の形態は、与えられたハードウェアでリアルタイム性を確保できるかや、どのハードウェアならリアルタイム性を確保できるかを判定するものである。
【００６３】
＜実施の形態２＞
図１４は、実施の形態２にかかる情報処理装置２の構成を示すブロック図である。情報処理装置２は、ＭＣＵデータベース１０と、入出力制約情報抽出部２１と、判定部２２と、出力部２３とを備える。尚、ＭＣＵデータベース１０は、図１と同等であるものとする。情報処理装置２は、第１のＭＣＵにおける信号の入出力に関する記述がされたソースコードＳＣ２（第１のソースコードの一例）を入力し、少なくとも第１のＭＣＵがソースコードＳＣ２に対して適切か否かを判定するものである。
【００６４】
ここで、ソースコードＳＣ２は、デジタル制御を行う装置である第１のＭＣＵに組み込まれて実行されることを想定し、第１のＭＣＵの各種仕様に対応するように実装された、いわゆる組込み用プログラムである。尚、ソースコードＳＣ２は、上述したソースコードＳＣ１の特徴を含むものであっても構わない。
【００６５】
入出力制約情報抽出部２１は、ソースコードＳＣ２を解析して、第１の入出力制約情報を抽出する。ここで、入出力制約情報とは、ソースコードＳＣ２において使用する信号の入出力の制約に関する情報である。入出力制約情報とは、ソースコードＳＣ２の実行において必要とされる信号入出力の仕様であり、例えば、入出力端子のＩ／Ｏの種類（ＧＰＩＯ（汎用Ｉ／Ｏ）／ＡＤＣ（Analog-to-Digital Converter）／タイマなど）、モード（入力／出力、割り込み発生条件など）、性能（入出力電圧、ＡＤＣやタイマの分解能など）等の要件である。
【００６６】
判定部２２は、第１の入出力制約情報及び仕様情報に基づき、ＭＣＵデータベース１０に登録された複数のＭＣＵ夫々について、ソースコードＳＣ２に対して適切か否かを判定する。具体的には、例えば、判定部２２は、ＭＣＵデータベース１０から第１のＭＣＵの入出力仕様を読み出して、第１の入出力制約情報と比較することにより、第１のＭＣＵがソースコードＳＣ２に実装された入出力の要件を満たすか否かを判定する。また、判定部２２は、第１のＭＣＵについての適否だけでなく、ＭＣＵデータベース１０に登録された複数のＭＣＵ夫々について、第１の入出力制約情報及び仕様情報に基づきソースコードＳＣ２に対して適切か否かを判定する。
【００６７】
出力部２３は、判定部２２において適切と判定された１以上のＭＣＵの情報を出力する。特に、２以上のＭＣＵが適切と判定された場合には、ユーザに対して入出力の制約条件を満たすＭＣＵの候補を複数提示することができ、選択の自由度を高めることができる。
【００６８】
＜実施の形態２の効果＞
以上のことから、本実施の形態により、ターゲットハードウェアである第１のＭＣＵが、ソースコードＳＣ２の実装上要求されている入出力仕様を満たすか否かを判定することができる。つまり、第１のＭＣＵにおいてソースコードＳＣ２が実行可能か否かを判定することができる。そのため、ソースコードの実装内容に対してＭＣＵが適切であることを精度良く判定することができる。また、第１のＭＣＵ以外のＭＣＵについても、同様に、ソースコードの実装内容に対してＭＣＵが適切であることを精度良く判定することができる。または、任意のＭＣＵが任意のソースコードで要求される入出力仕様を満たすか否かを判定できる。また、Ｉ／Ｏのリソース不足によるマイコン品種の再選定とそれに伴う回路とソフトウェアの再設計を防ぐことが可能になる。それ故、マイコンを用いた組込みシステム開発の効率を向上させることができる。
【００６９】
＜実施例２−１＞
実施例２−１にかかる入出力制約情報抽出部２１は、ソースコードＳＣ２Ａ内の第１のＭＣＵにおける入出力端子の割り当て設定及び当該入出力端子へのアクセス命令の記述に基づいて、前記第１の入出力制約情報を抽出するものである。これにより、ソースコードＳＣ２Ａから実際に利用する入出力端子の仕様をより正確に抽出できる。
【００７０】
ここで、実施例２−１で対象とするソースコードＳＣ２Ａは、上述したソースコードＳＣ２の一例であり、第１のＭＣＵにおける入出力端子の割り当て設定と、入出力端子へのアクセス命令とが記述されているものとする。
【００７１】
図１５は、実施例２−１にかかる入出力制約情報の抽出処理の流れを説明するためのフローチャートである。まず、情報処理装置２は、ステップＳ１１２と同様に、ユーザからソースコードＳＣ２Ａの対象ＭＣＵ品種の選択を受け付ける（Ｓ２１１）。次に、情報処理装置２は、ＭＣＵデータベース１０から、選択されたＭＣＵ品種におけるＩ／Ｏレジスタ設定の仕様を取得する。そして、情報処理装置２は、ソースコードＳＣ２Ａを読み込み、ソースコードＳＣ２Ａ内のＩ／Ｏレジスタ設定を解析する（Ｓ２１２）。具体的には、入出力制約情報抽出部２１は、ソースコードＳＣ２Ａ内のＩ／Ｏレジスタ設定の記述から、Ｉ／Ｏピンに割り当てられたＩ／Ｏの種類、使用するモード、Ｉ／Ｏポートのプルアップ・ダウンのＯＮ／ＯＦＦ、性能等を解析する。
【００７２】
続いて、情報処理装置２は、ソースコードＳＣ２Ａ内のＩ／Ｏアクセス命令を解析する（Ｓ２１３）。具体的には、入出力制約情報抽出部２１は、ソースコードＳＣ２Ａ内で入出力端子にアクセスしている命令を抽出し、実際に使用されている入出力端子と使用されていない入出力端子とを特定する。そして、情報処理装置２は、入出力制約情報を抽出する（Ｓ２１４）。その後、入出力制約情報抽出部２１は、入出力制約情報を判定部２２へ通知し、判定部２２は、第１のＭＣＵが入出力制約情報を満たすか否かにより、適切か否かを判定する。
【００７３】
ここで、図１６は、実施例２−１にかかるソースコードＳＣ２Ａの記述の例を示す図である。尚、ｂｉｔ＝０で入力モード、ｂｉｔ＝１で出力モードを示すものとする。コード部ｃ２ＡＡは、Ｉ／Ｏレジスタの設定を定義した記述を示す。コード部ｃ２ＡＡは、Ｐｏｒｔ７のモード設定で、Ｐ７．２、Ｐ７．３、Ｐ７．４は出力モード、Ｐ７．０、Ｐ７．１、Ｐ７．５、Ｐ７．６、Ｐ７．７は入力モードであることを示す。そのため、入出力制約情報抽出部２１は、コード部ｃ２ＡＡを解析することにより、ソースコードＳＣ２Ａは、ＧＰＩＯ出力が３本、ＧＰＩＯ入力が５本として設定されていることを特定する。尚、各ビットの０／１がどの様なモードに対応するかは、ＭＣＵのデータベースに仕様情報として登録されている。但し、ステップＳ２１２の段階では、設定レジスタのビットにより入力又は出力のいずれかの判別ができるが、後続のコードでアクセスされているか否かの判別はできない。
【００７４】
コード部ｃ２ＡＢは、Ｉ／Ｏアクセス命令の記述を示す。コード部ｃ２ＡＢは、Ｐ７．２とＰ７．３への出力としてのＩ／Ｏアクセスと、Ｐ．７．０とＰ７．１への入力としてのＩ／Ｏアクセスを示す。そのため、入出力制約情報抽出部２１は、コード部ｃ２ＡＢを解析することにより、かつ、コード部ｃ２ＡＢの前後にＰ７．４〜Ｐ７．７へのアクセス命令が存在しないことにより、ソースコードＳＣ２Ａが実際にアクセスする入出力端子の本数を特定する。この場合、ＧＰＩＯ出力が２本、ＧＰＩＯ入力が２本として特定される。
【００７５】
このように、実施例２−１により、Ｉ／Ｏレジスタ設定とＩ／Ｏアクセス命令の両方を解析することで、Ｉ／Ｏレジスタ設定だけ定義しているが実際には使っていない入出力端子や、そのモードが使用されるモードについても判別することができる。
【００７６】
＜実施例２−２＞
実施例２−２にかかるソースコードＳＣ２Ｂは、上述したソースコードＳＣ２の一例であり、第１のＭＣＵにおける入出力端子のうち使用する端子の種類、モード、及び性能の定義が所定のルールにより記述されており、入出力制約情報抽出部２１は、ソースコードＳＣ２Ｂ内の前記記述を前記所定のルールに基づいて解析して、前記第１の入出力制約情報を抽出するものである。これにより、入出力制約情報抽出部２１は、実施例２−１と比べて、ソースコードＳＣ２Ｂから入出力の要件の定義を容易に抽出できるため、処理負荷を軽減し、ソースコードＳＣ２Ｂの解析速度を向上させることができる。
【００７７】
ここで、実施例２−２にかかるソースコードＳＣ２Ｂにおける所定のルールは、コメント文に入出力端子の割り当てを示す記述と対応付けて、Ｉ／Ｏ名、Ｉ／Ｏ種別、性能等を記述するものとする。尚、このようなコメント文の記述はマクロ記述の一種と言える。
【００７８】
図１７は、実施例２−２にかかる入出力制約情報の抽出処理の流れを説明するためのフローチャートである。まず、入出力制約情報抽出部２１は、ソースコードＳＣ２Ｂを読み込み、ソースコードＳＣ２Ｂ内のマクロ記述を解析する（Ｓ２２１）。そして、入出力制約情報抽出部２１は、入出力制約情報を抽出する（Ｓ２２２）。
【００７９】
図１８は、実施例２−２にかかるソースコードＳＣ２Ｂの記述の例を示す図である。例えば、入出力割当識別子ｍ２Ｂ１は、コメント文内の「[ioAssign]」という記述であり、同じ行のこれより後に入出力割当が記述されていることを示す。入出力割当内容ｍ２Ｂ２は、入出力割当識別子ｍ２Ｂ１の後に記述された割り当て内容を示す。入出力制約情報抽出部２１は、ソースコードＳＣ２Ｂを解析することにより、ソースコードＳＣ２Ｂの実行に必要なＩ／Ｏのリストとして、１２ｂｉｔのＡＤＣが２つ、１６ｂｉｔのＴｉｍｅｒ（ＰＷＭ出力）が３つ、１６ｂｉｔのＴｉｍｅｒ（外部パルスカウント）が１つ、ＧＰＩＯ（入力）が２本、ＧＰＩＯ（出力）が２本、ＵＡＲＴ（９６００ｂｐｓ Ｔｘ、Ｒｘ）が1つであることを抽出する。
【００８０】
＜実施例２−３＞
実施例２−３は実施例２−１又は２−２の変形例である。実施例２−３にかかるソースコードＳＣ２Ｃは、上述したソースコードＳＣ２の一例であり、入出力端子への設定及びアクセスを行う処理を呼び出すライブラリ（マクロ命令）の記述がされており、入出力制約情報抽出部２１は、ソースコードＳＣ２Ｃ内のライブラリの記述を解析して、前記第１の入出力制約情報を抽出するものである。これにより、実施例２−２と同等の効果を奏する。
【００８１】
図１９は、実施例２−３にかかるソースコードＳＣ２Ｃの記述の例を示す図である。例えば、マクロ命令ｍ２Ｃ１は、「analogReadResolution(1, 16)」;であり、１番ピンのADCの解像度が１６ビットであることを示す。また、マクロ命令ｍ２Ｃ２は、「pinMode(7, INPUT);」であり、７番ピンはＧＰＩＯの入力に設定することを示す。つまり、マクロ命令の文字列と入出力端子の接続先やＩ／Ｏの種別等を対応付けておき、第２引数が性能等を示すものと定義しておくことで、入出力制約情報抽出部２１は、マクロ命令の記述を特定し、そのマクロ命令の文字列と引数とから入出力制約情報を抽出することができる。そして、ここでは、ソースコードＳＣ２ＢとソースコードＳＣ２Ｃとが、同じ入出力仕様を定義しているため、図１８と同様の解析結果が得られる
【００８２】
尚、他のマクロ記述として、「x=analogRead(1);」との記述により１番ピンから入力したＡＤＣの値（１６ビット）をｘに代入することを示し、「y=digitalRead(7);」との記述により７番ピンのＧＰＩＯから入力した値（０又は１）をｙに代入することを示すようにしてもよい。
【００８３】
このように、実施例２−１は、ＭＣＵデータベースからＭＣＵの各レジスタの機能を参照し、レジスタ設定やアクセス命令を全て解析して、どのようなＩ／Ｏがどれだけ使われているかを抽出する方法といえる。一方、実施例２−２及び２−３は、ソースコードの１行当たりの記述からの１種類の入出力制約情報を容易に抽出することができる。
【００８４】
＜実施の形態３＞
本実施の形態３は、上述した実施の形態１もしくは２の改良例である。
【００８５】
＜実施例３−１＞
実施例３−１は、与えられたソースコードから処理時間制約情報及び入出力制約情報の抽出を行う場合について示す。図２０は、実施例３−１にかかる情報処理装置３ａの構成を示すブロック図である。尚、上述した実施の形態１又は２と同等の構成については説明を省略するものとする。
【００８６】
情報処理装置３ａは、入力されるソースコードＳＣ３を解析し、処理時間制約情報及び入出力制約情報の抽出を行い、ＭＣＵデータベース１０に登録された各ＭＣＵのソースコードＳＣ３に対する適否を判定し、適切なＭＣＵのリストを出力するものである。ここで、ソースコードＳＣ３は、上述したソースコードＳＣ１及びＳＣ２の特徴を併せ持つものである。すなわち、ソースコードＳＣ３は、第１のＭＣＵに基づいて実装され、タイマ割り込みにより所定間隔で第１の処理を呼び出す記述と、第１のＭＣＵにおける信号の入出力に関する記述とがされたものである。
【００８７】
情報処理装置３ａは、ＭＣＵデータベース１０と、処理時間制約情報抽出部１１と、入出力制約情報抽出部２１と、判定部３２ａと、出力部３３とを備える。ＭＣＵデータベース１０は、実施の形態１と同等のものである。処理時間制約情報抽出部１１は、実施の形態１と同等のものであり、ソースコードＳＣ３から第１の処理時間制約情報としての処理間隔を抽出し、また、所要クロック周波数を算出し、処理間隔及び所要クロック周波数に基づいて所要クロック周波数を算出し、判定部３２ａへ出力する。入出力制約情報抽出部２１は、実施の形態２と同等のものであり、ソースコードＳＣ３から第１の入出力制約情報を抽出し、判定部３２ａへ出力する。
【００８８】
判定部３２ａは、第１の処理時間制約情報及び第１の入出力制約情報に基づき、第１のＭＣＵがソースコードＳＣ３に対して適切か否かを判定する。判定部３２ａは、比較部３２２と、比較部３２３と、ＡＮＤ部３２４とを備える。比較部３２２は、処理時間制約情報抽出部１１からの所要クロック周波数ｆ１と、ＭＣＵデータベース１０に登録されたＭＣＵの動作クロック周波数ｆ２と比較し、比較結果をＡＮＤ部３２４へ出力する。比較部３２３は、入出力制約情報抽出部２１からの第１の入出力制約情報と、ＭＣＵデータベース１０に登録されたＭＣＵの信号入出力の仕様とを比較し、比較結果をＡＮＤ部３２４へ出力する。ＡＮＤ部３２４は、比較部３２２及び３２３からの比較結果のＡＮＤ演算を行い、判定結果として出力部３３へ出力する。すなわち、判定部３２ａは、動作クロック周波数ｆ２が所要クロック周波数ｆ１を上回る又は同一の場合、かつ、ＭＣＵの入出力仕様が第１の入出力制約情報を満たす場合、ＭＣＵがソースコードＳＣ３に対して適切と判定する。出力部３３は、判定部３２ａからの判定結果を外部へ出力する。
【００８９】
また、ＭＣＵデータベース１０に複数のＭＣＵの仕様情報が登録されている場合、処理時間制約情報抽出部１１は、複数のＭＣＵ夫々について、所要クロック数に基づく所要クロック周波数を算出し、判定部３３ａは、複数のＭＣＵ夫々について、第１の処理時間制約情報、第１の入出力制約情報及び仕様情報に基づきソースコードＳＣ３に対して適切か否かを判定する。この場合、出力部３３は、適切と判定されたＭＣＵのリスト、又は、各ＭＣＵについての判定結果を外部へ出力する。
【００９０】
＜実施例３−２＞
実施例３−２は、与えられたソースコードからの処理時間制約情報の抽出に加え、所要メモリ量を算出する場合について示す。図２１は、実施例３−２にかかる情報処理装置３ｂの構成を示すブロック図である。尚、上述した実施の形態１及び実施例３−１と同等の構成については説明を省略するものとする。
【００９１】
情報処理装置３ｂは、入力されるソースコードＳＣ３を解析し、処理時間制約情報の抽出及び所要メモリ量の算出を行い、ＭＣＵデータベース１０に登録された各ＭＣＵのソースコードＳＣ３に対する適否を判定し、適切なＭＣＵのリストを出力するものである。情報処理装置３ｂは、情報処理装置３ａと比べて、入出力制約情報抽出部２１の代わりに所要メモリ量算出部３１が追加され、判定部３２ａが判定部３２ｂに置き換わったものである。所要メモリ量算出部３１は、ソースコードＳＣ３に係る処理の実行に要する所要メモリ量を算出する。具体的には、所要メモリ量算出部３１は、ソースコードＳＣ３に実装された処理、つまり、コンパイル後のオブジェクトコードを第１のＭＣＵで実行する際のコードの量から、必要なＲＯＭ容量を算出する。また、所要メモリ量算出部３１は、ソースコードＳＣ３に記述された変数を保持するために必要となるＲＡＭ容量を算出する。そして、所要メモリ量算出部３１は、算出したＲＯＭ容量及びＲＡＭ容量を所要メモリ量として判定部３２ｂへ出力する。
【００９２】
判定部３２ｂは、第１の処理時間制約情報及び所要メモリ量に基づき、第１のＭＣＵがソースコードＳＣ３に対して適切か否かを判定する。判定部３２ｂは、比較部３２１と、比較部３２２と、ＡＮＤ部３２４とを備える。比較部３２１は、所要メモリ量算出部３１からの所要メモリ量と、ＭＣＵデータベース１０に登録されたＭＣＵのメモリ容量とを比較し、比較結果をＡＮＤ部３２４へ出力する。比較部３２２は、実施例３−１と同様である。ＡＮＤ部３２４は、比較部３２１及び３２２からの比較結果のＡＮＤ演算を行い、判定結果として出力部３３へ出力する。すなわち、判定部３２ｂは、ＭＣＵのメモリ容量が所要メモリ量より大きい場合、かつ、動作クロック周波数ｆ２が所要クロック周波数ｆ１を上回る又は同一の場合、ＭＣＵがソースコードＳＣ３に対して適切と判定する。出力部３３は、実施例３−１と同様である。
【００９３】
また、ＭＣＵデータベース１０に複数のＭＣＵの仕様情報が登録されている場合、所要メモリ量算出部３１は、複数のＭＣＵ夫々について、所要メモリ量を算出し、判定部３３ｂは、複数のＭＣＵ夫々について、第１の処理時間制約情報、所要メモリ量及び仕様情報に基づきソースコードＳＣ３に対して適切か否かを判定する。この場合、出力部３３は、適切と判定されたＭＣＵのリスト、又は、各ＭＣＵについての判定結果を外部へ出力する。
【００９４】
＜実施例３−３＞
実施例３−３は、与えられたソースコードからの入出力制約情報の抽出に加え、所要メモリ量を算出する場合について示す。図２２は、実施例３−３にかかる情報処理装置３ｃの構成を示すブロック図である。尚、上述した実施の形態２並びに実施例３−１及び３−２と同等の構成については説明を省略するものとする。
【００９５】
情報処理装置３ｃは、入力されるソースコードＳＣ３を解析し、入出力制約情報の抽出及び所要メモリ量の算出を行い、ＭＣＵデータベース１０に登録された各ＭＣＵのソースコードＳＣ３に対する適否を判定し、適切なＭＣＵのリストを出力するものである。情報処理装置３ｃは、情報処理装置３ａと比べて、処理時間制約情報抽出部１１の代わりに所要メモリ量算出部３１が追加され、判定部３２ａが判定部３２ｃに置き換わったものである。入出力制約情報抽出部２１は、実施例３−１と同等のものであり、所要メモリ量算出部３１は、実施例３−２と同等のものである。
【００９６】
判定部３２ｃは、第１の入出力制約情報、所要メモリ量及び仕様情報に基づき、ＭＣＵデータベース１０に登録された複数のＭＣＵ夫々について、ソースコードＳＣ３に対して適切か否かを判定する。判定部３２ｃは、比較部３２１と、比較部３２３と、ＡＮＤ部３２４とを備える。比較部３２１は、実施例３−２と同等のものであり、比較部３２３は、実施例３−１と同等のものである。ＡＮＤ部３２４は、比較部３２１及び３２３からの比較結果のＡＮＤ演算を行い、判定結果として出力部３３へ出力する。すなわち、判定部３２ｃは、ＭＣＵのメモリ容量が所要メモリ量より大きい場合、かつ、ＭＣＵの入出力仕様が第１の入出力制約情報を満たす場合、ＭＣＵがソースコードＳＣ３に対して適切と判定する。出力部３３は、実施例３−１と同様である。
【００９７】
尚、ＭＣＵデータベース１０に複数のＭＣＵの仕様情報が登録されている場合、所要メモリ量算出部３１は、複数のＭＣＵ夫々について、所要メモリ量を算出し、判定部３３ｃは、複数のＭＣＵ夫々について、第１の入出力制約情報、所要メモリ量及び仕様情報に基づきソースコードＳＣ３に対して適切か否かを判定する。この場合、出力部３３は、適切と判定されたＭＣＵのリスト、又は、各ＭＣＵについての判定結果を外部へ出力する。
【００９８】
＜実施例３−４＞
実施例３−４は、与えられたソースコードからの処理時間制約情報及び入出力制約情報の抽出に加え、所要メモリ量を算出する場合について示す。図２３は、実施例３−４にかかる情報処理装置３ｄの構成を示すブロック図である。尚、上述した実施の形態１及び２並びに実施例３−１乃至３−３と同等の構成については説明を省略するものとする。
【００９９】
情報処理装置３ｄは、入力されるソースコードＳＣ３を解析し、処理時間制約情報及び入出力制約情報の抽出並びに所要メモリ量の算出を行い、ＭＣＵデータベース１０に登録された各ＭＣＵのソースコードＳＣ３に対する適否を判定し、適切なＭＣＵのリストを出力するものである。情報処理装置３ｄは、情報処理装置３ａと比べて、所要メモリ量算出部３１が追加され、判定部３２ａが判定部３２ｄに置き換わったものである。処理時間制約情報抽出部１１及び入出力制約情報抽出部２１は、実施例３−１と同等のものであり、所要メモリ量算出部３１は、実施例３−２と同等のものである。
【０１００】
判定部３２ｄは、第１の処理時間制約情報、第１の入出力制約情報、所要メモリ量及び前記仕様情報に基づき、ＭＣＵデータベース１０に登録された複数のＭＣＵ夫々について、ソースコードＳＣ３に対して適切か否かを判定する。判定部３２ｄは、比較部３２１と、比較部３２２と、比較部３２３と、ＡＮＤ部３２４とを備える。比較部３２１は、実施例３−２と同等のものであり、比較部３２２及び３２３は、実施例３−１と同等のものである。ＡＮＤ部３２４は、比較部３２１、３２２及び３２３からの比較結果のＡＮＤ演算を行い、判定結果として出力部３３へ出力する。すなわち、判定部３２ｄは、ＭＣＵのメモリ容量が所要メモリ量より大きい場合、かつ、動作クロック周波数ｆ２が所要クロック周波数ｆ１を上回る又は同一の場合、かつ、ＭＣＵの入出力仕様が第１の入出力制約情報を満たす場合、ＭＣＵがソースコードＳＣ３に対して適切と判定する。出力部３３は、実施例３−１と同様である。
【０１０１】
尚、ＭＣＵデータベース１０に複数のＭＣＵの仕様情報が登録されている場合、処理時間制約情報抽出部１１は、複数のＭＣＵ夫々について、所要クロック数に基づく所要クロック周波数を算出し、所要メモリ量算出部３１は、複数のＭＣＵ夫々について、所要メモリ量を算出し、判定部３３ｄは、複数のＭＣＵ夫々について、第１の処理時間制約情報、第１の入出力制約情報、所要メモリ量及び仕様情報に基づきソースコードＳＣ３に対して適切か否かを判定する。この場合、出力部３３は、適切と判定されたＭＣＵのリスト、又は、各ＭＣＵについての判定結果を外部へ出力する。
【０１０２】
ここで、実施例３−４において適切なＭＣＵのリストが出力される流れについて具体例により説明する。まず、図２４は、実施例３−４にかかるＭＣＵデータベース１０の例を示す図である。図２４において、「コア」はＭＣＵの品種、「クロック」は動作クロック周波数、「Ｐ−Ｆｌａｓｈ」、「Ｄ−Ｆｌａｓｈ」及び「ＲＡＭ」はそれぞれプログラム用フラッシュメモリ、データ用フラッシュメモリ、ランダムアクセスメモリの容量、「ＧＰＩＯ」は汎用入出力端子の数、「ＡＤＣ」はアナログデジタル変換器（Analog-to-Digital Converter）の数、「Ｔｉｍｅｒ」はタイマの数、「ＤＡＣ」はデジタルアナログ変換器（Digital-to-Analog Converter）の数を、それぞれ示す。
【０１０３】
図２５は、実施例３−４にかかる適切なＭＣＵのリストが出力される流れの例を示す図である。所要メモリ量３０１は、所要メモリ量算出部３１におけるＭＣＵ品種ごとに必要とされるＲＯＭ（プログラム用フラッシュメモリとデータ用フラッシュメモリ）及びＲＡＭ容量の算出結果を示す。所要クロック周波数３０２は、処理時間制約情報抽出部１１におけるＭＣＵ品種ごとに必要とされる所要クロック周波数の算出結果を示す。入出力制約情報３０３は、入出力制約情報抽出部２１におけるソースコードＳＣ３の記述において必要とされる入出力仕様の抽出結果を示す。比較結果３０４は、比較部３２１におけるメモリ容量の比較結果を示す。比較結果３０５は、比較部３２２における所要クロック周波数の比較結果を示す。比較結果３０６は、比較部３２３における入出力制約情報の比較結果を示す。ＭＣＵリスト３０７は、比較結果３０４、３０５及び３０６のＡＮＤ演算の結果として、適切と判定された２つのＭＣＵの出力結果を示す。
【０１０４】
（実施の形態３の効果）
本実施の形態３では、メモリ制約、処理時間の制約、及び、入出力制約の少なくとも２つ以上を用いて、与えられたソースコードに対するＭＣＵの適否を判定するものである。そのため、実施の形態１又は２と比べて、より精度の高い判定を行うことができる。さらに、与えられたソースコードの処理をリアルタイムに実現できるＭＣＵの候補をリストアップすることができる。そのため、与えられたソースコードの処理を実行可能なＭＣＵの候補が絞られることで、ユーザはより適切なＭＣＵが選択され、処理速度、Ｉ／Ｏ及びメモリの少なくとも２以上のリソース不足によるマイコン品種の再選定とそれに伴う回路とソフトウェアの再設計を防ぐことが可能になる。
【０１０５】
＜実施の形態４＞
本実施の形態４は、複数のＭＣＵを用いて実現していた処理を１つに集約して実現できるＭＣＵを判定するものである。一般的に、試作段階では多くのマイコンを使ってプログラム開発を行い、量産設計の段階で少数のマイコンで実現するように調整を行う。その理由は、試作段階では、機能ごとに独立したマイコンで制御し、マイコン同士を通信させるほうが、不具合の切り分けがし易く、開発の分担も容易になるためである。また、既存のモジュールを活用することで開発期間及びコストも短縮できるためである。一方、量産段階では、使用するマイコンの数が少ない方が、量産コストが低い。そのため、試作段階で用いた複数のマイコンをより少ない数のマイコンに置き換えることとなる。ここで、マイコンを置き換えるには、複数のマイコンごとに実装された各プログラムの各種制約条件を加味して、これらの全てを満たすマイコンを選出する必要がある。しかしながら、各プログラムの各種制約条件を把握することは煩雑であり、試作段階と比べて数の少ないマイコンを選定することは困難である。そこで、本実施の形態４では、複数のＭＣＵの夫々に基づいて実装された複数のソースコードの全てに対して適切なＭＣＵを判定するものについて示す。
【０１０６】
図２７は、実施の形態４にかかるＭＣＵ集約処理の概念を説明するための図である。ここでは、センサＳＣＡ及びＳＣＢとモーターｍｔ１及びｍｔ２とをプログラムで制御するシステムについて、試作段階から量産段階に向けてＭＣＵを集約した場合を示す。すなわち、試作段階では、通信ポートで接続された６つのＭＣＵ（ＭＣＵｍｃ１１、ｍｃ１２、ｍｃ１３、ｍｃ１４、ｍｃ１５、ｍｃ１６）を用い、各ＭＣＵには、それぞれプログラム（ソフトウェアＳＷＡ、ＳＷＢ、ＳＷＸ、ＳＷＹ、ＳＷＣ１、ＳＷＣ２）が搭載されて実行可能であるものとする。尚、ソフトウェアＳＷＣ１とＳＷＣ２とは同じソースコードから変換されたものとする。しかしながら、これを量産する場合には、ＭＣＵの数が多く、コストが高くなる。そして、集約したＭＣＵを人手で選定することも上述したように煩雑である。そこで、本実施の形態４にかかるＭＣＵ集約処理により、複数のプログラムに対して、１台で実現可能なＭＣＵを選出する。この場合、量産段階では、１つのＭＣＵｍｃ１７に上記ソフトウェアを統合したソフトウェアＳＷＺを搭載することで、試作段階と同等の処理を実現することができる。これにより、量産コスト及び集約作業のコストを低減できる。
【０１０７】
＜実施例４−１＞
図２６は、実施例４−１にかかる情報処理装置４の構成を示すブロック図である。情報処理装置４は、ＭＣＵデータベース１０と、処理時間制約情報抽出部１１と、入出力制約情報抽出部２１と、所要メモリ量算出部３１と、統合部４１と、判定部３２ｄと、出力部３３とを備える。尚、本実施例４−１は、上述した実施例３−４に改良を加えたものとしているが、これに限定されない。つまり、本実施例４−１は、実施例３−１〜３−３に対して改良を加えても実現可能である。そのため、上述した実施の形態１、２又は３と同等の構成については説明を省略するものとする。
【０１０８】
情報処理装置４は、入力される３個のソースコードＳＣ４１〜ＳＣ４３の夫々を解析して、これらの処理時間制約情報、入出力制約情報及び所要メモリ量を求め、ＭＣＵデータベース１０内のＭＣＵの夫々について、ソースコードＳＣ４１〜ＳＣ４３の全てに対して適切か否かを判定する。ここで、ソースコードＳＣ４１等はそれぞれ、ＭＣＵのそれぞれに基づいて実装され、タイマ割り込みにより所定間隔で所定の処理を呼び出す記述と、対応するＭＣＵにおける信号の入出力に関する記述とがされたものである。
【０１０９】
処理時間制約情報抽出部１１、入出力制約情報抽出部２１は、及び所要メモリ量算出部３１のそれぞれは、ソースコードＳＣ４１〜ＳＣ４３が入力され、ソースコードごとに処理時間制約情報（に基づく所要クロック周波数）、入出力制約情報、所要メモリ量を抽出又は算出し、統合部４１へ出力する。
【０１１０】
統合部４１は、ソースコードごとに入力される所要クロック周波数、入出力制約情報、所要メモリ量をそれぞれ統合し、判定部３２ｄへ出力する。統合部４１は、統合処理部４１１、４１２及び４１３を備える。統合処理部４１１は、所要メモリ量算出部３１から入力されるソースコードごとの所要メモリ量を積算して、積算するごとに統合所要メモリ量として、比較部３２１へ出力する。統合処理部４１２は、処理時間制約情報抽出部１１から入力されるソースコードごとの最速の所要クロック周波数を積算して、積算するごとに統合処理時間制約情報として比較部３２２へ出力する。例えば、ソースコードＳＣ４１に関数ａ及びｂがあり、関数ａの所要クロック周波数が３０ＭＨｚ、関数ｂの所要クロック周波数が２０ＭＨｚである場合、ソースコードＳＣ４１の最速の所要クロック周波数は３０ＭＨｚとなる。そして、ソースコードＳＣ４２に関数ｃ及びｄがあり、関数ｃの所要クロック周波数が１５ＭＨｚ、関数ｂの所要クロック周波数が２５ＭＨｚである場合、ソースコードＳＣ４２の最速の所要クロック周波数は２５ＭＨｚとなる。この場合、統合処理部４１２は、３０ＭＨｚに２５ＭＨｚを積算して、５５ＭＨｚを統合処理時間制約情報として比較部３２２へ出力する。または、ソースコードの内容によっては、統合処理部４１２は、次のように処理してもよい。例えば、モーターを制御する２つのマイコンのそれぞれに対応するソースコードＳＣ４１及びＳＣ４２が同じ内容であるものとする。そして、ソースコードＳＣ４１及びＳＣ４２には、それぞれ関数ａ及びｂが含まれるものとする。この場合、上記方法によれば、各ソースコードの最速の所要クロック周波数はそれぞれ３０ＭＨｚとなり、統合処理時間制約情報は６０ＭＨｚとなる。ここで、ソースコードＳＣ４１の関数ａを実行した周期では、ソースコードＳＣ４２の関数ｂを実行し、ソースコードＳＣ４１の関数ｂを実行した周期では、ソースコードＳＣ４２の関数ａを実行するものとする。この場合、ソースコードＳＣ４１及びＳＣ４２の関数ａ及びｂのそれぞれを制約時間内で実行するためには、少なくとも５０ＭＨｚで十分である。そこで、統合処理部４１２は、共通する複数のソースコードにおける複数の関数の処理順序をソースコード間で入れ替えて実行する場合には、関数ごとの所要クロック周波数を積算して、統合処理時間制約情報として算出してもよい。尚、統合処理部４１２の処理内容はこれらに限定されない。また、統合処理部４１３は、入出力制約情報抽出部２１から入力されるソースコードごとの入出力制約情報をマージして統合入出力制約情報として比較部３２３へ出力する。
【０１１１】
判定部３２ｄは、実施例３−４と同様に、比較部３２１、３２２及び３２３と、ＡＮＤ部３２４とを備える。比較部３２１は、統合処理部４１１から入力される統合所要メモリ量と、ＭＣＵデータベース１０に登録されたＭＣＵのメモリ容量とを比較し、比較結果をＡＮＤ部３２４へ出力する。比較部３２２は、統合処理部４１２から入力される統合処理時間制約情報と、ＭＣＵデータベース１０に登録されたＭＣＵの動作クロック周波数ｆ２と比較し、比較結果をＡＮＤ部３２４へ出力する。比較部３２３は、統合処理部４１３から入力される統合入出力制約情報と、ＭＣＵデータベース１０に登録されたＭＣＵの信号入出力の仕様とを比較し、比較結果をＡＮＤ部３２４へ出力する。ＡＮＤ部３２４は、比較部３２１、３２２及び３２３からの比較結果のＡＮＤ演算を行い、判定結果として出力部３３へ出力する。すなわち、判定部３２ｄは、ＭＣＵデータベース１０に登録されたＭＣＵが、統合所要メモリ量、統合処理時間制約情報、及び、統合入出力制約情報という制約条件を満たす場合に、そのＭＣＵがソースコードＳＣ４１〜ＳＣ４３の全てに対して適切であると判定する。出力部３３は、実施例３−１と同様である。
【０１１２】
また、ＭＣＵデータベース１０に複数のＭＣＵの仕様情報が登録されている場合、処理時間制約情報抽出部１１及び所要メモリ量算出部３１は、複数のＭＣＵ夫々について、ソースコードごとに所要クロック周波数及び所要メモリ量を算出し、統合部４１は、複数のＭＣＵ夫々について、統合所要メモリ量、統合処理時間制約情報、及び、統合入出力制約情報をそれぞれ生成し、判定部３３ｄは、複数のＭＣＵ夫々について、統合処理時間制約情報、統合入出力制約情報、統合所要メモリ量及び仕様情報に基づきソースコードＳＣ４１からＳＣ４２の全てに対して適切か否かを判定する。この場合、出力部３３は、適切と判定されたＭＣＵのリスト、又は、各ＭＣＵについての判定結果を外部へ出力する。
【０１１３】
尚、本実施例における統合処理について処理時間制約情報を例に挙げて補足する。まず、処理時間制約情報抽出部１１は、ソースコードＳＣ４１を解析して第１の所要クロック周波数を算出して統合処理部４１２へ出力し、ソースコードＳＣ４２を解析して第２の所要クロック周波数を算出して統合処理部４１２へ出力し、ソースコードＳＣ４３を解析して第３の所要クロック周波数を算出して統合処理部４１２へ出力する。そして、統合処理部４１２は、第１の所要クロック周波数と第２の所要クロック周波数とを統合して、統合処理時間制約情報を生成して比較部３２２へ出力し、当該統合処理時間制約情報と第３の所要クロック周波数と統合して、統合処理時間制約情報を更新して比較部３２２へ出力する。尚、所要メモリ量及び入出力制約情報の統合処理についても同様である。
【０１１４】
尚、本実施例４−１におけるソースコードの数は３個に限定されず、２以上のＮ個に対して適用可能である。また、Ｎが３以上の場合、判定結果として、Ｎ個のＭＣＵのうち一部の２以上のＭＣＵに対応するソースコードに対して適切なＭＣＵが選出されても構わない。
【０１１５】
（実施例４−１の効果）
本実施例４−１により、コスト、電力及び実装面積を改善したＭＣＵの選定を、精度良く、かつ、効率的に行うことができる。
【０１１６】
また、上記では、試作段階から量産段階への例を示したがこれに限定されず、本実施例４−１は、製品のバージョンアップでＬＳＩの数を減らす際にも適用可能である。マイコンの性能は年々上がっており、昔は１つのモーターを動かすのに１つのマイコンを使用していた。そのため、量産機であっても多数のマイコンを使用していた。ところが、近年では１つのマイコンで三相モーターを２つと、ＤＣモーター、ステッピングモーターをさらに複数個制御するような場合がある。その場合、システム全体でも２つのマイコンしか使用しないこともある。
【０１１７】
そして、例えば、ゲーム機のように、一度リリースすると数年間の製品寿命がある製品の場合、その間にムーアの法則でＬＳＩの集積度がどんどん向上していたため、初期のものと末期のもので、基板上のＬＳＩの数が見た目で明らかに違うことが多い。
【０１１８】
さらに、複数のマイコンの処理を１つのマイコンで実行するようなソフトウェアの再構築を行う際に、最適なマイコンの選定が容易になり、システムの低コスト化が可能になる。
【０１１９】
＜実施例４−２＞
実施例４−２は、実施例４−１に改良を加えたものであり、複数のソースコード間で共通化できるコードを抽出し、重複分を所要メモリ量から除くものである。例えば、実施例４−１でＭＣＵを集約することに併せて、集約後のＭＣＵに搭載するために、ユーザが複数のソースコードをマージする場合がある。その際、重複するコードのうち一方を削除したソースコードを作成する可能性がある。そのような場合に、マージ後のソースコードを想定して、ＭＣＵの適切さを判定するものである。
【０１２０】
ここで、実施例４−２における「共通化できるコード」とは、ソースコードの間で他の処理による影響を受けない処理のうち共通するコード部とする。すなわち、まず、ソースコードの間で記述内容が一致するコード部（例えば、関数）であることが前提である。その上で、関数内で、（１）グローバル変数を用いていないことと、（２）スタティック変数（関数内のローカル変数であり、その関数が以前に呼び出された時の値を保持している）を用いていないことが必要となる。その理由は、（１）関数の記述が共通していてもグローバル変数は当該関数の外でもアクセス可能であるため、ソースコードごとで異なる値に設定されている可能性があり、マージ後のソースコードの処理に不具合が生じ得るためである。また、（２）スタティック変数は、関数の処理終了後もメモリ領域が確保され、以後、メイン関数から当該関数が呼び出される度にスタティック変数の値が書き換わる場合がある。そのため、マージ後のソースコードの処理ではソースコードごとに独立に保持すべき変数の値が上書きされて不具合が生じ得るためである。尚、「共通化できるコード」から除外されるケースは、グローバル変数及びスタティック変数に限定されない。
そこで、以下に実施例４−２の構成について説明する。
【０１２１】
図２８は、実施例４−２にかかる情報処理装置４ａの構成を示すブロック図である。情報処理装置４ａは、情報処理装置４のうち所要メモリ量算出部３１が所要メモリ量算出部３１ａに置き換わり、共通コード抽出部４２が追加されたものである。その他の構成は、情報処理装置４と同等であるため説明を省略する。
【０１２２】
共通コード抽出部４２は、複数のソースコードの間で他の処理による影響を受けない処理のうち共通するコード部を抽出する。共通コード抽出部４２は、パターンマッチングにより共通するコードを抽出してもよい。ここで、ソースコードＳＣ４１とソースコードＳＣ４２の共通コードを抽出する場合について説明する。まず、共通コード抽出部４２は、ソースコードＳＣ４１とソースコードＳＣ４２との間で、記述が共通する処理を特定する。次に、共通コード抽出部４２は、特定された処理内に、グローバル変数又はスタティック変数が用いられているか否かを判定する。グローバル変数又はスタティック変数が用いられていると判定した場合、共通コード抽出部４２は、当該特定された処理を共通コードから除外する。そして、共通コード抽出部４２は、特定された処理のうち、グローバル変数及びスタティック変数のいずれも用いられていないものを共通コードとして抽出し、所要メモリ量算出部３１ａへ通知する。
【０１２３】
所要メモリ量算出部３１ａは、第１のソースコードに係る処理の実行に要する第１のメモリ量を算出する。また、所要メモリ量算出部３１ａは、第２のソースコードに係る処理の実行に要するメモリ量から、共通コード抽出部４２により抽出されたコード部の実行に要するメモリ量を減算して第２のメモリ量を算出する。統合処理部４１１は、所要メモリ量算出部３１ａから入力される第１のメモリ量と第２のメモリ量とを統合して、統合所要メモリ量を算出する。尚、その他の構成は、実施例４−１と同等である。
【０１２４】
図２９は、実施例４−２にかかる集約されるプログラムの例を説明するための図である。まず、モーターモジュール１を制御するためのメインプログラムＣ１と、モーターモジュール２を制御するためのメインプログラムＣ２と、センサーモジュールを制御するためのメインプログラムＢとが、異なるＭＣＵに搭載されて実行されるものとする。このとき、３つのＭＣＵを１つのＭＣＵに集約することに併せて、３つのプログラムも１つのプログラムにマージすることを検討する。ここで、メインプログラムＣ１とＣ２とは、関数ａ、ｂ及びｃのそれぞれの記述内容が一致するものとする。但し、関数ａ及びｂにはグローバル変数及びスタティック変数が用いられておらず、関数ｃにはグローバル変数又はスタティック変数が用いられているものとする。そのため、ソースコードをマージする際には、関数ａ及びｂは重複分を削除し、関数ｃについてはそれぞれ関数ｃ−１及びｃ−２として残してマージすることになる。そのため、本実施例４−２にかかる共通コード抽出部４２は、メインプログラムＣ１とＣ２との間で「共通化できるコード」として、関数ａ及びｂを抽出し、逆に、関数ｃは抽出しない。これに伴い、所要メモリ量算出部３１ａは、メインプログラムＣ２の所要メモリ量から関数ａ及びｂに相当するメモリ量を除いて統合処理部４１１へ出力する。これにより、統合処理部４１１は、メインプログラムＣ１、Ｃ２及びＢにおける統合所要メモリ量として、２つ分の関数ｃの所要メモリ量と、１つ分の関数ａ、ｂ、ｘ、ｙ及びｚの所要メモリ量とを合計した値を生成できる。
【０１２５】
（実施例４−２の効果）
このように、本実施例４−２により、複数のソースコードの間で共通化できるコードについての所要メモリ量を除いて制約条件とするため、マージ後のソースコードの所要メモリ量の制約条件を精度良く見積ることができ、判定の精度もより向上する。
【０１２６】
＜実施の形態５＞
本実施の形態５は、上述した実施の形態１の改良例である。実施の形態１にかかる判定部１２においてＭＣＵがソースコードに対して適切でないと判定した場合とは、当該ソースコードの特定の処理の実行において当該ＭＣＵの処理速度が不足していることを意味する。そこで、本実施の形態５では、処理時間制約情報をどの程度緩和することで、そのＭＣＵが適切となるかの指標をユーザに対して示すものである。
【０１２７】
図３０は、実施の形態５にかかる情報処理装置５の構成を示すブロック図である。情報処理装置５は、情報処理装置１に対して予測時間算出部５１を追加し、出力部１３が出力部５２に置き換わったものである。その他の構成は、情報処理装置１と同等であるため説明を省略する。
【０１２８】
予測時間算出部５１は、判定部１２において任意のＭＣＵがソースコードＳＣ１に対して適切でないと判定した場合、第１の処理時間制約情報及び仕様情報に基づいて、判定部１２により前記適切でないと判定されたＭＣＵにおいて第１の処理の実行に要する予測時間を算出する。出力部５２は、予測時間算出部５１により算出された予測時間を外部へ出力する。
【０１２９】
図３１は、実施の形態５にかかる処理可能な時間の予測処理の流れを説明するためのフローチャートである。前提として判定部１２による判定までは、実施の形態１と同様に行われたものとする。このとき、判定部１２は、適切と判定されたＭＣＵが存在するか否かを判定する（Ｓ５１１）。適切と判定されたＭＣＵが存在する場合、出力部５２は、実施の形態１と同様に、適切と判定されたＭＣＵのリストを出力する（Ｓ５１２）。一方、ステップＳ５１１において、適切と判定されたＭＣＵが存在しない場合、予測時間算出部５１は、第１のＭＣＵにおいて特定の処理（例えば、第１の処理）の実行に要する予測時間を算出する（Ｓ５１３）。尚、第１のＭＣＵは、ソースコードＳＣ１の実装におけるターゲットデバイスである。
【０１３０】
例えば、予測時間算出部５１は、処理間隔抽出部１１１において抽出された処理時間制約情報Ｔを取得する。また、予測時間算出部５１は、所要クロック数算出部１１２において算出された所要クロック数Ｎ又は所要クロック周波数算出部１１３において算出された所要クロック周波数ｆ１を取得する。そして、予測時間算出部５１は、ＭＣＵデータベース１０からターゲットデバイスである第１のＭＣＵの動作クロック周波数ｆ２を取得する。その後、予測時間算出部５１は、Ｔ’＝ｆ１／ｆ２×Ｔ、または、Ｔ’＝Ｎ／ｆ２の演算を行い、予測時間Ｔ’を算出する。そして、出力部５２は、予測時間Ｔ’をユーザに対して出力する（Ｓ５１４）。尚、本実施の形態５では、ステップＳ５１１は必須ではなく、例えば、判定部１２により適切でないと判定されたＭＣＵが１つでも存在した場合に、ステップＳ５１３及びＳ５１４を実行しても構わない。
【０１３１】
（実施の形態５の効果）
ここで、予測時間の算出の具体例を挙げる。まず、ターゲットデバイスがＭＣＵ「ＲＬ７８／Ｇ１４」であり、その動作クロック周波数ｆ２が３２ＭＨｚとしてＭＣＵデータベース１０に登録されているものとする。そして、処理時間制約情報Ｔが１００ｕｓ、ＭＣＵ品種「ＲＬ７８」における所要クロック周波数ｆ１が５４ＭＨｚとして算出されたものとする。この場合、ｆ１＞ｆ２であるため、判定部１２においてＭＣＵ「ＲＬ７８／Ｇ１４」は当該ソースコードに対して不適切と判定される。そこで、予測時間算出部５１は、Ｔ‘＝５４／３２×１００＝１６９ｕｓの演算により予測時間Ｔ’を算出する。そのため、ユーザは、当該ソースコードの当初の実装時には、第１の処理の制約時間を１００ｕｓとしていたが、制約時間を１６９ｕｓまで緩和すれば、ＭＣＵ「ＲＬ７８／Ｇ１４」を用いることができると把握できる。そのため、ユーザにおけるＭＣＵ選択又は制約条件の緩和の検討材料を提供し、開発効率を高めることができる。例えば、第１の処理の制約時間を１６９ｕｓまで緩和することがユーザにとって許容できる場合には、より安価なターゲットハードウェア（ＭＣＵ）を選択することが可能となる。
【０１３２】
＜実施の形態６＞
本実施の形態６は、上述した実施の形態５の改良例である。本実施の形態６にかかるソースコードには、予め所定間隔のうち変更可能な箇所の指定が記述されており、ユーザから処理時間の制約条件を（予測時間算出部５１により算出された）予測時間へ変更する指示を受け付けたことに応じて、当該ソースコードの指定箇所について、所定間隔を予測時間に基づいて修正するものである。
【０１３３】
図３２は、実施の形態６にかかる情報処理装置６の構成を示すブロック図である。情報処理装置６は、入力されたソースコードＳＣ６に対する第１のＭＣＵの適否の判定、予測時間の算出、ソースコードの修正を行うものである。ここで、ソースコードＳＣ６には、少なくともソースコードＳＣ１に相当する記述がされた上で、上述の通り所定間隔のうち変更可能な箇所の指定が記述されているものとする。尚、ソースコードＳＣ６には、タイマ割り込みの周期設定（タイマ割り込みを発生させるコンペア値の定義）と、出力値を決定する計算式とが、制御周期の変数を用いて記述されていることが望ましい。また、情報処理装置６は、情報処理装置５に対してソースコード修正部６１が追加されたものである。その他の構成は、情報処理装置５と同等であるため説明を省略する。
【０１３４】
ソースコード修正部６１は、ユーザからの「処理時間の制約の緩和」の指示６０に応じて、ソースコードＳＣ６内に指定された変更可能な箇所を特定し、当該特定した箇所における所定間隔を、予測時間算出部５１により算出された予測時間に基づいて修正し、当該修正したソースコードを出力する。尚、ソースコード修正部６１は、指示６０によらずソースコードを修正しても構わない。
【０１３５】
図３３は、実施の形態６にかかるソースコード修正処理の流れを説明するためのフローチャートである。尚、Ｓ５１１からＳ５１４は、図３１と同様であるため説明を省略する。ソースコード修正部６１は、ユーザから「処理時間の制約の緩和」の指示６０を受け付ける（Ｓ６１１）。次に、ソースコード修正部６１は、ソースコードＳＣ６内に指定された変更可能な箇所を特定する。そして、ソースコード修正部６１は、特定した箇所における所定間隔を予測時間に基づいて修正する。その後、ソースコード修正部６１は、修正後のソースコードを出力する（Ｓ６１３）。
【０１３６】
図３４は、実施の形態６にかかるソースコードＳＣ６の記述の例及び修正の概念を説明するための図である。コード部ｃ６１は、タイマ割り込みによる呼び出し間隔の定義の記述箇所である。修正可能箇所ｍ８は、ソースコード修正部６１による修正を認める箇所、つまり、変更可能な箇所の指定を示す。そのため、ソースコード修正部６１は、修正可能箇所ｍ８を検出することにより、ＴＣＰがソースコードＳＣ６における制御周期であることを認識できる。
【０１３７】
尚、コード部ｃ６３は、タイマ割り込みの周期が制御周期ＴＣＰに連動するように記述されていることを示す。コード部ｃ６４は、デジタル制御のパラメータが制御周期ＴＣＰに連動するように記述されていることを示す。コード部ｃ６５は、制御周期ＴＣＰが変更されたとしても、制御の伝達特性には大きく影響しないことを示す。
【０１３８】
ここで、ステップＳ６１２においてソースコード修正部６１は、ソースコードＳＣ６を解析して、修正可能箇所ｍ８を特定して、予測時間に基づいてコード部ｃ６１を修正後のコード部ｃ６２に書き換える。
【０１３９】
（実施の形態６の効果）
以上のように、本実施の形態６では、制御周期の変更に伴い、予約されたソースコード中の該変数を自動的に変更することで、制御周期が変わってもデジタル信号処理の入出力関係の変化を抑制することができる。そして、制御周期を低下させる選択肢を開発者に示すことで、より安価なターゲットハードウェア（ＭＣＵ）が選択可能となり、ソースコードの修正の手間や、人手による修正による間違いを軽減することができる。
【０１４０】
＜実施の形態７＞
本実施の形態７は、上述した実施の形態２の改良例である。実施の形態２にかかる入出力制約情報抽出部２１は、ソースコードのＩ／Ｏアクセスの記述の仕方によっては、入出力制約情報の抽出が困難な場合がある。
【０１４１】
図３５は、実施の形態７にかかるソースコードＳＣ７の記述の例を示す図である。ソースコードＳＣ７のコード部ｃ７１の記述は、入出力端子の割り当て設定であり、図１６のソースコードＳＣ２のコード部ｃ２ＡＡと同じ記述であるため、入出力制約情報抽出部２１によってＩ／Ｏレジスタ設定の仕様を抽出できる。一方、コード部ｃ７２の記述は、入出力端子へのアクセス命令の記述であるが、結果的にＰ７の下位４ビットしか利用していない記述となっている。ここで、コード部ｃ７２のうちコード部ｃ７３ではＰｏｒｔ７にバイト単位でアクセスする記述となっており、ビット単位でアクセスする記述となっていない。そのため、入出力制約情報抽出部２１によって実際に使用しているビットを判別することが困難である。
【０１４２】
そこで、本実施の形態７では、回路情報を解析してＭＣＵの未使用の端子を特定して、入出力制約情報に反映することで、ソースコードの解析だけでは判別できない記述であっても正確に入出力制約情報を抽出するものである。
【０１４３】
図３６は、実施の形態７にかかる情報処理装置７の構成を示すブロック図である。情報処理装置７は、実施例３−１の情報処理装置３ａに対して、入出力制約情報抽出部２１が入出力制約情報抽出部７２に置き換わり、未使用端子特定部７１が追加されたものである。その他の構成は、情報処理装置３ａと同等であるため説明を省略する。尚、本実施の形態７は、これに限定されず、入出力制約情報抽出部２１を含む実施の形態２、実施例３−１、３−３及び３−４、並びに実施の形態４に適用可能である。
【０１４４】
情報処理装置７は、入力されるソースコードＳＣ７を解析し、処理時間制約情報及び入出力制約情報の抽出を行い、ＭＣＵデータベース１０に登録された各ＭＣＵのソースコードＳＣ３に対する適否を判定し、適切なＭＣＵのリストを出力するものである。ここで、ソースコードＳＣ７は、例えば、図３５に示したような記述を想定するが、少なくともソースコードＳＣ２のように第１のＭＣＵにおける信号の入出力に関する記述がされたものであればよい。
【０１４５】
未使用端子特定部７１は、第１のＭＣＵに関する回路情報ＮＬに基づいて当該第１のＭＣＵにおける入出力端子のうち未使用のものを特定し、入出力制約情報抽出部７２へ通知する。入出力制約情報抽出部７２は、通知された未使用の入出力端子の情報を第１の入出力制約情報から除外する。
【０１４６】
図３７は、実施の形態７にかかる回路情報解析処理の流れを説明するためのフローチャートである。未使用端子特定部７１は、回路情報ＮＬを読み込み、未使用のＩ／Ｏピンを特定する（Ｓ７０１）。すなわち、未使用端子特定部７１は、回路情報ＮＬを解析して、ＭＣＵの各Ｉ／Ｏピンに接続されている回路の有無と種類を判別する。具体的には、未使用端子特定部７１は、各Ｉ／Ｏピンの接続が、オープン（すなわち何も接続されていない）、電源へのクランプ、ＧＮＤへのクランプ、又はバイアス抵抗（アナログ電圧）、のどの種類の接続を有しているかを判定する。そして、未使用端子特定部７１は、Ｉ／Ｏピンの接続がオープン、電源へのクランプ又はＧＮＤへのクランプである場合に、当該Ｉ／Ｏピンを未使用端子として特定する。
【０１４７】
ここで、図３８は、実施の形態７における解析対象の回路図の例を示す図である。図３８の実線がＩ／Ｏとして使用されている使用ピン、一点破線が電源又はリセットなどのシステムピン、破線が未接続ピンをそれぞれ示す。尚、ＡＤＣのリファレンス電圧端子は除く。そのため、未使用端子特定部７１は、未接続ピンを未使用端子として特定する。
【０１４８】
図３７に戻り説明を続ける。入出力制約情報抽出部７２は、未使用端子特定部７１から通知された未使用端子の情報を、ソースコードＳＣ７の解析により抽出された入出力制約情報から除外する。例えば、入出力制約情報抽出部７２は、未使用と見なされたピンを必要なI/O本数のカウントから除外する。
【０１４９】
（実施の形態７の効果）
このように、本実施の形態７により、ソースコードの解析だけでは、実際にソースコードから使用されるＩ／Ｏピンの特定が困難な場合であっても、正確に使用ピン及び未使用ピンの特定が可能となる。よって、入出力制約情報から余分なＩ／Ｏを除外でき、入出力制約情報の抽出の精度が向上する。そのため、よりスペックの低いＭＣＵであっても適切と判定することができ、コストを削減することもできる。
【０１５０】
＜実施の形態８＞
本実施の形態８は、上述した実施の形態４の改良例である。実施の形態４における入出力制約情報抽出部２１では、複数のソースコードのそれぞれから入出力制約情報を抽出し、統合処理部４１３において、それぞれの入出力制約情報をマージして統合入出力制約情報を生成していた。そのため、重複する入出力仕様であっても積算されており、制約条件が過剰になる可能性があった。そこで、本実施の形態８では、複数のＭＣＵの間で冗長な周辺回路を回路情報から抽出し、入出力制約情報の生成時点で除外するものである。
【０１５１】
図３９は、実施の形態８にかかる情報処理装置８の構成を示すブロック図である。情報処理装置８は、情報処理装置４と比べて、入出力制約情報抽出部２１が入出力制約情報抽出部８２に置き換わり、共通入出力抽出部８１が追加されたものである。また、パターン情報８０を予めデータベース等に登録しておくものとする。その他の構成は、情報処理装置４と同等であるため説明を省略する。尚、本実施の形態７は、これに限定されず、複数のＭＣＵの夫々に基づいて実装された複数のソースコードから入出力制約情報を抽出する構成を含む実施例４−１及び４−２に適用可能である。
【０１５２】
パターン情報８０は、共通化可能な入出力設定及び接続先の周辺回路を定義した情報であり、記憶部（不図示）に予め登録されている。パターン情報８０は、特定の機能を実現する機能と接続のパターンといえる。パターン情報８０には、例えば、電源電圧等の共通のノードを監視するＡＤＣ（Analog-to-Digital Converter）、ＡＤＣリファレンス電圧の入力、同じ電圧を出力するＤＡＣ（Digital-to-Analog Converter）、異常検出しきい値設定用ＤＡＣ、同一周波数のクロック入力端子、通信ポート（ＵＡＲＴ、ＳＰＩ及びＩ２Ｃ等）、ＭＣＵ内蔵のシステム監視機能（ＷＤＴ（Watch Dog Timer）、低電圧検知（ＬＶＤ（Low-Voltage Detector））、パワーオンリセット等）、割り込み端子（ＩＮＴ（Interrupt））、プログラム用端子、デバッグ用端子（ＪＴＡＧ等）、ホストとの通信Ｉ／Ｆ（ＣＯＭ（Communication port））が含まれるが、これらに限定されない。
【０１５３】
図４０は、実施の形態８にかかる共通入出力抽出部８１の内部構成を示すブロック図である。共通入出力抽出部８１は、共通周辺回路抽出部８１１と、共通入出力設定抽出部８１２と、特定部８１３とを備える。共通周辺回路抽出部８１１は、回路情報ＮＬを読み込み、第１のＭＣＵに関する第１の回路設計情報と第２のＭＣＵに関する第２の回路設計情報との間で、入出力端子に接続される周辺回路のうち共通するものを抽出する。例えば、共通周辺回路抽出部８１１は、Ｉ／Ｏピン（ポート）に接続されている回路トポロジのパターンマッチングを行い、同一のものを抽出する。共通入出力設定抽出部８１２は、第１のソースコードと第２のソースコードの間で、入出力端子の割り当て設定のうち共通する設定を抽出する。例えば、共通入出力設定抽出部８１２は、共通周辺回路抽出部８１１により同一回路として抽出されたＩ／Ｏの設定レジスタをソースコードから解析し、同一の設定であるものを抽出する。特定部８１３は、抽出された周辺回路の接続元の入出力端子のうち抽出された設定がされたものについてパターン情報８０と照合し、該当する入出力端子の設定を特定する。
【０１５４】
図３９に戻り説明を続ける。入出力制約情報抽出部８２は、第１のソースコードにおいて使用する信号の入出力の制約に関する第１の入出力制約情報を抽出し、第２のソースコードにおいて使用する信号の入出力の制約に関する情報から特定部８１３により特定した設定を除外して第２の入出力制約情報を抽出する。統合処理部４１３は、第１の入出力制約情報と第２の入出力制約情報とを統合して、統合入出力制約情報を生成する。
【０１５５】
図４２は、実施の形態８における共通化前の回路構成の例を示す図である。ここでは、２つの同じモーターモジュールに対して同一構成のＭＣＵがそれぞれ制御していることを示す。ここで、共通周辺回路抽出部８１１により８つの周辺回路（ＬＶＤ、ＡＤＣ、ＡＤＣ、ＣＯＭ、ＰＷＭ、ＩＮＴ、ＤＡＣ、ＷＤＴ）が抽出される。次に、共通入出力設定抽出部８１２により各ＭＣＵに対応するソースコード同士を比較し、特定部８１３によりソースコードの設定が同一の回路のうち、パターン情報８０に登録されているものを特定する。ここでは、各ＭＣＵの構成のうち、破線で囲んだＬＶＤ、ＡＤＣ、ＣＯＭ、ＤＡＣ、及び、ＷＤＴについては、共通化可能として特定され、実線で囲んだＡＤＣ、ＰＷＭ及びＩＮＴ（Interrupt）については共通化できないとされたものとする。例えば、ＷＤＴとＬＶＤはシステム監視系であるため、ソースコードでの設定が同じであれば、共通化可能である。また、ＡＤＣについては、外部回路のネットリストも参照するとよく、電源電圧監視のものについては共通化可能であるが、電流センスＡＤＣの場合は共通化できない。図４３は、実施の形態８における共通化後の回路構成の例を示す図である。このように共通化することで１ＭＣＵにより２つのモーターを制御できることを示す。
【０１５６】
（実施の形態８の効果）
このように、実施の形態８により実施の形態４と比べてさらに、入出力制約情報から余分なＩ／Ｏを除外でき、入出力制約情報の抽出の精度が向上する。そのため、機能が集約されたＭＣＵの中では相対的に低いスペックのＭＣＵであっても適切と判定することができ、コストを削減することもできる。
【０１５７】
＜その他の実施の形態＞
上述した各実施の形態は、開発者向けの設計支援ツール、ＭＣＵ製品を選択するためのウェブシステム等に適用できる。例えば、アップロードされたソースコードを解析して、当該ソースコードに対して適切なＭＣＵの候補を提示する場合にも適用できる。
【０１５８】
また、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。
【０１５９】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、ＤＶＤ（Digital Versatile Disc）、ＢＤ（Blu-ray（登録商標） Disc）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１６０】
尚、本実施の形態は、以下のように表現することもできる。
（付記１）
第１のＭＣＵ（Micro Controller Unit）に基づいて実装され、タイマ割り込みにより所定間隔で第１の処理を呼び出す記述がされた第１のソースコードを解析して、当該第１の処理の処理時間の制約を示す第１の処理時間制約情報を抽出し、
記憶装置に記憶された複数のＭＣＵの仕様情報及び前記第１の処理時間制約情報に基づき、当該複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定し、
前記適切と判定された１以上のＭＣＵの情報を出力する、
情報処理装置の制御方法。
（付記２）
第１のＭＣＵ（Micro Controller Unit）に基づいて実装され、タイマ割り込みにより所定間隔で第１の処理を呼び出す記述がされた第１のソースコードを解析して、当該第１の処理の処理時間の制約を示す第１の処理時間制約情報を抽出する処理と、
記憶装置に記憶された複数のＭＣＵの仕様情報及び前記第１の処理時間制約情報に基づき、当該複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する処理と、
前記適切と判定された１以上のＭＣＵの情報を出力する処理と、
をコンピュータに実行させる制御プログラム。
（付記３）
第１のＭＣＵ（Micro Controller Unit）における信号の入出力に関する記述がされた第１のソースコードを解析して、当該第１のソースコードにおいて使用する信号の入出力の制約に関する第１の入出力制約情報を抽出し、
記憶装置に記憶された複数のＭＣＵの仕様情報及び前記第１の入出力制約情報に基づき、当該複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定し、
前記適切と判定された１以上のＭＣＵの情報を出力する
情報処理装置の制御方法。
（付記４）
第１のＭＣＵ（Micro Controller Unit）における信号の入出力に関する記述がされた第１のソースコードを解析して、当該第１のソースコードにおいて使用する信号の入出力の制約に関する第１の入出力制約情報を抽出する処理と、
記憶装置に記憶された複数のＭＣＵの仕様情報及び前記第１の入出力制約情報に基づき、当該複数のＭＣＵ夫々について、前記第１のソースコードに対して適切か否かを判定する処理と、
前記適切と判定された１以上のＭＣＵの情報を出力する処理と、
をコンピュータに実行させる制御プログラム。
（付記５）
Ｎ個（Ｎは２以上の自然数。）のＭＣＵ（Micro Controller Unit）の夫々に基づいて実装され、タイマ割り込みにより所定間隔で所定の処理を呼び出す記述がされたＮ個のソースコードの夫々を解析して、当該所定の処理の処理時間の制約を示すＮ個の処理時間制約情報を抽出し、
前記Ｎ個の処理時間制約情報を統合して統合処理時間制約情報を生成し、
記憶装置に記憶された複数のＭＣＵの仕様情報及び前記統合処理時間制約情報に基づき、前記複数のＭＣＵ夫々について、前記Ｎ個のソースコードの全てに対して適切か否かを判定し、
前記適切と判定された１以上のＭＣＵの情報を出力する
情報処理装置の制御方法。
（付記６）
Ｎ個（Ｎは２以上の自然数。）のＭＣＵ（Micro Controller Unit）の夫々に基づいて実装され、タイマ割り込みにより所定間隔で所定の処理を呼び出す記述がされたＮ個のソースコードの夫々を解析して、当該所定の処理の処理時間の制約を示すＮ個の処理時間制約情報を抽出する処理と、
前記Ｎ個の処理時間制約情報を統合して統合処理時間制約情報を生成する処理と、
記憶装置に記憶された複数のＭＣＵの仕様情報及び前記統合処理時間制約情報に基づき、前記複数のＭＣＵ夫々について、前記Ｎ個のソースコードの全てに対して適切か否かを判定する処理と、
前記適切と判定された１以上のＭＣＵの情報を出力する処理と、
をコンピュータに実行させる制御プログラム。
【０１６１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【０１６２】
１  情報処理装置
１０  ＭＣＵデータベース
１１  処理時間制約情報抽出部
１１１  処理間隔抽出部
１１２  所要クロック数算出部
１１３  所要クロック周波数算出部
１２  判定部
１３  出力部
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  ＩＦ部
１０５  ＨＤＤ
１０６  プログラム
１０７  ＭＣＵ仕様情報
ＴＩＮＴ  呼び出し間隔
ＴＡ  実行時間
ＴＢ  実行時間
ＴＣ  実行時間
２  情報処理装置
２１  入出力制約情報抽出部
２２  判定部
２３  出力部
３ａ〜３ｄ  情報処理装置
３１  所要メモリ量算出部
３１ａ  所要メモリ量算出部
３２ａ〜３２ｄ  判定部
３２１〜３２３  比較部
３２４  ＡＮＤ部
３３  出力部
３０１  所要メモリ量
３０２  所要クロック周波数
３０３  入出力制約情報
３０４  比較結果
３０５  比較結果
３０６  比較結果
３０７  ＭＣＵリスト
４  情報処理装置
４ａ  情報処理装置
４１  統合部
４１１〜４１３  統合処理部
４２  共通コード抽出部
５  情報処理装置
５１  予測時間算出部
５２  出力部
６  情報処理装置
６１  ソースコード修正部
７  情報処理装置
ＮＬ  回路情報
７１  未使用端子特定部
７２  入出力制約情報抽出部
８  情報処理装置
８０  パターン情報
８１  共通入出力抽出部
８１１  共通周辺回路抽出部
８１２  共通入出力設定抽出部
８１３  特定部
８２  入出力制約情報抽出部
ＳＣ１、ＳＣ１１〜ＳＣ１４  ソースコード
ｍ１  コード部始点
ｍ２  コード部終点
ｍ３  コード部識別子
ｍ４  コード部識別子
ｍ５  制限時間
ｍ６  コード部始点
ｍ７  制限時間
ｃ１  コード部
ｃ２  コード部
ＳＣ２、ＳＣ２Ａ  ソースコード
ｃ２ＡＡ  コード部
ｃ２ＡＢ  コード部
ＳＣ２Ｂ  ソースコード
ｍ２Ｂ１  入出力割当識別子
ｍ２Ｂ２  入出力割当内容
ＳＣ２Ｃ  ソースコード
ｍ２Ｃ１  マクロ命令
ｍ２Ｃ２  マクロ命令
ＳＣ３  ソースコード
ＳＣ４１〜ＳＣ４３  ソースコード
ＳＣ６  ソースコード
ｃ６１  コード部
ｃ６２  修正後のコード部
ｃ６３  コード部
ｃ６４  コード部
ｃ６５  コード部
ｍ８  修正可能箇所
ＳＣ７  ソースコード
ｃ７１  コード部
ｃ７２  コード部
ｃ７３  コード部
ＳＣＡ、ＳＣＢ  センサ
ｍｔ１、ｍｔ２  モーター
ｍｃ１１〜ｍｃ１７  ＭＣＵ
ＳＷＡ、ＳＷＢ、ＳＷＸ、ＳＷＹ、ＳＷＣ１、ＳＷＣ２、ＳＷＺ  ソフトウェア
【図１】
2017120467.tif 000003
【図２】
2017120467.tif 000004
【図３】
2017120467.tif 000005
【図４】
2017120467.tif 000006
【図５】
2017120467.tif 000007
【図６】
2017120467.tif 000008
【図７】
2017120467.tif 000009
【図８】
2017120467.tif 000010
【図９】
2017120467.tif 000011
【図１０】
2017120467.tif 000012
【図１１】
2017120467.tif 000013
【図１２】
2017120467.tif 000014
【図１３】
2017120467.tif 000015
【図１４】
2017120467.tif 000016
【図１５】
2017120467.tif 000017
【図１６】
2017120467.tif 000018
【図１７】
2017120467.tif 000019
【図１８】
2017120467.tif 000020
【図１９】
2017120467.tif 000021
【図２０】
2017120467.tif 000022
【図２１】
2017120467.tif 000023
【図２２】
2017120467.tif 000024
【図２３】
2017120467.tif 000025
【図２４】
2017120467.tif 000026
【図２５】
2017120467.tif 000027
【図２６】
2017120467.tif 000028
【図２７】
2017120467.tif 000029
【図２８】
2017120467.tif 000030
【図２９】
2017120467.tif 000031
【図３０】
2017120467.tif 000032
【図３１】
2017120467.tif 000033
【図３２】
2017120467.tif 000034
【図３３】
2017120467.tif 000035
【図３４】
2017120467.tif 000036
【図３５】
2017120467.tif 000037
【図３６】
2017120467.tif 000038
【図３７】
2017120467.tif 000039
【図３８】
2017120467.tif 000040
【図３９】
2017120467.tif 000041
【図４０】
2017120467.tif 000042
【図４１】
2017120467.tif 000043
【図４２】
2017120467.tif 000044