FC2カウンター FPGAの部屋 ZYBOにHDLで書いたラプラシアンフィルタを実装する10(UIOの最大数を10に変更する)

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

FPGAの部屋

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

ZYBOにHDLで書いたラプラシアンフィルタを実装する10(UIOの最大数を10に変更する)

ZYBOにHDLで書いたラプラシアンフィルタを実装する9(制御ソフトウェアを作製して実機確認)”の続き。

(2015/11/12:追記)原因は、/dev/uio5 のパーミッションが 600 だったことだった。パーミッションを 666 にしておけば、uImage も Vivado HLS で出力したドライバもそのまま動作した。詳細は”ZYBOにHDLで書いたラプラシアンフィルタを実装する11(バグはあるけど完成)”を参照のこと。

前回は、lap_fil_hdl_axim の uio5 をオープンできなくてアプリケーションがエラーになってしまった。lap_fil_hdl_axim の uio4 にすればオープンすることができる。つまり uio が 0 ~ 4 までの5個に制限されているのじゃないかという結論に至った。

Twitter で 石原ひでみさんに教えてもらったのだが、標準は5個までで、MAX値はinclude/linux/uio_driver.h のMAX_UIO_MAPS、MAX_UIO_PORT_REGIONS で決められているということだったので、早速、値を変更して uImage を再度ビルドしてみることにした。

uio_driver.h はinclude/linux にあった。
lap_fil_HDL_axim_131_151108.png

uio_driver.h を開くとMAX_UIO_MAPS、MAX_UIO_PORT_REGIONS があった。両方共 5 だった。
lap_fil_HDL_axim_132_151108.png

MAX_UIO_MAPS、MAX_UIO_PORT_REGIONS を両方共 10 にした。
lap_fil_HDL_axim_133_151108.png

ZYBO/Digilent_Linux_Tutrial/Linux-Digilent-Dev ディレクトリで、
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig コマンドでZYBO 用の設定値を反映するため、デフォルト・コンフィギュレーションを行った。(ここを参照
lap_fil_HDL_axim_137_151108.png

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- コマンドでLinux カーネルをビルドした。(ここを参照)(フルビルド時のログ)
lap_fil_HDL_axim_138_151108.png

Linux-Digilent-Dev/arch/arm/boot ディレクトリに zImage が生成された。
lap_fil_HDL_axim_139_151108.png

make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage コマンドでを実行して、uImage を作製した。なお、u-boot-Digilent-Dev/tools ディレクトリへのリンクはすでに貼ってある。(ここを参照
lap_fil_HDL_axim_140_151108.png

Linux-Digilent-Dev/arch/arm/boot ディレクトリに uImage が作成された。
lap_fil_HDL_axim_141_151108.png

uImage を ZYBO 用の MicroSD カードの uImage と入れ替えて、ZYBO に挿入して電源ONを行った。

devicetree も 以前の lap_fil_hdl_axim が uio5 にマップされる状態に戻した。

その上で ./lap_fil_hls_1shot を起動してみたが、やはり、XST_OPEN_DEVICE_FAILED の 3 のエラーだった。
lap_fil_HDL_axim_142_151108.png

なお、ZYBO 用 Linux のビルドは 2 回やっている。uio_driver.h の一部変更ビルドとそれが上手く行かないため、make clean してフルビルドした。

Vivado HLS が出力したドライバ・ソフトウェア にも UIO の最大値が定義されていた。
xlap_fil_hdl_axim_linux.c の MAX_UIO_MAPS が 5 だったため、10 に変更して lap_fil_hls_1shot をリビルドしてみたが、結果は変わらなかった。
lap_fil_HDL_axim_143_151111.png
  1. 2015年11月11日 04:57 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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