前回頑張ってVivadoでbitstreamまで出力出来ました。
今回でHelloWorldを出すところまで行きましょう。
SDK
今回はVivadoでなくSDKを開きます。Vivadoと同じようにインストールされたアプリでデスクトップにあると思います。
SDKを初めて起動するとプロジェクトフォルダをどこにするか聞かれます。
どこでも良いので設定しちゃいましょう。
ここでやることは3つです。
- さっきのBitstreamからプロジェクトを作る
- FSBLプロジェクトを用意されているものから作る
- HelloWorldプロジェクトを用意されているものから作る
1から行きましょう。「File」->「New」->「Other」を選びます。
「Hardware Platofmr Specification」を選びます。
ここで、Vivadoでさっきまで使っていたプロジェクトフォルダの中に .sdkっていう名前のフォルダがあるのでそれを開いてください。すると中に.hdfというファイルが出てきます。それを選択してください。
project nameを聞かれますが適当で大丈夫です。
そして、そのままFinishで作成しちゃいましょう。
するとプロジェクトページが開けるようになります。
もしWelcomeという画面が出ているだけで、プロジェクトが出てこない方はWelcomeを閉じてもらえれば登場するはずです。
sdkの最初の画面がまだ出ている人はそれ閉じられるので何とか閉じてください。
次にFSBLのプロジェクトをテンプレートから作成します。
FSBLは最初のほうでやったブートローダーのことです。
「File」->「New」->「Application Project」を押します。
Project nameはfsblなどにして他はそのままに Finishを押さずにNextを押してください。
するとテンプレートという元々用意されているものを選ぶ画面になります。「Zynq FSBL」というのがありますのでそれを選択し「FInish」します。
最後にHelloworldです。同じく「File」->「New」->「Application Project」でproject nameをhelloworldなどにします。
Nextを押してテンプレートから「Hello World」を選択します。
ここまででプロジェクトが3個と_bspってのが2個出来ていると思います。
これで完了です。
ボードを繋ぐ
ボードをPCにつなぎます。
ただし、FSBLのロード先をQSPIからJTAGに切り替えます。
後は前の設定のままUSBをPCにつなぎます。
ドライバーはVivadoをインストールした時に入っているのでつないですぐに認識されると思います。
ただ、ボードの電源を入れないと認識されないので電源は入れておいてください。
TeraTermを開く
今回のHelloWorldはシリアルポートから出てきます。HDMIではないです。
このボードのUSBはJTAGになっていてプログラム書き込んだりデバッグしたりでもできますが、USB-シリアルにもなっていますので繋いだ時にCOMポートがPCに追加されています。
TeraTermなどいつも使っているシリアル通信ソフトを起動してください。
COMポートが追加されていると思います。それを開きましょう
テンプレートのHelloWorldは通信速度が115kなので、通信速度を切り替えます。
設定のシリアルポートから変えられます。OKを押すだけで再起動しなくても設定の速度になります。
デバッグ開始
では、SDKに戻りましょう。
今繋がっているJTAG経由でデバッグします。
helloworldプロジェクトの中にDebugフォルダというのがあってその中にhelloworld.elfってのがあると思います。これを実行するのでこれを選んだ状態で「Run」->「Debug Configurations…」を押してください。
そしてXilinx C/C++ application(System Debugger)を選んだ状態で「New Launch Configuration」を選びます。New Launch Configurationは下にあるスクショにもありますが、Xilinx C/C++ application(System Debugger)などが出ている場所の上にある新規ファイルのようなボタンがそれです。
それを押すと自動的に下のスクショのようなものが出てくると思います。
ここで重要なのはHardwarePlatformに別プロジェクトとしてHardware Platform Specificationで作ったやつが選ばれていてInitialization fileがps7_init.tclになっていることです。また、bitstreamもVivadoで頑張って作ったbitstreamが選択されています。それぞれ、おそらくNewで作った最初からそうなっていると思います。このために新しいDebugConfigrationを作ったのです。あとはこのまま右下のDebugを押せば始まります。TeraTermが動いていることと、ボードがJTAG側になっていて、USBで電源が入った状態で繋がっていることを確認して下さい。
デバッグ画面を開いてないのでこういうことを聞かれると思いますがYESを押します。
また、「FPGAのコンフィグレーションないけどいいの?」と聞かれますが、これもOKを押します。
書き込みが終わりデバッグ状態になるとこんな感じの画面になるはずです。
これは今main関数のところでブレークポイントで止まっています。
動かしちゃいましょう。
動かすには
再開ボタンを押せばOKです。緑のPlayボタンの右にある黄色と緑の三角のボタンです。
ちなみにその左にある青丸に線のボタンはbreakpointを無効にするボタンです。今回はとにかく動かしたいので外しちゃいましょう。
で、再開ボタンを押すと、起動していたTeraTermに文字が出てくるはず。
やったね!
ただUARTするだけですんごい大変でしたね(笑)
今回はテンプレートから作っただけで、何もしていません。
次回は実際にFPGAを使って見るところをやってみます。
helloworldを表示するCのソースの print(“xxxxx”);の文字を変更して、ソースをセーブして、実行したら、変更した文字を表示してくれました。vivado 2017.2 sdkは、インタプリッタなのでしょうか? それとも、ソースをセーブした時に、自動的にコンパイルしてくれているのでしょうか?
お世話になります。
XXXX.sdkディレクトリの XXXX.hdf ファイルは、どのような意味合いのファイルなのでしょうか?