昨日の続きなんだけど、SDxでやりたいことは例えば、アプリケーションを作りました。
当然、SDxを使うのでCPU側で処理する部分とPLに落としたい部分が発生する。 全てハードに落としたいのであれば、SDxに拘らずVivado HLSを使えばいいと思っている。 ソフトウェアの側面から見るとアプリケーションをコンパイルすると次のようにSDxのgcc(ここではgcc-sdx)を使って、SDxのツールチェーンのライブラリを使ってアプリケーションを構成することになる。
ここまでは別に良いのだ。
じゃぁ、アプリケーションでSDxで提供されていないミドルウェアを使いたいとなったらどうする?
OpenCV3.1とかGstreamerとか・・・
私は画像が中心なのでこういう例でしか言えないけど、他にもたくさん使えるミドルウェアってあるよね。 ここではMiddle-Aとしてみた。
一番、最初に思いつくのがSDxの環境にミドルウェアをインストールすればいいんだよね。 大きなミドルウェアになるといろんなライブラリの依存関係があるからミドルウェアが使用するライブラリを片っ端からインストールすることになる。
誰がそんな面倒なことするの?
そこで次に思いつくのがyoctoだと全部、作ってくれるやん。
安直に使ってみよう!
普通、こんな使い方する人いないだろう。
だって、ミドルウェアやその依存関係にあるライブラリってツールチェーンの標準ライブラリとかにも依存したりするよね。
実機での実行時を考えてみよう。
実機ではSDxのライブラリとyoctoのミドルウェアが混在する形になる。 当然、ミドルウェアの依存関係はSDxのライブラリに向いちゃうので・・・
おかしなことが起こって当然になるよね。
それだったら、SDxのツールチェーンは使わないでyoctoのツールチェーンを使うのがいいかと・・・
SDxのウワモノだけは使わせていただきますよ。
っうか、ここまできたら何を説明したいのかすらわからんようになってきた(^-^;
と、アキバ散策から家に帰ってきたらlinaroツールチェーンができてたのでSDxのツールチェーンから入れ替えて、ビルドしてみました。
gccのバージョンは6.2.1です。 SDxは5.2.1だったので丸々、バージョンが一つ上です。
% arm-poky-linux-gnueabi-gcc --version
arm-poky-linux-gnueabi-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
sds.log(Debug/_sds/reports/sds.logのこと)はこんな感じですよ。
(c) Copyright 2012-2016 Xilinx, Inc. All Rights Reserved.
#-----------------------------------------------------------
# Tool version : sds++ 2016.3 SW Build 1721985 on Nov 29 2016 18:43:52
# Start time : Sat Dec 31 17:06:20 JST 2016
# Command line : sds++ -o Sample01.elf ./src/top.o -dmclkid 1 -sds-sys-config linux -sds-proc a9_0 -sds-pf zybo
# Log file : /home/hidemi/workspace/SDSoC/Sample01/Debug/_sds/reports/sds.log
# Journal file : /home/hidemi/workspace/SDSoC/Sample01/Debug/_sds/reports/sds.jou
# Report file : /home/hidemi/workspace/SDSoC/Sample01/Debug/_sds/reports/sds.rpt
#-----------------------------------------------------------
Libraries:
Library Paths {}
INFO: [SDSoC 0-0] Analyzing object files
arm-poky-linux-gnueabi-objcopy -O binary --set-section-flags .xdinfo=alloc --only-section=.xdinfo /home/hidemi/workspace/SDSoC/Sample01/Debug/src/top.o /home/hidemi/workspace/SDSoC/Sample01/Debug/_sds/.data/xdinfo.xml
いいねぇ。 objcopyがyoctoのツールチェーンに向いてますねぇ〜。
余裕があったら三ヶ日はOpenCV3.1のアプリケーションをSDxでビルドして、一部をPLに落としてみるかな。 もちろん、性能なんか無視してまずは、PLに落ちることを確認するだけなんだけど・・・。 性能は次の段階ね。
って、書いて、 あと、7時間後ぐらいにはブログ書いてたりして・・・(^-^;