ZYNQのPSで実行時間を測定する方法
概要
ZYNQである処理の実行時間を測定したいときにどうすればよいのかについて紹介します。
一般的なCのコードではtime.hを使ったりしますが、ZYNQではこの方法は非推奨なようです。
今回はXilinxが用意したxtime_l.hというファイルを用います。
SDKプロジェクトの作成
HelloWorldのテンプレートでプロジェクトを作成し、HelloWorld.cを次のように書き換えました。
#include <stdio.h> #include "platform.h" #include "xparameters.h" #include "xtime_l.h" int main() { XTime tStart, tEnd; init_platform(); XTime_GetTime(&tStart); printf("Hello World\n\r"); XTime_GetTime(&tEnd); printf("Output took %llu clock cycles.\n\r", 2 * (tEnd - tStart)); printf("Output took %.2lf us.\n\r", 1.0 * (tEnd - tStart) / (COUNTS_PER_SECOND / 100000000)); cleanup_platform(); return 0; }
実行結果
printfをした場合
Hello World Output took 10388 clock cycles. Output took 1731.33 us.
printfを外してGetTimeにかかる時間を測定
Output took 50 clock cycles. Output took 8.33 us.