FC2カウンター FPGAの部屋 2013年03月01日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Linux上のSDKでZedBoard_OOB_Desgin のLinuxソフトウェアをコンパイル

前回、やっとUbuntu12.10 上のSDKでZedBoardをコンフィグレーションして、ソフトウェアを走らせることができた
今回は、ZedBoard_OOB_Desgin のLinuxソフトウェアをコンパイルできるかどうかを確かめて見ることにした。

最終目的は、Linux上に実行用ELFファイルをSSHでsftpして、ZedBoard上にアップロードしてリモートデバックするということだ。その前にARMのツールチェーンでコンパイルする必要がある。Windows上で行った例は、”ZedBoard Linux のフレームバッファにカメラ画像を表示9(SDKリモートデバック)”だ。

SDKのプロジェクトを作成して、コンパイルを行うと、エラーが発生した。
ISE_for_Linux_66_130228.png

sys/mman.h が無いと言われてしまった。エラー内容を下に示す。

/opt/Xilinx/14.4/ISE_DS/EDK/gnu/arm-eabi/bin/../lib/gcc/arm-xilinx-eabi/4.6.3/../../../../arm-xilinx-eabi/include/sys/dirent.h:10:2: error: #error " not supported"
../src/cam_disp3_linux.c:17:22: fatal error: sys/mman.h: No such file or directory
compilation terminated.
make: *** [src/cam_disp3_linux.o] エラー 1


いろいろググって調べてみたが、どうもよくわからないかった。うまくコンパイルできているWindows のSDKプロジェクトと較べてみると、cam_disp3_linuxプロジェクトのinclude のディレクトリの数が違うことに気がついた。Linux上のcam_disp3_linuxプロジェクトのinclude のディレクトリの数は3つでarm-xilinx-eabi に関するインクルード・ディレクトリのみだった。
ISE_for_Linux_67_130228.png

しかし、Windows上での同じディレクトリの数は7つで、最初に、arm-xilinx-linux-gnueabi に関するインクルード・ディレクトリが先に来ていた。これはARMのツールチェーンが違うのだと思った。
そこで、SDKのProjectメニューからProperties を選択して設定を行った。
ダイアログの C/C++ Build -> Tool Chain Editor でCurrent toolchain: がXilinx ARM GNU Toolchain になっていたので、Xilinx ARM GNU/Linux Toolchain を選択した。
ISE_for_Linux_68_130228.png

Xilinx ARM GNU/Linux Toolchain を選択後の画面。
ISE_for_Linux_69_130228.png

Linux上のcam_disp3_linuxプロジェクトのinclude のディレクトリの数は、Windows のSDKと同様に7つになった。
ISE_for_Linux_70_130228.png

これで、ビルドしてみたところ、もう1つエラーがあった。それは、linker のライブラリ・オプションのエラーだった。エラー内容を下に示す。

/opt/Xilinx/14.4/ISE_DS/EDK/gnu/arm/bin/../lib/gcc/arm-xilinx-linux-gnueabi/4.6.3/../../../../arm-xilinx-linux-gnueabi/bin/ld: cannot find -l-Wl,--start-group,-lxil,-lgcc,-lc,--end-group
collect2: ld returned 1 exit status
make: *** [cam_disp3_linux.elf] エラー 1


先程と同様に、SDKのProjectメニューからProperties を選択して設定を行った。
C/C++ Build -> settings -> Tool Settins タブ -> ARM Linux gcc linker -> Libraries のLibraries オプションの -Wl,--start-group,-lxil,-lgcc,-lc,--end-group を2番めの赤バツアイコンをクリックして削除した。
ISE_for_Linux_71_130228.png

Libraries オプション削除後の画面。
ISE_for_Linux_72_130228.png

これでビルドされたら(Auto Buildに設定されている)、コンパイルが通った。
ISE_for_Linux_73_130228.png

やった~。コンパイル成功。
いろいろとトラップがあるが、回避しながら一歩ずつ進んでいる。
  1. 2013年03月01日 05:23 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0