FC2カウンター FPGAの部屋 Vivado and ZYBO Linux勉強会を開催
FC2ブログ

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

FPGAの部屋

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

Vivado and ZYBO Linux勉強会を開催

2015年(平成27年)2月16日(月)と2月17日(火)で、Vivado and ZYBO Linux勉強会を開催しました。

2015/12/09:追記 ”Vivado and ZYBO Linux勉強会用のソースファイル”にCソースコードなどが貼ってありますので、ご利用下さい。

月曜日のハードウェア編が6人、火曜日のソフトウェア編が3人でした。ちょっと人数的には寂しかったですが、熱心にやって頂きました。
2日目の勉強会はUIOドライバを使ってLEDでカウンタを作るところまでだったので、半日くらいで十分そうでした。ネットがつながっていれば、OpenCVのサンプルのコンパイルまでだと1日あっても終わらないかもしれません?コンパイルに時間が掛かるので。。。
ノートパソコンを持ってきてもらって、VirutalBoxをインストールして、その上にUbuntu14.04LTSをインストールして、その上にLinux版のVivado 2014.4 WebPACK をインストールすることが必須なので、ハードルが高いです。
例えば、どこかで集まって勉強会をやろうと思っても、たぶんこのハードルの高さから無理だと思います。

去年の勉強会は演習にXilinxのZedBoaredのチュートリアルを使っていたので公開できなかったのですが、今回のVivado and ZYBO Linux勉強会の演習は完全にオリジナルです。公開できると思います。

そこで、事前準備のマニュアルはあえて出さず(自力で出来る人が対象ということです)に、VirutalBoxをインストールして、その上にUbuntu14.04LTSをインストールして、その上にLinux版のVivado 2014.4 WebPACK をインストールし、軽量ディスクトップ環境のLXDEをインストール出来る人を対象にVivado and ZYBO Linux勉強会資料をslideshareで公開しようと思います。Linux版のVivado 2014.4のインストールはARMのツールチェーンを簡単に入れられるので必須です。ARMのツールチェーンが無いと、ARMプロセッサ用のU-bootやLinuxカーネルをコンパイルすることができません。
:VirtualBoxの設定ですが、クリップボードの共有とドラッグアンドドロップは双方向にしてあります。CPU数は2、メモリは2GB程度、HDDは50GB程度与えています。なお、Oracle_VM_VirtualBox_Extension_Packをインストールして、USB2.0 (EHCI)コントローラーを有効化しています)

このチュートリアルをやれば、以下のことができます。
但し、ZYBOボードで演習を行いますので、演習を行うにはZYBOボードが必要です。

LED4 AXI LITE SLAVEプロジェクト
Vivado のLEDカウンタのAXI Lite Slave カスタムIPをウィザードで作って、ベアメタルアプリケーションで動作

ZYBO Linuxハンズオン資料
ZYBO 用 u-boot のビルド
SDK で Boot.bin を作製
ZYBO 用 Linux カーネルのビルド
デバイス・ツリーのコンパイル
Micro SD カードのフォーマット
Ubuntu の ROOT File System のコピー
FAT32 パーティションへ必要なファイルをコピー
ZYBO に SD カードを挿して Linux をブート
ユーザーでログイン
LED をカウントアップするソフトウェアを実行(UIO の実習)

勉強会場ではLANがつながっていないので、ここまでだが、ここからはZYBOをLANに接続して行う。

NTP のインストール
SSH のインストール
Xming で X ウインドウを Windows で操作
OpenCV インストール
OpenCV サンプル・プログラムのコンパイル+顔認識アプリの実行
ZYBO 用の Linaro Ubuntu のバージョンを 12.11 から 14.04 LTS にアップグレード(おまけ)
ARMhf の Root File System を入れる(おまけ)

slideshare のVivado and ZYBO Linux勉強資料2 で公開しました。なお、ダウンロードはできなくなっています。どのくらいの方に見ていただいたのか?知りたいのとバグが直ぐに直せるからです。

この資料を作るにあたっては、たくさんのWebサイトを参照させて頂きました。また、たくさんの方にアドバイスを頂きました。本当にありがとうございました。問題がありましたらお知らせ下さい。
資料を作るにあたっては3週間程かかりました。まだ、どうしてこれをやるの?というところが書けてません。私もよくわからないところがありますので、知っている方はコメント欄などでお知らせ下さい。またご意見やバグ情報などをコメントとして教えて頂けると嬉しいです。

最後に、教育機関の方でこの勉強会資料を使って勉強会を開催したいという方に、WordやPowerPointの文章やコードのソースをほしいという方は個別対応でお送りしますので、FPGAの部屋のメールアドレスまでお知らせ下さい。

この勉強会資料はFPGAの部屋のブログに書いたことをまとめたものです。演習以外はブログを見ても同じことができますが、ブログでは試行錯誤しているし、他の話題も混ざっているので、書いた私以外は追うのが難しいと思います。それを、見やすく誰がやっても?できるように書き改めたのが、この勉強会資料です。資料を作るにあたっては、もう一度やり直して確認しているので、現時点では確実にできると思います。

Vivado and ZYBO Linux勉強会用のソースファイルを”Vivado and ZYBO Linux勉強会用のソースファイル”に貼っておきました。

2015/02/21 追記: slideshare で Vivado and ZYBO Linux勉強資料3 を公開しました。こちらは、PowerPoint がスライドにしてあるので、Vivado and ZYBO Linux勉強資料2 よりも見やすいと思います。

最後に slideshare だとコピペが出来ないと思うので、おまけとして長いコマンドをここに貼っておきます。

長いコマンドのコピー・アンド・ペースト用ファイル

1. ZYBO用u-bootのビルド
git clone -b master-next https://github.com/DigilentInc/u-boot-Digilent-Dev.git
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config
make CROSS_COMPILE=arm-xilinx-linux-gnueabi-
cp u-boot u-boot.elf

2. SDKでBoot.bin を作製

3. ZYBO用Linuxカーネルのビルド
git clone -b master-next https://github.com/DigilentInc/Linux-Digilent-Dev.git
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- xilinx_zynq_defconfig
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
PATH=$PATH:../u-boot-Digilent-Dev/tools/
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0x8000 uImage

4. デバイス・ツリーのコンパイル
cp arch/arm/boot/dts/zynq-zybo.dts
gedit zynq-zybo.dts

bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1 uio_pdrv_genirq.of_id=generic-uio";
operating-points = <650000 1000000>;
led4_axi_lite_slave@43c00000 {
compatible = "generic-uio";
reg = < 0x43c00000 0x10000 >;
};
scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb zynq-zybo.dts

5. Micro SDカードのフォーマット(必要な人のみ)

6. Micro SDカードにパーティションを作る
sudo fdisk /dev/sdb
sudo mkfs.msdos -n ZYBO_BOOT /dev/sdb1
sudo mkfs.ext4 -L ROOT_FS /dev/sdb2

7. UbuntuのROOT File SystemをMicro SDカードへコピー
wget https://releases.linaro.org/archive/12.11/ubuntu/precise-images/ubuntu-desktop/linaro-precise-ubuntu-desktop-20121124-560.tar.gz
sudo tar --strip-components=3 -C /media/ono/ROOT_FS -xzpf linaro-precise-ubuntu-desktop-20121124-560.tar.gz binary/boot/filesystem.dir

8. FAT32パーティションへ必要なファイルをコピー
 uEnv.txt の入力
uenvcmd=fatload mmc 0 0x03000000 uImage && fatload mmc 0 0x02A00000 devicetree.dtb && bootm 0x03000000 - 0x02A00000

9. ZYBOにSDカードを入れてLinuxをブート

10. ユーザーでログイン

11. LEDをカウントアップするソフトウェアを実行(UIOの実習)
vi led4_axi_lslave_linux.c
cc -o led4_axi_lslave_linux led4_axi_lslave_linux.c
./led4_axi_lsalve_linux
ls -l /dev/uio*
sudo chmod 666 /dev/uio0
./led4_axi_lsalve_linux

12. NTPのインストール
apt-get update
apt-get update
apt-get install ntp
ln -sf /usr/share/zoneinfo/Japan /etc/localtime
sudo vi /etc/ntp.conf

server -4 ntp.nict.jp minpoll 4 maxpoll 10

/etc/init.d/ntp restart

13. SSHのインストール
apt-get install ssh
vi /etc/ssh/sshd_config
/etc/init.d/ssh restart

14. XmingでXウインドウをWindowsで操作

15. OpenCVインストール
sudo apt-get install cmake
wget ftp://ftp.jp.netbsd.org/pub/pkgsrc/distfiles/opencv-2.4.6.1.tar.gz
tar xvzf opencv-2.4.6.1.tar.gz
cd opencv-2.4.6.1
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

16. OpenCVサンプル・プログラムのコンパイル+顔認識アプリの実行
cd ../samples/c
./build_all.sh
./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_eye.xml" --scale=1.3 lena.jpg
  1. 2015年02月18日 04:25 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:8

コメント

ArchLinux で 「Vivado and ZYBO Linux勉強会資料3」 をやってみました。

FPGA初心者です。7月にZYBOを入手しました。目的はオーディオ音質向上のためです。FPGAで信号処理をしてI2SでADC/DACとつなげば有利と思って勉強中です。

インストール環境は、Windows7 64bit にVirtualBoxを入れて、そこにarchlinux-2015.08.01-dual.isoをインストールしました。

ArchLinuxでは幾つか壁がありました。
・Vivado(2014.4)を走らせるために、デスクトップ環境としてxfce4を導入した。
・Vivadoライセンスを取得するために、ip add tuntap dev eth0...で擬似のeth0とMACアドレスを設定し、xlicclientmgr でライセンスが取得出来た。
・64bit環境で32bitを走らせるため、lib32-glibc lib32-ncurses lib32-libstdc++5 をインストールした。
・LED4の点滅することを確認した。
・u-boot-Digilent-Devのクロスコンパイルでエラー発生。python3 を削除して、python2をインストールした。
・Linux-Digilent-Devのクロスコンパイルでエラー発生。bcをインストールした。
・このあと、SDカードに書き込み、ZYBOでlinaro-Linuxが起動したが、/dev/uio0が見えなかった。Ubuntu14.04でも同じ現象が発生した。
・そこで、devicetree.dtsファイルを編集して、 bootargs = ".... uio_pdrv_genirq.of_id=generic-uio"を追加したら、/dev/uio0が見えた。
これを見つけるまで、かなり苦労しました。
どうやら、最近の Linux-Digilent-Devでは、drivers/uio/uio_pdrv_genirq.cのgeneric-uioが削除されているようです。
ここに情報があります。
https://github.com/Xilinx/linux-xlnx/commit/7ebd62dbc727ef343b07c01c852a15fc4d9cc9e5
  1. 2015/08/27(木) 08:28:54 |
  2. URL |
  3. Shin #S9sSgZ3s
  4. [ 編集 ]

情報ありがとうございます。

Ubuntu 14.04で、Activation Based Licensesだとそのまま取れました。

後でやってみたいと思いますが、この情報を「Vivado and ZYBO Linux勉強会資料3」と「Vivado and ZYBO Linux勉強会資料2」の最初のページにShinさん提供ということで追加してよろしいでしょうか?

よろしくお願いします。
  1. 2015/08/27(木) 19:51:52 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

Vivado2015.4で試しています。

いつもありがたく拝見させて頂いています。

勉強資料3の内容を、ネイティブUbuntu14.04LTS 64bit上のVivado2015.4で試しています。
何点か資料と変わった点があったので報告します。

p.53のIPのVendor設定はいらなくなっています。
(最初からuser.orgが入っています。)

p.196(資料上は28 | 86と表記)のダウンロードアドレスが変更されています。
https://releases.linaro.org/archive/12.11/ubuntu/precise-images/ubuntu-desktop/linaro-precise-ubuntu-desktop-20121124-560.tar.gz

p.207(39 | 86)のパスはdtsファイル修正のせいか以下になっていました。
/sys/devices/soc0/amba@0

p.228(60 | 86)のopencv_pre_install.shは自動実行がうまく動作しなかったので、一行ずつ手動で実行しました。
libpngwriter0-dev, libpngwriter0c2, libtbb2, libtbb-devがエラーでインストールできませんでしたが、そのまま進めて現在make中です(長い・・・)。

また変わった点がありましたら報告します。

以上、よろしくお願いします。
  1. 2015/11/29(日) 20:33:25 |
  2. URL |
  3. yama #p6SOLzOE
  4. [ 編集 ]

yamaさん、報告して頂いてありがとうございました。
大事なところが変わっているので、本文を変更してアップロードし直したいと思います。
  1. 2015/11/30(月) 04:41:52 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

Arch Linux ARMが動作しました。

インストール出来なかったライブラリはあったものの、
OpenCVのfacedetectサンプルは無事動作しました。

追加でZedBoard用Arch Linuxが動作しましたので報告します。
以下archlinuxのRoot File Systemを入れる方法です。
(適当メモなので間違っている箇所や不要な箇所があるかもしれません。)

http://archlinuxarm.org/platforms/armv7/xilinx/zedboard
にあるZedBoard用イメージを使用します。

1.SDカードのフォーマットとパーティション設定
Linaro Ubuntuと同じです。

2.ROOT_FSへのRoot File Systemのコピー
以下のコマンドで書き出します。
# wget http://archlinuxarm.org/os/ArchLinuxARM-zedboard-latest.tar.gz
# sudo bsdtar -xpf ArchLinuxARM-zedboard-latest.tar.gz -C /media/name/ROOT_FS
※name部分は環境によります。

3.ZYBO_BOOTへの必要ファイルのコピー
Linaro Ubuntuと同じです。
Linaro Ubuntuと同じ手順で
SDカードを取り出してZYBOに差し込みます。

4.arclinuxの起動
Linaro Ubuntuと同じ手順で電源を入れます。
Linaro Ubuntuと同じ手順でシリアルコンソールを起動します。
ログイン画面が見えるので、
user : root
pass : root
でログインします。

5.DHCPの有効化
以下のコマンドでdhcpを有効にします。
# systemctl start dhcpcd@eth0.service
# systemctl enable dhcpcd@eth0.service

6.ロケール、キーマップの設定
以下のコマンドでlocale.genの
「ja JP.EUC-JP EUC-JP」「ja JP.UTF-8 UTF-8」をアンコメントして保存します。
# nano /etc/locale.gen

以下のコマンドで日本語のロケールを有効にします。
# locale-gen

以下のコマンドでlocale.confを作成します。
# nano /etc/locale.conf
以下の2行を書き保存します。
LANG=ja_JP.UTF-8
LC_MESSAGES=C

以下のコマンドでシステム規定のロケールは日本語になります。
(毎回自動で実行するには.profileなどに書く必要があります。)
# export LANG=ja_JP.UTF-8

7.CUI とキーマップの設定
以下のコマンドでvconsole.confを作成します。
# nano /etc/vconsole.conf
以下の1行を書き保存します。
KEYMAP=jp106

8.OSのタイムゾーンの設定
以下のコマンドでタイムゾーンを東京にします。
# ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

9.ホストネームの設定
以下のコマンドでhostnameを変更します。
# echo ZYBO > /etc/hostname
以下のコマンドでhostsファイルを編集します。
# nano /etc/hosts
以下のように変更します。
127.0.0.1 ZYBO localhost
::1 ZYBO localhost
※ZYBOの部分は好きなホスト名を付けられます。

10.システムの更新
ここで一度システムを更新します。
# pacman -Syu

11.rootパスワードの設定
以下のコマンドでrootパスワードを変更します。
# passwd

12.再起動
一度再起動します。
# shutdown -r now
再起動したら変更したパスワードでrootログインしてください。
表示されているホスト名は設定したものに変わっているはずです。

13.ユーザーの追加
以下のコマンドでzyboユーザーを追加します。
# pacman -S sudo
# useradd -m -g wheel zybo
# passwd zybo
# visudo
visudo ではDefaults env_keep += "HOME" 行と
%wheel ALL=(ALL) ALL 行をコメントアウトを外して保存します。
※zyboユーザー名とパスワードは好きなユーザー名とパスワードにできます。ssh用です。

14.X11Forwardingの設定
以下のコマンドでX11Forwardingできるようにします。
# pacman -S xorg-xauth xorg-xhost
以下のコマンドでsshd_configを編集します。
# /etc/ssh/sshd_config
以下の部分をコメントアウトを外しnoからyesにして保存します。
X11Forwarding yes
以下のコマンドでsshを再起動します。
# systemctl restart sshd.service

15.sshでログイン
ifconfigでIPアドレスを確認します。
以下のコマンドでリモート制御する側の別ターミナルからログインします。
# ssh -X -l zybo IPアドレス
※Linuxからの場合です。
 sshサーバーは最初から立ち上がっていたようです。
 この時点でふと気がつくと時刻が合っていました。

16.gcc環境
以降ssh側からの操作です。
以下のコマンドでgccをインストールします。
# sudo pacman -S gcc
これでled4_axi_lslave_linuxのコンパイルが出来る様になります。
デバイスの見え方やパーミッションの設定はLinaro Ubuntuと同じです。

17.opencvのインストール
以下のコマンドでopencvをインストールします。
# sudo pacman -S opencv opencv-samples pkg-config
以下のコマンドでサンプルの動作を確認できます。
(rootなのはご容赦下さい。)
# cd /usr/share/opencv/samples/c
# sudo chmod 755 ./build_all.sh
# sudo ./build_all.sh
# ./facedetect --cascade="/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="/usr/share/opencv/haarcascades/haarcascade_eye.xml" --scale=1.3 lena.jpg

参考文献:
ttps://wiki.archlinuxjp.org/index.php/Dhcpcd
ttp://hanjuku-am2.blogspot.jp/2013/04/vaio-type-parch-linux.html
ttp://d.hatena.ne.jp/uasi/20111121/1321804402
ttp://elinux.org/ArchLinux_Install_Guide
ttp://morf.lv/modules.php?name=tutorials&lasit=8
※投稿エラーになるのでh消しました。追加して下さい。
  1. 2015/12/01(火) 08:59:24 |
  2. URL |
  3. yama #p6SOLzOE
  4. [ 編集 ]

yamaさん、とっても詳しいレポートをして頂いて、本当にありがとうございました。
リンクが間違っているところだけでも早急に修正しようと思います。
今のところ忙しくて困っています。。。w
  1. 2015/12/02(水) 04:19:39 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

ありがとうございます

大変有益な情報有り難うございます.
おかげさまで,迷うこと無くARM+Xylinx環境を楽しむことが出来ました.

一点,コピペ用の文章ですが
uenvcmd fatload = mmc 0 0x03000000 uImage && fatload mmc 0 0x02A00000 devicetree.dtb && bootm 0x03000000 - 0x02A00000
ではなく,
uenvcmd=fatload mmc 0 0x03000000 uImage && fatload mmc 0 0x02A00000 devicetree.dtb && bootm 0x03000000 - 0x02A00000
ではないかと,思いましたので,報告させていただきます.
  1. 2016/07/26(火) 20:38:42 |
  2. URL |
  3. 岡田 #h9rI4sNg
  4. [ 編集 ]

ご指摘ありがとうございました。

ご指摘ありがとうございました。
ご指摘の通りです。修正させていただきました。

誤りのご指摘もうれしいですが、まだ、この資料でうまく行くことがわかってとっても嬉しいです。ありがとうございました。
これからもよろしくお願いいたします。
  1. 2016/07/26(火) 20:44:34 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


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

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