FC2カウンター FPGAの部屋 2023年03月12日
fc2ブログ

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

FPGAの部屋

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

IP を追加した KR260 の kr260_custom アクセラレーション・プラットホームで multi_axi4ls を動作させた

KR260 の kr260_custom アクセラレーション・プラットホームにいろいろな IP を追加する7”でハードウェア・プラットホームに実装した IP を UIO にマップすることができた。今回は、その内の multi_axi4ls IP を動作させることができた。

まずは、gcc をインストールしていなかったので、インストールしよう。
sudo dnf install gcc.cortexa72_cortexa53
KR260_339_230311.png

sudo dnf install gcc-symlinks.cortexa72_cortexa53
KR260_340_230311.png

KR260 の Petalinux 2022.1 の ~/kr260_ip フォルダに multi_axi4ls.c ファイルを生成して C コードを書いた。

// multi_axi4ls.c
// 2023/03/11 by marsee

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/mman.h>

int32_t multi_calc(int32_t *multi_axi4ls, int32_t a, int32_t b){
    while((multi_axi4ls[0] &4) == 0) ; // wait ap_idle
    multi_axi4ls[6] = a; // reg a, 0x18
    multi_axi4ls[8] = b; // reg b, 0x20
    multi_axi4ls[0] = 1; // ap_start = 1
    while((multi_axi4ls[11] & 1) == 0) ; // wait c_ap_vld
    return(multi_axi4ls[10]);
}

void main(){
    int uio8_fd;
    int32_t *multi_axi4ls;
    int32_t a, b, c;
    
    if((uio8_fd = open("/dev/uio8", O_RDWR)) == -1) {
        printf("Can not open /dev/uio8\n");
        exit(1);
    }
    multi_axi4ls = (uint32_t*)mmap(NULL, 0x10000, PROT_READ|PROT_WRITE, MAP_SHARED, uio8_fd, 0);
    
    for(a = 0, b = 1; a < 10; a++, b++){
        c = multi_calc(multi_axi4ls, a, b);
        printf("a = %d, b = %d, c = %d\n", a, b, c);
    }
}


KR260_341_230312.png

KR260_342_230312.png

multi_axi4ls.c を gcc でコンパイルした。
gcc -o multi_axi4ls multi_axi4ls.c
KR260_343_230312.png

デフォルトのアプリケーションをアンロードし、kr260_ip をロードする。
/dev/uio* を見た。
sudo xmutil unloadapp
sudo xmutil loadapp kr260_ip
ls -l /dev/uio*

KR260_344_230312.png

ユーザー・モードで /dev/uio* が読み書きできないので、chmod を 666 に設定した。
sudo chmod 666 /dev/uio*
ls -l /dev/uio*

KR260_345_230312.png

/dev/uio* が読み書きできるようになったので、multi_axi4ls を起動したところ、乗算結果が表示された。成功だ。
./multi_axi4ls
KR260_346_230312.png
  1. 2023年03月12日 05:21 |
  2. KR260
  3. | トラックバック:0
  4. | コメント:0