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_.binとtestapp.elfをコピーして、/dev/xdevcfgを使用してFPGAを書き換え、実行してください。
実行時の画面を下に示します。
5. まとめ
本ページで示したアーカイブファイルを使うと、Zynqberry上でSDSoCアプリが驚くほど簡単に動きます。
簡単なアプリであればデバイスツリーの書き換えや、再起動は必要ないように思われるので、動的な構成変更もできるように思われます。
これで「FPGAで任意の関数をアクセラレートして高速に実行できるRaspberry Pi互換機」に近づきました。
機械学習や人工知能など、FPGAならではのアプリをぜひとも試してみてください。
Zynqberryオリジナルスタータキットをご購入のお客様はこのファイルと、追加の情報にアクセスすることができます。ぜひともZynqberryオリジナルスタータキットをご検討ください。
Zynqberry用SDSoC カスタムプラットフォーム構築手順書
本チュートリアルで紹介したZynqberry用「カスタムプラットフォーム」の作成方法を、100ページ以上にわたる詳細な解説書にまとめた「Zynqberry SDSoC Linux構築チュートリアル」として執筆中です。
ご希望の方には標準サポートプランにてご提供させていただきます。