チュートリアル

Zynqberry Linux上でのSDSoCアプリの実行

このチュートリアルでは、Zynqberryオリジナルスタータキットをご購入のお客様向けに、ZynqberryでUbuntu Linux 14を動作させて、その上でSDSoCを動作させる方法を紹介します。

FPGAで任意のアルゴリズムを加速できるRasPi互換機」を目指します。

 

 

1. アーカイブのダウンロード

まず、下記のファイルをダウンロードします。

  • ZynqberrySDSoC 2018/06/29 (75MByte) ※ダウンロードにはユーザ登録が必要です

解凍すると以下のようなフォルダとファイルがあります。

  • driver/               ・・・ SDSoC用のxlnkドライバが含まれています
  • testapp/      ・・・ SDSoCで生成されたテストアプリです
  • zsys_nocsi_linux/   ・・・ Zynqberry Linux用プラットフォームファイルです
  • devicetree.dtb      ・・・ xlnkドライバを使うためのDeviceTreeです
  • devicetree.dts      ・・・ xlnkドライバを使うためのDeviceTreeです
  • boot.bin            ・・・ SDSoCが使用できる起動イメージです
  • bootutil           ・・・ 起動イメージを書き込むためのツールです
  • README.txt         ・・・ このファイルです

 

2. ZynqBerryのセットアップ

2.1 デバイスツリーのインストール

解凍されたファイルのうち、Zynqberryの/mntフォルダに、以下のファイルをコピーしてください。

  • devicetree.dts
  • devicetree.dtb

2.2 起動ROMの書き換え

また、Zynqberryの/home/shareフォルダに、以下のファイルをコピーしてください。

  • boot.bin
  • bootutil

/home/shareフォルダに移動し、

$ chmod 755 bootutil
$ ./bootutil -w boot.bin

と入力してください。

起動用のQSPI ROMがboot.binで上書きされます。(このboot.binには、SDSoCのドライバで認識される回路が入っているので、不用意にSDSoCアプリを起動してもハングアップすることはなくなります。)

 

2.3 デバイスドライバのインストール

解凍されたフォルダの、driverフォルダにある3つの.koファイルを
任意のフォルダ(例えば/home/share)にコピーしてください。

 

2.4 Zynqberryの再起動

以上の作業が終わったらZynqberryを再起動してください。

 

3. 動作テスト

3.1 デバイスドライバの起動

SDSoCアプリを起動させるには、まず、

$ insmod xlnk-eng.ko
$ insmod xlnk-dma.ko
$ insmod xlnk-apf.ko

と入力してデバイスドライバを読み込みます。
この処理は、毎回の起動時に必要なので、起動スクリプトなどに書いて自動化してもよいでしょう。

 

3.2 サンプルアプリの起動

testappフォルダにある_sdsフォルダとtestapp.elfを、/home/shareにコピーします。

次のコマンドで実行されます。

$ cat _sds/_p0_.bin > /dev/xdevcfg
$ ./testapp.elf

 

SDSoCのアプリはDebug/sd_cardフォルダに生成されますが、必要なものは

  • _sds/_p0_.bin
  • アプリケーション.elf

の2つです。

_sds/_p0_.binはFPGAのBitStreamです。Linuxの動作中に、

$ cat _sds/_p0_.bin > /dev/xdevcfg

コマンドでFPGAを書き換えてから、SDSoCアプリの(アプリケーション.elf)を実行します。

 

4. Linux用SDSoCアプリの作成

4.1 SDSoCプロジェクトの作成

SDSoC 2018.1を起動し、ワークスペースをd:\zynqberry_sdsoc\に設定します。

 

[Create SDx Project] -> [Application Project]とやって、 Project nameに適当な名前を付けます。

 

4.2 Zynqberryプラットフォームの登録

下のダイアログの画面が出たら、Add Custom Platformを押します。

 

アーカイブのzsys_nocsi_linuxフォルダを指定します。

 

zsys_nosciというプラットフォームが利用できるようになっているので、これを選択します。

 

このダイアログではlinuxのまま、変更せずにNextを押します。

 

4.3 テンプレートからのアプリケーションの選択

Templatesと書かれたダイアログでは、適当なサンプルを選びます。

(ここではShift Registerを選びます。FIRフィルタのサンプルのようです)

 

4.4 ビルドの実行

SDSoCのメイン画面に戻ったら、ビルドボタンを押します。

 

20~30分程度で、アプリケーションがビルドされます。

 

4.5 オブジェクトのコピー

出来あがったオブジェクトは、testapp\Debug\sd_cardフォルダにあります。

この中の、_sds/_p0_.bintestapp.elfをコピーして、/dev/xdevcfgを使用してFPGAを書き換え、実行してください。

 

実行時の画面を下に示します。

 

5. まとめ

本ページで示したアーカイブファイルを使うと、Zynqberry上でSDSoCアプリが驚くほど簡単に動きます。

簡単なアプリであればデバイスツリーの書き換えや、再起動は必要ないように思われるので、動的な構成変更もできるように思われます。

これで「FPGAで任意の関数をアクセラレートして高速に実行できるRaspberry Pi互換機」に近づきました。

機械学習や人工知能など、FPGAならではのアプリをぜひとも試してみてください。

 

Zynqberryオリジナルスタータキットをご購入のお客様はこのファイルと、追加の情報にアクセスすることができます。ぜひともZynqberryオリジナルスタータキットをご検討ください。

 

Zynqberry用SDSoC カスタムプラットフォーム構築手順書

本チュートリアルで紹介したZynqberry用「カスタムプラットフォーム」の作成方法を、100ページ以上にわたる詳細な解説書にまとめた「Zynqberry SDSoC Linux構築チュートリアル」として執筆中です。

ご希望の方には標準サポートプランにてご提供させていただきます。