今回やること
前回でLEDを華麗に点灯させる予定だったが、softwareをjtag経由で書くときに以下のようなエラーが発生してしまった。今回は延長戦ということで、以下のErrorを解決したい。
ERROR : no targets found with “name =~ “microblaze*#0″ && bscan==”USER2” && jtag_cable_name =~ “Digilent Zybo 210279574966A””. available targets:
1* APU
2 ARM Cortex-A9 MPCore #0 (Running)
3 ARM Cortex-A9 MPCore #1 (Running)
4 xc7z010
環境
Windows10
Vivado HLx 2018.3: WebPACK
ZYBO
まずはググる
エラーメッセ―ジから適当に抜き出して検索すると、私とほぼ同じ症状をXilinxのフォーラムで発見。
英語なので必要な部分だけ意訳すると、以下の3つを確認してねと書いてある。
1. PLブロックがコンフィギュレーションされていること。
2.MicroBlazeに、DEBUGポートに接続されたMDM coreがあること。 無かったらホストが JTAGに接続できないよ。
3. クロックが供給されていること。
試しにMicroblazeに供給しているCLKでLED点滅するようにzybo_top.vを変更してConfigurationしたらLEDは点滅した。ということはPLブロックはコンフィギュレーションされているし、クロックも供給されているので1、3は関係なさそう。どうやら2が原因っぽい。MDM coreなんて入れた記憶が無いし。冷静に考えたら製品とかにMicroblaze入れるならROMからbootするだろうし、JTAGから書くのはイレギュラーなのかも。
MicroblazeにMDM coreを設定
とりあえずMDM coreを調べてみるが、ゴッツい資料が多くて理解するのに骨が折れそう。いったんSDKは置いといてVivadoに戻り、生成済みのMicroblaze IP Coreをダブルクリックして設定を確認する。「Enable Debug Support」と書いてある。もしかしてこれかな?
ここをDEBUG&UARTにしてみて、OKを押してGenerateする。あとはBitstream Generateまで実行。
ハードウェアエクスポートをやり直す
変更内容を反映させるため、VivadoのFileからHardware Exportをやり直す。前回と同じようにデフォルトのままOKを押すと、ファイルを上書きするか聞かれるので、Yesを選択。
そしてSDKに戻ると、自動的に以下のWarningが表示された。ハードウェアファイルの更新を検知して、SDKの設定内容をハードウェアに同期変更されるか聞かれているので、Yesを選択。
これで準備万端。
LEDを点灯させる
前回と同じようにFPGAをConfigurationし、ソフトウェアをRunさせたところ……
動いた!ちゃんとSDKのソースコードに書いたパターンで点灯している。でもよく考えたらこれ点滅だから点灯だから、厳密に言うとLチカ(LEDチカチカ)ではないかも。気が向いたら、割り込みとか使ってチカチカさせてみたいと思う。
参考文献
公式のドキュメントが以下にあるので、参照しながら進めていきます。
https://japan.xilinx.com/support/documentation-navigation/design-hubs/dh0020-microblaze-hub.html
ZYBOで遊ぼう日記まとめ
ZYBO関係の記事は、大まかな内容ごとに以下にまとめています。
https://wakky.tech/zybo/