FPGAの部屋

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

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

2014年08月

ZYBO用のEmbedded Linux チュートリアル4(IP追加、インプリメント)”の続き。

前回までで、PL部のハードウェアを構築した。今回は、U-Bootをビルドする。

Embedded Linux® Hands-on Tutorial for the ZYBO™”の”2 Compile U-Boot (Optional)”をやってみる。

2.2

・U-bootのソースコードをDigilent社のリポジトリから取得する。ZYBO用のソースコードが入っているのは、Figure 32. Next-repository.だった。

1.次のgit コマンドで、U-BootのソースコードをDigilent社のリポジトリから取得した。
git clone -b master-next https://github.com/DigilentInc/u-boot-Digilent-Dev.git
e70f35f0.png


2.cd u-boot-Digilent-Dev コマンドで、u-boot-Digilent-Dev ディレクトリに入る。

3.ZYBO用のコンフィギュレーションを行う。チュートリアルはZYBOが大文字だが、小文字でないと通らない。
make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zybo_config
3e6ae335.png


4.U-Bootのビルドを行う。
make CROSS_COMPILE=arm-xilinx-linux-gnueabi-
a3aae726.png


5.u-boot ができた。成功。
74bfc7e3.png


6.u-boot を Windows7 のZ:\ZYBO_BS_emlx\sd_image フォルダに、u-boot をコピーして、u-boot.elf に名前を変更した。
eec975e5.png


ZYBO用のEmbedded Linux チュートリアル6(BOOT.bin の生成)”に続く。

ZYBO用のEmbedded Linux チュートリアル3(myLed IPコアの作製2)”の続き。

・myLed IP をブロック・デザインで追加する。

51.Diagramウインドウに空いている所で、右クリックし、右クリックメニューから Add IP... を選択した。
56302fbb.png


52.myと入力すると、myLed_v1.0 が出てくるので、クリックしてからリターン・キーを押した。
0c403dbd.png


53.調度良い所に、myLed_v1.0 が挿入された。
45522c60.png


54.引用しているチュートリアルでは、 Run connection automationが出ているようだが、今回は出ていないので、自力で接続する。myLed_0 の S_AXI ポートを右クリックして、右クリックメニューから Make Connection... を選択した。
45966c94.png


55.Make Connection ダイアログが表示された。processing_system7_0axi_periph の M00_AXI ポートに接続できるようだ。M00_AXI を選択して、OKボタンをクリックした。
d03b9b3f.png


56.processing_system7_0axi_periph の M00_AXI ポートから、myLed_0 の S_AXI ポートまで接続された。
deb7e752.png


57.残っている LEDs_4BITs ポートを削除して、s_axi_aclk と s_axi_aresetn を手動で接続した。
b6327e9d.png


58.myLed_0 の led[3:0] ポートを右クリックして、右クリックメニューから、Create Port... を選択した。
564692d9.png


59.Create Port ダイアログが表示された。デフォルトのまま、OKボタンをクリックした。
80f5807f.png


60.led[3:0] ポートが作られ、myLed_0 の led[3:0] ポートと接続された。
e47d8d5d.png


61.”Embedded Linux® Hands-on Tutorial for the ZYBO をやってみた”さんで、

Address Editor上でmyLed_0はUnmapped slavesのままなので,myled_0を選択してAuto Assign Addressを実行する.

ということなので、Addressタブをクリックして、割り当てられているアドレスを見た。
3b0220f2.png


・やはり myLed_0 はアドレスが割り当てられていない。

62.myled_0 を右クリックして、右クリックメニューから Auto Assign Address を選択した。
2b9c43c0.png


63.myLed_0 は、0x43C30000 番地にマップされた。
29208176.png


・本当はブロック・デザインをバリデーションした方が良いが、今回は忘れてしまった。

64.ブロック・デザインをセーブする。

65.Sourcesウインドウで、base.xdc を開く。7行目から11行目の制約が古いポート名になっているので、それを led に変更する。
f9d3e6c7.png


66.置換する leds_4bits_tri_o を選択して、右クリックし、右クリックメニューから Replace in Files... を選択した。
79a70d81.png


67.base.xdc の leds_4bits_tri_o を含んだ行が表示された。Replace All ボタンをクリックした。
fc55b394.png


68.すべて led に置換された。
f42095f5.png


69.base.xdc をセーブした。

70.Generate Bitstream をクリックして、ビットストリームを生成する。
054fa6fa.png


71.ダイアログが出て、論理合成とインプリメントをやるかというので、Yesボタンをクリックした。
054fa6fa.png


72.論理合成の途中で、2つほど、Critical Message が出たが、OKボタンをクリックした。
4a83c8e1.png


73.論理合成、インプリメント、ビットストリームの生成が終了した。問題なく成功した。
b457c74d.png


97a55ef8.png


2ba657e1.png


ZYBO用のEmbedded Linux チュートリアル5(U-Bootのビルド)”に続く。

ZYBO用のEmbedded Linux チュートリアル2(myLed IPコアの作製1)”の続き。

35.Sources ウインドウで、myLed_v1_0 を展開して、myLed_v1_0_S_AXI.v を選択した。
9ba1659a.png


36.myLed_v1_0_S_AXI.v の18行目に”output wire [3:0] led,”を追加した。
c747ddb4.png


37.myLed_v1_0_S_AXI.v の400行目に”assign led = slv_reg0[3:0];”を追加した。
d3a69daa.png


38.myLed_v1_0.v の18行目に”output [3:0] led,”を追加した。
1f9cf25c.png


39.myLed_v1_0.v の51行目に、Ledのポート接続を追加した。
bc0495c3.png


40..myLed_v1_0_S_AXI.v と myLed_v1_0.v をセーブして、追加した Verilog HDL コードをテストするため、論理シミュレーションのコンパイルを行う。
8311b8aa.png


41.正常にコンパイルされた。エラーは無かった。なお、テストベンチを作成していないため、波形は X や Z ばかりとなる。
d0fbc228.png


42.次は、myLed のIP化だ。Package IP の IP Identification 画面は、”ZYBO用のEmbedded Linux チュートリアル2(myLed IPコアの作製1)”の34.にすでに示してある。

43.IP Compatibility 画面。
6e4c0b08.png


44.IP File Groups 画面。ここで、IPのファイル構成がわかる。
b6d9a55b.png


45. IP customization Parameters 画面。上の Merge changes from IP Customization Parameters Wizard をクリックした。
e7d1a382.png


46.処理後のIP customization Parameters 画面。
9bb39a52.png


47.IP Ports and Interfaces 画面。Led ポートがあった。
1a93dece.png


48.IP Addressing and Memory 画面。AXI Slave Lite ではなく、AXI Slave だった。
4c39ee61.png


49.IP GUI Customization 画面。
07db6741.png


50.Review and Package 画面。Re-Package IP ボタンをクリックした。
a1296a45.png


myLed IP の作製は完了だ。

”ZYBO用のEmbedded Linux チュートリアル4(IP追加、インプリメント)”に続く。

ZYBO用のEmbedded Linux チュートリアル1(IPのアップグレード)”の続き。

23.DiagramウインドウのLEDs_4Bits を右クリックし、右クリックメニューから Delete を選んで削除する。
791ca2a9.png


24.LEDs_4Bits を削除後のDiagramウインドウ。
c76ade46.png


・IPを作る前に、IP Settings のデフォルト設定を Digilent に変更する。

25.Flow Navigator のProject Manager -> Project Settings をクリックした。
120ede26.png


26.IPをクリックして、Packager タブをクリックすると、Vender が marsee になっていた。
34acac3d.png


27.このままで良いのだが、Digilent に変更した。
113dffb8.png


・myLed IPコアを作製する。

28.Tools メニューからCreate and Package IP ... をクリックした。
7d54532d.png


29.Create and Package New IP ダイアログをが開いた。Next > ボタンをクリックした。
89c93e77.png


30.Create a new AXI4 peripheral のラジオボタンをクリックして、Next > ボタンをクリックした。
b2aa850b.png


31.Peripheral Details で、Nameに myLed、 Display name に myLed_v1.0 (これは自動的に入力された)、Dscription に My Led IP と入力した。Next > ボタンをクリックした。
cd153e41.png


32.Add Interfaces で、Name を S00_AXI から S_AXI に変更した。
7b9ca56a.png


33.Edit IP のラジオボタンをクリックした。Finish ボタンをクリックした。
e23f490f.png


34.edit_myLed_v1_0 プロジェクトが立ち上がった。
3595be4a.png


ZYBO用のEmbedded Linux チュートリアル3(myLed IPコアの作製2)”に続く。

ZYBO用のLinuxをビルドしようと思う。Digilent社のZYBOのWebページに置いてあるPDFファイルの”Embedded Linux® Hands-on Tutorial for the ZYBO™”をやってみようと思っている。一旦、チュートリアルをやってから、好みの設定にしてみようと思っている。

すでに、このチュートリアルを行った”Being a nerd engineer”さんの”Embedded Linux® Hands-on Tutorial for the ZYBO をやってみた”を参考にさせて頂きます。
注:Windows 7, 8 は、パス文字が260文字までの制限があります。Vivado はプロジェクト名を付けてフォルダを掘っていくので、容易に制限を超えてしまいます。その為、パスを短くするために、Windows の subst コマンドでフォルダにドライブを割り当てて、パスの長さを短くしています。詳しくは、”ZYBO用ビットマップ・ディスプレイ・コントローラの作製4(デバック、論理合成)”をご覧ください。)

このチュートリアルは、Digilent社のZYBOのWebページZYBO Base System Design をベースに、my_Ledを追加したハードウェアを使用する。
このチュートリアルで使用しているツールは、CentOS 6 x86_64 上のVivado 2014.1 だが、私はWindows 7 上のVivado 2014.2 とVirtualBox上のUbuntu 14.04 LTS でやってみようと思っている。

1.1
1.ZYBO Base System Designをダウンロードして、Zドライブに置いた。

2.フォルダ名を zybo_base_system から ZYBO_BS_emlx に変更した。

1.2
3.Z:\ZYBO_BS_emlx\source\vivado\hw\zybo_bsd\zybo_bsd.xpr をダブル・クリックして、Vivado 2014.2 を起動した。
9e8c70ba.png


4.バージョンが違うからなのか、Vivado 2014.2 が立ち上がっただけだった。

5.Quick Start の Open Project をクリックする。
99a7940c.png


6.Open Project ダイアログで、zybo_bsd.xpr をクリックして、OKボタンをクリックした。
5cb74b99.png


7.Vivado 2014.2 が立ち上がった。
7ae44b4d.png


8.Sources ウインドウの system_wrapper.v を展開して、ブロック・デザインの system_i をダブル・クリックして、ブロック・デザインを表示した。

9.この時にブロック・デザインが Read Only になってしまった。

10.Vivado を閉じて、Explorerのプロパティから読み取り専用チェックを外して、サブフォルダまで適用した。

11.もう一度、Vivado 2014.2 を起動して zybo_bsdプロジェクトを開いたがやはり、Read Onlyだった。

12.C:\Users\Masaaki\Documents\Vivado\Zynq\ZYBO\ZYBO_BS_emlx\source\vivado\hw\zybo_bsd\zybo_bsd.xpr を右クリックして、右クリックメニューからプロパティを選ぶ。(注:Z:\ZYBO_BS_emlx\source\vivado\hw\zybo_bsd\zybo_bsd.xpr をダブル・クリックしてもアップグレード出来ないので、Cドライブから起動する必要があるようです。)

13.プロパティ・ダイアログにブロックの解除ボタンがあるので、それをクリックする。
ZYBO_EM_Linux_5_140827.png

これでブロックが解除された。

14.C:\Users\Masaaki\Documents\Vivado\Zynq\ZYBO\ZYBO_BS_emlx\source\vivado\hw\zybo_bsd\zybo_bsd.xprをダブル・クリックして Vivado 2014.2 を立ちあげた。

15.Older Project Version ダイアログが表示された。これで正常だ。

16.Automatically Upgrade to the current version のラジオボタンがクリックされているので、そのままOKボタンをクリックした。
b3e88065.png


17.Project Upgrade ダイアログが表示された。Report IP Status ボタンをクリックした。
ZYBO_EM_Linux_7_140827.png

18.Vivado のIP Status ウインドウにUpgrade Selected ボタンが表示され、クリックした。
ed5c0b33.png


19.Upgrade IP ダイアログが表示された。OKボタンをクリックした。
5fbde0e2.png


20.IPのアップグレードが終了し、Diagramウインドウが表示された。
af00017a.png


21.一旦、Vivado プロジェクトを閉じて、もう一度、Z:\ZYBO_BS_emlx\source\vivado\hw\zybo_bsd\zybo_bsd.xpr をダブル・クリックして、Vivado 2014.2 を起動する。

22.system ブロック・デザインを開いた。
9a879858.png


ZYBO用のEmbedded Linux チュートリアル2(myLed IPコアの作製1)”に続く。

↑このページのトップヘ