もくじ
はじめに
インテル® SoC FPGA では、Linux 起動時に U-Boot を使用しますが、この U-Boot には様々な機能があり、デバッグや開発時に活用できます。
この記事では、Cyclone® V SoC をターゲットにインテル® SoC FPGA エンベデッド開発スイート(以後、SoC EDS)に付属の統合開発環境である、Arm® Development Studio 5 Intel® SoC FPGA Edition(以後、DS-5)デバッガー上から、2019.04 以降の新しい U-Boot を起動する方法について紹介します。
DS-5 から U-Boot を起動することにより、処理を行った時のメモリーやレジスターの状態を DS-5 上から見ることができ、DS-5 上から特定の処理に関してブレークをかけることができます。
参考:
この記事では、Cyclone® V SoC をターゲットに説明していますが、Arria® V SoC についても同様の手順で対応可能です。
参考:
この記事では U-Boot のビルド手順は扱いません。予め以下のページを参考にビルドを済ませておいてください。
SoC EDS v19.1 Std / v19.3 Pro から変更された新しいブートローダー生成フローの動作確認(Cyclone® V SoC/Arria® V SoC 編)
参考:
インテル® Arria® 10 SoC をご使用の方は、以下の記事ページをご参照ください。
DS-5 デバッガ―で新しい U-Boot(v2019.04 以降)を起動する方法(Arria® 10 SoC 編)
この記事では、Cyclone® V SoC をターゲットにインテル® SoC FPGA エンベデッド開発スイート(以後、SoC EDS)に付属の統合開発環境である、Arm® Development Studio 5 Intel® SoC FPGA Edition(以後、DS-5)デバッガー上から、2019.04 以降の新しい U-Boot を起動する方法について紹介します。
DS-5 から U-Boot を起動することにより、処理を行った時のメモリーやレジスターの状態を DS-5 上から見ることができ、DS-5 上から特定の処理に関してブレークをかけることができます。

この記事では、Cyclone® V SoC をターゲットに説明していますが、Arria® V SoC についても同様の手順で対応可能です。

この記事では U-Boot のビルド手順は扱いません。予め以下のページを参考にビルドを済ませておいてください。
SoC EDS v19.1 Std / v19.3 Pro から変更された新しいブートローダー生成フローの動作確認(Cyclone® V SoC/Arria® V SoC 編)

インテル® Arria® 10 SoC をご使用の方は、以下の記事ページをご参照ください。
DS-5 デバッガ―で新しい U-Boot(v2019.04 以降)を起動する方法(Arria® 10 SoC 編)
以下、手順の説明に入ります。
1. DS-5 の起動
Linux OS 上で作業する場合は、まず最初に端末(ターミナル)を起動します。
続けて、ターミナル上で 「embedded_command_shell.sh」 を実行することで SoC EDS 用の環境変数設定が行われたシェル環境が立ち上がるので、そのまま「eclipse &」と入力した上で Enter キーを入力します。

【図 1】 eclipse & と入力して DS-5 を起動
DS-5 のスプラッシュ画面が表示された後に ワークスペース の選択画面が表示されるので、提案されたディレクトリー(図 2 の例では、/home/<user>/DS-5-Workspace)または、任意のディレクトリーを指定します。

【図 2】 ワークスペース選択画面
DS-5 をはじめて起動したときに表示される「ようこそ」画面はすぐに閉じて構いません。
はじめて指定した ワークスペースの場合は、以下のようにプロジェクトが空の状態で起動します。

【図 3】 はじめて指定した ワークスペース の Eclipse 画面
2. プロジェクトの作成
次に U-Boot 用の DS-5 プロジェクトを作成します。
「ファイル」メニューから「新規」→「Makefile Project with Existing Code」を選択してください。

【図 4】 「Makefile Project with Existing Code」を選択
「新規プロジェクト」ウィンドウが表示されるので、"プロジェクト名" (図 5 の例では、cv_uboot_project)を指定し、"既存のコードの場所" の項目に U-Boot を含む BSP プロジェクトの所在を指定します。
所在は[参照...]ボタンをクリックして別ウィンドウで指定可能です。
図 5 の例では下記の別記事ページで、Cyclone® V SoC 用 SD カードブート向けの U-Boot を作成した場所(/home/<user>/cv_example.sdmmc/cv_soc_devkit_ghrd/software/bootloader)を指定しています。
SoC EDS v19.1 Std / v19.3 Pro から変更された新しいブートローダー生成フローの動作確認(Cyclone® V SoC/Arria® V SoC 編)
SoC EDS v19.1 Std / v19.3 Pro から変更された新しいブートローダー生成フローの動作確認(Cyclone® V SoC/Arria® V SoC 編)
その他の項目は編集不要です。所在の指定が終わったら[終了]ボタンをクリックします。

【図 5】 新規プロジェクトの作成
図 6 のように、プロジェクト・エクスプローラー内にプロジェクト(青枠)が追加されれば、プロジェクトの作成は成功です。
但し、プロジェクト内にもともと含まれている uboot.ds デバッグスクリプト・ファイルでは、DS-5 による U-Boot のデバッグを正しく行うことができません。
この記事では、v2019.04 以降の新しい U-Boot に対応したデバッグスクリプト・ファイル uboot.ds と preloader.ds のサンプルを添付しています。
これらのデバッグスクリプト・ファイルをダウンロードしていただき、作成したプロジェクトにドラッグ&ドロップして上書きコピーしてください。

【図 6】 uboot.ds と preloader.ds をプロジェクトにドラッグ & ドロップして上書きコピー
3. デバッグの構成設定
デバッグ用の設定を行うために、「実行」メニューから「デバッグの構成...」を選択してください(プロジェクト・エクスプローラーの右クリックメニューからも選択可能です)。

【図 7】 「実行」メニューから「デバッグの構成...」を選択
「デバッグ構成」ウィンドウが起動したら、ウィンドウ左側のメニューにある「DS-5 デバッガ」を右クリックして「新規」を選択してください。この操作により新規の構成が生成されます。

【図 8】 新規デバッグ構成の作成
設定項目が多数のタブメニューに分かれていますが、今回の作業で設定が必要となる項目は、「接続」タブと「デバッガ」タブの 2つのみです。
以下、各タブの設定内容を示します。
3-1. 「接続」タブの設定
“ターゲットの選択” を「Intel SoC FPGA ⇒ Cyclone V SoC (Dual Core) ⇒ Bare Metal Debug ⇒ Debug Cortex-A9_0」とします。
その他、赤枠内の項目全てをデバッグ対象の環境に合わせて設定します。

“接続” の指定は[参照...]ボタンをクリックして、別ウィンドウに表示されるリストから選択しますが、事前にターゲットボードをインテル® FPGA ダウンロード・ケーブル(USB-Blaster)で接続して、電源を ON にしておく必要があります。

Linux OS 環境で インテル® FPGA ダウンロード・ケーブル(USB-Blaster)を使用する場合は、 udev に USB デバイスの識別ルール(ID)を登録する必要があります。
尚、“名前”(下図の青線部分)の編集により、新規作成したコンフィグレーションに任意の名前を指定可能です(この例では、cv_uboot_debug と指定しています)。

【図 9】 「接続」タブの設定
3-2. 「デバッガ」タブの設定
下記の画面イメージ(赤枠)と同じ内容に設定してください。
“デバッガスクリプト” の指定と、“ソース検索ディレクトリ” の指定は、いずれも[ワークスペース...]ボタンから指定できます。
設定が終わったら[適用]ボタンをクリックして設定内容を保存します。コンフィグレーションの名前を変更している場合は、保存契機でウィンドウ左側の表示項目(青枠)にも変更後の名前が反映されます。

【図 10】 「デバッガ」タブの設定
4. デバッグ開始
[デバッグ]ボタンをクリックするとデバッグを開始します。

【図 11】 [デバッグ]ボタンをクリック
デバッグ・パースペクティブ(デバッグ用の画面配置)への切替え確認メッセージが出るので
[はい]をクリックします。
[はい]をクリックします。

【図 12】 デバッグ・パースペクティブへの切替え確認メッセージ
デバッグ・パースペクティブに切り替わり、ターゲットとの接続が開始したら接続完了を待ちます。
進行状況は、“コマンド” ビューのログおよびプログレスバーで確認してください。

【図 13】 ターゲットとの接続進行状況
5. デバッグ接続完了
正常に接続が完了すると、関数:board_init_r の先頭付近のブレークポイントで停止します。

【図 14】 デバッガーとの接続完了状態
この時点で、UART のターミナルには以下のようなログが表示されます。

【図 15】 UART のターミナルログ
まとめ
以上の手順で DS-5 から U-Boot をロードして実行開始させることができます。あとは、デバッガーを操作してデバッグを行ってください。
DS-5 上のデバッグ制御ウィンドウの ”続行”
ボタン(または、F8 キー)操作で U-Boot を最後まで実行させると、U-Boot のコンソールが有効になり、U-Boot を使用したコマンド入力による各種デバックを実行できます。


【図 16】 U-Boot のコンソールが有効になり各種コマンドが利用可能
FPGA にアクセスする際にはブリッジの解除を忘れないようにしてください。
ブリッジは以下コマンドで解除できます。
$ bridge enable
このように実は意外と簡単に DS-5 から U-Boot を起動できるんです。
みなさんも是非、ご活用ください!
関連記事へのリンク
ブートローダー、U-Boot に関連して、以下の記事も参考にしてください:
添付サンプル
この記事の説明で使用した、Cyclone® V SoC / Arria® V SoC 向け U-Boot デバッグスクリプトのサンプルファイルです。
コメント
0件のコメント
サインインしてコメントを残してください。