English | 日本語
概要 | 演習 1: SDSoC 開発環境の概要 | 演習 2: パフォーマンスの見積もり | 演習 3: アプリケーション コードの最適化 | 演習 4: 指示子を使用したアクセラレータの最適化 | |
演習 5: タスク レベルのパイプライン | 演習 6: デバッグ | 演習 7: ハードウェア デバッグ | 演習 8: エミュレーション | 演習 9: GitHub からのサンプルのインストール |
このチュートリアルでは、SDx IDE でインタラクティブ デバッガーを使用する方法を示します。
まず、デザインのターゲットをスタンドアロン オペレーティング システムまたはプラットフォームに設定し、SDx IDE を使用してスタンドアロン アプリケーションを実行して、アプリケーションをデバッグします。
このチュートリアルでは、アクセラレーションされたシステムで実行しているアプリケーションをデバッグします。
📌 注記: このチュートリアルは、ZC702 ボードがなくても終了できます。SDx プロジェクトを作成する際に、推奨されている [Matrix Multiplication and Addition] テンプレートが見つからない場合は、ボードと使用可能なアプリケーションの 1 つを選択してください。たとえば、より小型の Zynq-7000 デバイスを含む MicroZed ボードなどのボードの場合、使用可能なテンプレートに [Matrix Multiplication and Addition (area reduced)] アプリケーションがリストされます。このチュートリアルの学習目標は、どのアプリケーションでも達成できるようになっています。
手順 1: ボードの設定
ボードの UART ポートに接続するには mini USB ケーブルが必要です。これにより SDx IDE のシリアル ターミナルに通信できるようになります。この接続は、アプリケーション ソフトウェアからの出力 (情報メッセージを含む) を確認するのに必要です。ボードの Digilent ポートに接続するには Micro USB ケーブルも必要で、これによりビットストリームおよびバイナリをダウンロードできます。この接続は、ターゲット ボードでアプリケーションが起動される際に FPGA をプログラムするために必要です。イーサネット ケーブルも必要です。Linux TCF エージェントには、ターゲット ボードと通信するのにイーサネット リンクが必要です。最後に、SD カードから起動できるように、SD カード スロットのサイドのジャンパーが正しく設定されているかどうか確認します。
-
mini USB ケーブルを UART ポートに接続します。
-
JTAG モードが Digilent ケーブルを使用するように設定されており、Micro USB ケーブルが接続されていることを確認します。
-
DIP スイッチ (上の図の赤丸) を SD ブート モードに設定します。SD カードは挿入しないでください。
-
ボードに電源を投入します。
Windows で USB-UART
ドライバーと Digilent
ドライバーがインストールされるようにし、SDx IDE がボードと通信できるようにします。
ℹ️ 重要: ボードのジャンパーが SD ブートまたは JTAG ブートに設定されていることを確認します。このようにしておかないと、ボードが QSPI ブートなどのその他のモードでパワーアップし、QSPI デバイスまたはその他のブート デバイスからこの演習に関係のないものが読み込まれてしまいます。
手順 2: Standalone プロジェクトの作成
[Matrix Multiplication and Addition] デザイン テンプレートを使用して ZC702 プラットフォームおよびスタンドアロン OS の新しい SDx™ プロジェクト (lab6) を作成します。
SDx IDE でスタンドアロン プロジェクトを作成する手順は、次のとおりです。
- SDx IDE が起動します。
- [File] → [New] → [SDx Project] をクリックします。
- [Project Type] ページでは、デフォルトで [Application Project] がオンになっています。[Next] をクリックします。
- [Project name] フィールドにプロジェクト名を指定します (例: lab6)。[Next] をクリックします。
- [Platform] から [zc702] を選択します。[Next] をクリックします。
- [System Configuration] ドロップダウン リストから [Standalone] を選択します。[Next] をクリックします。
- [Available Templates] のリストから [Matrix Multiplication and Addition] を選択し、[Finish] をクリックします。
- [lab6] タブをクリックし (タブが表示されていない場合は [Project Explorer] ビューで project.sdx ファイルをダブルクリック)、[SDx Project Settings] の [HW functions] パネルで
mmult
およびmadd
関数がハードウェア関数としてマークされていることを確認します。 - ハードウェア関数としてマークされていない場合は、[Add HW Functions] ボタン
をクリックしてダイアログ ボックスを開き、ハードウェア関数としてマークします。[Matching items] リストで Ctrl キーを押しながら
mmult
とmadd
関数をクリックして選択します。[OK] をクリックして、両方の関数を [Hardware Functions] セクションに追加します。 - [Project Explorer] タブでプロジェクトを右クリックし、[Build Project] をクリックします。
SDx によりプロジェクトがビルドされます。ビルド プロセスのステータスを示すダイアログ ボックスが表示されます。
手順 3: デバッグ コンフィギュレーションの設定
デバッグ コンフィギュレーションを設定するには、次の手順に従います。
- [Project Explorer] ビューで lab6 プロジェクトの Debug フォルダーに含まれる最上位プロジェクト (
lab6
) をクリックし、ツールバーの [Debug] ボタンをクリックするか、[Debug] ボタンのプルダウン メニューから [Debug As] → [Launch on Hardware (SDx Application Debugger)] をクリックします。または、プロジェクトを右クリックし、[Debug As] → [Launch on Hardware (SDx Application Debugger)] をクリックします。 [Confirm Perspective Switch] ダイアログ ボックスが表示されます。
ℹ️ 重要: プロジェクトをデバッグする前にボードのスイッチがオンになっていることを確認してください。
-
[Yes] をクリックして [Debug] パースペクティブに切り替えます。
これで、SDx IDE が [Debug] パースペクティブになりました。デバッガーによりシステムがリセットされ、デバイスがプログラムおよび初期化され、main
関数で停止します。中央のパネルにソース コード、右上のパネルにローカル変数、右下のパネルに SDx ログが表示されます。 -
アプリケーションを実行する前に、シリアル ターミナルをボードに接続して、プログラムからの出力が表示されるようにする必要があります。[Connection Type]: Serial、[Port]: COM、[Baud Rate]: 115200 ボーに設定します。
手順 4: アプリケーションの実行
[Resume] アイコン をクリックしてアプリケーションを実行し、出力をターミナル ウィンドウで確認します。
📌 注記: ソース コード ウィンドウに
_exit
関数が表示され、[Terminal] タブに行列乗算アプリケーションからの出力が表示されます。
その他の演習
📌 注記: このセクションの手順は、オプションです。
アプリケーションを使用したデバッグ/ステップの方法、Linux アプリケーションのデバッグ方法について説明します。
コードのステップ スルー
[Debug] パースペクティブには、この演習では説明しなかったその他多くの機能が含まれます。最も重要なのは、デバッグするコードをステップ スルーする機能です。
- lab6 の [Debug] ビュー (Debug_lab6.elf を使用した System Debugger) でデバッグ階層を右クリックし、[Disconnect] をクリックします。
- 最上位のデバッグ フォルダーをもう 一度右クリックして、[Remove all Terminated] をクリックします。
- バグ アイコンをクリックしてデバッガーを起動し、[step-into]、[step-over]、[step-return] ボタンを使用してコードをステップ スルーします。
- コードをステップ スルーしながら、さまざまな変数の値を確認します。
Linux アプリケーションのデバッグ
SDSoC 環境で Linux アプリケーションをデバッグするには、次の手順に従います。
-
プロジェクトを作成し (例: lab6_linux)、[Platform] に [zc702] を、[System Configuration] に [Linux] を指定します。アプリケーション テンプレートのリストから [Matrix Multiplication and Addition] を選択します。
詳細は、新規プロジェクトの作成を参照してください。 -
[SDx Project Settings] の [HW functions] の表で、mmult および madd 関数がハードウェア インプリメンテーション用にマークされます。
詳細は、ハードウェア インプリメンテーション用の関数のマーク を参照してください。 -
プロジェクトをビルドして実行ファイル、ビットストリーム、SD カード ブート イメージを生成します。アクティブ ビルド コンフィギュレーションに [Debug] を使用します。
詳細は、ハードウェア アクセラレータを使用したデザインのビルドを参照してください。 -
ここでは、[Window] → [Show View] → [Other] をクリックし、[Terminal] → [Terminal] をクリックして起動した SDSoC 環境ターミナルを使用します。[Terminal] タブをクリックし、設定 ([Connection Type]: Serial、[Port]: COM、[Baud Rate]: 115200 ボー) を確認します。
COM ポート設定が表示されるようにするには、ボードに電源を投入する必要があります。 -
生成した
sd_card
ディレクトリの内容を SD カードにコピーして、SD カードを ZC702 ボードに挿入します。 -
ボードがイーサネット ケーブルを使用してコンピューターに接続されていることを確認します。
- ボードに電源を投入します。
- [Terminal] タブをクリックして、緑の [Connect] アイコンをクリックして、ターミナルをボードに接続します。 Linux のブート ログがターミナルに表示されます。
- ターミナル プロンプトが表示されたら、
ifconfig eth0 192.168.0.2
と入力して IP アドレスを設定します。コンピューターは、イーサネット アダプターが ZC702 ボードと同じサブネットワークにあるように設定する必要があります。- Windows ホスト システムで [コントロール パネル] → [ネットワークと共有センター] を開きます。
- [Ethernet] リンクをクリックして、イーサネット アダプターの [Ethernet Status] ダイアログ ボックスを開きます。
- [プロパティ] ボタンをクリックします。
- [インターネット プロトコル バージョン 4 (TCP/IPv4)] を選択し、[プロパティ] ボタンをクリックします。
- [全般] タブで [次の IP アドレスを使う] をオンにして
192.168.0.1
と入力します。[サブネット マスク] に対して 255.255.255.0 と入力します。 - [OK] をクリックします。すべてのダイアログ ボックスを閉じます。
サブネットワークに既に
192.168.0.1
のデバイスが含まれる場合は、別のアドレスを選択してください。192.168.0.x
で始まるアドレスはどれでも使用できます。 -
SDx 環境に戻り、[Target Connections] パネルで [Linux TCF Agent] を展開表示して [Linux Agent (default)] を右クリックし、[Edit] をクリックします。
-
[Target Connection Details] ダイアログ ボックスで IP アドレスとポート (1534) を設定します。
-
[OK] をクリックします。
-
[Project Explorer] ビューで ELF ファイルをクリックして選択し、ツールバーの [Debug] アイコンをクリック (または [Debug] アイコンのプルダウン メニューから [Debug As] → [Launch on Hardware (SDx Application Debugger)] をクリック) して、[Debug] パースペクティブに移動してコードを実行またはステップ実行します。
📌 注記: アプリケーションの出力は [Terminal] タブではなく [Console] タブに表示されます。
このチュートリアルを終了すると、次ができるようになります。
- SDx IDE を使用して、スタンドアロン アプリケーションをダウンロードして実行。
- オプションで SDx IDE でソース コードをステップ スルーして、さまざまなレジスタおよびメモリを確認。(ARM A9 で実行するコードに制限され、ハードウェア関数に変換されたコードには適用されない)。
Copyright© 2019-2019 Xilinx
この資料は表記のバージョンの英語版を翻訳したもので、内容に相違が生じる場合には原文を優先します。資料によっては英語版の更新に対応していないものがあります。日本語版は参考用としてご使用の上、最新情報につきましては、必ず最新英語版をご参照ください。