OMAP ZOOM 3430 MDK に付属の TMS32064x+ DSP でコードを実行するために必要なクロック サイクルを測定しようとしました。DSP チップの「Programmer's Guide」を見ると、DSP が clock() 関数をサポートしていると書かれています。
私がやっていることはとてもシンプルです。
start = clock();
for (i=0;i<100;i++){
/* do something here */
}
stop = clock();
total = stop - start;
次に、「start」、「stop」、および「total」の値を、ARM プロセッサで以前に割り当てられた共有メモリに配置します。次に、それを ARM 側の画面に表示するだけです。
問題は、最初の実行では常に同じ「合計」値を取得し、次の実行では常に 0 を取得することです! 「開始」値と「停止」値は「合計」値と一緒です。
最も奇妙なことは、ビットパターンに従っているように見えることです! 出力を以下に示します。
# ./sampleapp
Total = 63744
Start clock() value = 0x000000f9
Stop clock() value = 0x0000f9f9
# ./sampleapp
Total = 4177526784
Start clock() value = 0x00f9f9f9
Stop clock() value = 0xf9f9f9f9
# ./sampleapp
Total clock cyles = 0
Start clock() value = 0xf9f9f9f9
Stop clock() value = 0xf9f9f9f9
明らかに、clock() はうまく機能していませんが、これが何か間違っているためなのか、それともこのタイプのものが私のハードウェアでサポートされていないためなのかはわかりません。なぜこれが起こっているのでしょうか?