5. Zynq VivadoのbitstreamからSDKでHello worldを出す

前回頑張ってVivadoでbitstreamまで出力出来ました。
今回でHelloWorldを出すところまで行きましょう。

SDK

今回はVivadoでなくSDKを開きます。Vivadoと同じようにインストールされたアプリでデスクトップにあると思います。

SDKを初めて起動するとプロジェクトフォルダをどこにするか聞かれます。

vivado43

どこでも良いので設定しちゃいましょう。
ここでやることは3つです。

  1. さっきのBitstreamからプロジェクトを作る
  2. FSBLプロジェクトを用意されているものから作る
  3. HelloWorldプロジェクトを用意されているものから作る

1から行きましょう。「File」->「New」->「Other」を選びます。

vivado44

 

「Hardware Platofmr Specification」を選びます。

vivado45

 

ここで、Vivadoでさっきまで使っていたプロジェクトフォルダの中に .sdkっていう名前のフォルダがあるのでそれを開いてください。すると中に.hdfというファイルが出てきます。それを選択してください。

vivado46

project nameを聞かれますが適当で大丈夫です。
そして、そのままFinishで作成しちゃいましょう。

vivado47

するとプロジェクトページが開けるようになります。
もしWelcomeという画面が出ているだけで、プロジェクトが出てこない方はWelcomeを閉じてもらえれば登場するはずです。

vivado48

sdkの最初の画面がまだ出ている人はそれ閉じられるので何とか閉じてください。

次にFSBLのプロジェクトをテンプレートから作成します。
FSBLは最初のほうでやったブートローダーのことです。
「File」->「New」->「Application Project」を押します。

vivado49

Project nameはfsblなどにして他はそのままに Finishを押さずにNextを押してください。

vivado50

するとテンプレートという元々用意されているものを選ぶ画面になります。「Zynq FSBL」というのがありますのでそれを選択し「FInish」します。

最後にHelloworldです。同じく「File」->「New」->「Application Project」でproject nameをhelloworldなどにします。

vivado51

 

Nextを押してテンプレートから「Hello World」を選択します。vivado52

ここまででプロジェクトが3個と_bspってのが2個出来ていると思います。

vivado53

 

これで完了です。

ボードを繋ぐ

ボードをPCにつなぎます。
ただし、FSBLのロード先をQSPIからJTAGに切り替えます。

2014-12-30 16.17.11

後は前の設定のままUSBをPCにつなぎます。
ドライバーはVivadoをインストールした時に入っているのでつないですぐに認識されると思います。
ただ、ボードの電源を入れないと認識されないので電源は入れておいてください。

TeraTermを開く

今回のHelloWorldはシリアルポートから出てきます。HDMIではないです。
このボードのUSBはJTAGになっていてプログラム書き込んだりデバッグしたりでもできますが、USB-シリアルにもなっていますので繋いだ時にCOMポートがPCに追加されています。

TeraTermなどいつも使っているシリアル通信ソフトを起動してください。
COMポートが追加されていると思います。それを開きましょうvivado58

テンプレートのHelloWorldは通信速度が115kなので、通信速度を切り替えます。
設定のシリアルポートから変えられます。OKを押すだけで再起動しなくても設定の速度になります。

vivado59

 

デバッグ開始

では、SDKに戻りましょう。
今繋がっているJTAG経由でデバッグします。

helloworldプロジェクトの中にDebugフォルダというのがあってその中にhelloworld.elfってのがあると思います。これを実行するのでこれを選んだ状態で「Run」->「Debug Configurations…」を押してください。

vivado_100

そしてXilinx C/C++ application(System Debugger)を選んだ状態で「New Launch Configuration」を選びます。New Launch Configurationは下にあるスクショにもありますが、Xilinx C/C++ application(System Debugger)などが出ている場所の上にある新規ファイルのようなボタンがそれです。
それを押すと自動的に下のスクショのようなものが出てくると思います。

vivado54

ここで重要なのはHardwarePlatformに別プロジェクトとしてHardware Platform Specificationで作ったやつが選ばれていてInitialization fileがps7_init.tclになっていることです。また、bitstreamもVivadoで頑張って作ったbitstreamが選択されています。それぞれ、おそらくNewで作った最初からそうなっていると思います。このために新しいDebugConfigrationを作ったのです。あとはこのまま右下のDebugを押せば始まります。TeraTermが動いていることと、ボードがJTAG側になっていて、USBで電源が入った状態で繋がっていることを確認して下さい。

デバッグ画面を開いてないのでこういうことを聞かれると思いますがYESを押します。

vivado55

また、「FPGAのコンフィグレーションないけどいいの?」と聞かれますが、これもOKを押します。

書き込みが終わりデバッグ状態になるとこんな感じの画面になるはずです。
これは今main関数のところでブレークポイントで止まっています。
動かしちゃいましょう。
動かすには

vivado56

再開ボタンを押せばOKです。緑のPlayボタンの右にある黄色と緑の三角のボタンです。

vivado56

ちなみにその左にある青丸に線のボタンはbreakpointを無効にするボタンです。今回はとにかく動かしたいので外しちゃいましょう。
で、再開ボタンを押すと、起動していたTeraTermに文字が出てくるはず。

vivado57

やったね!

ただUARTするだけですんごい大変でしたね(笑)
今回はテンプレートから作っただけで、何もしていません。
次回は実際にFPGAを使って見るところをやってみます。

“5. Zynq VivadoのbitstreamからSDKでHello worldを出す” への2件のフィードバック

  1. たなか ひでおのアバター
    たなか ひでお

    helloworldを表示するCのソースの print(“xxxxx”);の文字を変更して、ソースをセーブして、実行したら、変更した文字を表示してくれました。vivado 2017.2 sdkは、インタプリッタなのでしょうか? それとも、ソースをセーブした時に、自動的にコンパイルしてくれているのでしょうか?

  2. たなか ひでおのアバター
    たなか ひでお

    お世話になります。

    XXXX.sdkディレクトリの XXXX.hdf ファイルは、どのような意味合いのファイルなのでしょうか?

コメントを残す