(57)【要約】【課題】アーキテクチャが異なるマイクロコントローラを用いた組み込みシステムにおいて，移行前と移行後でシステムとしての互換性を容易に検証できる仕組みを提供することを目的とする。【解決手段】上記課題を解決するため，検証対象のマイクロコントローラに所定のプログラムを実行させた実行結果を受信する受信部と，前記受信部が前記実行結果を受信した時刻情報を記録する時刻計算部と，検証するプログラムごとに許容される出力時刻の範囲を時刻制約情報として記憶する時刻制約記憶部と，前記実行結果を受信した時刻情報が前記時刻制約情報の範囲内か否かを判定する時刻比較部と，を備えることを特徴とする。【選択図】図１
2016031623.tif 000002
【特許請求の範囲】
【請求項１】
検証対象のマイクロコントローラに所定のプログラムを実行させた実行結果を受信する受信部と，
前記受信部が前記実行結果を受信した時刻情報を記録する時刻計算部と，
検証するプログラムごとに許容される出力時刻の範囲を時刻制約情報として記憶する時刻制約記憶部と，
前記実行結果を受信した時刻情報が前記時刻制約情報の範囲内か否かを判定する時刻比較部と，
を備える互換性検証装置。
【請求項２】
請求項１に記載の互換性検証装置において，
前記時刻制約情報は，前記時刻情報の下限値および上限値を含むことを特徴とする互換性検証装置。
【請求項３】
請求項２に記載の互換性検証装置において，
前記時刻比較部では，前記時刻情報と前記下限値との差を計算した時刻下限の余裕度，または，前記時刻情報と前記時刻上限値との差を計算した時刻上限の余裕度を出力することを特徴とする互換性検証装置。
【請求項４】
請求項３に記載の互換性検証装置において，
前記時刻比較部は，前記時刻下限の余裕度と前記時刻上限の余裕度のうち値が小さい余裕度を出力することを特徴とする互換性検証装置。
【請求項５】
請求項１に記載の互換性検証措置において，
前記所定のプログラムに対応するプログラムを前記検証対象のマイクロコントローラとはアーキテクチャの異なる第２のマイクロコントローラに実行させた実行結果を受信する第２の受信部と，
前記検証対象のマイクロコントローラと前記第２のマイクロコントローラそれぞれから受信した実行結果が同じであるか否かを判定するデータ比較部と，
を備えることを特徴とする互換性検証装置。
【請求項６】
請求項５に記載の互換性検証装置において，
前記時刻計算部は，前記第２の受信部が実行結果を受信した時刻情報も記録するものであって，
前記時刻比較部は，前記検証対象のマイクロコントローラと前記第２のマイクロコントローラそれぞれから実行結果を受信した時刻の差を出力することを特徴とする互換性検証装置。
【請求項７】
請求項１に記載の互換性検証装置において，
前記時刻計算部は，
クロック信号を出力する発振回路と，
前記クロック信号を逓倍して分周クロック信号を出力する分周回路と，
前記分周クロック信号からマイクロ秒を計算して出力する第１のカウンタと，
前記第１のカウンタの出力からミリ秒を計算して出力する第２のカウンタと，
前記第２のカウンタの出力から秒を計算して出力する第３のカウンタを有することを特徴とする互換性検証装置。
【請求項８】
請求項１に記載の互換性検証装置において，
圧縮されて記憶された前記時刻制約情報を伸長する伸長部を備えることを特徴とする互換性検証装置。
【請求項９】
検証対象のマイクロコントローラに所定のプログラムを実行させる処理と，
前記所定のプログラムの実行結果を出力した時刻情報を記録する処理と，
前記時刻情報が，検証するプログラムごとに定められた許容される出力時刻の範囲内か否かを判定する処理と，
を含む互換性検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，異なるマイクロコントローラで動作するプログラムの互換性を検証する互換性検証装置等に関する。
【背景技術】
【０００２】
産業用途向けの組み込みシステム分野では，製品を長期に渡って保守し続ける必要があるため，例えばメーカはシステムを実装しているマイクロコントローラなどの各部品を保守期間中確保しておく必要がある。
【０００３】
しかしながら，半導体の製造プロセスは日々微細化が進んでおり，半導体メーカも設備投資などで生産ラインの変更をするため，供給中のマイクロコントローラなどが生産終了になることがある。
【０００４】
このとき，組み込みシステムの保守を維持するためには，半導体メーカの生産終了前にまとめてマイクロコントローラなどを大量に購入することが考えられるが，これには多大なコストが必要で，また，大量のマイクロコントローラを適切な管理下で保管するための場所が必要になる点も課題となる。
【０００５】
組み込みシステムの保守を維持する別の方法としては，生産終了になるマイクロコントローラとは別の新しいマイクロコントローラを用いて，対象の組み込みシステムと同様の動作をさせるプログラムを作成して互換動作をさせることが考えられる。
【０００６】
この場合，既存のマイクロコントローラで動作させるプログラムと別の新しいマイクロコントローラで動作させるプログラムが同じ動作をするか否かの互換性の検証が必要になる。
【０００７】
このような互換性検証に関する技術として，例えば特許文献１には，ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の互換性をテストする装置の例が記載されている。
【０００８】
また特許文献２には，既存のＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）と新しく作成した互換ＬＳＩの互換性の検証を迅速に実施するシステムの例が記載されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１０−１８７４７８号公報
【特許文献２】特開平５−５７６７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで，アーキテクチャが異なるマイクロコントローラ間で動作させるプログラムの互換性を検証するために，従来の先行技術について本発明者が検討した結果，以下のようなことが明らかとなった。
【００１１】
特許文献１の例では，プログラム実行時のアドレスとデータに着目し，同じアドレスに同じデータが出力されるか否かを検証しており，データが出力される時刻に関する互換性を検証している部分が無いため，制御周期に従って実行されるような組み込みシステムの互換性検証には適用が困難であるという問題があった。
【００１２】
つまり特許文献１では，互換ＣＰＵは既存ＣＰＵとアーキテクチャ互換であることを前提としているが，ＣＰＵアーキテクチャや動作周波数，搭載されている内蔵周辺回路の仕様などが全く異なるマイクロコントローラ間でのプログラムの互換性検証には，同一タイミングでプログラムが実行されるとが限らないため，検証対象のＣＰＵがプログラムに許容される制御周期の範囲内で動作するか判断するのが困難であるという問題があった。  また特許文献２の例では，既存ＬＳＩと互換ＬＳＩから出力されるデータを逐一比較することで迅速に互換性を検証する仕組みを示しているが，既存ＬＳＩと互換ＬＳＩは同一のアーキテクチャである前提であるため，上記のように半導体メーカや製品ラインナップなどによって仕様が異なるマイクロコントローラ間で動作させるプログラムの互換性検証への適用は困難であるという問題があった。
【００１３】
そこで本発明では，アーキテクチャが異なるマイクロコントローラを用いた組み込みシステムにおいて，移行前と移行後でシステムとしての互換性を容易に検証できる仕組みを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために，例えば特許請求の範囲に記載の構成を採用する。
【００１５】
本願は上記課題を解決する手段を複数含んでいるが，その一例を挙げるならば，検証対象のマイクロコントローラに所定のプログラムを実行させた実行結果を受信する受信部と，前記受信部が前記実行結果を受信した時刻情報を記録する時刻計算部と，検証するプログラムごとに許容される出力時刻の範囲を時刻制約情報として記憶する時刻制約記憶部と，前記実行結果を受信した時刻情報が前記時刻制約情報の範囲内か否かを判定する時刻比較部と，を備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば，移行前のシステムとは異なるマイクロコントローラを用いて互換性を持つシステムを設計しようとする場合において，互換設計したプログラムがシステムとしての互換性検証を容易に行うことが可能になる。
【００１７】
上記した以外の課題，構成および効果は，以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１８】
【図１】実施例１における，本発明の互換性検証装置の全体図の一例である。
【図２】互換性検証装置における時刻計算部の実装の一例である。
【図３】互換性検証装置におけるバッファ部の実装の一例である。
【図４】プログラムの時刻制約の詳細の一例である。
【図５】互換性検証装置における時刻比較部の実装の一例である。
【図６】互換性検証装置におけるデータ比較部の実装の一例である。
【図７】時刻比較結果の詳細の一例である。
【図８】データ比較結果の詳細の一例である。
【図９】時刻比較結果とデータ比較結果をＧＵＩ画面に表示させた画像表示の一例である。
【図１０】実施例２における，本発明の互換性検証装置の全体図の一例である。
【図１１】実施例３における，本発明の互換性検証装置の一例である。
【図１２】実施例４における，本発明の互換性検証装置を業務用空調システムの移行設計に適用した場合の一例を示す図である。
【図１３】実施例５における，本発明の互換性検証装置を組み込みシステムの移行設計サービスに適用した場合の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下，本発明の実施例を，図面を用いて説明する。なお，図中の符号は，本文中において，括弧を付して記す。
【実施例１】
【００２０】
図１は，本発明の互換性検証装置の全体図を表す一例を示したものである。
【００２１】
マイクロコントローラＡ（１）は，マイクロコントローラＡ（１）用に書かれたプログラムＡ（３）を実行し，その結果としてデータ情報Ａ（４１）を外部に出力する。
【００２２】
またマイクロコントローラＢ（２）は，マイクロコントローラＡ（１）とは異なるＣＰＵアーキテクチャ，異なる内蔵メモリ，異なる内蔵周辺回路などを有する別のマイクロコントローラであり，プログラムＡ（３）と同じ動作内容であるがマイクロコントローラＢ（２）用の記述で書かれたプログラムＢ（４）を実行し，その結果としてデータ情報Ｂ（４２）を外部に出力する。
【００２３】
また，プログラムの時刻制約７は，ここでは，マイクロコントローラＡ（１）で動作するプログラムＡ（３）で規定されている時刻に関する制約情報である。
【００２４】
互換性検証装置１１は，プログラムの時刻制約７の情報を格納する記憶部２６と，データ情報Ａ（４１）を受けるバッファ部２２と，データ情報Ｂ（４２）を受けるバッファ部２３と，バッファ部２２およびバッファ部２３に時刻情報４５を送信する時刻計算部２１と，時刻情報を比較する時刻比較部２４と，データ情報を比較するデータ比較部２５から成る。
【００２５】
更に，互換性検証装置１１の時刻比較部２４から出力した時刻比較情報４８は時刻比較結果５としてまとめられ，データ比較部２５から出力したデータ比較情報４９はデータ比較結果６としてまとめられる。
【００２６】
図２に，図１で示した互換性検証装置１１における時刻計算部２１の実装の一例を示す。
【００２７】
時刻情報計算部２１は，マイクロコントローラＡ（１），マイクロコントローラＢ（２）の動作開始信号５６をトリガにクロックの起動を開始する回路であり，マイクロコントローラＡ（１），マイクロコントローラＢ（２）動作開始からの経過時刻を外部へ出力する。
【００２８】
発振回路３１は，一定の周期で”０”の値と”１”の値を繰り返すクロック信号３６を出力する回路であり，例えば，水晶振動子などで実装される。
【００２９】
また，分周回路３２は，クロック信号３６を逓倍して分周クロック信号３７を生成する回路である。
【００３０】
マイクロ秒カウンタ３３は，分周クロック信号３７を受けて１マイクロ秒を１０進数で計測する時刻情報（マイクロ秒）３８を生成する。
【００３１】
また，ミリ秒カウンタ３４は，時刻情報（マイクロ秒）３８の値が１０００になったタイミングで１ミリ秒をカウントする時刻情報（ミリ秒）３９を生成する。
【００３２】
同様に，秒カウンタ３５は，時刻情報（ミリ秒）３９の値が１０００になったタイミングで１秒をカウントする時刻情報（秒）４０を生成する。
【００３３】
時刻情報（マイクロ秒）３８，時刻情報（ミリ秒）３９，時刻情報（秒）４０をまとめて時刻情報４５として時刻計算部２１の外部に出力する。
【００３４】
なお，この図２の時刻計算部２１では，秒，ミリ秒，マイクロ秒を計測する例を示したが，更に小さなナノ秒，ピコ秒や更に大きな分，時間などの単位を計測するようにしてもよい。
【００３５】
また，本例ではマイクロコントローラＡ（１），マイクロコントローラＢ（２）の動作開始をトリガとしたが，プログラムの実行開始をトリガにしてもクロックを起動してもよい。
【００３６】
図３に，図１で示した互換性検証装置１１におけるバッファ部２２の実装の一例を示す。
【００３７】
時刻計算部２１が出力した時刻情報４５は，バッファ部２３内の時刻受信バッファ５１で受け，有効時刻出力バッファ５７に入力する。
【００３８】
また，マイクロコントローラＡ（１）が出力したデータ情報Ａ（４１）は，バッファ部２３内のデータ受信バッファ５２で受け，有効データ出力バッファ５８に入力する。
【００３９】
ここで，イネーブル信号生成回路５３は，データ情報Ａ（４１）（Ｄａｔａ）と，データ受信バッファ５２で受けて出力したデータ情報Ａ（５５）（Ｄａｔａ１）を入力とし，ＤａｔａとＤａｔａ１の値が異なったタイミングでイネーブル信号５０（Ｅｎａｂｌｅ）の値を”１”として出力し，それ以外のタイミングではイネーブル信号５０の値を”０”として出力する回路である。
【００４０】
有効時刻出力バッファ５７は，イネーブル信号５０の値が”１”のタイミングにおいて，時刻受信バッファ５１からの時刻情報を有効時刻情報Ａ（４６）として出力する。
【００４１】
同様に，有効データ出力バッファ５８は，イネーブル信号５０の値が”１”のタイミングにおいて，データ受信バッファ５２からのデータ情報を有効データ情報Ａ（４３）として出力する。
【００４２】
この図３では，図１で示した互換性検証装置１１におけるバッファ部２２の実装の一例を示したが，バッファ部２３についても同様に構成することができる。
【００４３】
図４は，図１で示したプログラムの時刻制約７の詳細の一部を示す一例である。
【００４４】
図４に示すプログラムの時刻制約７の行はそれぞれ，情報番号（Ｉｄ），データ情報名（Ｎａｍｅ），時刻制約の下限（Ｌｏｗｅｒ＿Ｌｉｍｉｔ），時刻制約の上限（Ｕｐｐｅｒ＿Ｌｉｍｉｔ），時刻の単位（Ｕｎｉｔ）を順に表している。
【００４５】
情報番号（Ｉｄ）が”１”の行は，データ情報名が”ＯｕｔＤａｔａ”で，時刻の単位が”ｍｓ”であり，”ＯｕｔＤａｔａ”は時刻０．１０［ｍｓ］から時刻０．２０［ｍｓ］の間に出力されなければならないことを示す。
【００４６】
同様に，情報番号（Ｉｄ）が”２”の行は，”Ｃｏｎｔｒｏｌ”のデータ情報は時刻１．５０［ｍｓ］から時刻１．８０［ｍｓ］の間に出力されなければならないことを示す。
【００４７】
また同様に，情報番号（Ｉｄ）が”３”の行は，”ＳｙｎｃＤａｔａ”のデータ情報は時刻２．００［ｍｓ］から時刻２．２０［ｍｓ］の間に出力されなければならないことを示す。
【００４８】
情報番号（Ｉｄ）が”４”の行では，”ＳｅｒｉａｌＤａｔａ”のデータ情報には時刻制約の下限（Ｌｏｗｅｒ＿Ｌｉｍｉｔ）が設定されておらず，時刻制約の上限（Ｕｐｐｅｒ＿Ｌｉｍｉｔ）のみ設定されているので，時刻３．００［ｍｓ］よりも後に出力されてはならないことを示す。
【００４９】
このプログラムの時刻制約７では，情報番号（Ｉｄ）が”１”から”４”までの４種類のデータ情報が時刻３．００［ｍｓ］までに出力されるべき時刻制約を表しており，情報番号（Ｉｄ）が”５”から”８”の行まで，および省略しているそれ以降の列では”１”から”４”までの行の繰り返し，つまり３．００［ｍｓ］の制御周期間隔で同じ種類のデータが繰り返し出力される場合の時刻制約を示している。
【００５０】
このプログラムの時刻制約７を，図１の互換性検証装置１１内の記憶部２６に記録し，時刻比較部２４で読み出して使用する。
【００５１】
図５に，図１で示した互換性検証装置１１における時刻比較部２４の実装の一例を示す。
【００５２】
図５の時刻比較部２４内には，時刻差分計算部７１，時刻下限判定部７２，時刻上限判定部７３，余裕度選択部７４がある。
【００５３】
図１の記憶部２６を通して入力したプログラムの時刻制約５４を，時刻比較部２４内にて情報番号６３（Ｉｄ），時刻制約の下限６４（Ｌｏｗｅｒ＿Ｌｉｍｉｔ［Ｉｄ］），時刻制約の上限６５（Ｕｐｐｅｒ＿Ｌｉｍｉｔ［Ｉｄ］）に分割する。
【００５４】
時刻差分計算部７１では，図１の互換性検証装置１１内のバッファ部２２から入力された有効時刻情報Ａ（４６）（ＴｉｍｅＡ）とバッファ部２３から入力された有効時刻情報Ｂ（４７）（ＴｉｍｅＢ）について，ＴｉｍｅＢ−ＴｉｍｅＡを計算し，情報番号６３（Ｉｄ）に対応した時刻の差分６６（Ｄｉｆｆｅｒ［Ｉｄ］）を出力する。
【００５５】
時刻下限判定部７２では，入力された有効時刻情報Ｂ（４７）（ＴｉｍｅＢ）と時刻制約の下限６４（Ｌｏｗｅｒ＿ｌｉｍｉｔ［Ｉｄ］）について，ＴｉｍｅＢ−Ｌｏｗｅｒ＿ｌｉｍｉｔ［Ｉｄ］を計算して時刻下限の余裕度６７（Ｌｏｗｅｒ＿Ｓｌａｃｋ［Ｉｄ］）を出力し，情報番号６３（Ｉｄ）に対応したデータ情報の出力時刻が時刻制約の下限よりも小さい場合は，時刻制約の下限よりも早いタイミングでデータ情報を出力してしまったとして違反判定とする。
【００５６】
時刻上限判定部７３では，入力された有効時刻情報Ｂ（４７）（ＴｉｍｅＢ）と時刻制約の上限６５（Ｕｐｐｅｒ＿Ｌｉｍｉｔ［Ｉｄ］）について，Ｕｐｐｅｒ＿ｌｉｍｉｔ［Ｉｄ］−ＴｉｍｅＢを計算して時刻上限の余裕度６８（Ｕｐｐｅｒ＿Ｓｌａｃｋ［Ｉｄ］）を出力し，情報番号６３（Ｉｄ）に対応したデータ情報の出力時刻が時刻制約の上限よりも大きい場合は，時刻制約の上限よりも遅いタイミングでデータ情報を出力してしまったとして違反判定とする。
【００５７】
余裕度選択部７４では，時刻下限の余裕度６７（Ｌｏｗｅｒ＿Ｓｌａｃｋ［Ｉｄ］）と時刻上限の余裕度６８（Ｕｐｐｅｒ＿Ｓｌａｃｋ［Ｉｄ］）のうち，値が小さい方を余裕度６９（Ｓｌａｃｋ［Ｉｄ］）として出力する。
【００５８】
時刻差分計測部７１から出力された時刻の差分６６（Ｄｉｆｆｅｒ［Ｉｄ］）と余裕度選択部７４から出力された余裕度６９（Ｓｌａｃｋ［Ｉｄ］）をまとめて時刻比較情報４８とし，時刻比較部２４の外部に出力する。
【００５９】
図６に，図１で示した互換性検証装置１１におけるデータ比較部２５の実装の一例を示す。
【００６０】
図６のデータ比較部２５内には値比較部７６があり，値比較部７６では，入力された有効データ情報Ａ（４３）及び有効データ情報Ｂ（４４）の値が一致しているときはデータ比較情報４９（Ｄａｔａ＿Ｃｈｅｃｋ）の値を”０”にして出力し，一致していないときはデータ比較情報４９（Ｄａｔａ＿Ｃｈｅｃｋ）の値を”１”にして出力する。
【００６１】
なお，このデータ比較部２５は，排他的論理和を用いた回路で構成するなどしてもよい。
【００６２】
図７は，図１で示した時刻比較結果５の詳細の一部を示す一例である。
【００６３】
図７に示す時刻比較結果５は，互換性検証装置１１からの有効時刻情報Ａ（４６）（ＴｉｍｅＡ）と有効時刻情報Ｂ（４７）（ＴｉｍｅＢ）と時刻比較情報（４８）から得られたもので，時刻比較結果５の行はそれぞれ，情報番号（Ｉｄ），マイクロコントローラＡ（１）から出力されたデータに対する有効時刻情報Ａ（ＴｉｍｅＡ），時刻情報Ａの単位（ＵｎｉｔＡ），マイクロコントローラＢ（２）から出力されたデータに対する有効時刻情報Ｂ（ＴｉｍｅＢ），時刻情報Ｂの単位（ＵｎｉｔＢ），時刻情報Ａと時刻情報Ｂの差分（Ｄｉｆｆｅｒ），余裕度（Ｓｌａｃｋ），および，時刻制約を満たしている（ＯＫ）か否（ＮＧ）か（Ｔｉｍｅ＿Ｃｈｅｃｋ）を順に表している。
【００６４】
時刻比較結果５の情報番号（Ｉｄ）が”１”の行は，マイクロコントローラＡ（１）からの１番目のデータの出力時刻が０．０５［ｍｓ］，かつマイクロコントローラＢ（２）からの１番目のデータの出力時刻が０．１３［ｍｓ］で，その差分は＋０．０８［ｍｓ］でマイクロコントローラＢ（２）からの出力の方が遅くなっており，余裕度は＋０．０７［ｍｓ］であるため，時刻制約を満たしている（ＯＫ）ことを示している。
【００６５】
ここで，余裕度（Ｓｌａｃｋ）は，図４に示したプログラムの時刻制約７の情報番号（Ｉｄ）が”１”の行において，時刻制約の上限（Ｕｐｐｅｒ＿ｌｉｍｉｔ）が０．２０［ｍｓ］であるから，０．２０［ｍｓ］−０．１３［ｍｓ］＝０．０７［ｍｓ］の式で導出されたものになる。
【００６６】
同様に，図７に示した時刻比較結果５の情報番号（Ｉｄ）が”２”の行は，マイクロコントローラＡ（１）からの２番目のデータの出力時刻が１．５０［ｍｓ］，かつマイクロコントローラＢ（２）からの２番目のデータの出力時刻が１．４４［ｍｓ］で，その差分は−０．０６［ｍｓ］でマイクロコントローラＢ（２）からの出力の方が早くなっており，余裕度は＋０．３６［ｍｓ］で時刻情報を満たしていることを示している，
また同様に，情報番号（Ｉｄ）が”３”の行は，マイクロコントローラＡ（１）からの３番目のデータの出力時刻が２．１５［ｍｓ］，かつマイクロコントローラＢ（２）からの３番目のデータの出力時刻が２．１５［ｍｓ］で，その差分は＋０．００［ｍｓ］でマイクロコントローラＡ（１）からの出力とマイクロコントローラＢ（２）からの出力の時刻が一致しており，余裕度は＋０．５０［ｍｓ］であるため，時刻制約を満たしていることを示している。
【００６７】
一方，情報番号（Ｉｄ）が”７”の行を見ると，マイクロコントローラＡ（１）からの７番目のデータの出力時刻が５．１５［ｍｓ］，かつマイクロコントローラＢ（２）からの７番目のデータの出力時刻が４．９８［ｍｓ］で，その差分は−０．１７［ｍｓ］でマイクロコントローラＢ（２）からの出力の方が早くなって余裕度は−０．０２［ｍｓ］であり，これはマイクロコントローラＢ（２）からの出力時刻が早すぎて時刻制約に違反している（ＮＧ）ことを示している。
【００６８】
また情報番号（Ｉｄ）が”８”の行では，マイクロコントローラＡ（１）からの８番目のデータの出力時刻が５．８６［ｍｓ］，かつマイクロコントローラＢ（２）からの８番目のデータの出力時刻が６．１９［ｍｓ］で，その差分は＋０．３３［ｍｓ］でマイクロコントローラＢ（２）からの出力の方が遅くなって余裕度は−０．１９［ｍｓ］となっており，これは出力時刻が遅すぎて時刻制約に違反している（ＮＧ）ことを示している。
【００６９】
時刻制約に違反していることはすなわち，マイクロコントローラＡ（１）のプログラムＡ（３）とマイクロコントローラＢ（２）のプログラムＢ（４）はデータ出力の時刻が定められた時刻制約の範囲内に収まっておらず，プログラムが動作する上で互換性を満たさないということを表す。
【００７０】
図８は，図１で示したデータ比較結果６の詳細の一部を示す一例である。
【００７１】
図８に示すデータ比較結果６は，互換性検証装置１１からの有効データ情報Ａ（４３）（ＤａｔａＡ）と有効データ情報Ｂ（４４）（ＤａｔａＢ）とデータ比較情報４９から得られたもので，データ比較結果６の行はそれぞれ，情報番号（Ｉｄ），マイクロコントローラＡ（１）から出力された有効データ情報Ａ（ＤａｔａＡ），マイクロコントローラＢ（２）から出力された有効データ情報Ｂ（ＤａｔａＢ），および有効データ情報Ａ（４３）と有効データ情報Ｂ（４４）が一致している（ＯＫ）か否（ＮＧ）かを表すＤａｔａ＿Ｃｈｅｃｋを順に表している。
【００７２】
データ比較結果６の情報番号（Ｉｄ）が”１”の行は，マイクロコントローラＡ（１）からの１番目の出力データ値が０ｘ０００００００１，かつマイクロコントローラＢ（２）からの１番目の出力データ値が０ｘ０００００００１で，一致している（ＯＫ）ことを示している。
【００７３】
同様に，情報番号（Ｉｄ）が”２”の行は，マイクロコントローラＡ（１）からの２番目の出力データ値が０ｘ００００００１８，かつマイクロコントローラＢ（２）からの２番目の出力データ値が０ｘ００００００１８で，一致していることを示している。
【００７４】
一方，情報番号（Ｉｄ）が”７”の行を見ると，マイクロコントローラＡ（１）からの７番目の出力データ値が０ｘ００２７８９２０，かつマイクロコントローラＢ（２）からの７番目の出力データ値が０ｘ００２７５７９０で，これらは一致していない（ＮＧ）ことを示している。
【００７５】
またこの例では，情報番号（Ｉｄ）が”８”の行でも同様に出力データ値が一致していないことを示している。
【００７６】
図９は，図１の互換性検証装置における，二つのマイクロコントローラの処理内容と互換性検証装置の処理内容を，ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）画面に表示させた画像表示の一例である。
【００７７】
図９のＧＵＩ画面では，画面上段にマイクロコントローラＡの処理内容を表示し，画面中段にマイクロコントローラＢの処理内容を表示し，画面下部に互換性検証装置の処理内容を表示している。
【００７８】
また，このマイクロコントローラＡまたはマイクロコントローラＢで制御しているシステムの制御周期は３．００［ｍｓ］であることをＧＵＩ画面の上部両端に表示している。
【００７９】
このＧＵＩ画面の例では，マイクロコントローラＡはクロックＡ（ｃｌｋＡ）で動作しており，マイクロコントローラＢはクロックＡ（ｃｌｋＡ）よりも動作周波数の高いクロックＢ（ｃｌｋＢ）で動作しており，マイクロコントローラＡとマイクロコントローラＢのアーキテクチャは異なるため，マイクロコントローラＡから出力されるデータ情報ＡとマイクロコントローラＢから出力されるデータ情報Ｂは，値が変化するタイミングが異なる可能性がある。
【００８０】
ＧＵＩ画面下段の互換性検証装置では，時刻情報，マイクロコントローラＡおよびマイクロコントローラＢのデータ情報が変化したタイミングを示すＥｎａｂｌｅＡおよびＥｎａｂｌｅＢ，図７で示した有効時刻情報Ａ（ＴｉｍｅＡ）および有効時刻情報Ｂ（ＴｉｍｅＢ），図８で示した有効データ情報Ａ（ＤａｔａＡ）および有効データ情報Ｂ（ＤａｔａＢ）の内容を表示している。
【００８１】
マイクロコントローラＢのデータ情報Ｂの内容が変化したタイミングで互換性検証装置のＥｎａｂｌｅＢがアサートされることでＴｉｍｅＢ（９３）を表示し，この時点におけるＤａｔａＢ（９７）も表示する。
【００８２】
一方，マイクロコントローラＡのデータ情報Ａの内容が変化したタイミングで互換性検証装置のＥｎａｂｌｅＡがアサートされることでＴｉｍｅＡ（９１）を表示し，この時点におけるＤａｔａＡも表示する。
【００８３】
ここで，本発明の互換性検証装置では，プログラムの時刻制約から時刻制約の下限と時刻制約の上限に関する情報が得られるため，その情報を反映した時刻制約下限ライン１０１と時刻制約上限ライン１０２を表示し，互換前のプログラムと互換後のプログラムにおいて，ＴｉｍｅＢ（９３）が時刻制約の範囲内に入っており，互換のためのタイミングに問題がないことをＧＵＩ画面上で判断できる。
【００８４】
またこの例のように，互換前と互換後で有効時刻情報と有効データ情報が同じことを示すため，ＴｉｍｅＢ（９３）がＴｉｍｅＡ（９１）に対応していることを示す矢印と，ＤａｔａＢ（９７）がＤａｔａＡ（９５）に対応していることを示す矢印をそれぞれ表示するようにしてもよい。
【００８５】
同様に，この互換性検証装置でマイクロコントローラＡのＴｉｍｅＡ（９２）およびＤａｔａＡ（９６）が表示された部分に対し，マイクロコントローラＢのＴｉｍｅＢ（９４）およびＤａｔａＢ（９８）は，時刻制約下限ライン１０４が示す時刻の後に出力された結果となっている。
【００８６】
これは，マイクロコントローラＢで動作させている互換後のプログラムの動作が互換前のプログラムの動作と異なり互換性が無くなったことをＧＵＩ画面上に表示しており，時刻ずれの度合いもＧＵＩ画面上で確認できる。
【００８７】
このＧＵＩ画面における時刻情報やデータ情報，矢印の表示などは，マイクロコントローラでプログラムによる処理を実行させ，処理終了後に得られた時刻比較結果とデータ比較結果を使って表示してもよいし，もしくは，マイクロコントローラでプログラムを実行させながら得られるトレースデータを使ってリアルタイムでＧＵＩ画面上に表示してもよい。
【００８８】
これらのことにより，実施例１によれば，図１から図６に示した互換性検証装置を構成することで，図７で示したような時刻比較結果と図８で示したようなデータ比較結果が得られ，更に図９で示したようなＧＵＩで表示すれば互換性の検証結果を容易に確認でき，異なるマイクロコントローラ用に作成したプログラムが既存のマイクロコントローラで動作していたプログラムと互換動作をするか否かを判定することができる。
【００８９】
このように，本発明の互換性検証装置では，あるマイクロコントローラで動作させていたシステムを別のマイクロコントローラで動作させた場合に，処理の内容が要求される制御周期の終了時刻や時刻制約を満足しているか違反しているか否かを容易に確認することが可能になり，プログラム内で時刻制約に違反したデータが出力された箇所を特定できるため，システム全体の互換性を検証する工数を削減することができる。
【００９０】
また，この例で示した互換性検証装置は，入力部分と出力部分をポートとして持つＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などで実装して省スペース，低コストに実現してもよい。
【００９１】
特に互換性検証装置をＦＰＧＡで実現する場合は，仕様の異なる様々なマイクロコントローラに対してもそれに対応した時刻情報部，バッファ部，時刻比較部，データ比較部，記憶部をＦＰＧＡ内に全て実装できるので，互換性検証装置を低コストに実現することが可能になる。
【００９２】
また，本実施例では，マイクロコントローラＢ（２）のＴｉｍｅＢが，Ｌｏｗｅｒ＿ＬｉｍｉｔとＵｐｐｅｒ＿ｌｉｍｉｔで規定される時刻制約の範囲内か否かによって，互換性を診断しているが，これに加えてマイクロコントローラＡ（１）のＴｉｍｅＡとマイクロコントローラＢ（２）のＴｉｍｅＢの差分であるＤｉｆｆｅｒ［Ｉｄ］に対して許容範囲として時刻制約を設けて診断することもできる。
【実施例２】
【００９３】
次に，本発明の互換性検証装置において，プログラムの時刻情報を圧縮・伸長する機能を有する場合の例を示す。
【００９４】
図１０は，実施例１における図１で説明した互換性検証装置の例と比較して，記憶部２６に格納する内容と伸長部２８を追加した部分が異なっている。
【００９５】
図１０に示す互換性検証装置１２では，端末５００にプログラムの時刻制約７と圧縮部２７を実装している。
【００９６】
ここで，圧縮部２７は，プログラムの時刻制約７を入力して圧縮アルゴリズムに基づいて圧縮し，圧縮した時刻制約８を出力するプログラムである。
【００９７】
この圧縮部２７で用いる圧縮アルゴリズムには，各種のデータ圧縮技術を用いることができる。
【００９８】
圧縮した時刻制約８を互換性検証装置１２の記憶部２６に格納し，互換性の検証時に伸長部２８で元のプログラムの時刻制約７の情報に伸長し，時刻比較部２４に入力する。
【００９９】
この伸長部２８で用いる伸長アルゴリズムにも，圧縮部２７の圧縮アルゴリズムに対応した各種のデータ伸長技術を用いることができる。
【０１００】
このように，実施例２に示したような本発明の互換性検証装置によれば，プログラムの時刻制約を予め圧縮してデータサイズを小さくしておき，互換性検証の実行時に元のデータサイズに伸長して時刻を比較する手段をとることで，例えば，互換性検証装置をＡＳＩＣやＦＰＧＡなどの半導体デバイスで実装する際に搭載するメモリ容量を削減することができ，長時間の制御周期を想定したプログラムの互換性検証を実施することが可能になる。
【実施例３】
【０１０１】
次に，本発明の互換性検証装置において，時刻比較部の入出力信号を細分化して実装する場合の例を示す。
【０１０２】
図１１は，図５に示した実施例１の互換性検証装置１１における時刻比較部２４の実装例と比較して，入力するプログラムの時刻制約と出力する時刻比較結果をそれぞれ分割している部分が異なっている。
【０１０３】
入力するプログラムの時刻情報として，情報番号６３（Ｉｄ），時刻制約の下限６４（Ｌｏｗｅｒ＿Ｌｉｍｉｔ），時刻制約の上限６５（Ｕｐｐｅｒ＿Ｌｉｍｉｔ）をそれぞれ入力し，図１１に示す時刻差分計算部７１，時刻下限判定部７２，時刻上限判定部７３によって図５に示した時刻比較部と同様に計算を行い，Ｄｉｆｆｅｒ［Ｉｄ］とＳｌａｃｋ［Ｉｄ］の２つを出力する。
【０１０４】
このように，実施例３に示したような本発明の互換性検証装置によれば，時刻比較部の入出力信号を分けて実装することで，互換性検証装置内で情報番号と時刻情報を対応付ける作業が不要になるため，互換性検証装置の実装を簡略化することができる。
【実施例４】
【０１０５】
次に，本発明の互換性検証装置において，産業用途向けの組み込みシステムに適用した場合の一例を示す。
【０１０６】
図１２は，業務用空調システムにおいて，旧型の基板を搭載した空調製品から，機能が同等な新型の基板を搭載した空調製品に移行する設計・検証をする場合に，本発明の互換性検証装置を適用し，互換動作を検証する場合の一例である。
【０１０７】
旧型の室外機Ａ（５０７）は内部に搭載された旧型の基板Ａ（５０３）によって動作し，一方，新型の室外機Ｂ（５０８）は内部に搭載された新型の基板Ｂ（５０４）によって動作する。
【０１０８】
ここで，旧型の室外機Ａ（５０７）の動作データ情報Ａ（８１）は基板Ａ（５０３）に搭載されたコネクタＡ（５０５）から出力し，互換性検証装置１１に入力する。
【０１０９】
同様に，新型の室外機Ｂ（５０８）の動作データ情報Ｂ（８２）は基板Ｂ（５０４）に搭載されたコネクタＢ（５０６）から出力し，互換性検証装置１１に入力する。
【０１１０】
また，端末５００はこの空調システムの互換性検証を制御したり互換性検証に関するデータを保持したりする役割を備える。
【０１１１】
端末５００に格納された室外機Ａ（５０７）で動作するプログラムの時刻制約７を，互換性検証装置１１に入力する。
【０１１２】
また，端末５００は互換性検証装置１１が出力した時刻比較結果５およびデータ比較結果６を格納し，この時刻比較結果５とデータ比較結果６を設計者が図９で示したようなＧＵＩで確認することができ，新型の空調システムが旧型の空調システムと互換性を満たしているか否かを容易に判定することが可能になる。
【０１１３】
このように，実施例４によれば，本発明の互換性検証装置を適用することで，特にシステムの改修に多大なコストがかかる産業用途向けの組み込みシステムにおいて，容易に互換性を検証する仕組みを構築することが可能になり，システム移行の際の互換性検証にかかるコストを削減することができる。
【実施例５】
【０１１４】
次に，本発明の互換性検証装置を，組み込みシステムの移行設計サービスに適用した場合の例を示す。
【０１１５】
図１３は，組み込みシステムの改修を必要としているクライアント７００と，組み込みシステムの改修作業を請け負うソリューションプロバイダ７０２が，組み込みシステムの改修業務で契約をした場合のデータと作業の流れを示す一例である。
【０１１６】
クライアント７００のユーザ７０１は，改修対象とする組み込みシステムの基板７１２および基板７１２上で動作しているプログラム７１１を，ソリューションプロバイダ７０２のエンジニア７０３に対して送付ないし送信する。
【０１１７】
基板７１２とプログラム７１１を受け取ったエンジニア７０３は，プログラム７１１の移植・解析・設計作業７２０を実施してプログラム７１１からプログラムの時刻制約７を作成し，互換プログラム７１３を新規に開発し，この互換プログラム７１３が動作する互換基板７１４を新規に設計する。
【０１１８】
エンジニア７０３は，新規に開発した互換プログラム７１３および互換基板７１４がユーザから受け取ったプログラム７１１と基板７１２と同等の動作をするか否かを検証するため，本発明の互換性検証装置１１を用いて互換性検証を実施し，時刻比較結果５とデータ比較結果６を得る。
【０１１９】
この時刻比較結果５とデータ比較結果６をもとに互換性が確認できたら，ソリューションプロバイダ７０２は互換プログラム７１３および互換基板７１４をクライアント７００に送付・送信して納品とし，このときクライアント７００から対価を受け取る。
【０１２０】
また，ソリューションプロバイダ７０２は，時刻比較結果５とデータ比較結果６を互換性検証のエビデンスとしてクライアント７００に対して送付・送信することで，新規開発したシステムが元のシステムと比較して互換性に問題が無いということを容易に説明することができる。
【０１２１】
このように，実施例５によれば，本発明の互換性検証装置を適用することで，ソリューションプロバイダは既存のシステムと互換性のあるシステムを容易に開発・検証するサービスでビジネスを展開することが容易になり，また，システム開発を委託するクライアントは，短期間で互換性のあるシステムを市場に投入して低コストで保守を延長することが可能になる。  
なお，本発明は上記した実施例に限定されるものではなく，様々な変形例が含まれる。例えば，上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり，必ずしも説明した全ての構成を備えるものに限定されるものではない。また，ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり，また，ある実施例の構成に他の実施例の構成を加えることも可能である。また，各実施例の構成の一部について，他の構成の追加・削除・置換をすることが可能である。  
【符号の説明】
【０１２２】
１，２  …  マイクロコントローラ
３，４，７１１  …  プログラム
５  …  時刻比較結果
６  …  データ比較結果
７  …  プログラムの時刻制約
８  …  圧縮した時刻制約
１１，１２  …  互換性検証装置
２１  …  時刻計算部
２２，２３  …  バッファ部
２４  …  時刻比較部
２５  …  データ比較部
２６  …  記憶部
２７  …  圧縮部
２８  …  伸長部
３１  …  発振回路
３２  …  分周回路
３３  …  マイクロ秒カウンタ
３４  …  ミリ秒カウンタ
３５  …  秒カウンタ
５１  …  時刻受信バッファ
５２  …  データ受信バッファ
５７  …  有効時刻出力バッファ
５８  …  有効データ出力バッファ
５００  …  端末
５０３，５０４，７１２  …  基板
５０５，５０６  …  コネクタ
５０７，５０８  …  室外機
７００  …  クライアント
７０１  …  ユーザ
７０２  …  ソリューションプロバイダ
７０３  …  エンジニア
７１３  …  互換プログラム
７１４  …  互換基板
【図１】
2016031623.tif 000003
【図２】
2016031623.tif 000004
【図３】
2016031623.tif 000005
【図４】
2016031623.tif 000006
【図５】
2016031623.tif 000007
【図６】
2016031623.tif 000008
【図７】
2016031623.tif 000009
【図８】
2016031623.tif 000010
【図９】
2016031623.tif 000011
【図１０】
2016031623.tif 000012
【図１１】
2016031623.tif 000013
【図１２】
2016031623.tif 000014
【図１３】
2016031623.tif 000015