2014年11月17日
Xilinx Linux for Zynq AP SoCをUbuntu 14.04でビルドする
ソースレベルデバッグのためにデバッグ情報付きのバイナリ(vmlinux)が必要になったため、Xilinx Linux for Zynq AP SoC をソースからビルドした時のメモです。
基本的には Xilinx 社の公式 Wiki の記述通りに進めれば良いのですが、Ubuntu Linux のバージョンが異なったため、いくつかそのままでは上手く行かない所がありました。
http://www.wiki.xilinx.com/Build+kernel
使用した環境は、Windows 7 64bit 上に、VMWare Workstation を使用して作成した Ubuntu Linux 14.04 64bit 環境です。
以下のサイトから iso ファイルをダウンロードしてくれば、VMWare Workstation のウィザードに従った簡易インストールで、簡単にイメージを作成できます。
https://www.ubuntulinux.jp/News/ubuntu1404-ja-remix
○ 事前準備
apt-get でインストールするものは、以下のようになります。先頭が ### で始まる行はコメントです。$ で始まる行が、Ubuntu Linux の Terminal(端末エミュレータ)に入力するコマンドとなります。ちなみに Terminal は Ctrl + Alt + t で起動します。
ARM Linux のビルドに必要なツールチェーンは、今回は素直に Xilinx tools を使用しました。このツールをダウンロードするためには、Xilinx 社のサイトのアカウントが必要です。Ubuntu の Firefox で以下のサイトを開き、「Vivado 2014.3.1 Web Install for Linux 64」を選択して進めると、アカウント登録などを促されますので、その通りに進めます。
http://www.xilinx.com/support/download.html
Xilinx_Vivado_SDK_2014.3.1_1031_1_Lin64.bin がダウンロードできたら、実行権を付けて起動します。
インストールが終わったら、arm-xilinx-linux-gnueabi-gcc が動くことを確認します。もしファイルが存在するのに「No such file or directory」というエラーメッセージが表示される場合は、32bit ランタイムがインストールされていない可能性があります。前述した事前準備の所を見直してください。
ビルドは以上です。
(※)正確には、Xilinx Linux をビルドする前に、Xilinx QEMU のビルド(今回は割愛)のために、以下のパッケージもインストール済みでした。
○ 補足
ビルドしたバイナリを Window に持ってくる場合は、samba を使用するのが便利です。
GUI の「Files」から Home を右クリックして Properties の Local Network Share のタブを選択し、Share this folder の Share name を適当に設定し、Allow others to create and delete files in this folder をチェックしたら、Create Share ボタンでファイル共有が可能になります。
Windows 側からは、「スタート > プログラムとファイルの検索」で直接 \\192.168.XXX.XXX\(上で設定した Share name)にアクセスするか、コマンドプロンプトから net use や subst コマンドでマウントしてアクセス可能です。
http://www.wiki.xilinx.com/Build+kernel
使用した環境は、Windows 7 64bit 上に、VMWare Workstation を使用して作成した Ubuntu Linux 14.04 64bit 環境です。
以下のサイトから iso ファイルをダウンロードしてくれば、VMWare Workstation のウィザードに従った簡易インストールで、簡単にイメージを作成できます。
https://www.ubuntulinux.jp/News/ubuntu1404-ja-remix
○ 事前準備
apt-get でインストールするものは、以下のようになります。先頭が ### で始まる行はコメントです。$ で始まる行が、Ubuntu Linux の Terminal(端末エミュレータ)に入力するコマンドとなります。ちなみに Terminal は Ctrl + Alt + t で起動します。
### まずは最新の環境にアップデート $ sudo apt-get update $ sudo apt-get upgrade ### 基本的な開発環境(git と make など)です。(※) $ sudo apt-get install git-core build-essential ### ビルドには後述する Xilinx tools を使用したのですが、これは 32bit の実行ファイルなので、 ### 64bit Linux 環境では以下の 32bit ランタイムが必要です。 ### Xilinx 社の Wiki にも ia32-libs が必要との記述があるのですが、Ubuntu 14.04 では ### パッケージ名が変わっています。 $ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6 ### make menuconfig のために必要です。 $ sudo apt-get install ncurses-dev ### uImage を作成するために必要です $ sudo apt-get install u-boot-tools○ ARM クロスコンパイラツールチェーンの準備
ARM Linux のビルドに必要なツールチェーンは、今回は素直に Xilinx tools を使用しました。このツールをダウンロードするためには、Xilinx 社のサイトのアカウントが必要です。Ubuntu の Firefox で以下のサイトを開き、「Vivado 2014.3.1 Web Install for Linux 64」を選択して進めると、アカウント登録などを促されますので、その通りに進めます。
http://www.xilinx.com/support/download.html
Xilinx_Vivado_SDK_2014.3.1_1031_1_Lin64.bin がダウンロードできたら、実行権を付けて起動します。
$ chmod +x Xilinx_Vivado_SDK_2014.3.1_1031_1_Lin64.bin $ ./Xilinx_Vivado_SDK_2014.3.1_1031_1_Lin64.binGUI のインストーラが起動します。今回は SDK のみを選択してインストールしたのですが、それでも 40 分ほどかかりました。
インストールが終わったら、arm-xilinx-linux-gnueabi-gcc が動くことを確認します。もしファイルが存在するのに「No such file or directory」というエラーメッセージが表示される場合は、32bit ランタイムがインストールされていない可能性があります。前述した事前準備の所を見直してください。
### PATH を通します。(これは毎回必要です。 ### 何度もビルドする場合は、.bashrc などに記述しておくと便利です。) $ source /opt/Xilinx/SDK/2014.3.1/settings64.sh $ arm-xilinx-linux-gnueabi-gcc -v Using built-in specs. COLLECT_GCC=arm-xilinx-linux-gnueabi-gcc COLLECT_LTO_WRAPPER=/opt/Xilinx/SDK/2014.3.1/gnu/arm/lin/bin/../libexec/gcc/arm-xilinx-linux-gnueabi/4.8.3/lto-wrapper Target: arm-xilinx-linux-gnueabi 。。。(中略)。。。 gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-23)○ Xilinx Linux for Zynq AP SoC のビルド
### かなり巨大なリポジトリなので、時間がかかります。 $ git clone git://github.com/Xilinx/linux-xlnx.git $ export CROSS_COMPILE=arm-xilinx-linux-gnueabi- $ make ARCH=arm xilinx_zynq_defconfig $ make ARCH=arm menuconfig ### 今回は以下の設定を追加しました。 Kernel hacking ---> Compile-time checks and compiler options ---> [*] Compile the kernel with debug info $ make ARCH=arm UIMAGE_LOADADDR=0x8000 uImage成功した場合、目的の linux-xlnx/vmlinux と linux-xlnx/arch/arm/boot/uImage が生成されます。後は、Prebuild で配布されている uImage を差し替えて、同様に動作すれば OK です。
ビルドは以上です。
(※)正確には、Xilinx Linux をビルドする前に、Xilinx QEMU のビルド(今回は割愛)のために、以下のパッケージもインストール済みでした。
$ sudo apt-get install git-core libgcrypt11-dev zlib1g-dev libglib2.0 libpixman-1-dev device-tree-compiler libfdt-dev libsdl1.2-dev build-essential
○ 補足
ビルドしたバイナリを Window に持ってくる場合は、samba を使用するのが便利です。
$ sudo apt-get install samba $ sudo smbpasswd -a ユーザ名 New SMB password: パスワードを入力 Retype new SMB password: パスワードを再度入力念のため、一度ログアウトして再ログインします。
GUI の「Files」から Home を右クリックして Properties の Local Network Share のタブを選択し、Share this folder の Share name を適当に設定し、Allow others to create and delete files in this folder をチェックしたら、Create Share ボタンでファイル共有が可能になります。
Windows 側からは、「スタート > プログラムとファイルの検索」で直接 \\192.168.XXX.XXX\(上で設定した Share name)にアクセスするか、コマンドプロンプトから net use や subst コマンドでマウントしてアクセス可能です。