この記事では、インテル® SoC FPGA エンベデッド開発スイート(SoC EDS)に付属のデバッガー Arm® DS-5™ Development Studio Intel® SoC FPGA Edition(DS-5™)の使い方に関する補足情報を記載します。

今回は、RocketBoards.org に掲載される HPS ブート用 Flash への書き込み方法『 Arria 10 Flash Programming Alternative 』 を紹介します。

はじめに

この記事で紹介する方法では DS-5 デバッガーの直接的な操作は行いません。Python スクリプトを介して DS-5 を動作させる仕組みとなっているため、デバッガーの操作に不慣れなユーザーが DS-5 デバッガーを使用した Flash 書き込みを行うケースに最適な方法となっています。

また、Flash への書き込みには U-Boot に実装されているコマンド機能を利用します。U-Boot のコマンド機能には、HPS Flash Programmer (SoC EDS 付属の Flash 書き込みツール) と比べて「より高速な書き込みが可能」および「サポートしている Flash デバイスが充実している」という利点があるのですが、これらもまた、この方法を使用するメリットとなります。

U-Boot を使用した Flash 書き込みについては以下の記事も参照ください。
HPS Flash Programmer より高速!U-Boot で QSPI に書き込む方法

オリジナルページ(RocketBoards.org)

・ オリジナルページのURL:

 https://rocketboards.org/foswiki/Documentation/Arria10NANDFlashProgramming 

 ※詳細情報はオリジナルのページ(英文)をご確認ください。

図1 オリジナルページ Top 画面 (RocketBoards.org より引用)

事前準備1:スクリプトのダウンロードなど

スクリプトを含むアーカイブ(flash_programmer.tgz)をダウンロード

オリジナルページに公開されているスクリプト「 flash_programmer.tgz 」をダウンロードします。

PC 上にファイルを展開

●「 flash_programmer.tgz 」を SoC EDS がインストールされたホスト PC 上に展開します。

 1. Embedded Command Shell を起動。

 2. Shell 上で TAR 展開コマンドを実行。

  $ tar -xzvf ./flash_programmer.tgz

 3. 展開先のディレクトリーへ移動します。

  $ cd flash_programmer

 

●展開後のディレクトリー以下は、下記のような構成になっています。

図2 アーカイブ展開後の構成

 

●flash_programmer.py が Flash 書き込み用のメインスクリプトです。

 

●その他は、Arria® 10 SoC Development Kit 向けのデザインファイルが、ブートソース(NAND / QSPI / SDMMC)、ボードリビジョン(Rev.B / Rev.C)毎に用意されています。

 

●各デザインには、以下の 3 つのファイルが含まれます。

 ‐ \output_files\ghrd_10as066n2.sof … FPGA コンフィグレーションデータ(.sof)

 ‐ \software\bootloader_extcfg_semihosting\devicetree.dtb … U-Boot 用デバイスツリーバイナリ(.dtb)

 ‐ \software\bootloader_extcfg_semihosting\uboot-socfpga\u-boot … U-Boot 本体(実行ファイル)

 

※ 標準で用意されているデザインファイルは Arria® 10 SoC Development Kit 向けのみとなっていますが、同じ構成のデザインファイルを用意することで各種ターゲットボードに同じ仕組みを適用することが可能になっています。

※ オリジナルページの情報によるとサポート対象のデバイスは Arria® 10 SoC のみとなっています。ただし、スクリプトの内容を確認する限りでは、Arria® 10 SoC 以外にも、Arria® V SoC、Cyclone® V SoC に対応するための記述が一部用意されている状態となっていますので、スクリプトの内容に手を加えることで Arria® V SoC、Cyclone® V SoC に対応できる可能性はありそうです。ご使用の際には flash_programmer.py の内容および動作を確認した上でご判断ください。 

事前準備2:オリジナルターゲット向けデザインファイルの用意(任意)

デザイン・ディレクトリーの用意(ネーミングルール)

●flash_programmer 直下にオリジナルターゲット向けデザインファイルを格納するためのデザイン・ディレクトリーを用意します。

 ○ ネーミングルール: <device>_<bootsource>_<board_name>_design

  ‐ <device> = {a10 / av / cv}から選択

  ‐ <bootsource> = {qspi / sdmmc / nand}から選択

  ‐ <board_name> = ボード識別用に判り易い名前を指定

  ※ 例(Arria® 10, QSPIブート, ボード名:testboard01):a10_qspi_testboard01_design

 

デザインファイルの作成および格納

●作成したデザイン・ディレクトリーに、以下の3つのファイルを格納します。

 ‐ \output_files\ghrd_10as066n2.sof … FPGA コンフィグレーションデータ(.sof)

 ‐ \software\bootloader_extcfg_semihosting\devicetree.dtb … U-Boot 用デバイスツリー・バイナリ(.dtb)

 ‐ \software\bootloader_extcfg_semihosting\uboot-socfpga\u-boot … U-Boot 本体(実行ファイル)

 

※ FPGA コンフィグレーション・データ(.sof)は、オリジナルターゲット向けの Quartus® プロジェクトで生成されるファイルをそのまま使用します。

※ U-Boot 本体およびデバイスツリーには、以下のオプション指定が必要となるので、本番用とは別に作成する必要があります。

 ‐ External Configulation 有効 ( bsp-editor 上で external_fpga_config のチェックを ON )

 ‐ SemiHosting 有効 ( U-Boot ソースツリー以下の定義を編集 )

  【編集前】 #undef CONFIG_SEMIHOSTING

  【編集後】 #define CONFIG_SEMIHOSTING

 

Flash Programming 実行

ターゲットボードとの接続

ターゲットボードとホスト PC を、USB-Blaster (JTAG) ケーブルで接続。(接続はこの1本のみでOK)

プログラミング実行

あとは、ターゲットボードの電源投入後、Embedded Command Shell 上で flash_programmer.py を実行するのみです。

 1. Embedded Command Shell を起動。

 2. スクリプト展開先のディレクトリーへ移動します。

  ‐ $ cd flash_programmer

 3. スクリプト実行(例:Arria® 10, QSPI, ボード名:testboard01 )

  ‐ $ ./flash_programmer.py --board=testtarget01 --soc=a10 --flash=qspi --operation=epv --address=0x0 --size=0x100000 --file=uboot_w_dtb-mkpimage.bin

 

※ flash_programmer.py のオプション詳細は RocketBoards.org の説明を参照ください。
(この記事では扱っていない、TFTP を用いた高速化手順も掲載されています。)

図3 flash_programmer.py オプション (RocketBoards.org より引用)

実行例

プログラミング実行時のコンソール表示内容を掲載しておきます。

実行例 (1/5)
実行例 (2/5)
実行例 (3/5)
実行例 (4/5)
実行例 (5/5)

まとめ

今回は、python スクリプトにて DS-5 を間接的に使用した Flash プログラミング方法について紹介しました。

最後に、今回の方法では DS-5 デバッガーの GUI は起動しませんが DS-5 のライセンスは通常通り必要となります。DS-5 のライセンス認証を行っていない PC で本スクリプトを実行しようとした場合にはライセンスエラーが発生しプログラミングを行うことができないのでご注意ください。

 

おすすめ記事/資料はこちら

DS-5™ 活用に関する記事一覧
SoC FPGA 関連の記事や資料
インテル® FPGA の SoC FPGA
インテル® FPGA の開発フロー/FPGA トップページ

おすすめ FAQ はこちら

SoC FPGA関連の FAQ
インテル® FPGA 関連の FAQ

おすすめセミナー/ワークショップはこちら

SoCスタートアップ・トライアル <無料>