ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

SDxで遊んでみる(深く潜っていこう)

SDxはビルドを開始するとsdscc又はsds++呼び出される。

sds++ -Wall -O0 -g -I"../src" -c -fmessage-length=0 -MT"src/top.o" -MMD -MP -MF"src/top.d" -MT"src/top.o" -o "src/top.o" "../src/top.cpp" -sds-hw RgbToHsv top.cpp  -clkid 1 -sds-end -sds-sys-config linux -sds-proc a9_0 -sds-pf zed

sds++は/opt/Xilinx/SDx/2016.3/bin/sds++に存在する。 これは単なるスクリプトである。

ここから

/home/hidemi/workspace/ZYBO_Sample01/Debug/_sds/vhls/RgbToHsv.tcl

というtclスクリプトが生成される。

しばらくすると次のログを生成したメッセージが表示される。

sds++ log file saved as /home/h-ishihara/workspace/Zed_Sample01/Debug/_sds/reports/sds_top.log

これは関数をH/W化する部分のHLSログである。

さらにしばらくするとソースコードを生成したメッセージが表示される。

Finished building: ../src/top.cpp

また、しばらくするとアプリをビルドするメッセージが表示される。

sds++  -o "Zed_Sample01.elf"  ./src/top.o    -dmclkid 1  -sds-sys-config linux -sds-proc a9_0 -sds-pf zed

生成したソースコードは次のように教えてくれる。

INFO: [SDSoC 0-0] Compile caller rewrite file /home/hidemi/workspace/ZYBO_Sample/Debug/_sds/swstubs/top.cpp

さらにしばらくすると「bitstreamを作るからしばらく待ってね♪」のメッセージが表示されsynthesisがスタートする。

INFO: [SDSoC 0-0] Generating bitstream for platform zed.
      This may take some time to complete

ツールチェーンはどれだ?

Zynq-7000(Cortex-A9)のLinuxをコンパイルするときはsdsccやsds++はここに繋がるはずだ。

/opt/Xilinx/SDx/2016.3/SDK/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-XXX

bin/xdcc.tclにはtoolchainがarm-xilinx-linux-gnueabiと定義されているがこのツールチェーンは存在しない。

では、arm-linux-gnueabihfはどこにあるのか?

bin/apflib.tclにあった。

じゃぁ、apflib.tclは誰が呼び出すのか?

bin/sdslibから呼び出されていた。

じゃぁ、sdslibは誰が呼び出すのか?

今日はここまで・・・