似たような問い合わせは見つけ、その進捗を気にしていたのですが、私の知りたい内容ではありませんでした。
その問い合わせに、小職が「時間計測で検索」と言ってはみたものの、私自身が理解できておりません。
どなたか、以下の環境下で、ある関数の処理時間を計測する方法を教えていただけませんでしょうか?
ターゲットデバイス:78K0R
プラットフォーム:Win7のPCに「CS+ for CA,CX V3.00.01」をインストールし動作
使用言語:C言語
使用OS:(なし)
ターゲットとの接続:E1
よろしくお願いいたします。
余ってるタイマーをフリーランさせて、関数呼び出しの前後でタイマーの値を参照するとかではダメですか?
余ってるポートを関数呼び出しの前後で ON/OFF させて、出力をオシロで確認するのも簡単だと思います。
100us以上の速さは無理ですが、ブレイク間の時間がCS+の右下にでますよね。
もっと細かいレベルと精度が必要であればfujitaさんのおっしゃている2つのやり方がベターなのではないでしょうか。
fujita nozomu さん
御助言ありがとうございます。
ポートをON/OFFは考えてはいるのですが、ポートが余っていない・・・・・・・残念
仮に空けてもよさそうなポートを探して、コードをチョコット追加して・・・・・
あっ、大事な事が・・・・・オシロ(ロジアナ)が手元に無い。
オシロが入手できたら、チャレンジしてみたいのですが、できれば、CS+の環境下だけでやってみたいのですが・・・・・
acht さん
右下の計測値を当初は、報告していたのですが・・・・・・
お客様から、「予測計算での時間値と大きく違う」との指摘があり、困っている処です。
処で、右下の計測値表示ですが、「未計測」になる個所がありますが、なぜなんでしょう?
御存知です?(トピックと違うので、ごめんなさい・・・・・)
>Jinさん
ベタな方法ですが、「ある関数」を多数回ループ実行させて、STA~ENDをストップウォッチで実測しては如何でしょうか?
チョコです。
周辺機能の動作が関係なければ、シミュレータで測定することも考えられます。
>処で、右下の計測値表示ですが、「未計測」になる個所がありますが、なぜなんでしょう?
私の手元にはCS+ for CA,CX V3.00.01は準備できておらずCS+ CC-RLになりますが、ヘルプのデバッグ・ツール編の実行時間の計測に実行時間の計測にはタイマの設定が必要と書かれてます。
一部できるとすれば、どこかに意図しない計測ストップを設定してしまったとか?
CS+になって、E1での時間計測はなくなったのではないでしょうか。
プロパティのデバッグ・ツール設定にタイマの項目がありません。
すいません、私の環境はCC-RXでした。
右下の計測機能はRun-Breakタイマというようなのですが、CC-RXだと設定不要の機能(むしろ切れない)みたいで、
必ず表示される為、未計測というのは見たことありませんでした。お力になれずすいません。
現状だと、オシロもないという事なので、あまっているタイマ機能を使用するのが現実的なのではないでしょうか。
ビシさんのおっしゃている方法でも良いと思います。
若干話はそれますが、予測計算と違うといわれている点からして、
そもそも動作クロックの設定等は合っているのでしょうか?
それがあっていないと、上記方法で見ても、
思ったような結果が出ないと思います。
ヘルプに関して:
ヘルプ->デバッグ・ツール編->実行時間の計測には、「この節では,プログラムの実行時間の計測方法について説明します。」とのみ書かれていて、次のタイマ動作の設定には、確かに「ICEUBEの場合」と「シミュレータの場合」しか解説がありません。しかし、続く、「実効停止までの実行時間を計測する」には「注意 【E1】【E20】【EZ Emulator】ステップ実効中のRun-Break時間は計測できません。」の記述があります。 よって、実行時間計測のためのタイマ設定が無くても【E1】【E20】でも実行時間を計測ができるように感じます。Jinさんの書き込みでも実行できているように思えます。どこかに【ICEUBE】と【シミュレータの場合】のみ計測可能で【E1】【E20】では計測できないの説明があるのでしょうか?
実行時間の計測に関して:
Jinさんの書き込みから、インテグレート後のコードとデバッガとを組み合わせて実行時間の計測をしているように見えます。その計測値が「予測計算」ではないでしょうか?お客様が実際のセットで操作したところ処理が「予測計算」よりも大幅に異なる特性がセット全体で出ているのではないでしょうか?私の感覚では、デバッガ使用時にはデバッガのためにいろいろとコードに組み込んであったり、メモリマップを変えてあったりすることも予想され、さらに、最適化の有無など、インテグレート後のコードとデバッガとの組み合わせで実行時間の計測は適当とは思えません。しっかりとCS+のデバッグ・ツール編を読んだことが無く、ましてや、動作確認もないので不確かです。CS+デバッグ・ツールは強力なのかもしれません。
余談:
最近のオシロスコープは安価です。個人的な趣味の領域で昨年70MHz2chを購入し、借り物で済ませてきた環境から脱却しました。でも10MHzCRTアナログの方が波形に安心感があるんですよね。
皆様
色々とご助言ありがとうございます。
四苦八苦して、オシロをゲット!
余りポートも探し出してみた処、1bitだけ空きがあったのでこいつに、'1'/'0'を設定!
実測!
なんと、計算された値より、多くの割り込みが・・・・・・・
ソースを見たら・・・・・・なんと、処理抜け発見!
修正!
再実測!
お~っ!計算通りになった!
後は、お客さんが納得してくれることを願うのみ・・・・でも、バグレポートに素直に書いたら、叱られそう・・・・・(仕方ないか、俺のミス…)
皆様の御助言で、何とか解決できそうです。
本当に、ありがとうございました。
感謝しております!