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は誰が呼び出すのか?
今日はここまで・・・