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 で起動します。
### まずは最新の環境にアップデート
$ 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.bin
GUI のインストーラが起動します。今回は 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 コマンドでマウントしてアクセス可能です。

トラックバックURL

コメント一覧

1. Posted by きだ   2014年12月02日 15:18
4 MentorGraphics社のEABI対応コンパイラでも問題ないです。あっちのほうがコンパクトです。インストールの時間と登録の煩雑さを考えるとおすすめ。
2. Posted by 若槻   2014年12月03日 09:27
コメントありがとうございます。ARM Linux がビルドできる環境ならば何でも良さそうですよね。今回は一応、正規の手順をということで、純正のツールチェーンを試してみました。

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード