ZyboやZC706などといったFPGAボードに搭載されているFPGA(Zynq-7000シリーズ)には、プロセッサとしてCortex-A9が採用されています。今回はこのCortex-A9用のクロスコンパイル環境をCrosstool-NGを使って作成してみます。
Crosstool-NGのインストール
Crosstool-NGはARMやMIPSなどといった様々なアーキテクチャのtoolchainを簡単に生成してくれるツールです。
以下のコマンドによりインストールします。
$ mkdir -p ${HOME}/tools
$ cd ${HOME}/tools
$ git clone https://github.com/crosstool-ng/crosstool-ng.git
$ cd crosstool-ng
$ git checkout crosstool-ng-1.25.0
$ mkdir build-1.25.0
$ ./bootstrap
$ ./configure --prefix=/home/<user>/tools/crosstool-ng/build-1.25.0
$ make
$ make install
${HOME}/tools/crosstool-ng/build-1.25.0/bin 以下に「ct-ng」というバイナリが生成されます。この「ct-ng」を使用してtoolchainを生成していきます。
toolchainの生成
生成したいtoolchainのアーキテクチャに応じたconfigを用意する必要があります。既にいくつかのアーキテクチャについてはサンプルのconfigが準備されているので、そのconfigがそのまま使用できないか確認します。
以下のコマンドでサンプルとして用意されているconfigの一覧が表示されます。
$ cd ./build-1.25.0
$ ./bin/ct-ng list-samples
...
[G...] arm-cortex_a8-linux-gnueabi
[G..X] arm-cortexa5-linux-uclibcgnueabihf
[G..X] arm-cortexa9_neon-linux-gnueabihf
[G..X] x86_64-w64-mingw32,arm-cortexa9_neon-linux-gnueabihf
[G...] arm-multilib-linux-uclibcgnueabi
...
configの一覧の中に「arm-cortexa9_neon-linux-gnueabihf」という名前が見つかりました。今回はこのサンプルconfigをそのまま利用することとします。
以下のコマンドでconfigを生成します。
$ ./bin/ct-ng arm-cortexa9_neon-linux-gnueabihf
ディレクトリの中に .config という名前のファイルが生成されます。以下のコマンドでconfigの編集画面を表示します。
$ ./bin/ct-ng menuconfig
今回はサンプルの内容を何も変更せず、そのままEXITしました。それでは、ビルドを開始します。
$ ./bin/ct-ng build
30~40分ほどでビルドが完了すると、${HOME}/x-tools/arm-cortexa9_neon-linux-gnueabihf 以下にtoolchainが生成されます。
これで、Zynq搭載CPUのクロスコンパイル環境が準備できました。