FPGAの部屋

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

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。ご利用ください。 http://marsee101.web.fc2.com/index.html

2013年02月

前回、SDK14.4でコンパイルすることができたので、ZedBoardをコンフィグレーションしてみた。

VirtualBox4.2.6 上のLinux12.10 にISE14.4 をインストールしてあるため、VirtualBox ウインドウのデバイス -> USBデバイス -> Digilent USB Device [900] を選択して、Windows 7 へのマウントを切り離し、Ubuntu にマウントした。
d3f8b4da.png


SDKで、Xilinx Tools メニュー -> Program FPGA を選択して、FPGAをコンフィグレーションしようとしたがエラーになってしまった。

次に、何がおかしいのかを確かめるために、より現象がわかりやすい iMPACT で確かめて見ることにした。
impact コマンドを入力して、iMPACT を起動した。

iMPACT でinitialize Chain を行ったところ、windrv6 がロードされないので、ケーブル・ドライバを再インストールしてくれというメッセージが出た。アンサー・レコードの22648 に書いてあるそうだ。
852dc1c0.png


アンサー・レコードの22648 は、”10.1 iMPACT - Linux OS/カーネル バージョン 2.4 へのザイリンクス ケーブル ドライバーのインストール”だった。
アンサー・レコードの22648 によると

詳細は、次の『USB Cable Installation Guide』 (UG344) および install_drivers.tar.gz アーカイブを参照してください。


のことだった。
早速、『USB Cable Installation Guide』を参照しながら、install_drivers.tar.gz アーカイブをダウンロードして、インストールすることにした。
install_drivers.tar.gz アーカイブを展開すると、install_drivers ディレクトリができた。その中に、readme.txt があってインストール方法が書いてあった。下に引用する。

Note: Root permission is required to perform the steps described in this section.

1) Disconnect all Xilinx USB cables from the host computer.
2) Open a shell or terminal console.
3) Extract the driver script and its support files to a local drive of the machine
where the cable will be used by typing:
tar xzvf install_drivers.tar.gz
The extraction creates a directory named install_drivers in the current directory.
4) Navigate to the install_drivers directory by typing:
cd install_drivers
5) Run the script by typing:
./install_drivers
6) When the installation is complete, reconnect the cable.
7. Change permissions on the USB / PC4 driver by typing: chmod 666 /dev/windrvr6.


上のインストール方法に従って、インストールを行った。

cd
cd Work/install_drivers
sudo ./install_drivesr


エラーが発生してしまった。
87ccf57d.png


そうだ。dash shell から/bin/sh に切り替えてみよう。ということで、sudo dpkg-reconfigure -plow dash コマンドを入力して、/bin/sh に切り替えてから、もう一度、sudo ./install_drivesr コマンドを実行した。だが、やはりエラーだった。
a6e18bcd.png


ls /dev コマンドで、/dev ディレクトリを見ても、windrv6 は存在しなかった。
9424be22.png


よって、この方法は諦めることにした。

次に、Ubuntu にダウンロード・ケーブルをマウントした時のUSBの状況を、lsusb コマンドで見た。
50edad17.png


それによると、ZedBoard のPROGポートをUbuntuにマウントした場合には、FT232H として見えていた。(最初のピンクの四角の中)

次に、Digilent社のXUP USB-JTAG Programming Cable があったので、これをUbuntuにマウントすると、Xilinx, Inc. として見えた(上の図の2番めのピンクの四角の中)
b39cc794.png


これで、iMPACT を立ち上げると、zynq が見えた。
da232088.png


iMPACT を終了して、xsdk コマンドでSDKを立ち上げた。

、Xilinx Tools メニュー -> Program FPGA を選択して、FPGAをコンフィグレーションした。
02102997.png


コンフィグレーション成功した。下にメッセージを示す。

19:16:31 INFO : FPGA configured successfully with bitstream /home/masaaki/HDL/ZedBoard/ZedBoard_CamDisp_wHDMI_144_2/ZedBoard_CamDisp_wHDMI.sdk/SDK/SDK_Export/system_hw_platform/download.bit.


Run Configuration を作成して、Run を実行した。
a0c284a5.png


ソフトウェアが動作して、カメラ画像がディスプレイに出力された。成功だ。

なお、ZedBoard のPROGポート経由では、アンサー・レコード42728、”13.x/14.x iMPACT/ChipScope/XMD - Digilent プログラム ケーブルには LibUSB1.0 パッケージをインストールする必要がある”を参考に、 libusb 1.0 パッケージをインストールしてみたが、やはり、ダウンロード・ケーブルとして認識されなかった。

VirtualBox4.2.6 上のUbuntu12.10 でのZedBoard のコンフィグレーションには、Digilent社のXUP USB-JTAG Programming Cable か、Xilinx社のダウンロード・ケーブルが必要のようだ。

”LinuxのSDK14.4でコンパイルエラー1”の続き。

最初に、Xilinx_ISE_DS_Lin_14.4_P.49d.3.0/CodeSourcery/lin ディレクトリの xilinx-2012.03-79-arm-xilinx-linux-gnueabi.bin をインストールする。
sudo sh xilinx-2012.03-79-arm-xilinx-linux-gnueabi.bin コマンドを入れたが、エラーになってしまった。dash shell から/bin/sh に切り替えるのだそうだ。
77029363.png


sudo dpkg-reconfigure -plow dash コマンドを入力した。
dash の設定ウインドウが開いた。<いいえ>を選択した。
60b47e05.png


もう一度、sudo sh xilinx-2012.03-79-arm-xilinx-linux-gnueabi.bin コマンドを入力した。
cb60bb3e.png


Sourcery CodeBench Lite for Xilinx GNU/Linux ダイアログが開いた。Nextボタンをクリックした。
ff6d3d76.png


ライセンスを承認して、Nextボタンをクリックした。
329c2891.png


インストールされるツールチェーンが表示された。Nextボタンをクリックした。
355a52ac.png


Typical が選択されている。Nextボタンをクリックした。
dbb8bab0.png


/opt/Xilinx/14.4/ISE_DS/EDK/gnu ディレクトリにarm ディレクトリをmkdir した。
1a3abc7f.png


Sourcery CodeBench Lite for Xilinx GNU/Linux ダイアログで、インストール・ディレクトリに/opt/Xilinx/14.4/ISE_DS/EDK/gnu/arm ディレクトリを指定した。Nextボタンをクリックした。
8cd9b9de.png


パスの設定画面。デフォルトのまま、Nextボタンをクリックした。
a978e5bb.png


Link Folder を選択する。デフォルトのまま、Nextボタンをクリックした。
b0f27384.png


インストール前のサマリが表示された。Install ボタンをクリックした。
411e082f.png


インストールがスタートした。
87681092.png


インストールが終了した。Nextボタンをクリックした。
2513eed9.png


Install Complete 画面が出る。Done ボタンをクリックした。(この画像はキャプチャし忘れたので、次にインストールしたxilinx-2012.03-83-arm-xilinx-eabi.bin の画像を示す)
4df82700.png


次は、xilinx-2012.03-83-arm-xilinx-eabi.bin をインストールした。
最初に、/opt/Xilinx/14.4/ISE_DS/EDK/gnu ディレクトリにarm-eabi ディレクトリをmkdir した。
8072c3f0.png


xilinx-2012.03-79-arm-xilinx-linux-gnueabi.bin と同様にインストールを進めていった。
なお、インストール・ディレクトリを設定する画面で、インストール・ディレクトリに/opt/Xilinx/14.4/ISE_DS/EDK/gnu/arm-eabi ディレクトリを指定した。
989a4d38.png


最後に、ツールチェーンへのパスを追加した。.bashrc のパスの設定を下に示す。(環境変数として大域的に使用するためにexport宣言を追加しました。2013/03/04)

PATH=$PATH:/opt/Xilinx/14.4/ISE_DS/ISE/bin/lin:/opt/Xilinx/14.4/ISE_DS/PlanAhead/bin:/opt/Xilinx/Vivado/2012.4/bin:/opt/Xilinx/14.4/ISE_DS/EDK/bin/lin:/opt/Xilinx/14.4/ISE_DS/EDK/eclipse/lin/eclipse:/opt/Xilinx/14.4/ISE_DS/EDK/gnu/arm-eabi/bin:/opt/Xilinx/14.4/ISE_DS/EDK/gnu/arm/bin

export PATH
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-


最後に、dash をデフォルトのシステムシェルとして戻した。sudo dpkg-reconfigure -plow dash コマンドを再度入力して、dash の設定ウインドウで、<はい>を選択した。
f59a454d.png


もう一度、ターミナルから、xsdk を入力して、SDKを立ち上げ、プロジェクトをクリーンしたら、コンパイルが通った。
6c357884.png

LinuxでのISEやPlanAheadにXPSプロジェクトを入れた時のエラー”で、/usr/bin/make を/usr/bin/gmake にリンクして、ISEプロジェクト内のXPSプロジェクトをインプリメントすることができた。
次に、Linuxは関係なく、独自のソフトウェアで動作するカメラ回路がPlanAheadプロジェクトなので、それで、PlanAheadプロジェクトでもプロジェクト内のXPSプロジェクトをインプリメントできるかどうか?確かめてみた。
やってみたところ問題なくインプリメントが終了した。
8831eae7.png


ハードウェアをSDKにエクスポートして、xsdk コマンドをターミナルで実行してSDKを立ち上げた。
Clean を行なって、すべてのプロジェクトをリコンパイルしたところエラーになってしまった。
5bbb53a5.png


エラーの内容は、arm-xilinx-eabi-gcc が見つからないというものだった。エラー内容を下に示す。

**** Build of configuration Debug for project cam_disp2 ****

make all
Building file: ../src/cam_disp2.c
Invoking: ARM gcc compiler
arm-xilinx-eabi-gcc -Wall -O0 -g3 -c -fmessage-length=0 -I../../cam_disp2_bsp/ps7_cortexa9_0/include -MMD -MP -MF"src/cam_disp2.d" -MT"src/cam_disp2.d" -o"src/cam_disp2.o" "../src/cam_disp2.c"
/bin/sh: 1: arm-xilinx-eabi-gcc: not found
make: *** [src/cam_disp2.o] エラー 127


検索すると、”Xilinx-Zynq-Arm-Linuxマニュア ル”が見つかった。それによると、”14.1 EDK - パスにスペースが含まれるディレクトリにインストーラーがあると ARM ツールチェーンがインストールされない”というXilinxアンサーがあるそうだ。
パスにスペースは入っていないのだが、 ARM ツールチェーンがインストールされなかったのだろうか?VirtualBox上のUbuntuということが影響しているのか?確かにISE_DS\EDK\gnu\arm というディレクトリは存在しない。ISE_DS\EDK\gnu の下はmicroblaze とpowerpc-eabi だけだ。ARMのツールチェーンはインストールされていないようだ。
アンサーによると、/CodeSourcery/lin にインストーラーがあるそうだ。
Xilinx_ISE_DS_Lin_14.4_P.49d.3.0/CodeSourcery/lin ディレクトリに行くと、xilinx-2012.03-79-arm-xilinx-linux-gnueabi.bin とxilinx-2012.03-83-arm-xilinx-eabi.bin の2つのインストーラーがあった。
0f882039.png

現在、Linux上で、Digilent社のZedBoardのLinuxサンプル、ZedBoard_OOB_Design.zip をダウンロードして展開し、ISEのプロジェクトを作成して、ZedBoard_OOB_Design\hw\xps_proj ディレクトリのsystem.xmp をISEのプロジェクトに入れてインプリメントを行った。(LinuxはUbuntu12.10、ISE14.4)
そうしたら論理合成時にエラーが発生した。エラー内容を下に示す。

ERROR:EDK -
Error while running "gmake -f system.make netlist".


ec169a46.png


PlanAheadのプロジェクトでも同様にXPSプロジェクトを入れると論理合成時に同様にエラーになってしまう。
早速、Google で検索したところ、”Synthesis problem of EDK project attached in the ISE 12.4”を発見した。それによると、/usr/bin/make を/usr/bin/gmake にリンクすれば良いらしい。

sudo ln /usr/bin/make /usr/bin/gmake


早速、実行したところ、エラーが無くなり、論理合成が進んでいる。
0d2a7cdf.png


まだ論理合成の途中だ。

ZedBoard用のLinux カーネルコンパイルのためにVirtualBox上にUbuntu12.10 32ビット版をインストールした。
このUbuntu12.10にせっかくなので、ISE14.4 をインストールしてみようと思う。ARMプロセッサのツールチェインもあるということだ。

VirtualBoxは50GBの固定ディスクをUbuntu用に確保してある。Oracle VM VirtualBox マネージャーの設定をクリックして、ディスプレイの設定で、拡張機能の3Dアクセラレーションを有効化(3) のチェックボックスにチェックを入れること。これをチェックしないとUbuntu上でウインドウのドラックなどがとっても遅くなる。
69dac60a.png


・Xilinxのサイトから Xilinx_ISE_DS_Lin_14.4_P.49d.3.0.tar をUbuntu 上にダウンロードして、展開した。
02f01bb2.png


レグシム ブログISE WebPack 13.3 インストール(ESXi-Ubuntu 11.10) を参照させてもらって、Ubuntu 上にISE14.4 をインストールしてみようと思う。

結局、最初にWebPACKをインストールして、うまく行ったのですが、ISE14.4のバグでCoreGenがバグってしまいました。再度、System Editon をインストールしようとしたら、50GBの固定ディスクを使いきってしまったので、200GBの固定ディスクを取ってSystem Editon をインストールしました。使用メモリはISEは750MBでも行けましたが、PlanAheadはスワップしまくりでした。1.5GBメモリを与えればインプリメント出来ました。現在は2GBのメモリを仮想マシンに与えています。



・パーミッションの設定を行なって xsetup を起動した。
fb4338b4.png


・ISEのインストーラーが起動した。
50345bda.png


・ライセンスを承認して、Edition を選択した。(下の図では、WebPACKを選択していますが、他のEdition を選択したほうが良いです(ISE14.4はWebPACKにバグがあるから)。現在はSystem Edition を選択しています)
f653e918.png


・インストールオプションを選択する。Install Cable Drivers にはチェックしないほうが良いそうです。
b3a77182.png


・インストールするディレクトリを選択するダイアログは、そのままとした。
6f9ffebf.png


・サマリが表示された。Install ボタンをクリックした。
abd29d25.png


・インストールが進んで、ライセンス認証のダイアログが出た。Nextボタンをクリックした。
39d190e4.png


・Windows ではうまく行ったConnect Now ボタンではブラウザでライセンス認証画面に行かなかったので、Save Infomation ボタンをクリックした。
ISE_for_Linux_10_130221.png

・Xilinx_Connet_Later.html を自分の Home にセーブした。
126370ae.png


・Xilinx_Connet_Later.html をダブルクリックして起動した。
199ca827.png


・Xilinx社のラインセンス認証サイトに飛んで、認証を行なった。
b97661df.png


・Windows 同様、ライセンス・ファイル (Xilinx.lic) をメール添付でもらって、ライセンス認証ダイアログでCopy License を行うとライセンスが認証された。(WebPACKライセンスです)
ec0abca4.png


・ISEのインストールが終了した。
acc7d285.png


次からは、ダウンロードケーブルのドライバをインストールする。Xilinx JTAG Linux が参考になるそうだ。

・下のコマンドを実行した。

sudo apt-get install gitk git-gui libusb-dev build-essential libc6-dev fxload


b4a36e3f.png



・/opt/Xilinx ディレクトリに移動して、usb-driver をgit からリポジトリをクローンした。

cd /opt/Xilinx
sudo git clone git://git.zerfleddert.de/usb-driver


413636df.png



・usb-driver のディレクトリに入って、make した。

cd usb-driver/
sudo make


1636a1c7.png



・home ディレクトリの.bashrc の最後の行に下のPATH 設定を記述した。

PATH=$PATH:/opt/Xilinx/14.4/ISE_DS/ISE/bin/lin:/opt/Xilinx/14.4/ISE_DS/PlanAhead/bin:/opt/Xilinx/Vivado/2012.4/bin


2efe7828.png


source .bashrc コマンドを実行して、.bashrc の内容を反映させた。

ise コマンドをターミナルから実行すると、ISEが起動した。サンプルをインプリメントしてみた。問題なくインプリメントができた。
9058f630.png


・配置配線後のPlanAhead を起動してみた。問題ない。
ea155b8d.png


planAhead コマンドをターミナルから実行して、PlanAhead を起動し、BFTサンプルのインプリメントを行った。こっちも問題無くインプリメントが行えた。
6076d7a0.png


vivado コマンドをターミナルから実行して、Vivado を起動し、PlanAhead と同じBFTサンプルのインプリメントを行った。問題無くインプリメントが行えた。PlanAhead とロジック素子の配置の様子の違いを比べてほしい。Vivado の方がロジック素子の配置がまとまっている。
a66b8b90.png

↑このページのトップヘ