FC2カウンター FPGAの部屋 SDKのベアメタル・アプリケーションで時間を計測する方法(Zynq)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

SDKのベアメタル・アプリケーションで時間を計測する方法(Zynq)

SDKのベアメタル・アプリケーションで時間を計測する方法とPYNQボードでのテストについて書いておく。

なお、”ZYBOでのベアメタルの時刻取得方法について”を参照させて頂いた。ありがとうございます。

ZYBOでのベアメタルの時刻取得方法について”によると、XTime_GetTime() を使用するそうだ。そして、Zynq のCortex-A9 プロセッサのクロックの1/2 の周波数でタイマーが動作しているとのことだった。
PYNQボードの動作クロックを見てみたが、650 MHz だったので、325 MHz で動作しているということで間違いないようだ。

私もアプリケーションソフトの xttime_test を作成して、XTime_GetTime() についてテストしてみた。使用した基板はPYNQボードだ。
XTtime_test_1_170707.png

xttime_test.elf を起動すると、1.000246 ms と表示された。
XTtime_test_2_170707.png

usleep(1000) を行っているので、1 ms のはずだ。大体合っている。

次に、usleep(1000); をコメントアウトして、sleep(10); のコメントアウトを外した。
XTtime_test_3_170707.png

10000.000252 ms なので、10 秒だ。別にストップウォッチでも計ってみたが、合っている。大丈夫そうだ。
XTime_GetTime() は経過時間の計測に使えるということが分かった。

xttime_test.c を貼っておく。

/* * xttime_test.c * *  Created on: 2017/07/06 *      Author: Ono */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "xtime_l.h"

int main(){
    XTime start_time, end_time;

    printf("Start\n");
    XTime_GetTime(&start_time);
    usleep(1000);
    //sleep(10);
    XTime_GetTime(&end_time);
    printf("end\n");

    printf("usleep_time = %lf ms\n", (double)((long long int)end_time-(long long int)start_time)/325000.0);
}

  1. 2017年07月07日 04:35 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3848-d3ea7355
この記事にトラックバックする(FC2ブログユーザー)