MENU

Crosstool-NGでZynq搭載CPUのクロスコンパイル環境を作成する

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のクロスコンパイル環境が準備できました。

  • URLをコピーしました!

この記事を書いた人

映像処理ハードウェアの研究開発をしています。ASIC, FPGA, 機械学習などの話題に興味があります。このブログでは、自分が最近勉強したことなどを中心にマイペースに発信していきます。

目次