FC2カウンター FPGAの部屋 2017年04月07日

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

FPGAの部屋

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

”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる7(shellスクリプト)

”FPGA+SoC+Linux+Device Tree Overlay+FPGA Manager(PYNQ-Z1対応)”を試してみる6(FPGA Manager)”の続き。

前回は、FPGA Manager を試して、ikwzm さんのおかげでビットファイルをダウンロードして、アプリケーションソフトを動作させることができた。今回は、デバイスツリー・オーバーレイとFPGA Manager を shell スクリプトにしてみようと思う。

まずは、デバイスツリー・オーバーレイから shell コマンドを作ってみた。
コマンド名は、devtov だ。第1引数はデバイスツリー名を設定する。
PYNQ_Linux_ikwzm_82_170407.png

#!/bin/sh
# device tree overlay command (devtov)
# Be sure to run it as superuser
# $1 is device tree name

mkdir /config/device-tree/overlays/$1
cp $1.dtbo /config/device-tree/overlays/$1/dtbo
echo 1 > /config/device-tree/overlays/$1/status

sleep 0.1
chmod 666 /dev/uio*
ls -l /dev/uio*

if test -e /dev/udmabuf*; then
    chmod 666 /dev/udmabuf*
    ls -l /dev/udmabuf*
fi


devtov のコマンドで、なぜ sleep 0.1 が入っているか?だが、この sleep を入れないと chmod が効かなかったからだ。つまり、/dev/uio* にマウントするのに一定の時間がかかるらしく、chmod するときには、uio が完全にできていないためだと思う。

次に、デバイスツリー・オーバーレイを削除する rmdevtov を示す。やはり、第1引数はデバイスツリー名を設定する。
PYNQ_Linux_ikwzm_83_170407.png

#!/bin/sh
# Remove device tree overlay command (rmdevtov)
# Be sure to run it as superuser
# $1 is device tree name

rmdir /config/device-tree/overlays/$1


FPGA Manager でビットファイルをFPGA にダウンロードするコマンドが fpgamag だ。第1引数はビットファイルを指定する。
PYNQ_Linux_ikwzm_84_170407.png

#!/bin/sh
# fpga manager command (fpgamag)
# Be sure to run it as superuser
# $1 is bit file name

echo 1 > /sys/class/fpgacfg/fpgacfg0/data_format
echo 1 > /sys/class/fpgacfg/fpgacfg0/load_start
cp $1 /dev/fpgacfg0


rmdevtov, devtov, fpgamag を使って、ロードしてあったデバイスツリー・オーバーレイを削除して、再度デバイスツリー・オーバーレイをロードし、FPGA をコンフィギュレーションして、./pynq_led_test を動かしたスナップショットを示す。ちゃんとLED が点灯して動作した。
PYNQ_Linux_ikwzm_85_170407.png
  1. 2017年04月07日 04:41 |
  2. PYNQ
  3. | トラックバック:0
  4. | コメント:0