クイックスタート

サンプルの環境をセットアップする

Xilinx 提供の Linux カーネルと、Ubuntu の root filesystem をベースに、 zfifo の例題として配布しているDMA loopback の回路を PL にロードするようにしたものが Download のページにあります。

ZYBO, Zybo Z7-20, Ultra96, Ultra96v2 で動作しますので、お手持ちの環境にあわせた ものをダウンロードして、MicroSD カードから起動しましょう。

ドライバのロード

デバイスツリーの設定などはありません。AXI DMAのレジスタアドレスを指定してロードします。たとえば、a000_0000 番地に AXI DMA が存在する場合、

$ sudo insmod ./zfifo.ko zfifo0=0xa0000000

のようにしてロードします。ダウンロードしたサンプルデザインであれば、ホームディレクトリにある load_driver を使って、

$ sudo sh ./load_driver

で OK です。正しくロードできた場合、dmesg に

[   32.518852] MM2S_DMASR: 0x10009
[   32.518854] S2MM_DMASR: 0x10009

のようなログが残りますので、確認してください。( [ ]内の数字は毎回変わります)

DMA loopback のテスト

デバイス名は /dev/zfifo0 です。

以下のように udev のルールを書いておけば root 以外でもアクセスできます。

% cat /etc/udev/rules.d/zfifo.rules
KERNEL=="zfifo*",MODE="666",GROUP="root"

ホームディレクトリにおいてあるテストプログラムを走らせると、DMA loopback のテストが可能です。2つのスレッドを起動して片方が DMA でメモリから読み出し、もう片方がメモリへ書き込みの操作を起動します。読み出したデータがそのまま書き込まれて内容が一致すれば OK 、というわけです。

$ ./libzfifo-test
Send on thread 0
Recv on thread 1
Data transferred correctly.

ドライバが読み込まれていないなどの理由で /dev/zfifo0 がオープンできないとなにも表示されずに終了します。


Front page   Edit Freeze Diff History Attach Copy Rename Reload   New Page list Search Recent changes   Help   RSS of recent changes
Last-modified: 2025-02-03 (Mon) 07:38:56