説明

動的解析装置、動的解析システム、動的解析方法、及びプログラム

【課題】簡便に正確に制御装置等の動作を解析可能とする。
【解決手段】動的解析装置6は、解析対象のCPU3が接続される、アドレスバス11、データバス12、制御信号線13に接続される。動的解析装置6は、アドレスバス11上のアドレスの値から処理内容、例えば、実行中の関数や変数を特定し、データバス12上のデータから処理データ、例えば、変数の値を特定するデータ解析部と、データ解析部により解析された処理内容と処理データの履歴を含む履歴情報を記憶する記憶部と、動的解析ツール7からのアクセスに応答して、記憶部に記憶した履歴情報を提供する履歴情報提供手段と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、制御装置等の動作を動的に解析する動的解析装置、動作解析システム、動作解析方法、コンピュータに動的解析を実行させるコンピュータプログラムに関する。
【背景技術】
【0002】
プログラムの動作試験や不具合解析において、特定のメモリへのアクセスや、関数遷移の解析を行う場合、一般には専用のICE(In Circuit Emulator)をコンピュータに接続して解析する。もしくは、プログラムのソースコード内にデバッグプリント文を埋め込み、データ内容を出力して解析している。
【0003】
ICEはCPUの動作を専用の機器で模擬するもので、一行単位でプログラムを実行するステップ実行機能、実行途中での一時停止機能(Break)、指定メモリ内容の表示機能などが備わっている。ICEには、基板のCPU部分をICソケットに変更してCPU機能を完全にICEに置換えるフルICEタイプ、JTAG通信でCPUとアクセスして実行状態を制御するJTAG ICEタイプがある。
いずれのタイプのICEも、利用時には、基板上に専用のICソケットやJTAGコネクタに接続する必要がある。ICEはプログラム作成時に用いられることがほとんどであるため、最終的な量産品の基板からICソケットやJTAGコネクタは削除されることがほとんどである。
【0004】
デバッグプリントはプログラム上に試験用のコードを埋め込み、特定データの値などを外部に出力する手法であり、ICEのように外付けの機器は不要である。しかしながら、デバッグプリントを入れる位置や量などによって実動作時の性能や、実行タイミングなどが実際の量産品とは異なることとなる。
【0005】
試験時と運用時とで動作タイミングに差が発生しない方式が特許文献1に開示されている。この方式は、バス上のアドレス信号と制御信号とを観測し、予め設定されたデータ記憶回路の特定アドレスをアクセスしたことを検出したときに起動要求信号を出力するアクセス判定回路と、起動要求信号に応答して、特定アドレスのデータをトレースデータセーブエリアに記憶し常に最新のデータから一定回数以前までのデータを記憶するよう制御する回路とを備え、運用時に使用する通常プログラムを使用してデバッグする方式が提案されている。この方式によれば、中央制御回路の処理能力が生かされ、デバッグ時と運用時とで動作タイミングに差が発生しない。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平3−211634号公報(第1図)
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献1の技術では、CPUが特定のメモリアドレスにアクセスした場合にメモリ値を保存しておく方式であるため、メモリ値の推移は解析できるが、実行された処理内容の推移、例えば、どの処理関数が特定メモリにアクセスしたのかは解析できないという課題が生じていた。
【0008】
また、特許文献1の技術では、メモリ値しか保存できないため、例外エラーなどの発生推移を調査したい場合などは、調査する手段が無かった。
【0009】
本発明は、上記課題を解決するためになされたもので、より簡便に制御装置等の動作を解析可能とすることを目的とする。
また、本発明は、より正確に制御装置等の処理動作を解析可能とすることを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、この発明の動的解析装置は、
アドレスバス上のアドレスの値から処理内容を特定し、データバス上のデータから処理データを特定するバスデータ解析部と、
前記バスデータ解析部により解析された処理内容と処理データの履歴の少なくとも一部を含む履歴情報を記憶する記憶部と、
外部からのアクセスに応答して、前記記憶部に記憶した履歴情報を提供する履歴情報提供手段と、
を備えるものである。
【発明の効果】
【0011】
この発明によれば、簡易に動作解析が可能となる。
【図面の簡単な説明】
【0012】
【図1】本発明の実施の形態1に係る動的解析システムの構成図である。
【図2】図1に示す動的解析装置の物理構成を示すブロック図である。
【図3】実施の形態1に係る動的解析装置の機能的構成を示す構成図である。
【図4】(a)と(b)とは、図3に示すデータ管理部に格納される関数アドレス範囲と変数アドレス値とを示す図である。
【図5】(a)〜(c)は、図3に示すデータ管理部に格納される関数遷移履歴と、変数遷移履歴と、変数定時履歴の例を示す図である。
【図6】(a)〜(c)は、図3に示すデータ管理部に格納される関数遷移履歴条件と、変数遷移履歴条件と、定時履歴条件の例を示す図である。
【図7】実施の形態1に係る動的解析ツールの構成図である。
【図8】動的解析システムの使用場面(環境)を説明するための図である。
【図9】メモリアクセスタイミングチャートである。
【図10】実施の形態1に係るバスデータ監視部の処理を示すフローチャートである。
【図11】実施の形態1に係るバスデータ解析部の処理を示すフローチャートである。
【図12】実施の形態1に係る定時データ処理部の処理をフローチャートで示した図である。
【図13】本発明の実施の形態2に係る動的解析装置の機能構成図である。
【図14】タスク遷移タイミングを説明するための図である。
【図15】実施の形態2に係るタスク解析部の処理のフローチャートである。
【図16】タスクの変化とタスク変化のタイミングとの履歴を示す図である。
【図17】本発明の実施の形態3に係る動的解析装置の構成図である。
【図18】バス占有時間を説明するためのタイミングチャートである。
【図19】実施の形態3に係るバス占有率解析部の処理のフローチャートである。
【発明を実施するための形態】
【0013】
実施の形態1.
以下、この発明の実施の形態1に係る動的解析システムを備える設備制御システムについて説明する。
【0014】
図1に示すように、この実施の形態に係る設備制御システム1は、設備制御装置2と動的解析ツール7とを備える。
【0015】
設備制御装置2は、空調機、電力制御装置等の任意の設備機器の制御装置として機能するものであり、ハードウエア的には、プログラムを実行する中央演算処理装置であるCPU3(Central Processing Unit)、プログラムを格納するための不揮発性のメモリであるROM4(Read Only Memory)、変数などを格納する揮発性のメモリであるRAM5(Random Access Memory)、バス上を流れるデータの動的解析を実施する動的解析装置6を備える。CPU3、ROM4、RAM5、動的解析装置6は、それぞれアドレスバス11、データバス12、制御信号線13により相互に接続されている。
【0016】
設備制御装置2は、動的解析内容の指示、動的解析結果の表示などを行う動的解析ツール7と、互いに通信が可能であるように通信線14で接続されている。
【0017】
CPU3,ROM4,RAM5は、任意の設備装置の制御に使用される。
一方、動的解析装置6は、CPU3の動作を動的に解析するために使用されるものであり、ハードウエア的には、図2に示すように、プロセッサ161と、受信回路162と、記憶部163と、通信制御装置164から構成される。
プロセッサ161は、CPUまたはFPGA(Field−Programmable Gate Array)などの中央演算処理部から構成され、記憶部163に記憶された動作プログラムを実行することにより、図3を参照して後述する各種機能を実現する。
受信回路162は、一方向性バッファなどから構成され、データバス11、データバス12、制御信号線13上の信号をプロセッサ161に伝達し、一方、プロセッサ161が信号を仮に出力しても、データバス11、データバス12、制御信号線13上には出力しない回路である。
記憶部163は、ROM、フラッシュメモリ、RAM、ハードディスク等から構成され、プロセッサ161の動作プログラムを記憶し、プロセッサのワークメモリとして機能し、さらに、種々のデータを記憶する。
通信制御装置164は、この動的解析装置6と動的解析ツール7との間の相互の通信を制御する。
動的解析装置6は、上記構成により、制御信号線13上にCPU3により出力され、読み込み、書き込みのトリガーとなる制御信号と、アドレスバス11上で出力されるアドレス値と、データバス12上に出力されるデータとを監視することにより、通信データ内容を解析する。動的解析装置6は、メモリ内蔵型のワンチップマイコンとしても良いし、CPU等が配置された基板とは別基板上にマルチチップ又はディスクリートで構成し、バス11、12、制御信号線13に接続することも可能である。
【0018】
動的解析装置6は、機能的には、図3に示すように、バスデータ監視部20と、バスデータ解析部30と、データ管理部40と、通信制御部60と、通信インタフェース70とを備える。
【0019】
バスデータ監視部20は、アドレスバス11、データバス12、制御信号線13に接続され、アドレスバス監視部21、データバス監視部22、制御信号監視部23を備える。
アドレスバス監視部21は、アドレスバス11上を伝送されるアドレスデータを監視する。データバス監視部22は、データバス12上を伝送されるデータを監視する。制御信号監視部23は、制御信号線13上を伝送される制御信号を監視する。
【0020】
データバス監視部20は、制御信号監視部23でバスデータ(アドレスデータとデータ)の確定タイミングを制御信号から判断し、バスデータ確定時にアドレスバス監視部21で取得したアドレス値と、データバス監視部22で取得したデータ値と、制御信号監視部23で取得した書込み/読込み区分とを、データバス解析部21に通知する。
【0021】
バスデータ解析部30は、バスデータ監視部20とデータ管理部40に接続され、実行関数解析部31、変数データ保管部32、監視データ保管部33を備える。
実行関数解析部31は、バスデータ監視部20から通知されたアドレス値を元に、CPU3が現在実行している関数を解析(特定)する。即ち、CPU3がアドレスを出力して読み込んだ位置に格納されている関数を特定する。
変数データ解析部32は、CPU3によってアクセスされた変数を解析(特定)する。即ち、CPU3がアドレスを出力して読み込んだ位置に格納されている変数を特定する。
監視データ保管部33は、解析したデータを、監視データ42として管理データ保管部40に保管する。
定時データ処理部34は、定期的に、各変数の値を解析(特定)し、監視データ42として管理データ保管部40に保管する。
【0022】
データ管理部40は、バスデータ解析部30と通信制御部60に接続され、アドレスマップ41、監視データ42、制御データ43を備え、各種データの保管を行う。
アドレスマップ41は、ROM4とRAM5のアドレス空間のうち、関数が格納されている領域範囲を示すアドレス値である関数アドレス範囲44と、変数が格納されている領域の範囲を示すアドレス値である変数アドレス値45とを含む。
具体的には、図4に示すように、関数アドレス範囲44は、アドレス範囲とそのアドレス領域に格納されている関数F1、F2...とを対応付るデータを記憶し、変数アドレス値45は、アドレスとそこに格納されている変数A、B...とを対応付けるデータを記憶している。
アドレスマップ41としては、CPU3が実行するプログラムをコンパイルする際に自動生成されるアドレスマップを利用することが可能である。
【0023】
図3に示す監視データ42には各変数の現在の値である変数現在値46、CPU3により実行された関数の遷移履歴が記録された関数遷移履歴47、CPU3によりアクセスされた変数と値の遷移履歴と変数変化時の呼び出し元関数を示す情報を含む変数遷移履歴48、定時的な変数値と収集時刻が記録された変数定時履歴49が含まれる。
より具体的には、関数遷移履歴47には、図5(a)に示すように、CPU3が実行している一連の関数のうち、後述する関数遷移履歴条件50に合致した関数と、予め定められた深さ(個数)の前方(先行して実行された)関数と、後方(後続して実行された)関数とを含む。
変数遷移履歴48には、図5(b)に示すように、CPU3が処理した一連の変数のうち、後述する変数遷移履歴条件51に合致した変数と、予め定められた深さ(個数)の前方(先行して処理された)変数について、変数、その値、処理日時、アクセス元関数の組を記憶する。例えば、変数遷移履歴48には、各変数の値の変化及びどの関数から変数を書き換えられたかを、履歴するデータを格納する。なお、変数がどのような順番で書き換えられたかを示すようなデータを保存してもよい。
変数定時履歴49は、図5(c)に示すように、各変数の値と収集時刻とを含む。
【0024】
図3に示す制御データ43には、関数遷移の履歴の記憶を開始する条件を記載した関数遷移履歴条件50、変数遷移の履歴の記録を開始する条件を記載した変数遷移履歴条件51、変数定時履歴の記録を開始する条件を記載した定時履歴条件52が含まれる。
【0025】
具体的には、関数遷移履歴条件50は、図6(a)に示すように、1)関数遷移の履歴の記録を開始する条件、例えば、特定の関数を検出したこと、ある関数から特定の関数への変化を検出したこと、等の任意の条件と、2)条件に合致した関数の前方(先に実行された)の関数のうち履歴として抽出する個数(前方深度)と条件に合致する関数に後続する(後に実行された)関数のうち履歴として抽出する個数(後方深度)とを対応付けるデータを記憶している。
また、変数遷移履歴条件52は、図6(b)に示すように、1)変数遷移の履歴の記録を開始する条件、例えば、変数を検出したこと、ある変数が特定の条件を満たす状態になったこと、等の任意の条件と、2)条件に合致した変数の前方にアクセスされた変数のうち履歴として抽出する個数(前方深度)を対応付けるデータを記憶している。
また、定時履歴条件52は、図6(c)に示すように、変数を記録するための一定の周期を記憶する。
【0026】
図3に示す通信制御部60は、データ管理部40と通信インタフェース70に接続され、指定されたアドレスマップをデータ管理部40に保管するアドレスマップ保管部61と、監視データをデータ管理部40から読み出す監視データ読出し部62と、指定された制御データをデータ管理部40に保管する制御データ保管部63とを備え、動的解析ツール7との各種データの送受信を行う。
【0027】
通信インタフェース70は、通信線14のインタフェースである。この通信インタフェース70を介して動的解析ツール7とのデータの送受信が行われる。
【0028】
図1に示す動的解析ツール7は、動的解析装置6と通信を行って解析結果を表示する装置である。動的解析ツール7は、図7に示すように、液晶表示装置、EL表示装置等の表示装置81と、キーボード、マウスなどの入力装置、表示内容や入力内容を制御する制御部83と、通信を制御する通信制御部84と、動的解析装置6から取得したデータ、および加工したデータを保管するデータ管理部85と、動的解析装置6とのインタフェースである通信インタフェース86を備えている。動的解析ツールには汎用のパソコンを用いても良いし、専用のハードウエアを用いても良い。
【0029】
上記構成のうち、設備制御装置2は、例えば、図8(a)に示すように、任意の稼働状態の設備機器100に収容される。この場合、CPU3、ROM4、RAM5は、その設備機器100の通常時の制御装置(コントローラ)として機能する。動的解析装置6は、CPU3の処理を解析する。動的解析ツール7は、例えば、故障時やメンテナンス時に、適宜、動的解析装置6に、通信線14を介して適宜接続される。動的解析ツール7の設置位置は、現場でもリモートでもよい。リモートの場合、通信線14は、専用線でも、一般回線でも、インターネット等の通信ネットワークを含んでもよい。同様の構成を、設備装置100の開発段階で構成してもよい。
【0030】
また、開発段階等で、設備制御装置2を、例えば、図8(b)に示すように、設備機器100に接続して使用することも可能である。この場合、設備制御装置2と動的解析ツール7の設置位置は、現場でもリモートでもよい。
【0031】
次に、上記構成を有する設備制御システム1の動作を説明する。
設備制御装置2のCPU3は、ROM4に格納されたプログラムを実行することにより、設備機器100を制御するための動作を実行する。
CPU3は、ROM4に格納されている制御プログラムを実行し、設備機器100内の各部を制御することにより、設備機器100を運転する。
動的解析装置6は、CPU3の動作と並行して、各種解析動作を動的に行う。
以下、動的解析装置6の動作を、機能部分毎に説明する。
まず、バス上を流れるデータを確定するバスデータ監視部20が行う処理について説明する。
【0032】
一般に、CPUがメモリにアクセスする際は、複数の制御信号の組み合わせによって読み込み/書き込みの区分、アドレスバス、データバスのデータ確定タイミングが判別可能である。
例えば、図9に例示するように、アドレスバス11上にアクセス位置のアドレスが出力され、続いて、制御信号線13上の制御信号AとB(例えば、行ストローブ信号と列ストローブ信号)が読み出し又は書き込みを示す状態に順次切り替えられ、その後、データバス12上のデータが確定する。従って、例えば、制御信号Aが出力されてからバスデータが確定するまでの所定の遅延時間D1又は制御信号Bが出力されてからバスデータが確定するまでの所定の遅延時間D2を予め測定しておき、制御信号A又はBが出力されてからの経過時間を測定し、制御信号Aが出力されてから時間D1又は制御信号Bが出力されてから時間D2を測定したタイミングをデータの確定時間として特定することが可能である。
バス監視部20は、例えば、このようにしてバスデータを監視する。
【0033】
次に、動的解析装置6のうち、バスデータ監視部20の処理動作を図10のフローチャートを参照して説明する。
バスデータ監視部20は、主電源がオンされると、図10に示す動作を開始する。
制御信号監視部23は、設備装置100の操作パネルのオン・オフスイッチの操作によるオン・オフがオンであるか、オフであるかを判別し(ステップS0)、オフでないと判別した場合(ステップS0;No)、CPU3がアクセス対象メモリ(図1では、ROM4又はRAM5)に制御線13を介して出力する制御信号を監視する。制御信号監視部23は、対象メモリへの制御信号を監視し(ステップS1a)、制御信号線13上の制御信号が読み出しまたは書き込みの状態に変化したか否かを判別する(ステップS1b)。
制御信号に変化が無い或いは読み出し又は書き込み状態以外の状態への変化であると判別した場合(ステップS1b:No)、ステップS0にリターンする。
【0034】
制御信号が読み出しまたは書き込みの状態に変化したと検出した場合、アドレスバス監視部21は、アドレスバス11上に出されているアドレス信号により指定されているアドレス値を保持する(ステップS1c)。
【0035】
続いてデータバス12上のデータが確定するまで待機し(ステップS1d)、確定したらデータバス上のデータ信号により表されるデータ値を保持する(ステップS1e)。
【0036】
最後に制御信号の値(読み込み/書き込み)およびアドレス値、データ値をバスデータ解析部30に通知する(ステップS1f)。その後、ステップS0にリターンし、信号線の監視状態に戻る。なお、ステップS0で電源がオフであると判別された際(ステップS0;Yes)、今回の処理を終了する。
【0037】
次に、バスデータ解析部30において、バスデータ監視部20から通知されたデータを解析する処理について、図11を参照して説明する。
バスデータ解析部30は、主電源が投入されている期間、バスデータ監視部20からデータが供給される度に、図11に示す処理を開始する。
まず、バスデータ解析部30はバスデータ監視部20から通知されたアドレス値と、データ管理部40内のアドレスマップ41内に格納されている関数アドレス範囲44及び変数アドレス値45とを比較し、関数を実行しているか、変数値にアクセスしているか、その他の処理を行っているかを判別する(ステップS2a)。
【0038】
関数アドレス範囲のアドレス値であると判別した場合(ステップS2a:関数アドレス範囲)、実行関数解析部31にて処理が行われる。実行関数解析部31は、アドレスで指定された領域に記憶されていた(解析した)関数を特定し、その関数(アクセスされた位置に格納されている関数)が前回の関数と同一であるか否かを判別し(ステップS2b)、同一の関数であると判別した場合(ステップS2b;Yes)は、関数の遷移は行われていないため、データ解析処理を終了する。
【0039】
解析した関数(アクセスされた位置に格納されている関数)が前回の(現在実行中)の関数と異なる、即ち、実行関数が変化していると判別した場合(ステップS2b;No)、関数名に対応付けられた関数IDを、内部に配置されている一時バッファに追加して関数の遷移履歴を保持する(ステップS2c)。
【0040】
次に、今回判別した実行関数の変化が、後続するステップS2fの処理により関数遷移履歴条件50と一致する指定された関数の後方(後続)の遷移に該当するかどうかを判断する(ステップS2d)。関数変化が履歴済の関数変化に後続するものであると判別した場合(ステップS2d;Yes)、監視データ保管部33を介してデータ管理部40内の関数遷移履歴47に関数IDを追加して、関数遷移履歴47を更新する(ステップS2e)。
【0041】
一方、関数変化が履歴済の関数変化に後続するものではなく、遷移後の新たな関数であると判別した場合(ステップS2d;No)、遷移した関数が関数遷移履歴条件50に一致するか否かを判断する(ステップS2f)。一致すると判別した場合(ステップS2f;Yes)、一時バッファに記憶している一連の関数のうち、関数遷移履歴条件50で指定された深度(個数)分だけ、監視データ保管部33を介してデータ管理部40内の関数遷移履歴47に保存する(ステップS2g)。
【0042】
例えば、一次バッファに一連の関数の履歴「...F7,F4,F2,F3」が記憶されているとする。図5(a)に示す関数遷移履歴条件52によれば、関数F3が関数履歴条件50が指定する関数に合致する。さらに、指定された深度(前方)は「3」である。この場合、図6(a)に示すように、条件に合致する関数として「F3」、深度(前方)で指定される関数として「F7,F4,F2」のIDが関数遷移履歴47に格納される。なお、その後、実行される関数が変化すると、ステップS2eで、関数変化が履歴済の関数変化に後続するものであると判別され(ステップS2d;Yes)、監視データ保管部33を介してデータ管理部40内の関数遷移履歴47に関数IDが追加される(ステップS2e)。
また、例えば、一次バッファに一連の関数の履歴「...F12,F1,F2,F9,F4,F5」が記憶されているとする。図5(a)に示す関数遷移履歴条件52によれば、関数F4からF5への変化が関数履歴条件50が指定する関数に合致する。さらに、指定された深度(前方)は「4」である。この場合、図6(a)に示すように、条件に合致する関数として「F4,F5」、深度(前方)で指定される関数として「F12,F1,F2、F9」のIDが関数遷移履歴47に格納される。
【0043】
一方、ステップS2fで、関数履歴条件に一致しないと判別した場合(ステップS2f;No)、今回の処理を終了する。
【0044】
以上の動作を繰り返すことにより、関数遷移履歴条件として指定した関数とその前後に実行された関数の遷移の履歴を保存することが可能となる。
【0045】
一方、ステップS2aの判別の結果、アドレスバス11上のアドレスが変数を記憶している領域のアドレス値であると判別された場合は(ステップS2a;変数アドレス)、変数データ解析部32にて処理が行われる。
変数データ解析部32は、まず、変数にアクセスした日時を保持する(ステップS2l)。
【0046】
次に、バスデータ監視部20から通知された制御信号区分を判別し、書き込み処理か、読み込み処理かを判断し(ステップS2m)、書き込み処理であった場合は、書き込み後の変数値を保持し、監視データ保管部33を介してデータ管理部40内の変数現在値46に保存する(ステップS2n)。
【0047】
一方、書き込み処理ではない、即ち、読み出しアクセスであると判別した場合(ステップS2m;No)、ステップS2nをスキップする。
ステップS2nの実行後又はステップS2mでNoと判別した場合、アクセスされた変数が、変数遷移履歴条件51と一致するかを判断する(ステップS2o)。
一致すると判別した場合(ステップS2o;Yes)、実行関数解析部31に保持されている履歴のうち、変数遷移履歴条件51が指定する深度(個数)分の履歴、即ち、変数と、変数値と、アクセス日時と、アクセス元の関数とを、監視データ保管部33を介してデータ管理部40内の変数遷移履歴48に保存し(ステップS2p)、処理を終了する。
【0048】
例えば、一次バッファに一連の変数とアクセス元の関数の履歴「..., (変数G,値3,アクセス日時2011/10/24 14:15:50,アクセス元関数F11),..., (変数G,値6,アクセス日時2011/10/24 14:16:59,F12),..., (変数G,値−1,アクセス日時2011/10/24 14:17:11,アクセス元関数F13),..., (変数G,値+1,アクセス日時2011/10/24 14:23:33,アクセス元関数F14)」が記憶されているとする。
図6(b)に示す変数遷移履歴条件51によれば、関数F14による変数Gの負の値(−1)から正の値(+1)への更新は、変数遷移履歴条件51に合致する。この場合には、変数遷移履歴条件51に合致する変数の情報(変数G,値+1,アクセス日時2011/10/24 14:23:33,アクセス元関数F14)」と、記憶されている履歴のうち、注目している変数Gの履歴であって変数前方深度で特定される前方2つの情報(変数G,値6,アクセス日時2011/10/24 14:16:59,アクセス元関数F12),(変数G,値−1,アクセス日時2011/10/24 14:17:11,アクセス元関数F13)が変数遷移履歴48として記録される。
同様に、例えば、変数Dの値が2に変化したとすると、その更新は、変数遷移履歴条件51に合致する。この場合には、変数遷移履歴条件51に合致する変数の情報例えば、(変数D,値+2,アクセス日時2011/10/24 18:19:47,アクセス元関数F5)」と、記憶されている履歴のうち、注目している変数Dの履歴であって変数前方深度で特定される前方1つの情報(変数D,値3,アクセス日時2011/10/24 18:19:36,アクセス元関数F3)が変数遷移履歴48として記録される。
これらの記録により、注目している変数の変化とどの関数が変数を書き換えたかという情報を履歴できる。
【0049】
一方、変数遷移履歴条件に一致しないと判別した場合(ステップS2m;N)、処理を終了する。
【0050】
以上の動作を繰り返すことにより、変数遷移条件として指定した変数へのアクセス時のアクセス元関数の遷移、変数の変更前後の値を、アクセス日時も含めて保存することが可能となる。
【0051】
また、変数の値が変化するたびに現在値を更新することにより、常に最新の変数値を保持することが可能となる。
【0052】
一方、定時データ処理部34は、主電源が投入されている間、図12に示す処理を実行し、制御データ43内に格納されている定時履歴条件52で指定された時間間隔に達したかどうかを判断し(ステップS3a)、履歴する時間であれば指定変数値の変数現在値46を読出し(ステップS3b)、監視データ保管部33を介してデータ管理部40内の関数遷移履歴47に保存する(ステップS3c)。
【0053】
以上の動作を繰り返すことにより、定時履歴条件として指定した変数の、一定間隔のデータを保存することが可能となる。
【0054】
こうして、データ管理部40には、予め条件設定されている注目すべき実行関数の変化が起こった際に、その前後の関数変化の履歴が記録され、予め条件設定されている注目すべき変数の変化が起こった際に、それに至る変数の変化の履歴が記録され、蓄積される。さらに、定期的な履歴が蓄積される。
【0055】
一方、動的解析ツール7は、オペレータにより適宜操作され、データ管理部40に蓄積されている履歴データを読み出し、解析する。
即ち、操作者が、動的解析ツール7の入力装置82から各種データの読出し要求を行うと、制御部83が通信制御部84、通信インタフェース86を介して、データの送信要求を動的解析装置6に送信する。
動的解析装置6は通信制御部60が通信インタフェース70を介して動的解析ツールからの要求を受信し、監視データ読出し部62がデータ管理部40の監視データ42に保管された各種データを読み出し、通信インタフェース70を介して、動的解析ツール7に応答する。
動的解析ツール7は、応答を通信インタフェース86を介して受信すると、通信制御部84は受信したデータをデータ管理部85に保存し、制御部83がデータを取得して表示装置81に表示する。
【0056】
各種履歴条件が格納された制御データ43やアドレスマップ42は、動的解析ツール7から動的解析装置6に対して送信され、通信制御部60によってデータ管理部40に保存される。
【0057】
なお、制御データ43やアドレスマップ42は、動的解析ツールで送信するのではなく、予め書き込んだ状態で出荷しても良い。
【0058】
以上詳細に説明したように、この実施の形態1に係る動的解析装置および動的解析システムによれば、関数や変数が格納されているメモリのアドレス値一覧を保持することにより、CPU3の処理内容の履歴を記録することができ、それにより、処理内容、例えば、どの処理関数がどの変数を変更したか、を解析することが可能となる。
【0059】
また、この実施の形態1に係る動的解析装置および動的解析システムによれば、CPU3の処理に用いるアドレスバス11、データバス12、制御信号線13に対して、動的解析装置6からデータを出力することは無い。このため、CPU3の処理を一切妨げることなく、動的解析を行うことが可能となる。
【0060】
また、この実施の形態1に係る動的解析装置および動的解析システムによれば、動的解析を行うためのプログラム変更や、ICE接続用の特殊コネクタなどの必要が無いため、不具合が発生している現地の制御機器をそのまま利用して不具合解析を行うことが可能となる。
【0061】
また、この実施の形態1に係る動的解析装置6および動的解析システム1によれば、現地で発生している不具合条件を分析し、試験室で不具合の再現環境を構築する必要がないため、不具合解決に要する時間を削減することが可能となる。
【0062】
また、この実施の形態1に係る動的解析装置および動的解析システムによれば、プログラムのコンパイル時に自動生成されるメモリマップを利用して関数遷移、変数遷移を解析することができるため、アドレス値との関連付けファイルを手動で作成する必要が無い。
【0063】
なお、本実施の形態では、利用されるメモリに対応した読出しシーケンスを実装することとしたが、メモリが変更されても対応できるよう、デバイスコードをメモリから読み出して自動的にメモリに合わせたデータバス確定処理を実装しても良い。
【0064】
また、本実施の形態では、同一のアドレスバス11、データバス12にROM4、RAM5を接続するようにしたが、必ずしもこの構成である必要は無く、CPU3に専用のバスを用いて接続されるRAMを用いても良い。この場合は、動的解析装置6がROM用のバス、RAM用のバスの両方を監視する構成となる。
【0065】
実施の形態2.
上記実施の形態においては、監視の対象の処理内容は関数と変数とそのデータであったが、処理過程で生成される任意の処理内容ものを監視対象とすることが可能である。
以下、一例として、処理内容としてタスクをさらに管理する実施の形態2について説明する。
【0066】
図13は、この発明の実施の形態2に係る動的解析装置6の構成を示す。
図13に示すように、この実施の形態に係る動的解析装置6は、実施の形態1の動的解析装置6に加え、タスク解析部35およびタスク遷移履歴53を備える。
【0067】
次に、タスク解析部35において、実行タスクを解析する処理について、図14と図15を参照して説明する。
【0068】
図14はタスクの切換状態を示した図である。優先度の低い状態のタスクが実行中の場合でも優先度の高いタスクが起動すると、優先度の低いタスクは停止し、優先度の高いタスクが実行されることを示している。本実施形態の動的解析装置6は、特徴的なタスクの切り替えの履歴を取得することが可能である。
【0069】
図15は、タスク解析部35の処理をフローチャートで示した図であり、タスク解析部35は、電源がオンの間、バスデータ監視部20で監視したバスデータを基に、起動したタスクを保持する(ステップS4a)。
【0070】
タスクの切り換えが発生したか否かを判別し(ステップS4b)、切り替えが発生した場合(ステップS4b;Yes)、切り換え後のタスクを、日時等と共にタスク遷移履歴53に保存する(ステップS4c)。なお、タスクの切り換えが発生していないと判別した場合(ステップS4b;No)、ステップS4bにリターンし、処理を繰り返す。
【0071】
ここで保存したタスク遷移履歴53は、実施の形態1と同様、動的解析ツール7によって読み出し、図16のようなタスクの切り換えタイミングの表示が可能である。
【0072】
なお、タスクの切り換えは、OS(オペレーションシステム)のタスク切り換え関数が実行されたことを検知して切り換えを判断しても良いし、タスクに登録した関数が実行された段階で切り換えを判断しても良い。
また、タスク遷移履歴条件を設定し、条件に合致するタスク遷移が起こったときにのみ、タスク遷移の履歴を取るようにしてもよい。
【0073】
以上詳細に説明したように、この実施の形態2に係る動的解析装置および動的解析システムによれば、タスクの切換遷移の履歴を保持することにより、タスクの占有率、実行タイミングが容易に解析可能となる。
【0074】
実施の形態3.
前述のように、解析対象の処理内容は任意であり、例えば、バス占有率を処理内容に含めることも可能である。バス占有率を解析対象の処理内容の1つとする実施の形態3について、以下、説明する。
【0075】
図17は、この発明の実施の形態3に係る動的解析装置6の構成が示されている。
図17に示すように、この実施の形態に係る動的解析装置6は、実施の形態1の動的解析装置6に加え、バス占有率解析部36およびバス占有履歴54を備えたものである。
【0076】
次に、バス占有率解析部36において、バス占有率を解析する場合の処理について、図18と図19を用いて説明する。
【0077】
図18はバスの占有状態を示した図である。CPU3は、メモリ(ROM3,RAM4)にアクセスを開始するとき、アドレスバス11上にアドレスを出力し、制御信号(チップイネーブル信号)を出力した後、データバス12上にデータを出力する。アクセスが終了すると、制御信号を解除する。チップイネーブル信号を出力してからリセットするまでの時間がバス占有時間となる。
【0078】
図19は、バス占有率解析部36の処理をフローチャートで示した図である。バス占有率解析部36は、電源がオンの間、制御信号線の状態を監視しアクセス開始を判別する(ステップS5a)。
【0079】
バスの利用が開始されると占有時間のカウントを開始し(ステップS5b)、バスアクセス終了を検出すると(ステップS5c)、バス占有時間のカウントを終了し(ステップS5d)、バス占有履歴54を保存する(ステップS5e)。
【0080】
ここで保存したタスク遷移履歴54は、実施の形態1と同様、動的解析ツール7によって読み出し、単位時間当たりのバス占有率の表示が可能である。
【0081】
以上詳細に説明したように、この実施の形態3に係る動的解析装置および動的解析システムによれば、バス占有時間を保持することにより、一定時間あたりのバス占有率等が容易に解析可能となる。
【0082】
なお、本発明は、上記実施の形態および図面によって限定されるものではない。本発明の要旨を変更しない範囲で実施の形態および図面に変更を加えることができるのはもちろんである。
例えば、監視・解析対象の処理内容は、関数の変化、変数の変化、タスクの変化、バス占有率に限定されず、装置の任意のパラメータを監視の対象とすることができる。また、これらと共に収集するデータ類も上述の例に限定されず、適宜設定可能である。
また、関数の履歴、変数の履歴にどのような情報を含めるか、についても適宜応用・変更可能である。例えば、関数の履歴に実行時刻を記録したり、その関数により処理された変数な、その関数がアクセスしたメモリエリア(アドレス)などの情報を付加してもよい。また、変数履歴に、後方深度を設定し、変数履歴条件51に合致する変数の更新後にどのような変数が処理されたかを解析できるようにしてもよい。
また、上記実施の形態においては、動的解析ツール7を動的解析装置6に接続して、データを表示する等したが、例えば、動的解析ツール装置7で動的解析装置6からのデータを受信して、解析するようにしてもよい。
動的解析装置は、監視対象の装置に常時接続されている必要はなく、必要に応じて設定されてもよい。この場合、例えば、アドレスバス11、データバス12、制御信号線13にこれらの信号線に接続するためのコネクタを予め接続しておき、必要時に、このコネクタと動的解析装置6の受信回路162の入力側コネクタとを接続するようにしてもよい。
また、アドレスバス11、データバス12、制御信号線13の全てを監視することが望ましいが、必ずしも全てを監視する必要はない。一部のバス又は制御信号線を監視するように構成してもよい。監視の対象は、監視の目的に応じて適宜設定される。
設備機器100の制御用プロセッサの動作を監視する例を示したが、設備機器100は任意である。例えば、空調装置、電力制御装置、熱機器、エレベータ、コンピュータ、家電機器、自動車・車両、等、コンピュータ及びソフトウエアにより制御されるものに広く適用可能である。
上述したハードウエア構成、フローチャート、テーブル構成などは一例であり、任意に変更可能である。
また、他装置のバス、制御信号線にアクセス可能なコンピュータを上述の動的解析装置として動作させるためのプログラムを、媒体等に記録して配布し、これをインストールすることにより、該コンピュータを動的解析装置として機能させることも可能である。
【符号の説明】
【0083】
1 動的解析システム
2 設備制御装置
3 CPU
4 ROM
5 RAM
6 動的解析装置
11 アドレスバス
12 データバス
13 制御信号線
14 通信線
20 バスデータ監視部
21 アドレスバス監視部
22 データバス監視部
23 制御信号監視部
30 バスデータ解析部
31 実行関数解析部
32 変数データ解析部
33 監視データ保管部
34 定時データ処理部
35 タスク解析部
36 バス占有率解析部
40 データ管理部
41 アドレスマップ
42 監視データ
43 制御データ
44 関数アドレス範囲
45 変数アドレス値
46 変数現在値
47 関数遷移履歴
48 変数遷移履歴
49 変数定時履歴
50 関数遷移履歴条件
51 変数遷移履歴条件
52 定時履歴条件
53 タスク遷移履歴
54 バス占有履歴
60 通信制御部
61 アドレスマップ保管部
62 監視データ読み出し部
63 制御データ保管部
70 通信インタフェース
161 プロセッサ
162 受信回路
163 記憶部
164 通信制御装置

【特許請求の範囲】
【請求項1】
アドレスバス上のアドレスの値から処理内容を特定し、データバス上のデータから処理データを特定するバスデータ解析部と、
前記バスデータ解析部により解析された処理内容と処理データの履歴の少なくとも一部を含む履歴情報を記憶する記憶部と、
外部からのアクセスに応答して、前記記憶部に記憶した履歴情報を提供する履歴情報提供手段と、
を備える動的解析装置。
【請求項2】
前記バスデータ解析部は、メモリアクセス用のアドレスバス上に出力されたアドレス値から、どの変数へのアクセスかを特定し、制御信号線上の制御信号から読み込みアクセスか書き込みアクセスかを特定し、前記データバス上のデータの値から変数の値を特定する、
ことを特徴とする請求項1に記載の動的解析装置。
【請求項3】
前記バスデータ解析部は、前記アドレスバス上に出力されたアドレス値から、どの関数が実行されたかを特定する、
ことを特徴とする請求項1に記載の動的解析装置。
【請求項4】
前記アドレスバス及びデータバス上の信号を受信し、これらのバスへの出力を行わない、
ことを特徴とする請求項1乃至3の何れか1項に記載の動的解析装置。
【請求項5】
前記バスデータ解析部は、
プログラムで実行されている関数を解析する実行関数解析部と、
実行された関数の遷移を保持し、所定の関数遷移履歴条件に合致する関数が実行されると、その関数を含む一定数の関数の遷移履歴を保存する関数遷移履歴保存部と、を備え、
外部装置からのアクセスに応答して、前記関数遷移履歴保存部に記憶されている遷移履歴を外部装置に提供する通信部をさらに備える、
ことを特徴とする請求項1乃至4の何れか1項に記載の動的解析装置。
【請求項6】
前記バスデータ解析部は、
プログラムで利用されている変数を監視する変数データ解析部と、
所定の変数遷移履歴条件に合致する変数にアクセスがあると、その変数と所定情報とを含む変数遷移履歴を保存する変数遷移履歴保存部と、を備え、
外部装置からのアクセスに応答して、変数遷移履歴保存部に保存されている変数遷移履歴を外部装置に提供する通信部をさらに備える、
ことを特徴とする請求項1乃至5の何れか1項に記載の動的解析装置。
【請求項7】
前記バスデータ解析部は、
プログラムで利用されている変数の現在値を読み込む定時データ処理部と、
前記定時データ処理部により読み込まれた変数値の履歴を保存する定時変数履歴保存部と、を備え、
外部装置からのアクセスに応答して、定時変数履歴保存部に保存されている履歴を外部装置に提供する通信部をさらに備える、
ことを特徴とする請求項1乃至6の何れか1項に記載の動的解析装置。
【請求項8】
前記バスデータ解析部は、
プログラムで利用されているタスクの切り換えを検出するタスク解析部と、
前記タスク解析部により検出されたタスクの切り換えに基づいて、タスク遷移履歴を保存するタスク履歴保存部と、を備え、
外部装置からのアクセスに応答して、前記タスク履歴保存部に保存されている履歴を外部装置に提供する手段をさらに備える、
ことを特徴とする請求項1乃至7の何れか1項に記載の動的解析装置。
【請求項9】
前記バスデータ解析部は、
バスの占有率を解析するバス占有率解析部と、
前記バス占有率解析部が解析したバス占有率の履歴を保存するバス占有率保存部と、を備え、
外部装置からのアクセスに応答して、前記バス占有率保存部に保存されている履歴を外部装置に提供する手段をさらに備える、
ことを特徴とする請求項1乃至8の何れか1項に記載の動的解析装置。
【請求項10】
請求項1乃至9の何れか1項に記載の動的解析装置と、
前記動的解析装置に保持されている履歴を読み出し、処理する解析ツールと、
を備えることを特徴とする動的解析システム。
【請求項11】
アドレスバス上を伝送されるアドレスを解析して処理内容を特定し、
データバス上を伝送されるデータを解析して、処理データを特定し、
特定した処理内容と処理データの履歴の少なくとも一部を含む履歴情報を求め、
求めた履歴情報を提供する、
ことを特徴とする動的解析方法。
【請求項12】
コンピュータに、
アドレスバス上を伝送されるアドレスを解析して処理内容を特定し、
データバス上を伝送されるデータを解析して、処理データを特定し、
特定した処理内容と処理データの履歴の少なくとも一部を含む履歴情報を求め、
求めた履歴情報を提供する、
動作を実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2013−97580(P2013−97580A)
【公開日】平成25年5月20日(2013.5.20)
【国際特許分類】
【出願番号】特願2011−239823(P2011−239823)
【出願日】平成23年10月31日(2011.10.31)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】